【一次一单源码修正】MT4修复实盘开仓

| 发表于 昨天 12:29 | 显示全部楼层 |复制链接
最后由 llwznet 于 2026-8-28 12:33 编辑

【学习笔记】"一次一单"源码整理 + 入场条件可视化排查(附实盘实测)
大家好,最近在论坛看到【【一次一单源码】一周时间给客户破解的,结果不开仓】出处:https://www.eahub.cn/thread-202934-1-1.html,这个朋友分享的源码,出于学习目的下载下来研究了一下。原帖提到"不开仓",这个描述很有意思——如果是代码逻辑问题,通常回测和实盘会一起挂;如果回测正常而实盘异常,更可能是某些初始化/定时器/可视化层面的问题,而不是策略核心本身。于是我把源码通读了一遍,做了清理、整理和可视化增强,现在不仅回测能开仓,我在 1 分钟实盘测试中也已经正常开仓。这里把排查思路、改动内容和实测效果分享出来,供感兴趣的朋友参考。
微信图片_2026-08-28_121943_614.png
945ac637-d95d-46b7-ad90-a75176ee8c4f.png

一、先说说"实盘不开仓"这个疑点拿到源码后,我首先在策略测试器里跑了老版本,发现回测是会开仓的。实盘不开仓"。那问题就不在"策略逻辑算不出信号",而在于实盘加载后某些非交易模块没有正确启动,或者交易者看不到 EA 到底卡在哪一步。
顺着这个方向读源码,很快找到几个可以整理和补强的地方:
1. 授权相关代码的历史残留。这个源码早期版本带过授权机制(DLL 调用 + SN 校验函数),前面的修改者已经把核心授权逻辑注释掉了,EA 本身是可以正常交易的。但源码里还留着被注释的 DLL 导入块、授权校验函数、SN 解码函数等死代码。这些内容不参与运行,但会让源码显得臃肿。我把这些历史残留彻底清理掉,让代码回归干净。
2. OnTimer 定时器被连带关掉。源码里有一个靠定时器驱动的信息标签模块(杠杆 / 风险提示 / 保证金等),原本在初始化时通过 EventSetMillisecondTimer 启动。由于它和授权逻辑写在一起,前面关闭授权时把这部分也一并注释掉了。后果是:EA 加载后信息标签不刷新,交易者看不到 EA 是否在正常运行。我把定时器重新在 OnInit 里启用,恢复了这部分信息展示。(该模块只负责画标签,不影响交易逻辑本身。)
3. 24 条编译器告警。MetaEditor 在 strict 模式下编译,原版会报 24 条 warning,主要是 datetime→int 隐式转换和局部变量未初始化告警。我逐个补了显式 (int) 强转、给裸局部变量补了默认初值、删除了一个未使用的变量声明。整理后重新编译达到 0 errors / 0 warnings
4. 策略逻辑本身是完整的。
  • 入场:布林带收口 → 突破上 / 下轨触发首单;
  • 加仓:逆势网格,支持多种加仓手数方式;
  • 风控:移动止损 + 多条件平仓(回布林带 / 保本 / 反转 / 部分平仓)。
是一套模块齐全的"布林带突破 + 网格 + 移动止损"体系,核心逻辑没有缺失。
二、关键增强:入场条件可视化监控面板做完代码清理后,我发现即使逻辑正确,交易者 still 很难判断"为什么现在不开仓"。布林带的收口/突破、Zigzag 过滤状态、突破确认条件等七七八八的判定都藏在 OnTick 的嵌套 if 里,不读源码根本不知道自己卡在哪。
于是我在图表上加了一个实时入场条件监控面板
  • 首单多单 / 空单各列出 7 个判定条件;
  • 条件满足显示绿色,不满足显示红色;
  • 全部满足时直接提示"已满足入场条件:开多 BUY / 开空 SELL";
  • 同时标注当前图表周期和布林带参数,比如 M1·Bands=96。
这相当于把 EA 的"内心世界"实时展示在图表上。如果不开仓,一眼就能看出是布林带没收口、还是价格没突破、还是 Zigzag 过滤未就绪。实测过程中,面板上的条件变化和市场走势完全对应,确实能解释为什么某一根 K 线后突然开仓、为什么另一些时候一直等待。
三、我的改动清单(只清理 + 增强、不动策略逻辑)
  • ① 清理历史残留:移除被注释的 DLL 导入、授权校验、SN 解码等死代码;
  • ② 恢复定时器与信息标签:EventSetMillisecondTimer 重新启用,杠杆 / 风险提示 / 保证金标签恢复刷新;
  • ③ 消除 24 条告警:类型转换补 (int)、裸变量补初值、删除死变量;
  • ④ 新增入场条件监控面板:ShowEntryPanel + ecLabel,7 个条件绿红显示,全部满足提示开多/开空方向;
  • ⑤ 新增图表指标参考线(可选开关):ShowIndicatorsOnChart 开启后,在图表上画出布林上轨/中轨/下轨和 Zigzag 最新转折价位的水平参考线,方便对照;
  • ⑥ 新增 Zigzag 过滤开关(可选):UseZigZagFilter 放到参数面板,默认开启,用户可按需关闭;
  • ⑦ 编码规范:保持 UTF-16 LE,括号平衡校验通过。
原则:尊重原作者实现,只做清理和可视化增强,交易逻辑一行没动。
四、实测结果
  • 重新编译:0 errors / 0 warnings
  • 策略测试器回测:正常开仓、加仓、平仓链路完整
  • 实盘 1 分钟测试:已正常开仓
  • 入场监控面板:能实时解释为什么不开仓(比如布林带宽未收口、ZZ 未就绪、价格未突破上轨等),也能在条件全部满足时明确提示方向。
五、一点心得拿到"回测正常、实盘异常"的 EA,第一反应不应该是去改策略参数,而是先检查:
  • OnInit / OnTimer 这些骨架函数有没有被无意中关掉;
  • 源码里是不是藏着大量不参与运行的死代码;
  • 编译告警里有没有隐藏线索;
  • 交易者能不能实时看到 EA 的判定过程。
把这四件事理清楚,问题往往就浮出水面。后面如果再遇到类似"不开仓"的反馈,我会优先给对方看入场条件面板,而不是直接改参数——知道卡在哪一步,比盲目调参重要得多。

顺便介绍一下自己(承接各类量化开发)借着这个帖子简单介绍下。我长期做 MT4 / MT5 量化开发,熟悉 MQL4 / MQL5 双语言,能承接以下业务:
  • EA / 指标 定制开发、修改、调试、优化:老旧 EA 翻新、提速、加风控;
  • MT4 ⇄ MT5 互转:一套策略跨平台运行;
  • 指标开发:各类技术指标、信号面板、多周期多品种监控;
  • 面板 UI 增强:实时信息面板、历史累计统计、新闻风控展示等可视化;
  • 授权保护:本地授权验证、网络验证,保护正版作品;
  • 疑难杂症排查:不开仓、乱开仓、止损不触发、回测与实盘不一致等。
有需求的朋友欢迎交流,先看东西再谈,靠谱不啰嗦。
—— 亮亮出品
filetype

[EAHub]一次一单-去授权.ex4

156.26 KB, 下载次数: 0, 下载积分: 活跃度 -5  [下载]

filetype

[EAHub]一次一单-去授权.mq4

179.38 KB, 下载次数: 1, 下载积分: 活跃度 -5 售价: 1 H币  [记录]  [下载]

评分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN    参与人数:0    我的评分:未评 下载时遇到问题?
举报

评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册