50 lines
2.7 KiB
Python
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()
|
|
#+------------------------------------------------------------------+
|