Grupo de usuarios de MetaTrader 5 Python - cómo utilizar Python en Metatrader - página 69

 
Roman:

@Almaz
La primera vez que se ejecutan las funciones copy_xxx_xxx, cuando el terminal no se ha iniciado durante algún tiempo, las funciones
devuelven inmediatamente el resultado disponible con el historial que falta, sin esperar a la sincronización del intercambio de historiales.
Significa que la primera llamada a la función devuelve el resultado con la historia que falta.
Sólo las llamadas posteriores devolverán el resultado correcto, cuando se intercambie el historial.
¿Es posible solucionar este problema? Y las funciones copy_xxx_xxx esperan que el historial se intercambie en la primera llamada.

copy_ticks o copy_rates? ¿Cuál es la construcción del terminal?

 
Roman:

@Almaz
La primera vez que se ejecutan las funciones copy_xxx_xxx, cuando el terminal no se ha iniciado durante algún tiempo, las funciones
devuelven inmediatamente el resultado disponible con el historial que falta, sin esperar a la sincronización del intercambio de historiales.
Significa que la primera llamada a la función devuelve el resultado con la historia que falta.
Sólo las llamadas posteriores devolverán el resultado correcto, cuando se intercambie el historial.
¿Es posible solucionar este problema? Y las funciones copy_xxx_xxx esperarán a que el historial se intercambie en la primera llamada.

Leer Organizar el acceso a los datos, no tiene nada que ver con la biblioteca de Python. Este es un comportamiento estándar, hay que manejar estas situaciones y volver a solicitar el historial después de que el terminal lo intercambie.

Esto es una cosa de una sola vez, por lo que no es crítico. Siempre puedes mantener el historial existente actualizado si trabajas con el terminal desde un script todo el tiempo.

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

copy_ticks o copy_rates? ¿Qué compilación del terminal?

Usé copy_rates, pero creo que copy_ticks será lo mismo, pero no lo he comprobado.
Construir 2470

 
Rashid Umarov:

Leer Organize Data Access, no tiene nada que ver con la biblioteca de Python. Este es un comportamiento estándar, hay que manejar estas situaciones y volver a solicitar el historial después de que el terminal lo rebote.

Esto es una cosa de una sola vez, por lo que no es crítico. Siempre puedes mantener el historial existente actualizado si trabajas con el terminal desde el script todo el tiempo.

He leído esta sección, está relacionada con Mql5.
¿O quiere decir que hay que organizarCheckLoadHistory de la misma manera?
¿Por qué no introducir esta función como estándar? Para la biblioteca Mql y Py.

Y en general, es extraño que permita que la función Copiar reciba datos incorrectos, sin esperar a que se intercambie el historial y dar el resultado.
 
Roman:

He leído esta sección, se refiere a Mql5.
¿O quiere decir que hay que organizarCheckLoadHistory de la misma manera?
¿Por qué no introducir esta función como estándar? Para la biblioteca Mql y Py.

Y en general es extraño que permita datos incorrectos en la función Copiar, sin esperar el intercambio de la historia y dar el resultado.

Si trabajas en MQL5, las preguntas de la secciónOrganización del acceso a los datos no son tan especiales. Hemos estudiado esta sección a fondo. Y lo usamos.

¿Por qué cree que debería ser diferente para Python?

Al fin y al cabo, el núcleo principal es MQL5 y hay que conocerlo. Y sólo después de eso hay que aplicar Python.

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

He leído esta sección, se refiere a Mql5.
¿O quiere decir que hay que organizarCheckLoadHistory de la misma manera?
¿Por qué no introducir esta función como estándar? Para la biblioteca Mql y Py.

Y en general es extraño que permita datos incorrectos en la función Copiar y no espere a que se cargue el historial y devuelva el resultado.

La librería de Python permite solicitar datos del terminal MetaTrader 5 de forma general, independientemente de la forma en que se hayan solicitado: manualmente, a través de MQL5 o utilizando el script de Python.

El desarrollador de los programas MQL5 y de los scripts de Python es responsable de la lógica y la organización del trabajo con los datos.

 

Por la tarde

¿Existe una opción para conectarse a la terminal a través de PowerShell? si alguien sabe cómo, le agradecería la información

No tengo experiencia con python, así que me gustaría usar lo que mejor conozco))

 

¡Buenos días!

He conectado las librerías, python se comunica con Mt5, me sale la información de la cuenta pero las cotizaciones no se cargan de ninguna manera. ¿Puede ayudarme?

Python versión 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()


Resultado:

(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:

¡Buenos días!

He conectado las librerías, python se comunica con Mt5, me sale la información de la cuenta pero las cotizaciones no se cargan de ninguna manera. ¿Puede ayudarme?

Python versión 3.7.6



Resultado:

Por favor, inserte el código correctamente (utilice el botón Código)

 
Vladimir Karputov:

Por favor, inserte el código correctamente (utilice el botón)

Gracias por el diseño, lo tendré en cuenta.