- 显示:
- 11
- 等级:
- 已发布:
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
在为回测结果感到高兴之前,了解自己每笔交易的实际成本是有益的。 交易终端会记录历史数据中每个K线的点差,但这一信息通常会被忽略:在回测工具中显示的是“当前”点差,而决策却往往基于一条漂亮的净值曲线。
脚本的功能
SpreadAudit 脚本会遍历指定天数的 M1 历史数据,提取每个K线中的点差字段,并计算:
- 点差的中位数、第90百分位数和第99百分位数——以价格单位和点数为单位;
- 以 ATR(H1) 百分比表示的相同数值,以便在不同交易品种间进行比较;
- 每日各小时的平均点差和最大点差——将结果导出为 CSV 文件并保存至 MQL5\Files 文件夹中。
输入参数
- InpDays- 分析M1历史数据的天数(1..3650,默认60);
- InpAtrPeriod- 用于标准化处理的H1周期ATR(默认值为24);
- InpSaveCSV- 是否将每小时数据表保存为 CSV 文件。
输出示例
=== SpreadAudit: XAUUSD | 实际波动范围 2026.05.30 ... 2026.07.29 | 86397 根K线(0根不含点差) === 中位数K线点差:0.37(37.0 pts) 第90百分位K线点差: 0.42 (42.0 pts) 第99百分位K线点差:0.45 (45.0 pts) H1 ATR(24) = 6.41 -> 中位数点差 = 0.058 ATR,第90百分位 = 0.066 ATR

附图显示的是XAUUSD过去60天的小时图。平均点差维持在0.40左右,但在日间结转时段,点差峰值会飙升至近1.80,即比平时高出四倍多。 针对这一时间窗口设计的交易策略,其实际成交价格与账户平均价格相去甚远。
这在实践中有什么用
举个简单的例子。假设你在M5图表上的交易模式平均每笔交易产生0.28个价格单位——这在统计学上具有显著性,效果是真实存在的。 如果该交易品种的点差中位数为0.37,那么该系统在真实账户中就会亏损,尽管在没有交易成本的历史数据中表现得非常出色。 “没有效果”与“有效果,但成本更高”之间的区别至关重要:在前者情况下,该交易策略会被舍弃;在后者情况下,则需要寻找点位或交易结构,使收益能够覆盖点差。
小时图显示了点差在哪些时段会扩大。 通常是在隔夜持仓时段以及交易时段开盘后的最初几分钟——如果您的策略正是在这些时段入场,建议设置点差过滤器,且最好以ATR的分数为单位而非点数来设定:当波动性模式发生变化时,绝对阈值会失效。
重要说明
MetaTrader在K线柱中保存的是该K线柱的最低点差。这意味着,所有计算出的数值都是您实际支付成本的乐观下限。 逻辑很简单:如果连成本的下限都足以让策略崩盘,那就没什么好讨论的了。
如果您的经纪商在 M1 历史数据中“点差”字段未填充(部分经纪商该处显示为零),脚本会如实报告这一情况,并不会基于空数据进行统计计算。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/75450
Clock (Spread)
该指标的功能 Clock (Spread).mq5 是一款 MetaTrader 5 图表指标,会在图表角落显示一个小型文本标签,内容包括: 倒计时至当前K线收盘(格式为 HH:MM:SS 或 MM:SS,具体取决于时间周期) 当前点差(卖价 − 买价,单位为点),显示在计时器旁边的括号内。 更新日志: 2.20 版: - 点差颜色现根据方向动态变化(绿色 = 上升,红色 = 下降) - 添加了可配置的点差颜色输入参数
Inside Bar
自动检测“内部K线”形态、绘制投影矩形并接收实时警报——这一切都集成于一个功能强大的指标中。 波段交易者和全额保证金交易者