Spécifications
一、交易目的
程序同时监控 Bitget 和 Bybit 两个 MT5 账户。
同一标的出现可盈利价差时:
· 价格高的平台做空;
· 价格低的平台做多;
· 两边同时开仓、补仓和平仓;
· 获取两个平台价格差缩小后的利润。
不判断标的涨跌,全部使用市价单,不使用交易所 API 。
二、程序结构
同一台 Windows 服务器运行:
· Bitget MT5 +一个 EA ;
· Bybit MT5 +一个 EA ;
· 一个本地总控制程序。
两个 EA 负责读取报价、账户、持仓和执行订单。
总控制程序负责:
· 比较两个平台价格;
· 选择交易标的;
· 计算开仓成本;
· 发出开仓、补仓、平仓命令;
· 处理单边成交;
· 执行 8% 熔断。
三、交易标的
每个整点重新筛选一次。
规则:
1. 只统计 Bitget 和 Bybit 双方都有的 CFD 标的;
2. 统计上一完整小时的成交额;
3. 两个平台同一标的成交额相加;
4. 排名前 5 的标的,进入下一小时交易名单。
如果平台不提供真实成交量,则使用上一小时 Tick 活跃度排名,并在界面注明“活跃度排名”。
已经持仓的标的掉出前 5 名后:
· 可以继续持有和平仓;
· 不再开首仓;
· 不再补仓。
标的名称可能带不同后缀,必须建立人工确认的对应表。
四、实时报价
每个平台出现新报价后,立即重新计算价差。
读取:
· Bid :当前可以卖出的价格;
· Ask :当前可以买入的价格;
· 毫秒报价时间。
Bitget 价格高
价差= Bitget Bid - Bybit Ask
交易方向:
Bitget 做空
Bybit 做多
Bybit 价格高
价差= Bybit Bid - Bitget Ask
交易方向:
Bybit 做空
Bitget 做多
必须使用 Bid 和 Ask ,不能使用中间价、 K 线收盘价或 Last 价格。
如果两个平台报价时间相差过大,禁止开仓,避免使用旧报价。
五、开仓成本
每个平台、每个标的单独设置:
· 每手手续费;
· 合约大小;
· 最大点差缓冲;
· 最小手数;
· 手数增加间隔。
开仓最低价差:
最低价差
=双边手续费 ÷每手合约大小
+ Bitget 最大点差缓冲
+ Bybit 最大点差缓冲
只有:
当前可成交价差>最低价差
才允许开仓。
黄金初始参数
XAUUSD : 1 手= 100 盎司
Bitget 手续费: 6 美元 / 手
Bybit 手续费: 6 美元 / 手
Bitget 最大点差缓冲: 0.30 美元
Bybit 最大点差缓冲: 0.30 美元
因此:
手续费价格差= 12 ÷ 100 = 0.12 美元
最低开仓价差= 0.12 + 0.30 + 0.30 = 0.72 美元
例如:
Bitget Bid = 4100.90
Bybit Ask = 4100.10
价差= 0.80 美元
0.80 大于 0.72 ,可以开仓:
Bitget 做空
Bybit 做多
手续费和最大点差缓冲必须可以人工修改,不能永久写死。
六、开仓量
每次开仓,每个平台使用该账户当前净值的 2% 作为保证金预算。
程序根据 MT5 实际保证金计算可开的手数。
两边匹配的是实际合约数量:
实际数量=手数 ×合约大小
两边实际数量必须相同。
如果合约大小不同,按合约大小换算手数,并以可开数量较小的一边为准。
七、总持仓上限
单个平台全部策略持仓占用的保证金,不得超过该账户当前净值的 20% 。
达到 20% 后:
· 禁止新开仓;
· 禁止补仓;
· 只允许管理和平掉现有仓位。
八、补仓
首仓成交时记录价差:
首仓差价= S
价差继续扩大时等量补仓:
2S :补一次
3S :再补一次
4S :再补一次
……
例如首仓价差为 0.80 美元:
0.80 :首仓
1.60 :补一次
2.40 :再补一次
3.20 :再补一次
每次补仓:
· 两个平台同时执行;
· 方向不变;
· 数量与首仓相同;
· 同一倍数只补一次;
· 单个平台总持仓不得超过 20% 。
九、平仓
该标的从首仓两边成交完成起,正常持仓不得低于 5 分钟。
满 5 分钟后,按照两个平台当前真实 Bid 和 Ask 计算:
Bitget 全部仓位盈亏
+ Bybit 全部仓位盈亏
-手续费
-隔夜费
-其他费用
只要两边同时全部平仓后的净利润大于 0 ,立即同时市价平仓。
以下情况不受 5 分钟限制:
· 触发 8% 熔断;
· 一边成交、另一边失败;
· 两边持仓数量不一致;
· 一个 MT5 断线;
· 平台停止报价或只允许平仓。
十、双边下单失败
两个平台必须同时发送订单。
如果一边成交,另一边失败:
1. 立即再次补上失败的一边;
2. 仍然失败,立即平掉已经成交的一边;
3. 暂停该标的;
4. 保存实际损失和拒单原因;
5. 人工确认后才能恢复。
两边持仓数量不一致时,禁止继续开仓和补仓。
十一、 8% 总账户熔断
策略启动时记录:
起始总净值
= Bitget 账户净值+ Bybit 账户净值
运行中持续计算:
当前总净值
= Bitget 实时净值+ Bybit 实时净值
当:
当前总净值 ≤起始总净值× 92%
立即无条件执行:
1. 停止开仓;
2. 停止补仓;
3. 取消全部未成交订单;
4. 两个平台全部市价强平;
5. 不受最低持仓 5 分钟限制;
6. 不等待价差恢复;
7. 程序停机;
8. 只能人工重新启动。
如果一个平台断线:
· 先平掉能够连接的平台;
· 断线平台恢复后立即全部平仓;
· 两边完全空仓前禁止重新运行。
充值或提币后,熔断起始净值必须由人工重新确认。
十二、必须停止交易的情况
出现以下任意情况,停止开仓和补仓:
· 任意一个 MT5 断线;
· 任意一个 EA 失去联系;
· 报价停止更新;
· 两个平台报价时间差过大;
· 两边持仓数量不一致;
· 合约大小或手数规则变化;
· 手续费配置缺失;
· 保证金计算失败;
· 连续拒单;
· 单个平台持仓达到 20% ;
· 总账户亏损达到 8% ;
· 市场关闭或平台只允许平仓;
· 平台维护、降杠杆或限制交易。
十三、程序界面
主界面显示:
· 两个平台连接状态;
· 当前 5 个交易标的;
· 两个平台 Bid 和 Ask ;
· 当前可成交价差;
· 当前最低开仓价差;
· 当前首仓差价和补仓倍数;
· 两边实际仓位;
· 每个平台保证金占用比例;
· 两个平台分别盈亏;
· 当前总净值;
· 当前总亏损比例;
· 距离 8% 熔断还有多少;
· 当前是否允许交易;
· 停止交易的原因。
十四、必须保存的记录
每笔交易保存:
· 标的;
· 两个平台报价和报价时间;
· 开仓方向;
· 首仓或第几次补仓;
· 计划手数和实际手数;
· 发单时间;
· 实际成交时间;
· 实际成交价格;
· 手续费;
· 隔夜费;
· 占用保证金;
· 持仓时间;
· 平仓原因;
· 两个平台分别盈亏;
· 最终组合净利润;
· 拒单、断线和单边成交记录;
· 是否触发 8% 熔断。
十五、程序员必须阅读的官方资料
MT5 报价、合约及交易
最新 Bid 、 Ask 和报价时间:
https://www.mql5.com/en/docs/marketinformation/symbolinfotick
读取历史 Tick :
https://www.mql5.com/en/docs/series/copyticks
读取合约大小、手数和隔夜费:
https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants
下单前检查:
https://www.mql5.com/en/docs/trading/ordercheck
计算保证金:
https://www.mql5.com/en/docs/trading/ordercalcmargin
异步发送订单:
https://www.mql5.com/en/docs/trading/ordersendasync
确认真实成交结果:
https://www.mql5.com/en/docs/event_handlers/ontradetransaction
读取账户净值和保证金:
https://www.mql5.com/en/docs/account/accountinfodouble
Bitget CFD
支持标的和合约规格:
https://www.bitget.com/asia/support/articles/12560603847415
手续费、隔夜费和股息:
https://www.bitget.com/zh-CN/support/articles/12560603840553
Bid 、 Ask 和浮动点差:
https://www.bitget.com/support/articles/12560603839741
保证金和强平规则:
https://www.bitget.com/support/articles/12560603839630
异常交易及延迟套利限制:
https://www.bitget.com/support/articles/12560603873369
规则和产品更新:
https://www.bitget.com/support/sections/12508313448115
Bybit CFD
账户和低点差模式:
https://www.bybit.com/en/help-center/article/Introduction-to-TradFi
手续费和隔夜费:
https://www.bybit.com/en/help-center/article/TradFi-Fees-Explained
支持标的和合约规格:
https://www.bybit.com/en/help-center/article/Contracts-Available-on-TradFi-MT5-and-Specifications
Bid 、 Ask 和参考流动性:
https://www.bybit.com/en/help-center/article/TradFi-Indicative-Liquidity
市价成交和滑点:
https://www.bybit.com/en/help-center/article/Slippage-in-TradFi-MT5-Trading
保证金计算:
https://www.bybit.com/en/help-center/article/Margin-Calculations-on-TradFi
强平规则:
https://www.bybit.com/en/help-center/article/Liquidation-Process-On-TradFi-Margin-Close-Out