Llamar a comandos MT4 externamente (por ejemplo, desde C )
Llamar a comandos MT4 externamente (por ejemplo, desde C  )

 

Publi

Página 1 de 352 12 ??ltimo??ltimo
Resultados 1 al 10 de 15

Tema: Llamar a comandos MT4 externamente (por ejemplo, desde C )

  1. #1
    ¡Feliz Año Nuevo a todos!

    He escrito un montón de código para automatizar elementos de mi comercio. Quiero que este código permanezca independiente de la plataforma comercial con la que interactúa; en particular, me gustaría evitar tener que escribir envoltorios para MQL4 u otros lenguajes de programación patentados a medias que los proveedores de plataformas comerciales insisten en producir. Mi cuenta no es lo suficientemente grande para tener acceso a la API FIX (que es bastante fea en sí misma). También estoy mirando las API JAVA de FXCM y Dukascopy, pero me gustaría seguir trabajando con mis corredores actuales (por ahora) que actualmente solo ofrecen MT4 para cuentas pequeñas como la mía.

    Mi objetivo es tener una interfaz C/C para ejecutar comandos de terminal MT4. Tal interfaz podría llamarse fácilmente desde R, Python, etc.
    Esencialmente, busco las mismas características que se ofrecen a las aplicaciones MAM/PAMM para los administradores de dinero, pero a nivel de API, no a través de una GUI bonita.

    ¿Alguien ya lo ha hecho o ha encontrado razones para que no funcione?

    Saludos,

    noventa47

  2.                         
    Publicidad
  3. #2

    Cita Iniciado por ;
    Hola, ¿podría intentar convertir este código C en un script o un indicador? {archivo}
    Eso no es un interior.

  4. #3
    1 Anexo(s) Hola, ¿podría intentar convertir este código C en un script o un indicador?
    https://www.forosforex.com/attachmen...1546712634.txt

  5. #4

  6. #5
    aquí hay una solución de código abierto en C#:
    https://github.com//MQL4CSharpUtiliza subprocesos y getters/setters simples para comunicarse. El código C# se inicia en su propio subproceso y puede ejecutar un comando mql y esperar el resultado, mientras que el experto en mql busca un comando, lo analiza, lo ejecuta y establece el resultado. el analizador de comandos mql se ejecuta en el método onTimer que está configurado para ejecutarse cada milisegundo.

  7. #6

    https://github.com/rmawatson/PyMT4Este código permite llamar desde C y proporciona enlaces para python. Podría envolverse trivialmente para cualquier otro idioma.

  8. #7
    ¿Cómo te va con esto? Me integré en jfx api (que en realidad es bastante barato y bastante bueno), pero me interesaría ver una solución agnóstica del idioma para posiblemente mover mi código a nodejs, ¿quizás? mmm interesante. Todavía estarías buscando abrir un terminal.exe para cada cuenta a la que quieras conectarte, ¿verdad? Esto es lo que hace jfx. Controla los terminales en segundo plano, por lo que puede ejecutar una solución de múltiples cuentas

  9. #8

    Cita Iniciado por ;
    Hola, ¿cómo usas exactamente WM_COPYDATA? ¿Puedo echar un vistazo a tu código? Gracias
    Seguro. Un ejemplo de un experto en copia de información básica (las copias pasan a una ventana remota): Código insertado #propiedad estricta #define WM_COPYDATA 0x004A #define INFO 0x01 #define FindWindow FindWindowW #define SendMessage SendMessageW struct Copydatastruct { int dwData; int cbData; int lpData; }; estructura Infostruct { MqlTick marca;* cualquier otra información aquí */}; #importar user32.dll int FindWindow(cadena, int); int SendMessage(int, int, int, Copydatastruct); #importar msvcrt.dll int memcpy(Copydatastruct, Copydatastruct, int); int memcpy(Infostruct, Infostruct, int); #importar información de Infostruct; Copia de la estructura de datos de copia; string sDispatch = miventana; int hwDispatch = 0; void OnTick() { hwDispatch = FindWindow(sDispatch, NULL); if(hwDispatch) { copy.dwData = INFO;/es decir, función copy.cbData = sizeof(info);/bytes a copiar copy.lpData = memcpy(info, info, 0);/puntero a los datos a copiar SymbolInfoTick(Symbol(), info.tick); SendMessage(hwDispatch, WM_COPYDATA, NULL, copiar); } } En el lado del receptor (ventana remota) en el procedimiento de ventana tiene que leer los datos: Interruptor de código insertado (mensaje de ventana) { case WM_COPYDATA: { COPYDATASTRUCT *copy = (COPYDATASTRUCT*) lParam; switch(copydwData) { case INFO: { Infostruct info; memcpy(info, copylpData, copycbData);/copiar los datos para su posterior procesamiento/es decir, hacer algo con interrupción de datos; }/otros casos... } break; } /otros casos }

  10. #9

    Cita Iniciado por ;
    Creo que no necesitas encuestas. Con la compilación actual, podría usar objetos de evento para señalar la disponibilidad de datos. Y con las compilaciones beta (gt; 509) han implementado el controlador de eventos OnChartEvent, por lo que posiblemente pueda usarlo para hacer que el experto verifique los datos en la memoria compartida al publicar un mensaje de ventana en la ventana correspondiente. También uso WM_COPYDATA para exportar datos de barras de verificación e informes de ejecución, etc.
    Hola, ¿cómo usas exactamente WM_COPYDATA? ¿Puedo echar un vistazo a tu código? Gracias

  11. #10
    Los objetos de evento se refieren a los objetos de evento de la API de Windows, consulte aquí:
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspxPor cierto: Smalltalk es genial...

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.