[英]How Close an MT5 Order from Python?
我正在嘗試通過 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
非常感謝!
訂單的結構是一樣的,只是在關閉的時候,你必須指定你從第一筆訂單返回的結果對象中得到的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)
更簡單的方法
mt5.Close(symbol,ticket=ticket)
注意: ticket
與position_id
相同
我嘗試使用“mt5.Close(symbol,ticket=ticket)”命令,但它不起作用。 我在哪里可以找到 mt5 的詳細信息。 語法?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.