Discusión sobre el artículo "Integración de MetaTrader 5 y Python: recibiendo y enviando datos" - página 7

 
yogibass:

@Maxim Dmitrievsky

Sólo quería decir gracias por hacer esto disponible. Siempre quise poder codificar mis indicadores en Python y desde que comenzaste este hilo he podido acceder a datos de futuros en tiempo real y utilizarlos para desarrollar y ejecutar mis indicadores. Yo uso mi Python para trazar y analizar la alimentación en vivo y coloco operaciones a través de la plataforma MT5 - funciona muy bien. Por favor, sigan con el buen trabajo y espero de verdad que Python sea totalmente aceptado por la comunidad MT.

Gracias y saludos

Hola, ¿sabe usted por qué el código no compila me sale un valor nulo.

rates = MT5CopyRatesFromPos(i, MT5_TIMEFRAME_M1, 0, 1000)
     d[i] = [y.close for y in rates
 
Dannyhill.0:
Hola sabes por qué el código no compila me sale un valor ninguno.

Varias razones...

  • falta corchete en lista comp
  • uso de funciones obsoletas del paquete MetaTrader5
  • i no está definido
  • espacio de nombres contaminado al usar from x import * (¿posibles colisiones?)
  • close no es un atributo de ndarray
  • no iterar un ndarray para sacar una serie
  • ¿inicializó terminal?

Debería verse así

import MetaTrader5 as mt

try:
    if not mt.initialize():
        raise Exception('Failed to initialize')
    close_price_map = {}
    for symbol in ['EURUSD', 'USDJPY']:
        rates = mt.copy_rates_from_pos(symbol, mt.TIMEFRAME_M1, 0, 5)
        close_price_map[symbol] = rates['close']
        print(symbol)
        print(close_price_map[symbol])
except Exception as e:
    print(e)
finally:
    mt.shutdown()
    
# EURUSD
# [1.12594 1.12598 1.12584 1.12564 1.12543]
# USDJPY
# [107.5   107.494 107.509 107.525 107.527]

Ver docs https://www.mql5.com/es/docs/integration/python_metatrader5

Documentation on MQL5: Integration / MetaTrader for Python
Documentation on MQL5: Integration / MetaTrader for Python
  • www.mql5.com
Python is a modern high-level programming language for developing scripts and applications. It contains multiple libraries for machine learning, process automation, as well as data analysis and visualization. MetaTrader package for Python is designed...
 
Estoy tratando de usar esto para MT4 y dice"SocketClose función no definida" ... ¿las funciones MQL5 también funcionan para MQL4? No veo nada en la propia documentación. ¿se supone que esto se ejecuta en MQL4? ¿puedes ayudarme a resolverlo por favor?
 

encontrado realmente grande github

python metatrader api

[Eliminado]  
sanazgolriz:
Estoy tratando de usar esto para MT4 y dice"SocketClose función no definida" ... ¿las funciones MQL5 también funcionan para MQL4? No veo nada en la propia documentación. ¿se supone que esto funciona en MQL4? ¿pueden ayudarme a resolverlo por favor?

hola creo que las funciones socket no funcionan en metatrader4

puedes usarlo en mt5, tambien puedes usar el nuevo paquete MetaTrader5 (ver documentacion)

para mt4 puede intentar zeromq

Documentation on MQL5: Integration / MetaTrader for Python
Documentation on MQL5: Integration / MetaTrader for Python
  • www.mql5.com
Python is a modern high-level programming language for developing scripts and applications. It contains multiple libraries for machine learning, process automation, as well as data analysis and visualization. MetaTrader package for Python is designed...
 

¡Hola, Maxim!

En otro hilo me ayudaste con la modificación del código, por lo que me gustaría darte las gracias una vez más. He buscado en la página web de MQL5 y he encontrado tu artículo sobre la recepción y envío de datos utilizando el lenguaje de programación Python. Sin embargo, tengo una pregunta de aficionado, tal vez incluso infantil: ¿un socket de red es un dispositivo físico o un producto de software en forma de un conjunto de varios archivos o un único archivo, por ejemplo, el mismo csv?

Saludos, Vladimir.

[Eliminado]  
MrBrooklin:

¡Hola, Maxim!

En otro hilo me ayudaste con la modificación del código, por lo que me gustaría darte las gracias una vez más. He buscado en la página web de MQL5 y he encontrado tu artículo sobre la recepción y envío de datos utilizando el lenguaje de programación Python. Sin embargo, tengo una pregunta de aficionado, tal vez incluso infantil: ¿es un socket de red un dispositivo físico o un producto de software en forma de un conjunto de varios archivos o un único archivo, por ejemplo, el mismo csv?

Saludos, Vladimir.

Es una interfaz de software a través de la cual los programas (procesos) pueden intercambiar datos. Por ejemplo, cuando entras en una página web, accedes al socket abierto del servidor de la página. Lo mismo puede hacerse dentro de un mismo PC. A grandes rasgos, un socket es una función integrada en el sistema operativo.

 
Maxim Dmitrievsky:

Se trata de una interfaz de software a través de la cual los programas (procesos) pueden comunicarse. Por ejemplo, cuando entras en un sitio web, accedes al socket abierto del servidor del sitio. Lo mismo puede hacerse dentro de un mismo PC. A grandes rasgos, un socket es una función integrada en el sistema operativo.

Gracias, Maxim.

¿He entendido bien la esencia de tu artículo? Lo expresaré con mis propias palabras, y puedes corregirme si he entendido algo mal.

  1. Supongamos que hay algunos programas de terceros en mi ordenador, que se crean en un lenguaje de programación fundamentalmente diferente del lenguaje de programación MQL, pero necesito mucho estos programas para mi trabajo.
  2. El código del programa escrito en el lenguaje de programación Python me permite vincular la interacción de estos programas de terceros, por ejemplo, con el mismo terminal MT5.
  3. Los programas de terceros desde otro ordenador pueden controlar remotamente el trabajo del mismo terminal MT5 en mi ordenador.

¿Es esto correcto? Más tarde explicaré por qué hago estas preguntas.

Saludos, Vladimir.

[Eliminado]  
MrBrooklin:

¡Gracias, Maxim!

¿He entendido bien la esencia de tu artículo? Lo expresaré con mis propias palabras y podrás corregirme si he entendido algo mal.

  1. Supongamos que hay algunos programas de terceros en mi ordenador, que se crean en un lenguaje de programación fundamentalmente diferente del lenguaje de programación MQL, pero necesito mucho estos programas para mi trabajo.
  2. El código del programa escrito en el lenguaje de programación Python me permite vincular la interacción de estos programas de terceros, por ejemplo, con el mismo terminal MT5.
  3. Los programas de terceros pueden controlar a distancia el trabajo del mismo terminal MT5.

¿Es esto correcto? Más adelante explicaré por qué hago estas preguntas.

Saludos, Vladimir.

Depende de la tarea, es difícil de decir. Más bien, es mejor "enlazarlos" directamente si tienes acceso al código fuente. De lo contrario, si hay un programa pero no hay código fuente y lo necesitas mucho, puedes hacer algo a través de scripts de Python, sí, donde sea posible.
 
Maxim Dmitrievsky:
Depende de la tarea, es difícil de decir. Más bien, es mejor "enlazarlos" directamente, si tienes acceso al código fuente. De lo contrario, si hay un programa pero no hay código fuente y lo necesitas con urgencia, puedes hacer algo a través de scripts Python, sí, donde sea posible.

Ahora llegamos a la tarea en sí. No se trata de una tarea técnica, sino de una exposición muy breve de su esencia.

Usted necesita periódicamente (por ejemplo, una vez por hora, una vez al día, una vez a la semana) tomar varios datos de varios (no más de 10) sitios y realizar cálculos intermedios complejos en un programa de terceros (no MQL). El resultado de estos cálculos serán tres señales para el control del terminal MT5: una señal para abrir una orden de compra, una señal para abrir una orden de venta o una señal para cerrar una orden.

¿Es esto posible? Necesito saber esto para poder componer competentemente una tarea técnica para freelance.

Saludos, Vladimir.

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Свойства пользовательских индикаторов
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Свойства пользовательских индикаторов
  • www.mql5.com
Количество индикаторных буферов, которые можно использовать в пользовательском индикаторе, не ограничено. Но каждому массиву, который назначается в качестве индикаторного буфера с помощью функции SetIndexBuffer(), должен быть указан тип данных, которые он будет хранить. Это может быть одно из значений перечисления ENUM_INDEXBUFFER_TYPE...