整体逻辑:让币安和 MT5 按价差做双边对冲

为了方便说明,软件把币安 U 本位合约记作 A,把 MT5 经纪商账号记作 B。先配置两个账号和交易对,软件再持续比较两边报价的差值,并按任务规则开仓、平仓。

A = 币安

示例交易对是 XAUUSDT。A 端需要 API Key,并保证行情、交易、用户数据连接都正常。

B = MT5

示例交易对是 XAUUSD。B 端要确认账号余额、净值、可用预付款和强平价。

任务策略

A多B空 = 币安买入、MT5 卖出;B多A空 = MT5 买入、币安卖出。达到价差门槛后开仓,满足反方向条件后平仓。

账号管理

添加币安交易所账号和 MT5 账号

进入顶部菜单的“账号管理”。页面左侧有两个账号类型:交易所账号和 MT5 账号。先添加币安账号,再添加 MT5 账号。

  • 点击右上角“添加交易所账号”,录入币安 API Key。
  • API 权限以交易权限为主,不要开启提现权限。
  • 添加完成后点击“测试连接”,确认状态显示“可交易”。
  • 切换到 MT5 账号页,添加 MT5 经纪商交易账号。
软件部分位置沿用“MT5”字段名,实际可按你接入的 MT5 账号使用;关键是账号、品种和合约大小要和经纪商一致。
账号管理页面,展示交易所账号和 MT5 账号入口,以及添加交易所账号按钮
截图 1:账号管理 先配置币安 API,再配置 MT5 交易账号。
价差监控

新增一组币安 + MT5 价差组合

进入“价差监控”,点击“新增监控组”。A 账号选币安,B 账号选 MT5,然后分别填写两个平台的交易对。

  • A 交易对示例:XAUUSDT,对应币安黄金 U 本位合约。
  • B 交易对示例:XAUUSD,对应 MT5 经纪商黄金品种。
  • 打开“启用此监控组”,保存配置后观察卡片是否显示“运行中”。
  • 如果价差不更新,优先检查 B 端品种名称是否和 MT5 完全一致。
A、B 两边不要放反。后续任务里的 A 多 B 空、B 多 A 空,都是基于这里选择的 A 账号和 B 账号计算。
价差监控页面,打开监控组配置弹窗,选择 A 账号、B 账号、A 交易对和 B 交易对
截图 2:新增监控组 把币安 XAUUSDT 与 MT5 XAUUSD 建立成一组价差。
交易任务

在交易任务页新建策略任务

1登录软件 2点击顶部“交易任务” 3点击“任务列表”上方的“新增任务”

打开弹窗后,先不要急着启用。先把参数填好、保存,再观察第一次模拟订单;确认两边都正常后,最后才打开“启用”。

  1. 确认当前选择的是正确的价差组合,例如:币安 XAUUSDT + MT5 XAUUSD
  2. 确认 A、B 两边都显示已连接,买一价/卖一价(Bid/Ask)正在刷新。
  3. 点击“新增任务”,按下面的第一次模拟样例填写。
  4. 保存时先保持“启用”关闭;核对无误后,再打开“启用/运行中”。
一句话记忆:A 是币安,B 是 MT5;“A 多 B 空”就是币安买入、MT5 卖出;“B 多 A 空”就是 MT5 买入、币安卖出。
交易任务页面,展示当前交易对、平台账户状态、价差、任务列表和新增任务按钮
截图 3:交易任务入口 确认报价和连接正常后,再点击“新增任务”。
任务参数

设置方向、阈值、仓位和确认次数

这一段先给你一套“第一次模拟测试可以照抄”的设置。它只用于熟悉页面,不是实盘收益参数。最重要的顺序是:先选方向,再填阈值,再填数量,最后按券商规格核对 MT5 手数。

推荐的第一次模拟测试先小数量、单方向、关闭利润平仓
任务标题黄金模拟 - A多B空
启用先关闭,检查后再开启
允许动作A多B空开仓 + A多B空平仓
两个价差门槛A多B空 0.50;B多A空 0.40
利润平仓开关关闭;下面的利润数值暂不生效
每次下单数量1(基础单位)
任务上限1(先只跑一组)
四个卡单上限全部填 1
时间与行情偏移 0;改价 200ms;保持 1000ms(1秒);新鲜度 5000ms(5秒);样本 3
MT5 换算合约 100;最小手数 0.01;步进 0.01
失败策略只提示并暂停,等待人工核对(warnOnly)
保存后不会因为“参数填好”就自动成交。还必须满足价差门槛、报价新鲜、保持时间和样本数;每次行情更新最多新增一笔,填 2/3 不是一次发满。
示意图 4:新建任务怎么填 这是按当前字段重画的示意图,不是交易界面截图;实际操作以弹窗里的字段名称为准。

新建任务参数:填什么、改变什么

下面按四组说明每个字段:填什么、它管什么、改大或改小会怎样。第一次建议只照抄模拟样例,一次只改一个数字。

A

先看方向和开关

这组决定“哪边买、哪边卖”,也是最容易填反的地方。

任务标题 黄金模拟 - A多B空

只是给任务起名字,方便你在列表里认出来。

改大改小:没有影响;建议写清品种和方向。
启用 先关闭

打开后,任务才会真的根据行情提交订单;关闭只是暂停这个任务,不会自动删除已有订单。

第一次设置:保存后先检查报价和账号,再手动打开。
A多B空开仓 / 平仓

开仓:A(币安)买入,B(MT5)卖出。平仓:币安卖出、MT5 买回刚才那笔空单。

不勾选就不会自动做这个动作;开仓和平仓要分别勾选。
B多A空开仓 / 平仓

开仓:B(MT5)买入,A(币安)卖出。平仓:MT5 卖出、币安买回刚才那笔空单。

不勾选就不会自动做这个动作;不要把 A、B 的含义想反。
A多B空阈值 0.50

B Bid - A Ask:MT5 买一价减去币安卖一价。例如 2350.70 − 2350.10 = 0.60,达到 0.50 才进入确认。

填大:更难触发、信号更少;填小:更容易触发、交易更频繁。
B多A空阈值 0.40

A Bid - B Ask:币安买一价减去 MT5 卖一价。例如 2351.20 − 2350.60 = 0.60,达到 0.40 才进入确认。

阈值是价格差,不是百分比;填大更难触发,填小更容易触发。
开仓阈值也会用于反方向平仓

A多B空阈值负责 A多B空开仓,也负责 B多A空平仓;B多A空阈值负责 B多A空开仓,也负责 A多B空平仓。平仓仍要打开对应的平仓开关。

B

再看每次下多少、最多留几组

这里控制数量和同时占用的订单位置。数字越大,风险和保证金占用也会增加。

单次挂单数量 1

每一组对冲要做的基础数量。模拟用 1 盎司,软件会按 MT5 换算规则换成手数。

1 组 = 币安一笔 + MT5 对应一笔;填大占用更多保证金,填小更适合先做验证。
任务上限 1

同一个任务还没有结束时,最多同时保留几组对冲。

填 2 不是一次下两单,而是后续行情继续满足时,最多再建立第 2 组;每次行情更新仍按一笔一笔执行。
四个未成交 / 部分成交上限 全部 1

这是四个独立数字:开仓完全未成交、开仓部分成交、平仓完全未成交、平仓部分成交。它们分别限制“还没做完、正在等待”的订单数量。

填大允许更多等待中的订单;填小更保守。达到某一项上限后先等待,每次行情更新最多补一笔。
利润平仓 / 默认平仓利润 开关关闭

按两边的估算盈亏达到目标后,允许进入平仓判断;它不是“保证赚到这个数”。开关关闭时,下面的利润数值不生效;填 0 也不等于关闭。

目标填大通常等更久;还必须打开对应的平仓开关。第一次模拟建议关闭。
C

最后看等待时间和行情新鲜度

这些数字决定信号要持续多久、报价过多久就算旧,主要影响“快不快”和“稳不稳”。

价格偏移 ticks 0

ticks 就是“最小价格跳动的档数”。在当前报价之外,再让下单价偏开几档。

填大:价格更被动,可能更难成交;填 0:先按当前报价规则测试。
最小改价间隔 ms 200

ms 是毫秒,1000ms=1秒。这是页面保存的兼容字段,用来记录改价间隔。

普通客户保持 200 即可;它不是“保证每 200ms 下单一次”,不要用它代替信号保持时间。
信号保持 ms 1000(1秒)

价差达到门槛后,还要连续满足这么久才确认开仓或平仓。

填大:过滤掉一闪而过的信号,但动作更慢;填小:更快,也更容易被短暂波动触发。
报价不能超过多久没更新 5000ms(5秒)

A、B 两边报价超过这段时间没有更新,就先不下单;这就是“行情新鲜度”。

填小更严格,网络稍慢就可能等不到;填大不容易被延迟拦截,但旧报价风险更高。
确认样本数 3

在保持时间内,需要收集多少个有效报价样本。样本不是订单数量。

填大:确认更稳但更慢;任意一次不满足门槛或行情过期,计数会重新开始。
D

MT5 换算和失败处理

这组必须照 MT5 经纪商的品种规格填写,不能凭感觉估计。

合约大小 / 最小手数 / 手数步进 100 / 0.01 / 0.01

合约大小说明 1 手代表多少基础单位;最小手数是最小能下多少;步进是每次能增加多少。比如 1 盎司 ÷ 100 = 0.01 手。

必须和券商规格完全一致;填错会导致换算错误、保存失败或下单被拒。
MT5 失败策略 warnOnly

白话就是“只提示并暂停”:一边明确失败时先提示并进入保护状态,让你处理实际仓位;它不是自动补单开关。

当前不要把 autoRebalance 当成已经接入的自动补偿功能;MT5 暂时没回复时显示“待核对”,不能重复下单。
关键规则:信号保持时间和确认样本数必须同时通过;A、B 报价过期会拦截动作;MT5 延迟、断线或暂时没有回复时显示“待核对”,不能重复下单;明确拒单且 A 已成交时进入单腿保护,不会回到可继续开仓的状态。

纸面行情演示:A多B空与 B多A空

以下数字只用于看懂公式、确认样本、开仓、延迟回执和反向平仓流程,不连接真实行情,也不是收益承诺。

统一 Demo 参数:A=币安 XAUUSDT,B=MT5 XAUUSD;A多B空阈值 0.50,B多A空阈值 0.40;单次数量 1 盎司,MT5=100/0.01/0.01;信号保持 1000ms、确认样本 3、行情新鲜度 5000ms。两次演示分开做,开始前确保两边没有残留仓位。

A多B空:币安买入、MT5 卖出,再按反方向平仓

勾选:A多B空开仓 + A多B空平仓。开仓看 B Bid - A Ask(MT5 买一价 − 币安卖一价),平仓看反方向 A Bid - B Ask

时间币安卖一价
A Ask
MT5 买一价
B Bid
计算过程结果
10:00:00.0002350.102350.702350.70 − 2350.10 = 0.60样本 1,达到 0.50
10:00:00.5002350.102350.682350.68 − 2350.10 = 0.58样本 2,仍满足
10:00:01.0002350.102350.722350.72 − 2350.10 = 0.62样本 3,保持约 1 秒,确认开仓
  1. 确认后创建一笔 A 端动作:币安买入 1 盎司。
  2. A 成交后立即提交 B 腿:MT5 卖出 0.01 手。
  3. 例如 MT5 暂时 8 秒没有回复,这只是演示服务商延迟,不是“8 秒就算失败”;期间显示处理中/待核对,禁止重复点击。
  4. 平台最终回复后,用最新实际仓位确认对应的 MT5 订单编号,才显示“已对冲”。

平仓样本:当币安买一价(A Bid)=2351.20、MT5 卖一价(B Ask)=2350.70 时,反向价差 0.50;随后 0.44、0.52,连续 3 个样本达到 B多A空阈值 0.40。确认后只平这组订单:币安卖出 1 盎司,MT5 买回对应 0.01 手空单。

B多A空:MT5 买入、币安卖出,再按反方向平仓

勾选:B多A空开仓 + B多A空平仓。开仓看 A Bid - B Ask(币安买一价 − MT5 卖一价),平仓看反方向 B Bid - A Ask

时间币安买一价
A Bid
MT5 卖一价
B Ask
计算过程结果
11:00:00.0002351.202350.602351.20 − 2350.60 = 0.60样本 1,达到 0.40
11:00:00.5002351.162350.582351.16 − 2350.58 = 0.58样本 2,仍满足
11:00:01.0002351.252350.622351.25 − 2350.62 = 0.63样本 3,保持约 1 秒,确认开仓
  1. 确认后形成 A 腿卖出动作:币安卖出 1 盎司。
  2. 立即提交 B 腿:MT5 买入 0.01 手。
  3. 若一边成交、另一边明确拒单,任务进入单腿保护;下一次行情不能新增另一笔 A 单。
  4. 平仓时例如 MT5 买一价(B Bid)− 币安卖一价(A Ask)为 0.65、0.58、0.72,连续 3 个样本达到 0.50;确认后币安买回空单,MT5 平掉对应多单。
平仓必须使用这条订单绑定的真实 MT5 订单编号。延迟、断线或实际仓位还没刷新时保持“待核对”并锁定原编号,不能拿另一笔同品种仓位顶替。

开仓、平仓与 MT5 延迟回执

这里的“回执”就是平台最后返回的结果。MT5 服务商几秒甚至十几秒没有回复,不等于失败;软件要继续等原请求的最终结果,再用实际仓位核对,而不是猜订单编号。

正常顺序

报价新鲜 → 保持时间/样本通过 → A 提交 → A 成交后立即发 B → 等平台最终回复 → 核对实际仓位和订单编号 → 已对冲

  • 延迟期间不要重复点击开仓或平仓。
  • 平台回复里的临时 PositionId/TicketNumber 只是候选编号,不能直接当最终订单编号。
  • 只有账号、品种、方向、数量和最新实际仓位都唯一匹配,才算确认成功。

四种结果

  • 已对冲:两边成交并逐笔匹配。
  • 待核对:结果未知或快照没刷新,保留原请求并暂停同路线重复动作。
  • 明确拒单:显示错误;如果 A 已成交,任务保持暂停,不能回到可继续开仓。
  • 部分成交:进入保护,按剩余数量核对,不要直接删任务。
平仓规则:平仓只使用这条订单绑定的 MT5 真实订单编号。全部平仓要确认指定编号对应的仓位消失,部分平仓要确认同一编号的剩余手数正确;不能拿另一笔同品种仓位顶替。

出现单腿或本地/真实数量不一致时

  1. 先暂停任务,不再点击开仓。
  2. 分别在币安和 MT5 查看实际方向、数量和订单编号。
  3. 等待迟到回执或刷新真实持仓;未知结果不要当作普通失败。
  4. 按风险决定手动补齐或手动平掉单腿,并记录处理时间。处理前不要再次点开仓或平仓。
  5. 只有进入明确终态、没有待核对标志、真实仓位已经处理后,才删除这一条订单记录;不需要删除整个监控组。

启用前后检查清单

完成配置后,按下面顺序检查,可以减少 API 权限、品种名称、仓位比例和信号触发带来的问题。

启用前

  1. 账号管理页里币安账号状态为“可交易”,MT5 账号已添加并可连接。
  2. 价差监控组处于“运行中”,A、B 两边的买一价/卖一价(Bid/Ask)都在刷新。
  3. 交易对名称完全匹配,例如币安 XAUUSDT、MT5 XAUUSD
  4. 任务方向只勾选本次要执行的方向,避免两个方向同时误触发。
  5. 单次挂单数量、任务上限、MT5 合约大小与账户资金匹配。

启用后

  • 观察任务状态是否从“等待开仓信号”正常变化。
  • 查看日志详情,确认开仓、平仓、撤单、移仓等动作没有报错。
  • 第一轮成交后核对币安仓位和 MT5 仓位方向是否互相对冲。
  • 如果长时间不触发,检查阈值是否过高、确认样本数是否过大。
  • 如果触发太频繁,提高阈值或增加确认样本数,降低噪声交易。

单腿处理视频教程

当 A、B 两边持仓数量不一致时,先暂停任务,禁止重复开仓或平仓;再判断 A 数量是大于还是小于 B 数量,按原 MT5 订单编号核对后参考对应视频处理。视频默认不会自动播放,需要手动点击播放。

A 数量大于 B 数量

B开仓失败导致单腿处理方法

只要 A 数量大于 B 数量,都可以参考该方法处理。

A 数量小于 B 数量

B平仓失败导致单腿处理方法

只要 A 数量少于 B 数量,都可以参考该方法处理。