找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 46|回复: 0

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

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-27 23:50:00 | 显示全部楼层 |阅读模式
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()复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-9 19:35 , Processed in 0.100674 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表