-
- 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()
复制代码
|