MQL5Book/Scripts/Python/historyordersget.py
super.admin 1c8e83ce31 convert
2025-05-30 16:09:41 +02:00

50 lines
2.7 KiB
Python

#+------------------------------------------------------------------+
#| historyordersget.py |
#| Copyright 2022, MetaQuotes Ltd. |
#| https://www.mql5.com |
#+------------------------------------------------------------------+
from datetime import datetime
import MetaTrader5 as mt5
import pandas as pd
pd.set_option('display.max_columns', 500) # сколько столбцов показываем
pd.set_option('display.width', 1500) # макс. ширина таблицы для показа
print()
# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
print("initialize() failed, error code =", mt5.last_error())
quit()
# получим количество ордеров в истории (всего и по *GBP*)
from_date = datetime(2022, 9, 1)
to_date = datetime.now()
total = mt5.history_orders_total(from_date, to_date)
history_orders=mt5.history_orders_get(from_date, to_date, group="*GBP*")
# print(history_orders)
if history_orders == None:
print("No history orders with group=\"*GBP*\", error code={}".format(mt5.last_error()))
else :
print("history_orders_get({}, {}, group=\"*GBP*\")={} of total {}".format(from_date, to_date, len(history_orders), total))
# выведем все отмененные исторические ордера по тикету позиции 0
position_id = 0
position_history_orders = mt5.history_orders_get(position = position_id)
if position_history_orders == None:
print("No orders with position #{}".format(position_id))
print("error code =", mt5.last_error())
elif len(position_history_orders) > 0:
print("Total history orders on position #{}: {}".format(position_id,len(position_history_orders)))
# выведем полученные ордера как есть
for position_order in position_history_orders:
print(position_order)
print()
# выведем эти ордера в виде таблицы с помощью pandas.DataFrame
df = pd.DataFrame(list(position_history_orders), columns = position_history_orders[0]._asdict().keys())
df.drop(['time_expiration','type_time','state','position_by_id','reason','volume_current','price_stoplimit','sl','tp', 'time_setup_msc', 'time_done_msc', 'type_filling', 'external_id'], axis = 1, inplace = True)
df['time_setup'] = pd.to_datetime(df['time_setup'], unit='s')
df['time_done'] = pd.to_datetime(df['time_done'], unit='s')
print(df)
# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
#+------------------------------------------------------------------+