Simulación de mercado (Parte 14): Sockets (VIII)
Introducción
En el artículo anterior, «Simulación de mercado (Parte 13): Sockets (VII)», mostré cómo crear un servidor sencillo en Python que permitiera mantener el código en ejecución incluso cuando no hubiera actividad en el socket que el servidor estuviera observando. Lo interesante de dicha implementación es que no fue necesario utilizar ningún thread.
Aun así, nada te impide combinar lo visto en el artículo pasado con lo del anterior, ya que en este último se muestra cómo hacer el mismo tipo de servidor, pero utilizando un thread cuando se conecta algún cliente. El hecho de que ambos métodos funcionen se debe a que ambos están orientados a observar el socket de la misma manera, independientemente de la cantidad de clientes conectados. Sin embargo, ni el modelo que utiliza un thread ni el modelo que hace uso de la función select
son adecuados para nuestra implementación. No es que sean defectuosos o no funcionen, sino que interfieren con Excel debido a la forma en que está escrito el código. Esa interferencia hace que Excel y el script en Python compitan por el uso de la CPU, lo que hace que Excel sea impracticable.
Muchos podrían sugerir que deberíamos dejar de usar Excel y pasar a Python directamente, haciendo uso de algunos paquetes que permitirían a Python crear un archivo de Excel para poder analizar los resultados después. Pero, como se dijo en el artículo anterior, aunque esta solución sea la más simple para muchos programadores, no será bien vista por algunos usuarios. Y, en toda esta historia, el usuario siempre tiene la razón. Tú, como programador, debes encontrar la forma de hacer que las cosas funcionen. Si no lo consigues de la manera en la que lo estás intentando, es porque aún no tienes el nivel de conocimiento necesario. Procura estudiar más y profundizar en los principios que rigen tu conocimiento.
Quedarte solo en lo básico no te convertirá en un programador de calidad. Solo te quedará como un programador promedio. Las cosas no evolucionan porque todos están en la media, evolucionan porque algunos se destacan. En este artículo, quiero mostrarte cómo solucionar el problema entre Excel y Python. Así que ponte cómodo y veamos cómo hacer para que Excel y Python trabajen juntos sin competir por el uso de la CPU.
Volver a los orígenes
Muchos de los que leen este artículo habrán empezado a usar Python hace poco. Otros quizá ya lo usen desde hace algún tiempo. Sin embargo, dado que la mayoría hace uso intensivo de paquetes populares, creo que pocos saben realmente cómo y por qué utilizar Python. No voy a explicar eso aquí porque se saldría del alcance de esta serie de artículos. La idea de esta serie es mostrar cómo desarrollar un sistema de repetición/simulador en MetaTrader 5. Sin embargo, para aprovechar mejor el sistema de repetición/simulador, es necesario utilizar algunos recursos, por lo que hemos tenido que hacer una pequeña pausa en su desarrollo para explicar otros temas que, aunque a primera vista no parezcan relacionados, en realidad lo están.
Muy bien. Para cumplir nuestro objetivo, que es ejecutar un servidor dentro de Excel para poder transferir información entre Excel y MetaTrader 5, podríamos usar VBA. No obstante, crear dicho servidor con VBA resulta bastante tedioso. El motivo es que el servidor quedaría completamente incorporado a la hoja de cálculo donde se creara, pero necesitamos que pueda usarse en varias hojas distintas. El motivo se verá más adelante. Pero no pienses que crear un servidor en VBA es complicado. En realidad es sencillo, aunque, como mencioné, resulta tedioso, ya que tendríamos que estar replicando el código todo el tiempo.
Sin embargo, con Python podemos crear muy fácilmente el mismo tipo de servidor que se haría en VBA, sin mencionar la posibilidad de usar C/C++, como se vio en un artículo anterior. Sin duda, usar Python es la manera más simple de hacerlo. No obstante, en los artículos anteriores mostré que utilizar una programación sencilla con paquetes populares no sería práctico. El motivo principal es que, una vez que el servidor está en funcionamiento, compite con Excel por el uso de la CPU. Incluso mostré cómo hacer uso de threads para reducir un poco esa competencia. Sin embargo, cuando se trata de crear threads en VBA, la situación empieza a volverse tediosa, ya que es necesario replicar el código cada vez que se crea una hoja de cálculo nueva.
Entonces, la solución consiste en implementar la mayor parte del código en Python y usar la mínima cantidad posible en VBA. Y sí, podemos hacerlo y lo haremos. Pero ten en cuenta que todo lo que se mostrará a partir de este punto puede resultar bastante confuso. Por eso, te recomiendo que estudies el tema con calma. No uses el código mostrado aquí en un sistema de producción. Puedes hacerlo si quieres, pero recuerda que el código presentado tiene un propósito meramente didáctico.
Entendamos un poco sobre COM
Antes de empezar, me gustaría hacerte algunas preguntas: ¿sabes qué es COM?, ¿has leído o programado algo que utilice OLE?, ¿entiendes algo sobre .NET? Si has respondido «no» a alguna de estas preguntas, significa que aún estás dando tus primeros pasos en programación. Pero para lo que necesitamos aquí basta con que entiendas los conceptos básicos y sepas cómo trabajar con COM.
Muy bien, COM proviene de «Component Object Model». Fue creada por Microsoft a comienzos de los años noventa con el objetivo de permitir la comunicación entre procesos. Es algo muy parecido a los sockets, pero con algunas ventajas. Permitía implementar esa comunicación independientemente del lenguaje utilizado, la arquitectura o el dispositivo. Y todo ello sin que tú, como desarrollador, necesitaras comprender cómo se realizaba la implementación internamente, ya que dejarías de preocuparte por ello y pasarías a usar una interfaz común y bien definida.
Esto es lo más básico sobre COM. Pero, ¿por qué es importante para nosotros en este punto del desarrollo? La razón es que, si utilizamos esta tecnología, podemos conseguir que Python y Excel funcionen en perfecta armonía, sin que entren en conflicto o compitan por el uso de la CPU durante el proceso de comunicación entre ambos.
Pero, ¿es posible utilizar esta tecnología COM en Python? Sí, y por increíble que parezca, no es necesario instalar ningún paquete. Bastará con que entiendas un poco cómo funcionan las cosas en Python. Sin embargo, si comprendes esta tecnología COM, todo será mucho más sencillo. Al final del artículo dejaré una referencia para que tengas por dónde comenzar a estudiar COM, así como otra para profundizar en lo que se tratará aquí.
Comencemos a programar en Python
Lo primero que haremos aquí será algo bastante simple. Muchos dirían que podemos hacer lo mismo utilizando otros paquetes de Python. En realidad, no estarían equivocados. Realmente es posible hacer lo mismo con otros paquetes. Pero es necesario que entiendas cómo funcionan las cosas en realidad. No vamos a crear humo ni a usar trucos de espejos para ocultar lo que necesitamos comprender. Así que usaremos Python en su forma más simple. Es decir, si descargas e instalas Python sin ningún paquete adicional, podrás hacer lo mismo que mostraré aquí. Recuerda que es necesario tener Excel instalado en tu equipo, aunque solo es un recordatorio, ya que creo que es obvio.
Muy bien, entonces hagamos que nuestro primer código en Python utilice esta tecnología COM. Para ello, haremos que un script en Python abra Excel y coloque alguna información en una celda concreta. Parece complicado hacerlo sin ninguno de esos paquetes adicionales, ¿verdad? Si has pensado eso, es porque aún estás dando tus primeros pasos en el aprendizaje de Python. Sí es posible, y sin toda esa complicación de usar este o aquel paquete. Observa el código fuente de un script que hace exactamente eso. Puedes verlo justo a continuación.
1. from win32com import client as win32 2. 3. excel = win32.Dispatch('Excel.Application') 4. excel.Visible = True 5. 6. while True: 7. pass
Código en Python
Si ejecutas el script anterior, obtendrás el resultado que se muestra en la siguiente imagen.

Ahora quizá te estés preguntando: «¿Pero dónde está la hoja de cálculo?» Tranquilo. No hemos hecho nada más que abrir Excel. Pero observa cómo lo hicimos. En la primera línea del script indicamos qué vamos a usar. En la tercera línea, enviamos una solicitud para crear una aplicación de Excel. Sin embargo, se creará, pero permanecerá oculta. Para hacerla visible, usamos la línea cuatro. Si no utilizamos el bucle de la línea seis, la aplicación se abrirá y se cerrará de inmediato. La línea siete simplemente garantiza que Python no se queje de que el bucle esté vacío.
Ahora vamos a añadir un poco más de código a este script. Podríamos hacerlo un poco más rápido, pero quiero que tú, estimado lector, comprendas lo que está ocurriendo. Así que vayamos con calma. El siguiente script se puede ver justo a continuación.
1. from win32com import client as win32 2. 3. excel = win32.Dispatch('Excel.Application') 4. excel.Visible = True 5. wb = excel.Workbooks.Add() 6. wb.Activate() 7. 8. while True: 9. pass
Código en Python
El resultado se muestra en la imagen siguiente.

Como puedes ver, se han añadido dos líneas: la cinco y la seis. En este momento, lo que estamos haciendo es usar la tecnología COM. En las referencias al final del artículo podrás consultar y estudiar mejor estas llamadas para hacer más cosas con esta tecnología de programación COM, si quieres ir más allá de lo que se muestra aquí. Recuerda que aquí solo mostraré lo básico, lo suficiente para que estés preparado y no te pierdas en la siguiente etapa. Observa que abrimos Excel, lo hicimos visible, añadimos una hoja de cálculo y luego la activamos. Todo sigue siendo muy sencillo.
Ahora imagina que quieres cambiar el nombre de esa misma hoja de cálculo. ¿Cómo podrías hacerlo usando COM a través de Python? Es sencillo. Bastaría con usar el siguiente script modificado.
01. from win32com import client as win32 02. 03. excel = win32.Dispatch('Excel.Application') 04. excel.Visible = True 05. wb = excel.Workbooks.Add() 06. wb.Activate() 07. ws = wb.Sheets('Sheet1').Name = "New Name" 08. 09. while True: 10. pass
Código en Python
Y el resultado se muestra en la imagen siguiente.

Como puedes ver, solo hemos añadido una línea al script de Python, la línea siete. El resultado fue exactamente el que esperábamos. Pero aún no hemos introducido ninguna información en la hoja de cálculo. ¿Cómo podríamos hacerlo? De nuevo, es algo bastante simple y directo. Solo tendríamos que indicar la ubicación y colocar la información en ella. Como esta parte puede depender de lo que queramos hacer, mostraré una de las muchas formas de hacerlo. Sería algo como lo que se muestra a continuación.
01. from win32com import client as win32 02. 03. excel = win32.Dispatch('Excel.Application') 04. excel.Visible = True 05. wb = excel.Workbooks.Add() 06. wb.Activate() 07. wb.Sheets('Sheet1').Name = "New Name" 08. ws = wb.Sheets('New Name') 09. ws.Range('E6').Value = 'Checking.' 10. 11. while True: 12. pass
Código en Python
Y, como resultado, obtendríamos exactamente lo que puede verse en la imagen siguiente.

Vaya, qué cosa más curiosa. Observa que, si colocas una fórmula, se calcula. Ahora, presta atención a lo siguiente: observa que se han añadido las líneas ocho y nueve. El motivo es que, al añadir la línea ocho, nos aseguramos de no tener que repetir el nombre de la pestaña todo el tiempo. Aunque también podrías unir las líneas ocho y nueve en una sola línea.
Pero espera un momento. El código que vimos en el último script me resulta bastante familiar. Bien, si estás pensando lo mismo, no es por casualidad. De hecho, cuando abrimos Excel y lo hacemos visible, todo se parece mucho a un código hecho en VBA. Esa es la magia de la interfaz COM. Fíjate que estamos creando un script en Python, pero gran parte de lo que hacemos se parece bastante a un script en VBA. Esto abre las puertas para hacer mucho, muchísimo más de lo que hemos visto hasta ahora.
Está bien, pero todo lo que se ha hecho aquí podría haberse hecho con otros paquetes que se podrían instalar en Python. Sí, es cierto, mi estimado lector. Sin embargo, si lo hacemos de esta forma, como acabo de mostrar, habrás notado que podemos usar en Python un script que perfectamente podría usarse en VBA. Bien, ya sé cómo hacerlo cuando quiero abrir una hoja de cálculo en blanco. Pero, ¿y si ya tengo Excel abierto? ¿Cómo podría hacer lo mismo? En ese caso, mi estimado lector, el proceso sería mucho más sencillo y directo. Todo lo que habría que hacer es acceder a Excel e indicar dónde realizar los cambios. El código quedaría como se muestra a continuación.
1. from win32com import client as win32
2.
3. excel = win32.GetActiveObject('Excel.Application')
4. excel.Worksheets('Sheet1').Range('D5').Value = "Cool..." Código en Python
Y el resultado de la ejecución de este script puede verse justo abajo.

Verás que es mucho más directo y fácil de lo que parece a primera vista. Observa que en la línea tres solicitamos a la interfaz que nos proporcione el objeto para manipular la aplicación, que en este caso es Excel. En la línea cuatro, indicamos qué y dónde haremos la manipulación. Así de simple. Sin embargo, todo lo visto hasta ahora es lo más básico. El objetivo es que entiendas, estimado lector, que no es necesario descargar e instalar una gran cantidad de paquetes en Python. Lo único que necesitas saber es cómo usar lo que ya viene incluido por defecto. Además, por supuesto, de estudiar un poco más sobre algunas técnicas y tecnologías existentes desde hace años.
Muy bien. Esta fue la parte básica de lo que necesitamos para que nuestro servidor funcione sin interferir con el uso normal de Excel por parte de cualquier usuario. Lo siguiente que debes comprender, estimado lector, es cómo manipular ciertos elementos en Excel. Y no me refiero a fórmulas ni nada por el estilo. Quiero que entiendas que podemos hacer uso de la tecnología COM de Python para ir mucho más allá de lo que normalmente vemos hacer con este lenguaje de programación. Pero, para separar las ideas y que puedas comprender mejor lo que explicaré, pasemos a un nuevo tema.
Eventos y más eventos
La mayoría de los usuarios no sabe que muchos programas son, en realidad, sistemas que responden a eventos. Estos eventos pueden ser de cualquier naturaleza: un clic, la escritura de un texto o algo relacionado con la comunicación entre procesos o programas. En un sistema operativo multitarea, los eventos son lo principal.
Y en este caso no es diferente. Aunque al principio no necesitamos muchas cosas, para que nuestro servidor, escrito en Python, pueda interactuar con Excel sin competir con este en el uso de la CPU, debemos entender cómo lograr que Python observe los eventos que están ocurriendo en Excel. En realidad, necesitamos que nuestro servidor sepa lo que Excel está haciendo para saber cuándo debe cerrarse o activarse.
No lo olvides: la idea es mantener Excel abierto y recibir datos en tiempo real desde MetaTrader 5, lo que se podría hacer mediante RTD o DDE. Sin embargo, también queremos que Excel envíe comandos a MetaTrader 5, de manera que un operador pueda enviar órdenes a MetaTrader 5 solo con observar Excel. Entonces, MetaTrader 5 permitirá que un asesor experto interprete esas órdenes creadas en Excel. Así, el Asesor Experto podrá ejecutar las operaciones solicitadas por el operador. Y todo esto sin que el operador tenga realmente MetaTrader 5 visible en su pantalla. Solo observará Excel y, en función de algún tipo de análisis, ya sea fundamentalista u otro, el operador podrá comprar o vender cualquier símbolo directamente desde Excel, sin tener en cuenta el gráfico.
Muy bien, pero ¿cómo podemos hacer que un script hecho en Python sepa lo que un usuario está haciendo en Excel? Recuerda que estoy usando Excel solo como ejemplo, pero lo que explicaré funciona para cualquier programa que utilice la tecnología COM.
La forma de hacerlo es muy sencilla. Sin embargo, es necesario que entiendas cómo funciona el programa que deseas observar. Para ello, en las referencias tendrás acceso al material necesario para realizar otras tareas relacionadas con lo que mostraré. Y no seas perezoso: estudia el material antes de preguntar cómo se hace esto o aquello. Porque, si entiendes cómo funcionan las cosas, podrás hacer mucho más que simplemente pedir una respuesta ya hecha. Estudia el material y la documentación del programa que quieras usar mediante COM.
Tras este aviso, veamos cómo funciona realmente. Para ello, necesitaremos modificar un poco los scripts mostrados anteriormente. Para hacerlo lo más sencillo posible, ya que la idea aquí es ser didácticos además de prácticos, consideraremos que Excel ya está abierto cuando se ejecute el script en Python. De este modo, tendremos mucho menos trabajo y será más fácil entender y explicar lo que sucede en el código.
El script básico puede verse justo a continuación.
01. from win32com import client as win32 02. import pythoncom as pyCOM 03. import time 04. 05. class AppEvents: 06. def OnSheetActivate(self, *arg): 07. print('Tab ' + str(arg[0].Name) + ' selected...') 08. 09. class SheetEvent: 10. def OnSheetSelectionChange(self, *args): 11. print(args[1].Address) 12. args[0].Cells(1, 1).Value = "Select " + str(args[1].Address) 13. 14. excel = win32.GetActiveObject('Excel.Application') 15. 16. win32.WithEvents(excel, AppEvents) 17. win32.WithEvents(excel.Workbooks('Book1'), SheetEvent) 18. 19. print("Enter in loop...") 20. while True: 21. pyCOM.PumpMessages() 22. print('ping...') 23. time.sleep(1)
Código en Python
Al ejecutarlo, se observarán dos cosas. La primera se verá directamente en Excel, como se muestra en la siguiente figura.

La segunda cosa se observa en el terminal donde se está ejecutando el script. En mi caso estoy usando Visual Code, así que, en el área que reproduce lo que normalmente se vería en el símbolo del sistema, puedes ver los siguientes datos:

Observa que esto muestra lo que se ha hecho en Excel. Pero, ¿cómo es posible? Recuerda que este código tiene únicamente fines didácticos. Se puede hacer mucho más de lo que se muestra aquí, pero comprendamos lo que ocurrió para que, quién sabe, puedas hacer algo realmente interesante con estos conocimientos.
Antes de comenzar, quiero llamar tu atención, estimado lector, sobre un detalle de este código. Lo señalaré en un punto concreto, pero se aplica a todos los casos, tanto si quieres crear otro punto similar como si se trata del que ya está presente en el script. Se trata de la línea seis, aunque lo que mencionaré también sirve para la línea diez.
Si consultas la documentación de referencia de este artículo y buscas los eventos de la aplicación de Excel, encontrarás el siguiente: Application.SheetActivate event. Muy bien, pero ¿por qué lo digo? El motivo es simple: NO PUEDES USAR CUALQUIER NOMBRE para referirte a un evento dentro del script en Python. Si lo haces, el script no funcionará al capturar el evento.
Presta atención a algo en el código. En la línea cinco, defino una clase. Esa clase contendrá todos los eventos de la aplicación que quieras capturar, al igual que en la línea nueve, donde creamos otra clase para tratar otro tipo de evento. En este caso, el evento en cuestión es el que involucra a la hoja de cálculo en sí. Observa que ambas están separadas y tienen objetivos diferentes. El nombre de la clase puede ser cualquier nombre válido; sin embargo, el nombre del procedimiento no sigue esa regla. Para que el procedimiento esté vinculado a un evento, debe tener un nombre específico.
Ahora, volviendo a la documentación, como queremos usar el evento Application.SheetActivate en nuestro script de Python, debemos hacer lo siguiente: El nombre del evento que queremos capturar debe comenzar con On y, justo después, el nombre del evento, que en este caso es SheetActivate. De esta manera, obtenemos el nombre que deberá tener el procedimiento. Otro aspecto que debes tener en cuenta en la documentación es cuántos argumentos o parámetros utiliza cada evento. Puedes usar la misma estructura que muestro aquí para todos los eventos. De este modo, Python convertirá los argumentos reales en una tupla que podrás utilizar dentro del propio lenguaje. Si no sabes qué es una tupla ni cómo utilizarla, consulta la documentación de Python, ya que es lo más básico para quien desea programar en este lenguaje.
Pero, volviendo al código, ya podemos ver cómo funciona. En la imagen del terminal, eliminé la línea 22 porque generaba demasiados mensajes y dificultaba la correcta visualización de lo ocurrido. Sin embargo, para fines de estudio, te aconsejo que dejes activa la línea 21 al principio, para que notes algo importante. La llamada de la línea 21 no bloqueará el código, sino que hace que las clases asociadas a los eventos puedan recibir dichos eventos. ¿Te ha resultado confuso? Entonces, aclaremos las cosas.
Fíjate en que en la línea 14 aparece algo que ya hemos visto antes. Su propósito es capturar una sesión de Excel. Lo que realmente nos interesa es la variable en sí. Observa que se utilizará en dos puntos. El primer punto está en la línea 16. En esa línea indicamos cuál será la clase encargada de tratar los eventos vinculados a la aplicación. El segundo parámetro de esa llamada representa el nombre de la clase. El segundo punto donde usamos la variable está en la línea 17. Ahora, atención. Observa que estamos utilizando una conexión específica. En este caso, dicha conexión se refiere al nombre del archivo abierto en Excel. Si estás usando un archivo con un nombre diferente, reemplázalo en ese punto para que el sistema pueda capturar correctamente los eventos. El segundo parámetro se refiere al nombre de la clase que tratará los eventos que ocurran en una hoja.
Dejo como curiosidad para ti, estimado lector: experimenta y trata de entender qué sucede y por qué, con este script, logramos registrar el nombre de la hoja y las celdas seleccionadas en cada una de ellas. Si te tomas el tiempo para comprenderlo, te sentirás motivado a mejorar aún más el script.
Consideraciones finales
En este artículo he explicado de la manera más sencilla posible algo que mucha gente desconoce: cómo puede Python manipular información y acceder a programas mediante la interfaz COM. Espero que este material despierte en ti, aspirante a programador profesional, un mayor interés en aprender cómo funcionan realmente las cosas. Todo lo que se ha mostrado aquí es la parte más básica de lo que podemos hacer. Muchos creen que es necesario instalar una gran cantidad de herramientas y realizar verdaderos malabarismos en términos de programación, pero, en realidad, comprender y conocer lo que ya existe en cuanto a tecnología es más que suficiente para producir mucho y con calidad.
Aunque no haya mostrado aún cómo todo esto se conectará para que Python mantenga un servidor activo y sea capaz de manipular, escribir y leer datos en una hoja de cálculo sin afectar al funcionamiento de Excel, quienes tengan una visión más amplia y experiencia en programación ya habrán imaginado cómo se integrará todo. Pero, si ese no es tu caso, no te preocupes. En el próximo artículo veremos cómo realizaremos esta implementación. Entonces, nos vemos en el próximo artículo. Y no olvides comenzar a estudiar el material de la sección de referencias, pues te será de gran utilidad si quieres convertirte en un programador profesional.
Referencias:
| Archivo | Descripción |
|---|---|
| Experts\Expert Advisor.mq5 | Demuestra la interacción entre Chart Trade y el Asesor Experto (es necesario el Mouse Study para la interacción) |
| Indicators\Chart Trade.mq5 | Crea la ventana para configurar la orden a ser enviada (es necesario el Mouse Study para la interacción) |
| Indicators\Market Replay.mq5 | Crea los controles para la interacción con el servicio de reproducción/simulador (es necesario el Mouse Study para la interacción) |
| Indicators\Mouse Study.mq5 | Permite la interacción entre los controles gráficos y el usuario (Necesario tanto para operar el sistema de repetición como en el mercado real) |
| Servicios\Market Replay.mq5 | Crea y mantiene el servicio de reproducción y simulación de mercado (archivo principal de todo el sistema) |
| Código VS C++\Server.cpp | Crea y mantiene un socket servidor desarrollado en C++ (versión MiniChat). |
| Code in Python\Server.py | Crea y mantiene un socket en Python para la comunicación entre MetaTrader 5 e o Excel |
| Scripts\CheckSocket.mq5 | Permite realizar una prueba de conexión con un socket externo |
| Indicators\Mini Chat.mq5 | Permite implementar un minichat mediante un indicador (requiere el uso de un servidor para funcionar) |
| Experts\Mini Chat.mq5 | Permite implementar un mini chat mediante un Asesor Experto (requiere el uso de un servidor para funcionar) |
Traducción del portugués realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/pt/articles/10683
Advertencia: todos los derechos de estos materiales pertenecen a MetaQuotes Ltd. Queda totalmente prohibido el copiado total o parcial.
Este artículo ha sido escrito por un usuario del sitio web y refleja su punto de vista personal. MetaQuotes Ltd. no se responsabiliza de la exactitud de la información ofrecida, ni de las posibles consecuencias del uso de las soluciones, estrategias o recomendaciones descritas.
Simulación de mercado (Parte 15): Sockets (IX)
Redes neuronales en el trading: Modelos híbridos de secuencias de grafos (GSM++)
Añadimos un LLM personalizado a un robot comercial (Parte 5): Desarrollar y probar la estrategia de negociación con LLMs (IV) - Probar la estrategia de trading
Mecanismos de compuertas en el aprendizaje en conjuntos
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso