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

 
Roman:

@Almaz
При первом запуске функций copy_xxx_xxx, когда терминал не запускался какое то время,
функции сразу возвращают имеющийся результат с пропуском истории, не дожидаясь синхронизации подкачки истории.
То есть первый вызов функций возвращает результат с пропущенной историей.
Только на последующих вызовах будет возвращён корректный результат, когда история подкачается.
Возможно ли подправить этот момент? И функции copy_xxx_xxx дожидались подкачки истории при первом вызове.

copy_ticks или copy_rates? какой билд терминала?

 
Roman:

@Almaz
При первом запуске функций copy_xxx_xxx, когда терминал не запускался какое то время,
функции сразу возвращают имеющийся результат с пропуском истории, не дожидаясь синхронизации подкачки истории.
То есть первый вызов функций возвращает результат с пропущенной историей.
Только на последующих вызовах будет возвращён корректный результат, когда история подкачается.
Возможно ли подправить этот момент? И функции copy_xxx_xxx дожидались подкачки истории при первом вызове.

Почитайте раздел Организация доступа к данным, библиотека Python здесь не причем. Это стандартное поведение, вам нужно обрабатывать такие ситуации и запрашивать повтороно историю после того, как терминал подкачает её.

Это разовый случай, поэтому не является критически значимым. Вы всегда можете поддерживать имеющуюся историю в актуальном состоянии, если работаете с терминалом из скрипта постоянно.

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 
Almaz:

copy_ticks или copy_rates? какой билд терминала?

Использовал copy_rates, но думаю что с copy_ticks то же самое будет, но не проверял.
Билд 2470

 
Rashid Umarov:

Почитайте раздел Организация доступа к данным, библиотека Python здесь не причем. Это стандартное поведение, вам нужно обрабатывать такие ситуации и запрашивать повтороно историю после того, как терминал подкачает её.

Это разовый случай, поэтому не является критически значимым. Вы всегда можете поддерживать имеющуюся историю в актуальном состоянии, если работаете с терминалом из скрипта постоянно.

Я читал этот раздел, он относится к Mql5.
Или вы намекаете, что нужно организовать  CheckLoadHistory   потому же принципу?
Почему не ввести эту функцию как штатную? Для Mql и Py библиотеки.

А вообще странно, что вы допускаете в Copy функции получение некорректных данных, не дожидаясь подкачки истории, отдаёте результат.
 
Roman:

Я читал этот раздел, он относится к Mql5.
Или вы намекаете, что нужно организовать  CheckLoadHistory   потому же принципу?
Почему не ввести эту функцию как штатную? Для Mql и Py библиотеки.

А вообще странно, что вы допускаете в Copy функции получение некорректных данных, не дожидаясь подкачки истории, отдаёте результат.

У тех кто работает в MQL5 вопросы раздела  Организация доступа к данным, не являются чем-то особенным. Мы этот раздел изучили вдоль и поперёк. И используем.

Почему Вы думаете, что для Python должно быть по другому? 

Всё таки основное ядро - это MQL5 и его нужно знать. И только потом применять Python.

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 
Roman:

Я читал этот раздел, он относится к Mql5.
Или вы намекаете, что нужно организовать  CheckLoadHistory   потому же принципу?
Почему не ввести эту функцию как штатную? Для Mql и Py библиотеки.

А вообще странно, что вы допускаете в Copy функции получение некорректных данных, не дожидаясь подкачки истории, отдаёте результат.

Библиотека Python позволяет запрашивать данные из терминала MetaTrader 5 на общих основаниях, независимо от того, как прозошел запрос — вручную, через MQL5 или скриптом из Python.

Вся логика и организации работы с данными ложиться на разработчика MQL5-программ и скриптов на Python.

 

Добрый день

А есть вариант подключиться к терминалу через PowerShell? если кто знает как, буду благодарен за информацию

Опыта с питоном нет, поэтому хотелось бы использовать то, что лучше знаю))

 

Доброго дня!

Подключил библиотеки, связь python с Mt5 есть, получаю информацию о счете но котировки никак не подгружаются. Подскажите кто знает.

Версия Python 3.7.6


from datetime import datetime
import MetaTrader5 as mt5

# выведем информацию о версии MetaTrader 5
print(mt5.version())

# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()

# подключимся к торговому счету без указания пароля и сервера
account=17245465
authorized=mt5.login(account)  # пароль будет взят из базы терминала, если указано помнить данные для подключения
if authorized:
    # выведем данные о торговом счете как есть
    print(mt5.account_info())
    # выведем данные о торговом счете в виде списка
    print("Show account_info()._asdict():")
    account_info_dict = mt5.account_info()._asdict()
    for prop in account_info_dict:
        print("  {}={}".format(prop, account_info_dict[prop]))
else:
    print("failed to connect at account #{}, error code: {}".format(account, mt5.last_error()))

# запросим статус и параметры подключения
print(mt5.terminal_info())

# получим информацию о версии MetaTrader 5
print(mt5.version())

x= mt5.symbols_total()
print('количество всех финансовых инструментов в терминале MetaTrader 5=', x)

# получим все символы
symbols=mt5.symbols_get()
print('symbols=', symbols)

# получим бары с разных инструментов разными способами
eurusd_rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M30, datetime(2020, 1, 28, 13), 1000)

# DATA
print('eurusd_rates', eurusd_rates )

# завершим подключение к MetaTrader 5
mt5.shutdown()


Результат:

(0, 0, '')
AccountInfo(login=17245465, trade_mode=2, leverage=500, limit_orders=500, margin_so_mode=0, trade_allowed=False, trade_expert=True, margin_mode=2, currency_digits=2, fifo_close=False, balance=0.0, credit=0.0, profit=0.0, equity=0.0, margin=0.0, margin_free=0.0, margin_level=0.0, margin_so_call=50.0, margin_so_so=20.0, margin_initial=0.0, margin_maintenance=0.0, assets=0.0, liabilities=0.0, commission_blocked=0.0, name='xxxxxxxxxxxxx', server='Alpari-MT5', currency='USD', ...)
Show account_info()._asdict():
  login=17045461
  trade_mode=2
  leverage=500
  limit_orders=500
  margin_so_mode=0
  trade_allowed=False
  trade_expert=True
  margin_mode=2
  currency_digits=2
  fifo_close=False
  balance=0.0
  credit=0.0
  profit=0.0
  equity=0.0
  margin=0.0
  margin_free=0.0
  margin_level=0.0
  margin_so_call=50.0
  margin_so_so=20.0
  margin_initial=0.0
  margin_maintenance=0.0
  assets=0.0
  liabilities=0.0
  commission_blocked=0.0
  name=ххххххх
  server=Alpari-MT5
  currency=USD
  company=Alpari International
TerminalInfo(community_account=True, community_connection=True, connected=True, dlls_allowed=False, trade_allowed=False, tradeapi_disabled=False, email_enabled=False, ftp_enabled=False, notifications_enabled=False, mqid=False, build=2489, maxbars=100000000, codepage=1251, ping_last=95766, community_balance=0.0, retransmission=5.305821665438467, company='Alpari International', name='Alpari MT5', language='Russian', path='C:\\Program Files\\Alpari MT5', ...)
(500, 2489, '12 Jun 2020')

количество всех финансовых инструментов в терминале MetaTrader 5= 43
symbols= (SymbolInfo(custom=False, chart_mode=0, select=True, ....
eurusd_rates None

Process finished with exit code 0
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Признак отрисовки ценового графика. Если установлено значение false, то отключается отрисовка любых атрибутов ценового графика и устраняются все отступы по краям графика: шкалы времени и цены, строка быстрой навигации, метки событий Календаря, значки сделок, тултипы индикаторов и баров, подокна индикаторов, гистограммы объёмов и т.д. Значение...
 
rale70:

Доброго дня!

Подключил библиотеки, связь python с Mt5 есть, получаю информацию о счете но котировки никак не подгружаются. Подскажите кто знает.

Версия Python 3.7.6



Результат:

Пожалуйста вставляйте код правильно (используйте кнопку  Code)

 
Vladimir Karputov:

Пожалуйста вставляйте код правильно (используйте кнопку  )

Спасибо за оформление, учту. 

Причина обращения: