Haciendo un sistema de trading en Python para MT. - página 4

 

Todo está listo ahora, y es el momento de vincular nuestro Python TS a la terminal MT. Sin embargo, hay que tomar algunas medidas para lograrlo.

Nuestro futuro TC lee y escribirá archivos en la carpeta C:\PyTS, pero el terminal MT, por algún capricho desconocido de MQ, sólo puede leer-escribir archivos en su propio directorio - C:\<muchas letras y números>\Files, y de ninguna otra manera. Por supuesto, puedes cambiar la configuración en el código de Python, y dejar que cambie a la carpeta nativa de MQ, pero necesito que el terminal lea y escriba los archivos desde allí y hacia donde yo quiera, no hacia donde él, el terminal, quiera. Más aún, será necesario en el futuro.

En realidad, esta cuestión se resolvió hace un par de años, en mi tema - https://www.mql5.com/ru/forum/79922.

Todo se resuelve con las herramientas de Windows. En la carpeta del terminal C:\<muchas letras y números> \Files pones la referencia a la carpeta C:\PyTS, que es interpretada por el terminal (y el SO también) como la subcarpeta Files\PyTS y el terminal escribe allí, en C:\PyTS, como en su nativo).

Esto se hace en la línea de comandos, utilizando la utilidad nativa de Windows MKLINK. Para los que no puedan hacerlo por sí mismos, he aquí una descripción detallada:

Escriba en ejecutar - cmd, o desde el menú - Utilidades-Windows -> Símbolo del sistema. Aparece una ventana en la que se escribe MKLINK o mklink. Aquí tenemos:


Ahora teclea cd... varias veces hasta llegar a C:\N.

A continuación, abra el Explorador de Windows, y vaya a C:\<un montón de letras y números> \Files, donde el terminal pone los archivos, y seleccione y copie la ruta Ctrl-Ins.

Vuelva a la ventana del símbolo del sistema y allí escriba cd <espacio>, utilice Shift-Ins para pegar la ruta de acceso a ... \N - Archivos, y Enter. Lo entendemos:

Ahora en la línea de comandos escribimos - mklink /D PyTS c:\PyTS , y como siempre - Enter. Aquí lo tenemos:

Vemos que se ha creado un enlace. Vemos que apareció en la carpeta ......\Files y accedemos a ella - vemos los archivos en la carpeta C:\PyTS. )) Eso es todo.

Ahora, todos los archivos escritos por el terminal en la carpeta ...Files\PyTS serán, de hecho, escritos en la carpeta C:\PyTS.

.

RAM Диск.
RAM Диск.
  • 2016.04.07
  • www.mql5.com
Общее обсуждение: RAM Диск.
 
Así que, hemos terminado con el intercambio de archivos. Todo funciona, todas las fuentes están en el archivo adjunto. Todo lo demás, y la transferencia inversa de Python a MT, se hace de la misma manera, y espero que no cause ningún problema. Para correr, lee y ejecuta mi post anterior. No hay otra manera).

El código MQL también está en el archivo adjunto. - MQL lee el historial y lo pasa a la aplicación Python. Python lo acepta y lo imprime. En Python no olvides pulsar el botón de inicio. )

Espero que no haya necesidad de escribir comentarios sobre el código MQL - hay una referencia). Sí, la transferencia de datos de MT se hace con un temporizador, es más conveniente para mí, en esta etapa.

Si tiene alguna pregunta, no dude en llamar).

Por ahora haré una pausa: ahora hay que resolver las preguntas con la estrategia. Si tiene alguna sugerencia, la tendremos en cuenta).

Una vez más, el uso compartido de archivos es ideal para el desarrollo y la depuración de estrategias, ya que no requiere ningún esfuerzo de modificación. Para la mayoría de las estrategias del mundo real, sigue siendo adecuado. Pero, si es necesario, siempre podemos sustituirlo por otro, sin necesidad de hacer cambios significativos en el programa - una cuestión de 1-2 días.

Archivos adjuntos:
PyTS.zip  4 kb
PyTSMT.mq5  7 kb
 

No prometo escribir a menudo, sólo a medida que lo consiga. El proyecto se está llevando a cabo en segundo plano, sin prisas, en mi tiempo libre.

Pensé que sería bueno que el sistema mostrara gráficos

En general, Python es un lenguaje sencillo - un par de días para estudiarlo es suficiente. Pero ocuparse de los módulos es mucho más difícil: hay miles de ellos, y quién hace qué y por qué no siempre es obvio. Con los gráficos, eso es lo que pasó: tuve que resolverlo durante mucho tiempo. Pero el resultado es el siguiente:

El programa lee un archivo CSV y dibuja un gráfico.

El gráfico muestra los precios por Cierre, unos 50 mil candelabros.

Si haces clic en la lupa y seleccionas un rectángulo en el área del gráfico, así:

puedes ampliar el gráfico, y lo conseguirás:

Esto puede hacerse repetidamente. El gráfico también puede moverse y guardarse como imagen, y por supuesto ampliarse a pantalla completa.

Todos los archivos que necesitas están en la aplicación. Descomprimir el zip en alguna carpeta y ejecutar CSVGraph.py

Antes de ejecutarlo, no olvides comprobar si los módulos que quieres importar están instalados.

Archivos adjuntos:
CSVGraph.zip  582 kb
 
Como un ejercicio de Python, tal vez. Pero desde un punto de vista práctico, es de poca utilidad + una pérdida de tiempo. Por supuesto, cada uno tiene su propia manera. Buena suerte
 

Dejemos las tonterías a los vecinos y a la caja de resonancia de los aficionados, pero resumamos nosotros mismos los resultados preliminares.

Si ya está familiarizado con el tema Si eres un profesional, ya sabes algo de Python, sabes cómo trabajar con archivos CSV, sabes cómo construir gráficos e intercambiar datos con el terminal. Esto ya es suficiente para desarrollar, simular y probar estrategias de negociación. Si sus estrategias trabajan con TF de 1 minuto y más sin utilizar ticks y accediendo al terminal con intervalos de 5-10 segundos, ya puede crear estrategias que funcionen directamente en Phyton, dejando sólo la entrega de datos y la "ejecución" de sus órdenes al terminal.

Además, ya conoces la programación y el entorno Phyton, a un nivel superior al lenguaje y entorno R, tan popular entre los apologistas locales del machine learning. Ya podrá construir incluso estrategias de indicadores muy complejas en Python, pero todas las características de Python (de forma similar a R) pueden implementarse utilizando módulos. En este tema hemos utilizado sólo 3 módulos - tkinter, numpy y matplotlib.

Ahora, lo que necesita Python para construir estrategias más avanzadas, digamos que utilizando el aprendizaje automático. Para ello se puede utilizar el módulo -scikit-learn. Con el uso descikit-learn se dispone de las siguientes características - Guía del usuario. ¿Qué le parece el conjunto de métodos? - Ya tiene prácticamente de todo, incluyendo, no sin saberlo, de R y el tema de Machine Learning, desde la clasificación bayesiana hasta los bosques aleatorios y las redes neuronales.

Éste es sólo uno de los módulos de aprendizaje automático de Python, y hay una docena de ellos. Se dice que el móduloscikit-learn no es el mejor de ellos, ni el más avanzado. Eso depende de quién necesite qué. Los otros no son difíciles de encontrar en Internet.


PD Para los que están empezando o se están iniciando en Python.

He probado varios entornos de desarrollo de Python y me he detenido en el más conveniente para los principiantes (entre los que me incluyo): Anaconda. Lo que lo hace conveniente es que todo lo que necesito ya está instalado, incluyendo Python. También te aconsejo que instales el editor VSCode, que también es muy bueno y se instala directamente desdeAnaconda.

Puede que no estés contento con mi elección.

 
Después de 4 páginas del tema, por fin estamos preparados para pasar a lo que se ha dicho: estrategias en Python. Ya está todo hecho para ello.
Empezaremos con una estrategia sencilla: operar en el cruce de la EMA, posiblemente con modificaciones.
Cuando dominé las redes neuronales (NS), empecé con una tarea sencilla: las NS debían identificar los puntos de cruce de EMA. La tarea, desde un punto de vista práctico, es absolutamente inútil, pero nos permitió determinar cómo alimentar el NS con datos de mercado, cómo prepararlos, y resolvió muchos problemas de formación.
Ahora nuestra tarea es no obtener beneficios en absoluto y ni siquiera comunicarnos con el terminal - es simple, pero sin una estrategia rentable no tiene sentido. Nuestra tarea ahora es crear una plantilla de estrategia, y aprender a probarla, y cualquier estrategia servirá. A continuación, poner cualquier estrategia en la plantilla y probarlo, y si funciona, entonces podemos empezar a operar a través de la terminal.

Los indicadores necesarios están listos. Ver figura hecha en Python (En Python es muy cómodo y rápido dibujar todo tipo de gráficos). Se trata de la respuesta a un único salto - 1(t), o función transitoria. En realidad, una de las pruebas estándar.


La fm es la media móvil convencional (que sólo sirve para la calibración), la f1 es la EMA, con un cálculo de coeficiente modificado, y la f2 es un indicador no estándar.

Sin embargo, como solía decir nuestro conocido común:

Igor Makanu:

Lo he dicho un millón de veces, y probablemente lo volveré a decir... Nadie ha inventado nada mejor que los indicadores de la oferta de MT (estándar... por así decir los antiguos indicadores eslavos... ¡¡paganos!!).

Así que, para no engañar a su cabeza con la ciencia, obtendrá las fuentes estándar de EMA y estrategia. Sin embargo, voy a hacer y probar la estrategia en mis indicadores. Tal vez, oculte algo más de las miradas indiscretas, pero sin perder funcionalidad.

Pero no se trata de la travesía de la EMA. El objetivo de todo esto son las estrategias de aprendizaje automático. Hasta ahora estoy probando diferentes métodos de clasificación. Y aquí están los resultados de las pruebas:

La clasificación gaussiana, la RBF SVM, las redes neuronales y la bayesiana ingenua están en la cima hasta ahora. El programa Python ya está listo, disponible en algún lugar de Internet, pero la preparación de los datos depende del usuario.

Vamos.

 
Yuriy Asaulenko:
Después de 4 páginas del tema, por fin estamos listos para pasar a lo que se ha dicho: estrategias en Python. Todo está ya hecho para esto.
Empezaremos con una estrategia sencilla: operar en el cruce de la EMA, posiblemente con modificaciones.
Cuando dominé las redes neuronales (NS), empecé con una tarea sencilla: las NS debían identificar los puntos de cruce de EMA. La tarea, desde un punto de vista práctico, es absolutamente inútil, pero nos permitió determinar cómo alimentar el NS con datos de mercado, cómo prepararlos y resolver muchos problemas de formación.
Ahora nuestra tarea es no obtener beneficios en absoluto y ni siquiera comunicarnos con el terminal - es simple, pero sin una estrategia rentable no tiene sentido. Nuestra tarea ahora es crear una plantilla de estrategia, y aprender a probarla, y cualquier estrategia servirá. A continuación, poner cualquier estrategia en la plantilla y probarlo, y si funciona, entonces podemos empezar a operar a través de la terminal.

Los indicadores necesarios están listos. Ver figura hecha en Python (En Python es muy cómodo y rápido dibujar todo tipo de gráficos). Se trata de la respuesta a un único salto - 1(t), o función transitoria. En realidad, una de las pruebas estándar.


La fm es la media móvil convencional (que sólo sirve para la calibración), la f1 es la EMA, con un cálculo de coeficiente modificado, y la f2 es un indicador no estándar.

Sin embargo, como solía decir nuestro conocido común:

Así que, para no engañarse con la ciencia, obtendrá la EMA estándar y las fuentes de la estrategia. Sin embargo, voy a hacer y probar la estrategia en mis indicadores. Tal vez, oculte algo más de las miradas indiscretas, pero sin perder funcionalidad.

Pero no se trata de la travesía de la EMA. El objetivo de todo esto son las estrategias de aprendizaje automático. Hasta ahora estoy probando diferentes métodos de clasificación. Y aquí están los resultados de las pruebas:

La clasificación gaussiana, la RBF SVM, las redes neuronales y la bayesiana ingenua están en la cima hasta ahora. El programa Python ya está listo, disponible en algún lugar de Internet, pero la preparación de los datos depende del usuario.

Vamos.


Es una pena que hayan cambiado a las redes neuronales. Pero sobre todo muy útil, creo que nos vendrá bien.

 
Sergey Chalyshev:


Es una pena que se hayan pasado a las redes neuronales. Pero sobre todo muy útil, creo que nos vendrá bien.

No hay planes para cambiar a NS y otros métodos de MdD en este hilo. Al menos por ahora). Ya veremos.

Lo que se hace aquí es una plantilla del sistema Python. El llenado específico de esta plantilla es una cuestión de usuario específico.

Bueno, mostrar las capacidades de las bibliotecas de Python, creo, no es superfluo.

 
PS Sí, no he dicho, voy a hacer todas las estrategias para FORTS (MOEX). No juego con forex OC.
 
Sigamos con nuestros juegos. A día de hoy, tenemos todo listo y funcionando:
2. Plantilla de estrategia.
3. Una simple estrategia de cruce de EMA se coloca en la plantilla.

Cuando se inicia el programa, se prueba la estrategia, se guarda el informe de todas las operaciones en un archivo CSV, se muestra el gráfico de beneficios en la consola, que puede guardarse en el disco - véase la Fig.


Las pruebas se realizaron con futuros SBER MOEX, intervalo de 3M, marco temporal de 1M, total de ~55000 velas. En la estrategia sólo se utilizaron velas cerradas. La duración de la prueba es de 1 minuto, a partir del inicio del programa. Esto es aproximadamente 1ms por vela.
Se adjunta una carpeta con todos los archivos de programa necesarios, incluido el historial para los futuros SBER.
Para ejecutar el programa - ejecute el archivo main.py. Antes de ejecutar, asegúrese de que su Python tiene todos los paquetes y módulos necesarios instalados. Si está ejecutando en Anaconda, todos los paquetes-módulos necesarios ya están instalados.
Básicamente, escriba su estrategia en la plantilla y pruébela.
Ahora, cómo me imagino la aplicación de esta tecnología.
Se decidió traducir en la plataforma Python estrategia probada que utiliza las redes neuronales, tal vez con una pequeña actualización. Con esto será posible, con un gasto mínimo, dominar la aplicación de las tecnologías ML disponibles en Python, conectar el sistema al terminal y empezar a operar directamente. Para mí la plataforma principal es MOEX, y Forex es auxiliar, por lo que en un futuro previsible no está prevista la conexión del sistema con el terminal MT, aunque se asumió al principio del tema como una opción para probar.
Sin embargo, hay suficientes expertos en el foro que, si quieren, pueden hacerlo. Además, la API de C Python es mucho más fácil que la API de C de la misma R, a la que los especialistas locales se han enfrentado con éxito.
Podemos considerar que los objetivos del tema se cumplen completamente.
Archivos adjuntos:
Public.zip  683 kb
Razón de la queja: