¿Cómo es el Websocket? - página 27

 
Aleksei Beliakov:

1. No tienes tantos trabajos. Lo entiendo. No te preocupes.

2. La conclusión lógica sería colgar el resultado (de todo el trabajo y mql4 también) aquí para todos , subiría el nivel general del foro, y quizás habría más gente con trabajo y menos gente diciendo a desconocidos lo que hay que hacer.

La cuestión está por resolver, pero el verdadero problema es cómo hacerlo.

 
Aleksei Beliakov:

1. No tienes tantos trabajos. Lo entiendo. No te preocupes.

2. La conclusión lógica sería colgar aquí los resultados (de todo el trabajo de mql4 también) para todos , subiría el nivel de los usuarios del foro en general, y quizás habría más gente con trabajo y menos gente diciéndole a los desconocidos lo que tienen que hacer.

Te apoyo, siguió el tema en el mismo aliento. para mí como un auto-estudiante analfabeta era interesante para ver paso a paso cada acción, sobre todo con las explicaciones. y aquí al final después de las discrepancias comenzó un lío, al final todo fue corregido y hecho, pero sin los pasos detallados que y cómo. así que resulta que el auto-estudio comenzó a repetir / entender y en el momento de las inconsistencias se mantuvo en el flotador libre sin entender qué hacer a continuación. Estoy de acuerdo en que puedes buscar por medio de internet para completarlo por tu cuenta, pero ya que fue un gran comienzo, por qué no terminarlo de la misma manera. no es el código en sí lo que se necesita, sino sólo una explicación competente de cómo llevarlo a un final lógico.

 

Hola

¿Este proyecto es de libre acceso o es de pago? ¿Existe un manual en algún lugar sobre cómo implementarlo usted mismo?

Estoy interesado en importar cotizaciones en tiempo real de otro proveedor a través de un websocket.


Si lo hacemos todo por imagen, no entiendo el proceso de importación y salida de cotizaciones. Creo que esta pregunta no ha sido cubierta

 

Solo quería iniciar este tema, he hecho una pregunta sobre C# y no la he encontrado, quizás alguien se anime y me ayude ;)


La conclusión: he envuelto la biblioteca MQL5 en C# de forma nativa para llamarla desde MQL4, todo funciona,

Pero sólo funciona una vez - antes de la descarga de EA, la segunda ejecución en MT4 causará un error

Unhandled exception 0xE0434352

busque en el foro sólo aquíhttps://www.mql5.com/ru/forum/35807

la situación es confusa, que cerrar el gráfico y abrir el gráfico de la caída de EA no resuelve el problema, sólo la recarga de MT4 ayuda

Cierro todos los hilos de la .dll, pero al descargar en el administrador de tareas el proceso (que aparece cuando se llama a la dll) se cierra


No tengo ni idea de dónde buscarlo, en MQL5 funciona como un reloj.

 
Igor Makanu:

Solo quería iniciar este tema, he hecho una pregunta sobre C# y no la he encontrado, quizás alguien se anime y me ayude ;)


La conclusión: he envuelto la biblioteca MQL5 en C# de forma nativa para llamarla desde MQL4, todo funciona,

Pero sólo funciona una vez - antes de la descarga de EA, la segunda ejecución en MT4 causará un error

busque en el foro sólo aquíhttps://www.mql5.com/ru/forum/35807

la situación es confusa, que cerrar el gráfico y abrir el gráfico de la caída de EA no resuelve el problema, sólo la recarga de MT4 ayuda

Cierro todos los hilos de la .dll, pero al descargar en el administrador de tareas el proceso (que aparece cuando se llama a la dll) se cierra


No tengo ni idea de dónde buscarlo, en MQL5 funciona como un reloj.


Parece que se produce una excepción, añada try-catch al código
 
Fedor Arkhipov:


Parece que hay una excepción, añade try-catch al código

El problema es en MQL4 , mi código es 99% el mismo

tal vez la plantilla de Robert Giesecke que estoy usando para hacer llamadas nativas no puede manejarla, o tal vez el terminal está dejando algunos recursos abiertos

no sé por dónde empezar a buscar (

 
Igor Makanu:

El problema es en MQL4 , mi código es 99% el mismo

tal vez la plantilla de Robert Giesecke que estoy usando para hacer llamadas nativas no puede manejarla, o tal vez el terminal está dejando algunos recursos abiertos

no sé por dónde empezar a buscarlo ((

no todas las DLL son reentrantes. El término no es del todo correcto, pero en pocas palabras - después de la carga-descarga, la siguiente carga causará un comportamiento indefinido.

Cambiar algo en la memoria del proceso o en un hilo específico. Los DLL son generalmente adaptables: cargar y listo, sin necesidad de desplazarse hacia adelante y hacia atrás :-)

pero, por supuesto, hay soluciones, puede evitar la descarga de DLL, si se necesita una vez, a continuación, dejar que se mantenga en la memoria

con un enlace a la fuente, una de las recetas:

/* ----------------------------------------------------- */
/* предотвратить выгрузку DLL из памяти !! (без этого глючит)
/* copy-paste из https://blogs.msmvps.com/vandooren/2006/10/09/preventing-a-dll-from-being-unloaded-by-the-app-that-uses-it/
/* ----------------------------------------------------- */
HMODULE g_Self;
int LockLibraryIntoProcessMem(

HMODULE DllHandle,

HMODULE *LocalDllHandle)

{

  if(NULL == LocalDllHandle)

    return ERROR_INVALID_PARAMETER;

 

  *LocalDllHandle = NULL;

  TCHAR moduleName[1024];

  if(0 == GetModuleFileName(

DllHandle,

moduleName,

sizeof(moduleName)/ sizeof(TCHAR)))

    return GetLastError();

  *LocalDllHandle = LoadLibrary(moduleName);

  if(NULL == *LocalDllHandle)

    return GetLastError();

  return NO_ERROR;

}
BOOL APIENTRY DllMain( HMODULE hModule,
                      DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                               )
{

  switch(ul_reason_for_call)

  {

  case DLL_PROCESS_ATTACH:
        //      WriteLog("Attach");
    LockLibraryIntoProcessMem(hModule, &g_Self);

    break;

  case DLL_PROCESS_DETACH:
        //      WriteLog("Detach");

    break;

  }

    return TRUE;

}

algo sobre el formato "matado" :-(

 
Maxim Kuznetsov:

subirlo y listo, nada de desplazarse hacia adelante y hacia atrás :-)

no tengo ninguna opción en particular, voy a dejar de buscar la perfección, y me gustaría tener todo funcionando en el 5 y sin errores en el 4 y no reescribir el código desde cero ))))

¡gracias por la información, es informativa!

 

Parece que fue hace mucho tiempo... Parece que...

La descarga de los programas de la biblioteca de carga dinámica requiere habilidades especiales. En MQL5 y MQl4 sólo los Metaquotes tienen esta habilidad, ya que sólo ellos tienen acceso a los secretos del lenguaje de gestión de trabajos en su entorno. Y en JCL lo habría hecho de rodillas.