Discusión sobre el artículo "Integración de MetaTrader 5 y Python: recibiendo y enviando datos" - página 11
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Gracias por este artículo.
Me pregunto por qué tenemos que seguir llamando a socket=SocketCreate() y SocketClose() en OnTick().
Parece un poco ineficiente hacer esto repetidamente.
¿No mantiene el socket abierto/vivo? ¿O más bien es posible mantener el socket abierto/vivo?
Hola! yo también estaba planteando un socket. Tengo un problema - escribo un indicador en python. Toma datos de mt5 mucho y tanto como quieras, pero para devolver datos a mt5 no es tan fácil. En el socket es posible transmitir sólo una cadena de hasta 100 cadenas pequeñas, pero necesito más. ¿Qué soluciones hay además de socket? y además de web/internet solicitudes de intercambio de datos entre Python->MT5? No quiero levantar MySQL DB para esto. Estamos hablando de transferir de python a MT5 unos 40 pares de divisas con un histórico de 1000 lecturas recalculadas y posterior construcción de líneas de indicadores en MT5... Quiero huir de los cálculos en MT5 ya que python lo hace mucho más rápido. Así que me gustaría ver todas las líneas del indicador y no sólo la última barra transmitida por una cadena una vez por segundo.
Usando multiprocessing.shared_memory en Python y WinAPI en MQL5 te permite leer datos directamente de la memoria.¿Puede alguien aconsejarme algo útil?
TCP/IP Socket - MT5 recibirá una cadena de todos modos y no caben 30 000 datos.... Las limitaciones de una variable de cadena incluso en formato jason es de hasta 100 cadenas. ¿Cuál es el uso de este Socket?
Resulta que para big data una salida es Python-->MySQL-->MT5
También se me ocurrió esta idea:
¿excepto para solicitantes web/internet de intercambio de datos entre Python->MT5? no quiero traer a colación MySQL DB.
"traer a colación SQLite" - MT5 lo tiene incorporado, python obviamente también....
Puedes usar el socket para reportar lo que necesites puntualmente (señales, alertas, etc), y meter big data en SQLite. Es decir, en python metes todo lo que necesites en la base de datos y soplas el socket de "actualización de datos". Y en MQL puedes releer la base de datos en el silbato.
La base de datos en sí se puede almacenar en un disco marco
"traer SQLite" - MT5 lo tiene incorporado, python obviamente también lo tiene.
Usas el socket para reportar lo que necesites puntualmente (señales, alertas, etc.), y pones big data en SQLite. Es decir, en python pones todo lo que necesitas en la base de datos y soplas el socket de "actualización de datos". Y en MQL puedes releer la base de datos en el silbato
La base de datos en sí se puede almacenar en un disco marco
Veo su punto, gracias por la respuesta ... Eso pensé
MetaTrader 5 utiliza su propio lenguaje de programación MQL5, que se ejecuta en un proceso aislado. Esto no permite la interacción directa con la memoria compartida del sistema operativo, como pueden hacer otras aplicaciones que utilizan APIs de bajo nivel.
Shell dentro de un shell.... Hace 20 años que no pueden hacer una versión nativa para mac...
Veo su punto, gracias por la respuesta.... así lo pensé
MetaTrader 5 utiliza su propio lenguaje de programación MQL5, que se ejecuta en un proceso aislado. Esto no permite la interacción directa con la memoria compartida del sistema operativo, como pueden hacer otras aplicaciones que utilizan APIs de bajo nivel.
Shell dentro de un shell.... Hace 20 años que no pueden hacer una versión nativa para mac...
nadie prohibe usar DLL - y ahi puedes hacer lo que quieras.
Puedes buscar en memoria directamente (probablemente no más rápido :-) ).
O soluciones intermedias eficientes, a la in-memory key-value db.
Sólo que en la mayoría de los casos, los frenos y el cuello de botella están del lado de Python