基于MQL5的订单剥头皮交易系统·综合运用
(3/3)·把订单流失衡、指标确认与动态风控拼成一套可跑的EA,并验证它是否真的扛得住盘
◍ 交易回执里的隐性拦截码
EA 发单后不能只盯是否成交,MT5 的 TradeRequest 返回码里有一批不代表「拒绝」却会让订单卡住的隐性状态。下面这段 switch 把常见的非致命回执单独打印出来,方便在日志里区分到底是券商限流还是终端自己关了自动交易。 TRADE_RETCODE_TOO_MANY_REQUESTS 在高频改单时极易触发,实测每秒超过 10 次 OrderSend 调用就可能吃到这个码。TRADE_RETCODE_SERVER_DISABLES_AT 与 TRADE_RETCODE_CLIENT_DISABLES_AT 要分开看:前者是券商端禁了 EA,后者是你本地 MT5 没勾「允许自动交易」,两者日志文本不同,排错时别混。 TRADE_RETCODE_LOCKED 和 TRADE_RETCODE_FROZEN 常被忽略——前者是请求还在队列里被锁,后者是持仓被风控冻结,外汇与贵金属品种在波动放大时概率会升高,属高风险时段的常见现象。把这类码打出来,至少能判断是该重试还是该停手。
Print("Error: Order state changed"); class="kw">break; case TRADE_RETCODE_TOO_MANY_REQUESTS: Print("Error: Too many requests"); class="kw">break; case TRADE_RETCODE_NO_CHANGES: Print("Error: No changes in request"); class="kw">break; case TRADE_RETCODE_SERVER_DISABLES_AT: Print("Error: Autotrading disabled by server"); class="kw">break; case TRADE_RETCODE_CLIENT_DISABLES_AT: Print("Error: Autotrading disabled by client terminal"); class="kw">break; case TRADE_RETCODE_LOCKED: Print("Error: Request locked for processing"); class="kw">break; case TRADE_RETCODE_FROZEN: Print("Error: Order or position frozen"); class="kw">break; case TRADE_RETCODE_INVALID_FILL: Print("Error: Invalid order filling type"); class="kw">break; case TRADE_RETCODE_CONNECTION: Print("Error: No connection to trading server"); class="kw">break; case TRADE_RETCODE_ONLY_REAL: Print("Error: Operation allowed only for live accounts"); class="kw">break; case TRADE_RETCODE_LIMIT_ORDERS: Print("Error: Pending orders limit reached"); class="kw">break; case TRADE_RETCODE_LIMIT_VOLUME: Print("Error: Volume limit for orders and positions reached"); class="kw">break; class="kw">default: Print("Unknown error: ", errorCode); class="kw">break; }
EURUSD 上 15 分与 5 分周期的回测画像
把同一套逻辑丢进 MT5 的 EURUSD 回测,15 分钟与 5 分钟周期给出的是两种风险轮廓。2000—2025 年、1:100 杠杆、3000 美元初始本金下,15 分周期净盈利 125.83 美元(4.19%),成交 364 笔,多空胜率分别 86.23% 与 73.60%,盈亏比 1.13,最大回撤 5.63%,夏普 1.83。
- 分周期样本拉长到 1732 笔交易,净盈利 150.32 美元(5.01%),空多胜率 81.82% / 81.95%,但盈亏比仅 1.05,平均盈利 2.27 美元对比平均亏损 -9.79 美元,最大回撤 9.95%,夏普掉到 0.92。
两个周期都呈现「高胜率、低盈亏比、盈利小亏损大」的剥头皮特征:15 分最大亏单 -66.10 美元、最大盈单 50.22 美元;5 分最大回撤接近 10%,权益曲线上行但波动明显。外汇与贵金属属高风险品种,高杠杆会同步放大利润与亏损,这类策略在行情结构切换时可能快速回吐。 开 MT5 用相同本金与杠杆跑一遍 EURUSD 的 15 分/5 分回测,重点看夏普是否低于 1 且回撤突破 8%——若命中,实盘前应先降杠杆或缩手数。
「记住这一条就够了」
这套 MT5 订单流剥头皮 EA 把多指标、订单流分析与动态仓位拧在一起,主测 EURUSD 的 M15 与 M5 周期,回测里能看到高胜率但盈利因子偏低,长周期总收益也不大。 它靠频繁小赚去填偶尔的大亏,所以遇到单边不利行情,回撤可能一下子吃掉前面利润,外汇和贵金属这种高杠杆品种尤其要当心。 mq5 文件丢进 MQL5/Expert Advisors/ 目录下就能加载,真想用先开 MT5 用策略测试器跑一遍 EURUSD 的 M5 历史数据,别光看回测摘要就上实盘。