- 发布者:
-
Mykyta Samoiliuk
I make indicators and Expert Advisors for MetaTrader 5 and write the tools around them in Python. Everything I publish comes with a way to check that it works, so you do not have to take my word for it. I convert TradingView indicators to MQL5 so they show the same values as the original, and I - 显示:
- 24
- 等级:
- 已发布:
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
这是 SuperTrend 组合中专家顾问(EA)部分。其交易所依据的指标已作为 SuperTrend TV 单独发布,其核心目的正是与 TradingView 实现完全一致。 此处的策略本身刻意设计得十分简单:当趋势线向上转折时买入,向下转折时卖出,因为将指标封装成专家顾问(EA)时,真正有趣的部分从来都不是策略本身。
真正容易出错的是时机把握。 如果一个EA在K线尚未形成完成时就读取其指标,就会捕捉到仅存在几秒钟、并在K线收盘前就消失的信号。在图表上,一切看起来都很有说服力,回测报告也充满乐观预期,但实际发生的交易却并非任何人所见的那样。本EA仅读取已收盘的K线,并附带证明这一点的审计报告。

SuperTrend TV在XAUUSD M15图表上的表现。该EA在趋势线每次反转时入场,且每次仅持有一笔头寸
工作原理
它通过 iCustom 读取 SuperTrend TV 的方向缓冲区,每完成一根K线执行一次操作,并仅持有单个头寸。 每笔订单都带有唯一的魔术号,因此该EA绝不会触及任何手动开仓的头寸。止损设置在SuperTrend趋势线本身,可选点数缓冲,当趋势线反转时,该头寸将被平仓并反向建仓。
有种情况值得特别说明,因为在该情况下,一个设计欠周全的版本会下达服务器不得不拒绝的订单。趋势线是根据已成形K线的收盘价计算得出的,而入场则以下一个可用价格执行,因此当订单发出时,价格可能已经越过了该趋势线。 此时止损位将位于入场点的错误一侧。若强行调整止损位,将导致交易在距离止损仅1点处被触发,因此系统会直接放弃该信号,并在日志中记录下来。在欧元/美元H1图表上长达八个月的运行中,117个信号中仅出现过一次这种情况。
该指标作为资源编译到专家顾问中,因此一旦构建完成,它即可独立运行,无需在终端中同时打开该指标。这也意味着必须先编译该指标,因为在构建时,资源将从其.ex5文件中提取。
交易验证机制
该EA会将每个已平仓K线的指标值写入日志,而不仅仅是在趋势反转时。随后,一个Python脚本会读取该日志,并根据数据序列核对交易记录。因此,其验证标准并非EA在图表上看起来是否正确,而是每次趋势反转都精准产生了一笔正确方向的订单,且没有出现任何未由趋势反转支撑的订单。
| K线数:6616 (2026.07.31 .. 2026.09.03) 趋势反转次数:185 入场次数:185 无交易信号 : 0 无信号交易 : 0 单根K线两笔交易 : 0 方向错误 : 0 结果:每次趋势反转对应一笔交易 |
日志为何记录每一根K线
审计的第一版是将交易与从实盘终端导出的指标文件进行比对,结果报告了九十三笔没有信号支撑的交易。EA本身没有问题。实盘终端缺少了测试器从分钟数据构建的3500根M5K线,因此一半的信号没有对应的K线可供匹配。
将基于不同数据计算出的结果进行对比,是最容易导致“代码正常运行却被报错”的情况,值得注意的是,即使你有意排查,这种情况仍可能发生。在运行过程中记录数据序列可彻底解决这一问题。 该审计仍接受外部导出数据作为可选的第二意见,且在两份数据源共有的K线中,其方向每次均一致。
输入参数
- ATR周期和系数,直接传递给指标
- 手数,固定值
- 止损线外额外的点数,默认值为零
- 魔术数字和滑点
- 决策日志开启或关闭,及其文件名
对账户的影响
对于任何已发布的专家顾问,最直观的问题莫过于它能否盈利,因此这里提供数据而非主观意见。两次测试均以一万为起始资金,采用默认参数和固定的十分之一手交易量,数据均来自基于真实历史数据的策略测试器。 统计数据为持仓次数,与报告中的“总交易次数”行一致;而“总交易笔数”行显示的次数约为其两倍,因为该行将每次入场和每次平仓分别计数。
| 运行 | 期间 | 总交易次数 | 最终余额 |
|---|---|---|---|
| XAUUSD M5 | 一个月 | 185 | 10 662 |
| EURUSD H1 | 八个月 | 116 | 9 736 |
黄金当月呈现趋势行情,这一结果归因于趋势本身,而非交易系统。 欧元交易的亏损额接近反转操作本身造成的成本,因为专家策略始终处于市场中,且每次趋势线反转时都要支付两次点差。一个未经过滤的单纯趋势反转,在此之后几乎所剩无几,这属于正常结果,并非投资组合的缺陷。
这就是真实的情况,也正是本文聚焦于信号处理而非交易策略的原因。这里可以验证的是:该交易组合与原始数据一致,且交易记录与信号相符。本文并未宣称盈利,任何对此抱有期待的人,都会因产生上表的同一套算术逻辑而感到失望。
本文未包含的内容
本文未涉及资金管理。手数是固定的,没有风险比例、每日亏损限额,也没有回撤停单机制,因为本文旨在探讨信号处理,添加这些内容会模糊其示范效果。任何将其作为起点的人,在将其应用于真实账户之前都应自行添加这些机制。
还有一点值得明确说明:魔术号码可防止EA在对冲账户上与手动交易发生冲突。 在净额结算账户中,交易终端按设计会将同一交易品种的所有头寸合并为一个头寸,因此如果在EA运行时手动交易同一品种,就无法再实现头寸分离——这是净额结算机制的固有特性,而非本代码所致。
由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/77009
GridCapitalCalculator
每个运行网格策略的人都会问:我的账户资金够用吗?通常的答案——即上一级网格的亏损额——其实是错误的数字。真正导致账户爆仓的,是当保证金水平达到经纪商的强制平仓点时,而此时持仓仍未平仓,且表面上看起来仍有挽回的余地。 该EA会计算出真实数值,然后统计在该交易品种自身的M1历史数据中,如此大幅度的波动已经发生过多少次。 它纠正了三个误差,这些误差都倾向于给人一种“安全”的错觉:由 N 个交易段组成的交易链在第 x N(N-1)/2 步时处于浮亏状态,而非第 x N 步(例如,10 个交易段时,浮亏步数为 45 步,而非 10 步); 持仓在浮亏期间也会占用保证金;止损是百分比,而非零——当达到50%时,损失一半权益就足够了。 “你需要86美元的余量”是一种抽象表述。“‘100天内发生过71次如此幅度的波动,平均每1.4天一次’则是一个决策。 将初始权益(InpEquity)设置为你目前尚未拥有的数值,以了解该配置的实际需求。 严格只读:该配置绝不会开仓、平仓或修改持仓。
AI Prompt Writer - Simple AI Assistant Customization
通过一个简单的提示文件,您可以自定义 MetaTrader 5 AI 助手,选择其语言、个性、菜单和行为。
Any Indicator Alert - alerts, push notifications and multi-timeframe for any custom indicator, no source code needed
将其附加到图表上,输入任意自定义指标的名称,它就会根据该指标自身的缓冲区向您发出提醒——弹出窗口、声音提示、手机推送通知或电子邮件。它通过 iCustom 读取指标,因此无需源代码:您只需下载一个已编译的 .ex5 文件即可。 它还可以从更高时间周期读取该指标,并重新检查已收盘的K线,以告知您该指标是重新绘制还是仅存在滞后。 该工具以“探索”模式启动,该模式会列出指标的所有缓冲区及其各自的内容,因为“哪个缓冲区包含信号”正是阻碍大多数人使用 iCustom 的关键问题。
离散
离散技术指标由价格和交易量的变化决定。