【问题标题】:How Close an MT5 Order from Python?如何从 Python 关闭 MT5 订单?
【发布时间】:2020-04-01 13:20:51
【问题描述】:

我正在尝试通过 MT5-python API 从 python 脚本向我的 MT5 终端发送订单。

我可以开仓,但如何通过 Python mt5-API 平仓?

我这样开一张买票:

import MetaTrader5 as mt5 
lot = 0.1
request = {
"action": mt5.TRADE_ACTION_DEAL,
"symbol": symbol,
"volume": lot,
"type": mt5.ORDER_TYPE_BUY,
"price": price,
.....
"type_time": mt5.ORDER_TIME_GTC,
 "type_filling": mt5.ORDER_FILLING_RETURN,
}

enter copoint = mt5.symbol_info(symbol).point

但是发送“关闭”的命令和形式是什么?

了解更多信息: https://www.mql5.com/en/docs/integration/python_metatrader5

非常感谢!

【问题讨论】:

    标签: python mql5 metatrader5


    【解决方案1】:

    更简单的方法

    mt5.Close(symbol,ticket=ticket)
    

    注意:ticketposition_id 相同

    【讨论】:

      【解决方案2】:

      订单的结构是一样的,只是在收盘时,你必须指定你从第一个订单返回的结果对象中得到的position_id。显然,如果关闭一个买单,关闭请求就是一个卖单。 这是您可以用来进行买卖的代码。

      import MetaTrader5 as mt5
      
      
      ea_magic_number = 9986989 # if you want to give every bot a unique identifier
      
      def get_info(symbol):
          '''https://www.mql5.com/en/docs/integration/python_metatrader5/mt5symbolinfo_py
          '''
          # get symbol properties
          info=mt5.symbol_info(symbol)
          return info
      
      def open_trade(action, symbol, lot, sl_points, tp_points, deviation):
          '''https://www.mql5.com/en/docs/integration/python_metatrader5/mt5ordersend_py
          '''
          # prepare the buy request structure
          symbol_info = get_info(symbol)
      
          if action == 'buy':
              trade_type = mt5.ORDER_TYPE_BUY
              price = mt5.symbol_info_tick(symbol).ask
          elif action =='sell':
              trade_type = mt5.ORDER_TYPE_SELL
              price = mt5.symbol_info_tick(symbol).bid
          point = mt5.symbol_info(symbol).point
      
          buy_request = {
              "action": mt5.TRADE_ACTION_DEAL,
              "symbol": symbol,
              "volume": lot,
              "type": trade_type,
              "price": price,
              "sl": price - sl_points * point,
              "tp": price + tp_points * point,
              "deviation": deviation,
              "magic": ea_magic_number,
              "comment": "sent by python",
              "type_time": mt5.ORDER_TIME_GTC, # good till cancelled
              "type_filling": mt5.ORDER_FILLING_RETURN,
          }
          # send a trading request
          result = mt5.order_send(buy_request)        
          return result, buy_request 
      
      def close_trade(action, buy_request, result, deviation):
          '''https://www.mql5.com/en/docs/integration/python_metatrader5/mt5ordersend_py
          '''
          # create a close request
          symbol = buy_request['symbol']
          if action == 'buy':
              trade_type = mt5.ORDER_TYPE_BUY
              price = mt5.symbol_info_tick(symbol).ask
          elif action =='sell':
              trade_type = mt5.ORDER_TYPE_SELL
              price = mt5.symbol_info_tick(symbol).bid
          position_id=result.order
          lot = buy_request['volume']
      
          close_request={
              "action": mt5.TRADE_ACTION_DEAL,
              "symbol": symbol,
              "volume": lot,
              "type": trade_type,
              "position": position_id,
              "price": price,
              "deviation": deviation,
              "magic": ea_magic_number,
              "comment": "python script close",
              "type_time": mt5.ORDER_TIME_GTC, # good till cancelled
              "type_filling": mt5.ORDER_FILLING_RETURN,
          }
          # send a close request
          result=mt5.order_send(close_request)
      
      
      # This is how I would execute the order
      result, buy_request = open_trade('buy', 'USDJPY', 0.1, 50, 50, 10)
      close_trade('sell', buy_request, result, 10)
      

      【讨论】:

        猜你喜欢
        • 2023-01-12
        • 2022-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-12
        • 1970-01-01
        • 2017-07-02
        相关资源
        最近更新 更多