全程AI输出,调用AI根据实时新闻与交易策略进行判断,然后打分的方式开单,API需要能联网的(市面上大多数的API无法联网调取新闻进行分析请自行寻找可以联网的API,目前据了解能联网的api费用高昂),由于功能都是根据实时行情进行分析的无法进行回测,需要大家一起来帮忙测试,有任何相关的建议与改进方案请留言。
策略文件strategy_candidates.txt放在这里MQL5\Files,策略文件可以加入自定义的策略这里是可以编辑的,如果有好的交易策略可以自己添加。下面是详细使用说明 + 策略说明。
内容覆盖安装、参数、界面、信号/下单、AI 优选、网页策略、新闻情绪、风控、回测与调试、常见问题等。
一、快速上手(必读)
1. 放置文件
把 `DEEPSEEK_EA.mq5` 放到:`MQL5/Experts/`
需要的文件(可选):
`MQL5/Files/strategy_rules.txt`(本地固定规则,可空)
`MQL5/Files/strategy_candidates.txt`(候选规则;没有则用 EA 内置样例)
2. 编译
在 MT5 `导航器` → `专家顾问` → 右键 编译。无报错后即可加载。
3. 图表加载
将 EA 拖拽到目标品种图表(推荐 M5/M15 或 H1),按需设置参数(见下文)。
4. WebRequest 白名单(若用 AI/新闻/网页策略)
MT5:`工具` → `选项` → `专家顾问` → 勾选“允许 WebRequest”。
在白名单添加:
你的 `AI_API_URL` 的域名(如 `https://api.example.com`)
`策略网页_URL` 的域名(如 `https://example.com`)
`新闻_URL` 域名(如 `https://newsapi.org`)
> 不添加白名单,WebRequest 会失败(控制台能看到失败码)。
5. 先“纸面”测试
初期建议:`启用_下单交易 = false`,观察控制台信号、AI 优选、网页策略解析等是否符合预期。
---
# 二、界面与按钮
EA 会在图表左上创建一个控制面板(位置/颜色/字体/字号可在参数中自定义):
状态:当前执行状态/结果(每次按钮点击与定时任务都会更新)
KPI:如 ATR、Tick/Timer 耗时(微秒转毫秒显示)
新闻:最近抓取的 1~3 条标题(示例或真实)
定时判断:定时器(默认每 10 秒触发)对当前策略/信号的结论
AI最佳策略:AI 排序后前几条规则的预览(前 160 字符)或失败提示
控制台:滚动显示每一步动作/判断/错误,便于调试(最多 14 行,溢出自动滚)
按钮功能(点击必有文字输出,便于确认):
`运行单元测试`:基础功能自检(Trim、MA 方向等)
`测试AI接口`:仅验证是否启用/配置正确(不调用评分)
`刷新新闻情绪`:立即抓取新闻
`策略分析/回测`:即刻做一次规则评估(不产生历史回测报告,作为“就地评估”)
`测试下单限制`:验证“最大订单数”和“一次一单”逻辑
`即时分析&测试`:立刻综合当前策略输出建议(买/卖/观望)
`读取网页策略`:抓取 `策略网页_URL` →(可选 AI 解析)→ 生成 DSL 规则缓存 → 预览/可下单
`测试新闻增强`:演示性的新闻情绪输出(示意)
`AI策略优选`:从候选(本地+网页)中生成候选集 → AI 排序 → 解析最佳 →(可选)下单
---
# 三、输入参数(关键分组解读)
## 3.1 总控/时序
`启用_技术分析`:多周期 MA 指标与聚合信号
`启用_本地策略引擎`:加载 `Files/strategy_rules.txt` 的手工 DSL 规则(若无则忽略)
`启用_新闻情绪`:抓取 `新闻_URL`(演示为主)
`启用_AI分析`:AI 评分/AI 解析网页策略的开关(需 WebRequest + API 配置)
`启用_下单交易`:真正下单开关(建议先关)
`启用_移动止损`:开启 ATR 百分比追踪止损逻辑
`启用_单元测试`:加载时自检
`启用_策略自动优化`:定时执行 AI 优选;周期由 `策略重载_分钟` 控制
`AI_评分_自动下单`:AI 优选后自动下单(强风控建议:先观察)
## 3.2 候选与网页策略
`候选策略文件名`:默认 `strategy_candidates.txt`(没有则用内置示例)
`启用_网页策略`:从网页抓取策略文本 →(可选 AI 解析成 DSL)
`策略网页_URL`:策略页面地址
`网页策略_抓取间隔分钟`:定时抓取周期
`网页策略_最大规则数`:最多保留的网页规则条目
`网页策略_API解析后下单`:网页→AI→DSL 后直接评估&可下单
## 3.3 交易与风控
`最大订单数量`:超过则不开单(控制台输出原因)
`一次一单_每信号`:同向信号只允许一次触发
`单笔风险百分比`:按 SL 点距估算手数(账户余额 × 风险比 / SL金 点值)
`最小手数` / `最大手数`:手数边界
## 3.4 波动率百分比(强烈推荐开启)
`使用_波动率百分比 = true`
初始止损 SL = ATR × `止损_波动率百分比` / 100
初始止盈 TP = ATR × `止盈_波动率百分比` / 100
移动止损启动:浮盈 ≥ ATR × `移动止损_启动百分比` / 100
移动止损距离:距离 = ATR × `移动止损_百分比距离` / 100
移动止损步长:每次至少改善 ≥ ATR × `移动止损_步长百分比` / 100
> 若 ATR 不可用,会回退到旧逻辑(固定点/ATR倍数兜底)。
## 3.5 MA / ATR / TF
`MA_快线周期/慢线周期`、`MA_方法`、`MA_价格`
`ATR_周期TF`、`ATR_周期`:百分比模式也依赖这里的 ATR
各周期开关:`TF_1M/M5/M15/H1/H4/D1/W1`
`分析品种`:为空使用 `_Symbol`,否则用指定品种
## 3.6 UI 定制
面板大小/位置、底色、文字色、按钮色
字体、字号、是否加粗(你之前提过可读性问题,这里已支持)
---
# 四、策略与信号
## 4.1 多周期 MA 聚合(基础信号)
每个启用的周期计算快慢均线:`fast_val` vs `slow_val`
单周期信号:`fast > slow` 记 +1;`fast < slow` 记 -1;相等为 0
聚合:把所有启用周期的信号相加,>0 判多,<0 判空,=0 观望
## 4.2 DSL 规则(本地 + 网页 + AI 解析)
> 一行一个规则;支持 4 类(大小写不敏感):
### A. 趋势跟随(`TREND_EMA`)
```
TREND_EMA,TF=M30,FAST=20,SLOW=60,DIR=UP|DOWN
```
`TF`:M1/M5/M15/M30/H1/H4/D1/W1
`DIR`:UP 表示看快>慢;DOWN 表示看快<慢;不写则以 MA 结果为主
### B. 突破(`BREAKOUT`)
```
BREAKOUT,TF=M5,LOOKBACK=30,OFFSET=5,VOLUME_MUL=1.5,DIR=BUY|SELL
```
`LOOKBACK` N 根内高/低点;`OFFSET` 点差(配合合约 point)
`VOLUME_MUL`:当前 tick_volume ≥ `mul` × 过去均值视为量能确认(无则忽略)
方向:`BUY` 走高位突破;`SELL` 走低位下破
### C. 均值回归(`MEANREV`)
```
MEANREV,TF=M5,BB_N=20,BB_K=2.0,RSI=14,RSI_LOW=30,RSI_HIGH=70,DIR=BUY|SELL
```
`BB_N/K`:布林带参数;RSI 过滤阈值
`BUY`:收盘≤下轨 且 RSI≤低阈;`SELL`:收盘≥上轨 且 RSI≥高阈
不指定 `DIR` 时,靠中轨与 RSI 同侧给出方向
### D. 交易时间窗(`TIME_WINDOW`)
```
TIME_WINDOW,START=15:00,END=23:00
```
服务器时间;存在任意时间窗则必须命中其一才允许交易(用于过滤亚盘/节假等)
## 4.3 票决与融合
本地聚合(MA) + `strategy_rules.txt`(本地 DSL) → `AggregateWithLocalRules`
`网页策略` 抓取/解析成 DSL 存入缓存 → 参与 AI 候选
`AI 优选`:将候选规则(本地候选 + 网页规则)按 `AI_评分_候选上限` 组装文本 → 结合 市场快照(M30 趋势、M5 BB/RSI/量)交给 AI 排序 → 取前 N 行作为最佳策略;若 AI 失败,回退到候选集合
---
# 五、下单与风控
## 5.1 下单逻辑(简述)
1. 判断是否允许:
`最大订单数量` 超限 → 不开单
`一次一单_每信号`:同向刚触发过 → 不开单
2. 计算 SL/TP(优先百分比模式):
`SL点距 = ATR × 止损_波动率百分比 / 100 / point`
`TP点距 = ATR × 止盈_波动率百分比 / 100 / point`
ATR 不可用时,回退到“ATR 倍数/固定点距兜底”
3. 手数:
`lots = (余额 × 风险%) / (每点价值 × SL点数)`,落在 `最小/最大手数` 范围内
4. 真正下单:
只有 `启用_下单交易 = true` 才会 `OrderSend`;否则仅记录信号、输出控制台
## 5.2 移动止损(百分比模式)
启动条件:浮盈 ≥ `ATR × 移动止损_启动百分比 / 100`
止损距离:保持 `ATR × 移动止损_百分比距离 / 100`(与当前价计算目标 SL)
步长:每次 SL 至少改善 `ATR × 移动止损_步长百分比 / 100` 才会修改
BUY:`SL = Bid - trail`;SELL:`SL = Ask + trail`
兼容回退:ATR 不可用或你关闭百分比模式时,使用固定点数兜底
参数建议(可根据品种波动调整):
`止损_波动率百分比 = 100%`(约 1×ATR)
`止盈_波动率百分比 = 150%~200%`
`移动止损_启动百分比 = 40%~60%`
`移动止损_百分比距离 = 100%~150%`
`移动止损_步长百分比 = 15%~25%`
---
# 六、网页策略与 AI 优选(工作流)
1. 读取网页策略(手动按钮或定时器)
HttpGet 获取网页文本
若 `启用_AI分析 = true`:把网页原文交给 AI,输出 仅包含 DSL 行 的文本
解析 DSL → `g_web_rules[]`(限制条数为 `网页策略_最大规则数`)
面板“网页策略(预览)”显示前 160 字符
2. AI 优选(手动按钮或 `策略重载_分钟` 定时)
生成候选池:`strategy_candidates.txt` + `g_web_rules[]`
生成 市场快照(EMA20/60@M30、BB@M5、RSI@M5、量/均量@M5)
构造提示词:让 AI 只输出规则行(不要解释)
成功 → 解析前 N 行为可执行 DSL;失败 → 深拷贝回退到候选池
若 `AI_评分_自动下单 = true`:票决结果 ≠ 0 则下单
重要:
不同 AI 服务商返回 JSON 字段各异。EA 内置的是“取 `content` 字段”的简易法。如果你的供应商是 OpenAI 兼容(`choices[0].message.content`),可把 `JsonGet` 和解析逻辑替换成对应字段。
若 AI 失败,控制台会有 `AI评分:失败 (code=...)`,并回退到候选。
---
# 七、文件说明与格式
固定规则:`MQL5/Files/strategy_rules.txt`(可为空)
示例:
```
TREND_EMA,TF=M30,FAST=20,SLOW=60,DIR=UP
MEANREV,TF=M5,BB_N=20,BB_K=2.0,RSI=14,RSI_LOW=35,RSI_HIGH=60,DIR=SELL
TIME_WINDOW,START=15:00,END=23:00
```
候选规则:`MQL5/Files/strategy_candidates.txt`
用于 AI 排序的候选池,EA 内置了 DEFAULT_CANDIDATES 作兜底
---
# 八、测试与回测建议
纸面交易:`启用_下单交易=false`;看控制台与“定时判断/AI最佳策略/网页策略预览”是否合理
限制测试:点击 `测试下单限制`,确保“最大订单数/一次一单”生效
即时测试:`即时分析&测试`,在不同市场时段,看结论是否切换
历史回测:
此 EA 内部“策略分析/回测”按钮为即时评估,非传统回测报告。
如需标准回测:用 MT5 策略测试器,固定参数/关闭 AI/网页策略(回测期内 WebRequest 不可用),只测试本地规则与 MA 聚合逻辑。
---
# 九、常见问题(FAQ & 排错)
### Q1:AI 评分失败,控制台提示 `AI评分:失败 (code=-1)`
没有在 MT5 白名单中添加 `AI_API_URL` 域名
`AI_API_URL` 或 `AI_API_KEY` 为空/错误
服务商 JSON 字段不是 `content`;需改解析为 `choices[0].message.content` 或你供应商的字段
网络超时(`网络超时_ms` 太小)/ IP 限制
建议:把供应商返回的原始 JSON 片段贴给我,我给你适配解析路径。
### Q2:网页策略抓取失败
白名单未添加 `策略网页_URL` 域名
页面返回的是二进制/过长 HTML,AI 未能抽取 DSL(请保持“只输出规则行”的提示)
`网页策略_API解析后下单=true` 但最终票决为 0 → 不下单(控制台会有“观望”)
### Q3:移动止损不触发
浮盈未达到 `移动止损_启动百分比` 门槛
ATR 缓存未就绪(新加载/数据不足),稍后即恢复
你使用了回退模式(未打开百分比);检查启动/距离/步长兜底值
### Q4:手数很小或为最小手
可能由于 SL 点距很大、tick value 很小、账户余额较低
可增大 `单笔风险百分比` 或调小 `止损_波动率百分比`
### Q5:最大订单数量/一次一单导致不开单
控制台会明确提示原因:超过最大数 or 一次一单同向已触发
你也可临时把 `一次一单_每信号=false` 以便测试
---
# 十、调参与实践建议
不同品种(黄金、指数、加密)波动差异大:
波动大:可适度调大 `止损/止盈/TS` 的百分比
波动小:相应调小百分比,提高频率
时间窗:建议对“非液时段/重大数据前后”做 TIME_WINDOW 限制
候选规则:保留 6~12 条高质量候选,避免噪声影响 AI 排序
风险:强烈建议在真实下单前至少 2 周纸面验证,确认参数与供应商连通稳定
---
# 十一、关键日志/控制台输出一览(示例)
`AI评分:成功 (code=200)` / `AI评分:失败 (code=-1)`
`网页策略抓取成功,长度=...` / `网页策略抓取失败 code=...`
`网页策略解析到 X 条规则`
`时间窗限制:当前不交易`
`综合信号:看多/看空`、`建议:买入/卖出/观望`
`下单成功 BUY 0.20 手` / `下单失败 ret=...`
`移动止损至 1924.50`
`超过最大订单数量(3)` / `一次一单启用:同向已触发`
---
# 十二、安全与限制
本 EA 用于研究与教育;实盘有风险,自负盈亏
WebRequest 依赖第三方 API 的可用性与返回格式
回测中不可调用 WebRequest;需要关闭网页/AI/新闻功能或做模拟桩
---
# 十三、附:候选规则示例(可直接放到 `strategy_candidates.txt`)
```text
# 趋势 + 回归 + 突破(多)
TREND_EMA,TF=M30,FAST=20,SLOW=60,DIR=UP
MEANREV,TF=M5,BB_N=20,BB_K=2.0,RSI=14,RSI_LOW=40,RSI_HIGH=65,DIR=BUY
BREAKOUT,TF=M5,LOOKBACK=30,OFFSET=5,VOLUME_MUL=1.5,DIR=BUY
TIME_WINDOW,START=15:00,END=23:00
# 同结构(空)
TREND_EMA,TF=M30,FAST=20,SLOW=60,DIR=DOWN
MEANREV,TF=M5,BB_N=20,BB_K=2.0,RSI=14,RSI_LOW=35,RSI_HIGH=60,DIR=SELL
BREAKOUT,TF=M5,LOOKBACK=30,OFFSET=5,VOLUME_MUL=1.5,DIR=SELL
TIME_WINDOW,START=15:00,END=23:00
# 盘中均值回归(双向)
MEANREV,TF=M5,BB_N=20,BB_K=2.2,RSI=14,RSI_LOW=30,RSI_HIGH=70,DIR=BUY
MEANREV,TF=M5,BB_N=20,BB_K=2.2,RSI=14,RSI_LOW=30,RSI_HIGH=70,DIR=SELL
TIME_WINDOW,START=08:00,END=15:00
``` |