MetaTrader 5 Python User Group - как использовать Python в Метатрейдере - страница 58

 
Дмитрий Прокопьев:

Спасибо, этот пример я видел, это работает.

Я чуть о другом.


positions_get - мне вернет list of TradePosition. В принцпе норм, можно закинуть в pandas и отлично работать.

Но одной pandas все не ограничивается, и если надо получить что-то типа:

[{'ticket': 164661016, 'time': 1585075408, 'time_msc': 1585075408163, 'time_update': 1585075408, 'time_update_msc': 1585075408163, 'type': 1, 'magic': 0, 'identifier': 164661016, 'reason': 0, 'volume': 0.01, 'price_open': 120.306, 'sl': 0.0, 'tp': 0.0, 'price_current': 120.328, 'swap': 0.0, 'profit': -0.2, 'symbol': 'EURJPY', 'comment': '', 'external_id': ''}, 
{'ticket': 164661051, 'time': 1585075426, 'time_msc': 1585075426062, 'time_update': 1585075426, 'time_update_msc': 1585075426062, 'type': 0, 'magic': 0, 'identifier': 164661051, 'reason': 0, 'volume': 0.01, 'price_open': 1.07798, 'sl': 0.0, 'tp': 0.0, 'price_current': 1.07881, 'swap': 0.0, 'profit': 0.83, 'symbol': 'EURUSD', 'comment': '', 'external_id': ''}]

Посмотрите пример для positions_get, там несколько строк используется

Пример:

import MetaTrader5 as mt5
import pandas as pd
pd.set_option('display.max_columns'500# сколько столбцов показываем
pd.set_option('display.width', 1500)      # макс. ширина таблицы для показа
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
print()
# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
 
# получим открытые позиции на USDCHF
positions=mt5.positions_get(symbol="USDCHF")
if positions==None:
    print("No positions on USDCHF, error code={}".format(mt5.last_error()))
elif len(positions)>0:
    print("Total positions on USDCHF =",len(positions))
    # выведем все открытые позиции
    for position in positions:
        print(position)
 
# получим список позиций на символах, чьи имена содержат "*USD*"
usd_positions=mt5.positions_get(group="*USD*")
if usd_positions==None:
    print("No positions with group=\"*USD*\", error code={}".format(mt5.last_error()))
elif len(usd_positions)>0:
    print("positions_get(group=\"*USD*\")={}".format(len(usd_positions)))
    # выведем эти позиции в виде таблицы с помощью pandas.DataFrame
    df=pd.DataFrame(list(usd_positions),columns=usd_positions[0]._asdict().keys())
    df['time'] = pd.to_datetime(df['time'], unit='s')
    df.drop(['time_update', 'time_msc', 'time_update_msc', 'external_id'], axis=1, inplace=True)

    print(df)
 
# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
 
 
Результат:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
positions_get(group="*USD*")=5
      ticket                time  type  magic  identifier  reason  volume  price_open       sl       tp  price_current  swap  profit  symbol comment
0  548297723 2020-03-18 15:00:55     1      0   548297723       3    0.01     1.09301  1.11490  1.06236        1.10101 -0.10   -8.00  EURUSD        
1  548655158 2020-03-18 20:31:26     0      0   548655158       3    0.01     1.08676  1.06107  1.12446        1.10098 -0.08   14.22  EURUSD        
2  548663803 2020-03-18 20:40:04     0      0   548663803       3    0.01     1.08640  1.06351  1.11833        1.10098 -0.08   14.58  EURUSD        
3  548847168 2020-03-19 01:10:05     0      0   548847168       3    0.01     1.09545  1.05524  1.15122        1.10098 -0.06    5.53  EURUSD        
4  548847194 2020-03-19 01:10:07     0      0   548847194       3    0.02     1.09536  1.04478  1.16587        1.10098 -0.08   11.24  EURUSD   

Документация по MQL5: Интеграция / MetaTrader для Python / positions_get
Документация по MQL5: Интеграция / MetaTrader для Python / positions_get
  • www.mql5.com
ticket                time  type  magic  identifier  reason  volume  price_open       sl       tp  price_current  swap  profit  symbol comment 0  548297723 2020-03-18 15:00:55     1      0   548297723       3    0.01     1.09301  1.11490  1.06236        1.10101 -0.10   -8.00  EURUSD        ...
 

В справку добавлены описания 3-х новых функций:

Кроме того, были внесены изменения в описания многих функций, так как они были доработаны. Практически все примеры были переписаны с учетом нового функционала. Правда, примеры для следующих функций на сайте пока не обновились, будут немного позже:

Документация по MQL5: Интеграция / MetaTrader для Python / last_error
Документация по MQL5: Интеграция / MetaTrader для Python / last_error
  • www.mql5.com
позволяет получить код ошибки в случае неуспешного выполнения какой-либо функции библиотеки MetaTrader 5. Является аналогом GetLastError(), но используются свои коды ошибок. Возможные значения:
 
Дмитрий Прокопьев:

Господа, в соседней ветке ребята вопросы задают по либе:

URL: https://www.mql5.com/en/forum/306742/page11#comment_15595095

Окажете поддержку?

Ответил в той ветке

 
Rashid Umarov:

Посмотрите пример для positions_get, там несколько строк используется

Спасибо!

 
Rashid Umarov:

Ответил в той ветке

Рашид, скажите, а есть ли возможность использовать тестер c либы MetaTrader5?

При моделировании в тестре, есть один очень эффективный элемент - распаралеливание тасков моделирования в Local network farm или

MQL5 Cloud, хотелось бы использовать ресурс тестера с MetaTrader5.

 
Vladimir Perervenko:

Это то Вам зачем? Вы что не можете посчитать это в Питоне? Удивляете.

Да я вообще пока с питоном не знаком, собираюсь только на него переходить с луа, вот изучаю материал...
 

В справке указано как установить и обновить бибилиотеку - https://www.mql5.com/ru/docs/integration/python_metatrader5

Установка пакета в командной строке:

  pip install MetaTrader5

Обновление пакета в командной строке:

  pip install --upgrade MetaTrader5



Документация по MQL5: Интеграция / MetaTrader для Python
Документация по MQL5: Интеграция / MetaTrader для Python
  • www.mql5.com
Python является современным высокоуровневым языком программирования для разработки сценариев и приложений. Содержит множество библиотек для машинного обучения, автоматизации процессов, анализа и визуализации данных. Пакет MetaTrader для Python предназначен для...
 
Rashid Umarov:

В справке указано как установить и обновить бибилиотеку - https://www.mql5.com/ru/docs/integration/python_metatrader5

Если честно, не совсем все понятно. Т.к. без VS не работает, а что конкретно нужно от VS - не понятно (т.к. не хотелось бы ставить всю студию ибо не нужна);

Если уточните - будет замечательно.

 
Alexey Kozitsyn:

Если честно, не совсем все понятно. Т.к. без VS не работает, а что конкретно нужно от VS - не понятно (т.к. не хотелось бы ставить всю студию ибо не нужна);

Если уточните - будет замечательно.

А зачем вам VS? Python не требует наличия VS.

Гуглите что-то типа window python,  и будет вам щастье.

 

Господа разработчки, тут хорошее замечание поступило в соседней ветке.

Это кассается обработки **kwargs, в случае написания тестов - это очень важный момент.

https://www.mql5.com/en/forum/306742/page12#comment_15660939