Haciendo un sistema de trading en Python para MT.

 
La idea de escribir un sistema de comercio en Python ha ocurrido, y ya que lo ha hecho, por qué no ponerlo a disposición del público. Tal vez a alguien más que a mí le interese también.
Pero, ¿por qué Python?
- Es una cuestión complicada con muchos aspectos. Intentaré responder.
Históricamente, tengo cuatro terminales instalados en mi ordenador. Algunos de ellos con una API completa, otros con sus propios lenguajes no estándar, otros con ambos.
El primero, en el lejano 2008, fue el terminal con API - se utilizó para crear los primeros sistemas, que finalmente llegaron a los lenguajes C++/C#. Cuando se añadieron más terminales (con o sin idiomas), no se rediseñó el sistema, sólo se desarrolló una nueva interfaz entre el terminal y el sistema. Así, el sistema está unificado, y para trabajar con otro terminal, basta con conectar la interfaz necesaria. En el caso más sencillo, no se necesita más de un día. Y no se quiere rediseñar el sistema para un terminal concreto.
El terminal es sólo un proveedor de datos y un ejecutor de solicitudes. Eso es todo, no se requiere nada más.
Esta es la ideología del sistema.
Pero esto es sólo un aspecto. Los demás están en los próximos posts. No prometo escribir a menudo.
 
En Python, ¿quién quiere? Tengo planes de portar algunas cosas a Java en unos 3 meses. Estoy pensando en ello. Y ni siquiera he visto ninguna API de broker en python. Aunque... puede que haya algunos, por supuesto.
 
Sí, pero ¿por qué Python?
En realidad, Python me interesó porque tiene muchas librerías (módulos), incluidas las de Machine Learning (aprendizaje automático o MO), que es lo que he estado haciendo durante el último año. Sin embargo, no he trabajado con Python - no he escrito una línea todavía). Bueno, he intentado algo abstracto, pero sin objetivos específicos.
Sin embargo, para aplicar Python específicamente a los sistemas de trading es necesario, para empezar, depurar su interacción tanto con el TS como con el terminal.
Considero quellamar a las funciones de Python desde MQL a través de DLL es un error - para llamar a la función de Python de esta manera, debo ejecutar un intérprete y utilizarlo para llamar a la función - y esto es un proceso muy largo para cada llamada.
Tengo un concepto diferente: TC es una aplicación EXE completa que almacena todos los datos anteriores y el historial necesario. Así que sólo llamamos a la función desde una aplicación que ya se está ejecutando - el tiempo de llamada es mínimo.
Algunos dicen -escriben- que Python es muy lento. Esto no es cierto. Para la mayoría de los sistemas (incluso intradía) el rendimiento de Python es más que suficiente, y lo veremos más adelante. En cuanto a la HFT, no podemos competir con ellos a ninguna velocidad: es otro dinero). Y otras propagaciones).
 
Viktar Dzemikhau:
En Python, no sé quién quiere hacerlo. Tengo planes de portar algunas cosas a Java en unos 3 meses. Me lo estoy pensando. Y en python ni siquiera he visto API de ningún corredor. Aunque... puede que haya algunos, por supuesto.

Espera, vamos a hacer también la API. En este hilo. No todos a la vez). Si hay interés, en el lado del foro.

En mi opinión, Java no es una opción. Puede que me equivoque.

 
Konstantin Nikitin:
Como alternativa, puedes escribir en C++ usando QT. Una de las ventajas es que se puede escribir inmediatamente para la compilación multiplataforma.

Estoy de acuerdo. Pero la intención en este hilo es Python y el uso de sus librerías (módulos). Y terminaremos con una API multiplataforma (crossterminal). Para cualquier lenguaje de programación.

Pero, en general, para la mayoría de TC Python es más que suficiente. Y la interfaz para escribir entre el TC y cualquier terminal es, bueno, 1 día como mucho.

Pero, no a la vez, dependiendo del tiempo libre. No prometo nada de forma regular.

 
El intérprete de Python se ejecuta una vez y luego se puede utilizar en un EA o indicador. Todo está ya hecho y está disponible en el foro. Hay un hilo sobre el aprendizaje automático. Utilice https://github.com/RandomKori/Py36MT5
 
Grigoriy Chaunin:
El intérprete de Python se ejecuta una vez y luego puede utilizarlo en su Asesor Experto o indicador. Todo se ha hecho ya y está disponible en el foro. Hay un hilo sobre el aprendizaje automático. Utilice https://github.com/RandomKori/Py36MT5

Sí, gracias. Pero la idea es diferente. Necesitas una aplicación completa, un EXE, para implementarlo. Pero algo puede ser útil. Es una pena que el código fuente de la DLL esté ausente, pero no es crucial.

 
Las fuentes están todas expuestas allí.
 
Grigoriy Chaunin:
Todas las fuentes están expuestas allí.

Sí, efectivamente, todo el proyecto DLL está en VS. No se ha explorado.

Y de alguna manera me perdí ese enlace en el hilo de MoD.

Pero, los héroes normales siempre hacen la ronda (c). Y seguiremos nuestro camino). Este hilo tiene otras tareas.

 

Comencemos creando una aplicación Python que intercambiará datos con la terminal - recibir datos de la terminal y enviarlos a la ventana de salida, así como enviar datos a la terminal desde la ventana SendData. Será necesario para probar la interacción del CT con el terminal.

Hasta ahora, la aplicación no realiza ninguna función.

Aquí está la ventana.

Código Python en el archivo adjunto.

Archivos adjuntos:
PyTS.txt  2 kb
 
Yuriy Asaulenko:

Comencemos creando una aplicación Python que intercambiará datos con la terminal - recibir datos de la terminal y enviarlos a la ventana de salida, así como enviar datos a la terminal desde la ventana SendData. Lo necesitaremos para probar la interacción del CT con el terminal.

Hasta ahora, la aplicación no realiza ninguna función.

Aquí está la ventana.

Código Python en el archivo adjunto.

¿Dónde están los comentarios en el código? ¿Crees que todo el mundo aquí entiende Python y tus ideas, comentarios serán redundantes?

¿Qué es lo que pasa con todos los tiros a la basura"""? Окно вÐомааав """ ?

¿Qué biblioteca importa tkinter, donde la descripción de sus funciones (métodos)?