forked from rosh/MQL5Book
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()
| |
#+------------------------------------------------------------------+
|