jk01 发表于 2025-7-27 03:27:18

使用Python + MetaTrader5库(适合自动化交易)平仓MT5 二分之一订单


import MetaTrader5 as mt5

if not mt5.initialize():
    print("MT5初始化失败")
    quit()

positions = mt5.positions_get()
total_volume = sum(pos.volume for pos in positions)
close_volume = total_volume * 0.5

for pos in positions:
    if close_volume <= 0:
      break
   
    if pos.volume >= close_volume:
      request = {
            "action": mt5.TRADE_ACTION_DEAL,
            "position": pos.ticket,
            "symbol": pos.symbol,
            "volume": close_volume,
            "type": mt5.ORDER_TYPE_SELL if pos.type == mt5.ORDER_TYPE_BUY else mt5.ORDER_TYPE_BUY,
            "price": mt5.symbol_info_tick(pos.symbol).ask if pos.type == mt5.ORDER_TYPE_BUY else mt5.symbol_info_tick(pos.symbol).bid,
            "deviation": 10,
      }
      mt5.order_send(request)
      break
    else:
      request = {
            "action": mt5.TRADE_ACTION_DEAL,
            "position": pos.ticket,
            "symbol": pos.symbol,
            "volume": pos.volume,
            "type": mt5.ORDER_TYPE_SELL if pos.type == mt5.ORDER_TYPE_BUY else mt5.ORDER_TYPE_BUY,
            "price": mt5.symbol_info_tick(pos.symbol).ask if pos.type == mt5.ORDER_TYPE_BUY else mt5.symbol_info_tick(pos.symbol).bid,
            "deviation": 10,
      }
      mt5.order_send(request)
      close_volume -= pos.volume

mt5.shutdown()

xqs1314 发表于 2026-3-1 23:37:11

感谢分享,很大收获@@

sanwich 发表于 2026-3-2 12:28:24

平部分仓 搞起来不好看日记记录。我试过平三分之一仓,后面去对数据查问题的时候费脑

xinhua123 发表于 2026-3-16 01:15:33

来学习了

Yangyedong 发表于 2026-3-29 02:10:45

可惜了,我不会编程

marco699 发表于 2026-4-17 07:09:29

认真学编程,

zhq320 发表于 2026-4-22 23:50:01

值得学习,很不错

Hdkndh 发表于 2026-4-23 19:41:33

非常感谢你学到了

feggg 发表于 2026-6-20 01:52:46

非常感谢你不错的东西

˚炒汇养家 发表于 2026-6-20 18:07:42

我觉得可以直接上手杀手锏4.0~

更胜一期 发表于 2026-7-4 18:38:37

有注释就更好了

goldenclaw 发表于 2026-8-27 21:03:50

思路简洁清晰,先汇总总仓位再按顺序扣减到一半,可读性好。提两点小建议:每次 order_send 后检查返回的 retcode,避免部分成交被误判为成功;下单参数建议带上 magic 和 comment,多策略同账户时方便对账。整体逻辑挺适合自动化分批止盈的场景。
页: [1]
查看完整版本: 使用Python + MetaTrader5库(适合自动化交易)平仓MT5 二分之一订单