外汇 EA 交易的不是抽象的 EURUSD 市场,而是所连接经纪商提供的准确品种。它可能名为 EURUSD、EURUSD.a、EURUSDm 或其他名称,其交易量、最小价格变动和止损规则可能与另一个账户不同。
品种名称
当 EA 读取当前图表品种时,后缀通常不成问题。但如果程序查找硬编码名称、通过文本拼接相关品种名称,或基于不符合经纪商合约规格的假设计算金额风险,后缀就可能引发问题。
宣传的低点差不能证明品种命名、交易量规则、执行方式或保护订单距离符合 EA 要求。
合约规格
| 属性 | 检查内容 | 重要原因 |
|---|---|---|
| 品种名称 | EURUSD、EURUSD.a、EURUSDm | EA 是否能找到并交易图表中的品种 |
| Digits / Point | 4/5 位报价,或 JPY 货币对的 2/3 位报价 | pip 换算、距离过滤条件及订单价格 |
| 合约大小 | 一标准手所代表的单位数量 | 金额风险及保证金假设 |
| 最小价格变动 / tick 价值 | 最小价格变动及其价值 | 仓位计算及利润计算 |
| 最小手数 / 手数步长 | 0.01、0.1 或其他增量 | 计算出的交易量是否能被接受 |
| Stops Level | 与市场价格的最小距离 | 挂单、止损和止盈设置是否有效 |
| 交易时段 | 品种可以接受订单的时间 | 时段过滤及市场关闭错误 |
兼容性检查流程
打开 Market Watch
右键点击准确品种,选择 Specification。不要依赖从其他账户类型复制的数值。
与 EA 要求比较
确认货币对、图表周期、报价位数、最小手数、对冲或 FIFO 限制、挂单使用方式及允许交易的时间。
检查风险计算
测试计划使用的最小手数,并比较预期与显示的保证金及 tick 价值。信号正确,但合约假设错误,仍然不安全。
测试订单距离
在模拟环境中,确认挂单及保护价位在正常和较宽点差条件下均能被接受。
记录运行环境
将经纪商、服务器、账户类型、准确品种及规格,与 EA 版本和参数文件一并保存。
常见陷阱
安全运行原则
最安全的安装方式是使用经纪商实际提供的图表品种,并让 EA 在运行时读取其属性。如果程序要求输入后缀,只输入文档规定的后缀,包括标点和大小写。除非开发者明确要求,否则不要通过重命名文件或创建离线图表来绕过问题。
模拟环境验证
按规定单位区分 point、pip 与 tick
在典型的五位 EURUSD 报价中, Point = 0.00001 ,传统定义的一点(pip)为 0.00010。在典型的三位 JPY 货币对报价中, Point = 0.001 ,一点(pip)为 0.01。这些惯例并未为金属或指数定义通用的“pip”。转换任何距离输入参数之前,先阅读 EA 手册。
MQL4 文档规定, MODE_TICKSIZE 以 point 为单位,而 SYMBOL_TRADE_TICK_SIZE 是价格增量。估算金额时,应将价格距离与最小价格变动统一为相同的价格单位: loss per lot = price distance ÷ tick size × tick value。tick 价值必须适用于当前品种和账户币种。
验证价格与交易量的有效步长
假设价格距离为 0.00500、最小价格变动为 0.00001 、每手的 tick 价值为 $1 ,则对应 500 个 tick,以及每手 $500 的价格风险,尚未计入成本。不要将这些数值直接用于另一个合约。美分账户、特殊合约大小或不同账户币种,都需要重新核对。
在经纪商允许的最小值和最大值范围内,将交易量向下取整至允许的手数步长;两位小数不是通用规则。分别检查 Stops Level 和 Freeze Level,以及允许的价格增量。如果 tick 价值缺失、过期或不一致,应停止计算并解决问题,而不是假设一个方便的数值。
请参阅官方的 MQL4 品种属性定义。