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

 
Алексей Барбашин:

Fedor, vas por el camino equivocado. ¡No funciona así! Has utilizado limpiamente el código que te dio Volodja. Tu tarea es obtener los datos del websocket y pasar la oferta y la demanda a mql. Mientras que nosotros sólo devolvimos la oferta de los datos recibidos a mql, tu tarea es devolver toda la estructura a mql y dar salida a la información al registro.

Bien. Voy a intentar rehacerlo ahora.
 
Алексей Барбашин:

Sí, no lo hace. Pero este problema tiene solución. En la última etapa, cuando el código es depurado, sólo tenemos que implementar DLLExport en la biblioteca de Sharp y todo funcionará con mt4.

no lo hará, ya lo he probado.

o bien C++/CLI

o Exportaciones no gestionadas de Robert Giesecke - sobre el artículo que estoy escribiendo

ZS: quizás con DLLExport funcionen los métodos simples que devuelven a + b; no más, todo lo que requiere inicialización .Net no funciona, aunque.... estaría encantado de aprender algo nuevo.

ZZZY: encontróhttps://github.com/3F/DllExport , no lo usó, encontró algo más, pero es el mismo chip

Tenga en cuenta de nuevo, el UnmanagedExports fue creado por Robert Giesecke. Tienes que visitar su página.

Pero este repositorio no está relacionado con Robert y en general sigue siendo desarrollado por el desarrollador de GitHub/3F

 

Por alguna razón devuelve ceros.


 
Igor Makanu:

no lo hará, ya lo he comprobado

o C++/CLI

o Exportaciones no gestionadas de Robert Giesecke - sobre el artículo que estoy escribiendo

ZS: quizás con DLLExport funcionen los métodos simples que devuelven a + b; , nada más, todo lo que requiera inicialización .Net no funciona aunque.... estaría encantado de dar un ejemplo, siempre feliz de aprender algo nuevo


trabajado.
Es necesario hacer los cambios correctos en el código IL.

Hice mi propio exe, que hace cambios después de la compilación de VS.
Y entonces los métodos de C# se hacen visibles desde C/MQL

además de la clasificación.
Hace tiempo que no lo uso.

 
Vladimir Suslov:


funcionó.
Hay que hacer los cambios adecuados en el código IL.

Hice mi propio exe que hace cambios después de que VS compila.
Y entonces los métodos de C# se hacen visibles desde C/MQL

No he usado esto en un tiempo

Acabo de actualizar mi post anterior.

este es el mismo código que yo uso - código de Robert Giesecke

pero no hay que arreglar nada manualmente ahí, el principal problema es tratar con tipos de datos complejos, hace poco hice un intercambio de datos, rayé un método

  [DllExport("redismtset", CallingConvention = CallingConvention.StdCall)]
        public static void redismtset([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] byte[] value, int sz, [MarshalAs(UnmanagedType.LPWStr)]string key)
        {
            byte[] tmp = new byte[sz];
            Array.Copy(value, 0, tmp,0, sz);
            if (dbExcPing()) DB.Set(key, tmp);
        }
//----
 [DllExport("redismtget", CallingConvention = CallingConvention.StdCall)]
        public static int redismtget([MarshalAs(UnmanagedType.LPWStr)]string key)
        {
           if (dbExcPing()) db_buffer_byte = DB.Get(key); else db_buffer_byte = null;
            return db_buffer_byte?.Length?? - 1;
        }
Intenté procesar un array de cadenas a través de StringBuilder, funciona muy inestable y desistí porque requiere un control constante de la asignación de memoria para el buffer de cadenas tanto en MQL4 como en .Net - en general la búsqueda constante para cuando algo deja de funcionar )))
 
Алексей Барбашин:

Cuando usaba ese método, necesitaba implementar DllExport una vez y luego todos los métodos podían ser declarados como exportados. La propia biblioteca realizó los cambios necesarios en el código. Pero desde que MT5 empezó a soportar Sharp, dejé de "trastear" con él.

Creo que la pregunta era sobre MT4.

 
Алексей Барбашин:

Eso no es gran cosa. El método Dequeue() toma un registro de la cola. Estás tratando de tomar dos registros y diferentes parámetros de cada uno de ellos. Bueno, en primer lugar, nadie garantiza que haya dos registros en la cola en el momento del acceso).

Lo he rehecho de esta manera.

MQL


Ahora no devuelve nada en absoluto, porque he añadido una comprobación

 
Igor Makanu:

Acabo de actualizar mi post anterior.

Es el mismo código que yo uso - código de Robert Giesecke

pero no hay nada que corregir a mano, el principal problema es tratar con tipos de datos complejos, hace poco hice un intercambio de datos, rayé un método

No me funcionaba este (hace unos años), así que hice el mío propio.
Puede que se haya actualizado ahora y funcione.
Pero el principio es exactamente el mismo

 
Vladimir Suslov:

Esta lib no me funcionó (hace unos años) y me hice la mía propia.
Puede que ahora lo haya actualizado y funcione.
Pero el principio es exactamente el mismo

no funciona en el idioma ruso Win

Pero definitivamente va a funcionar sin problemas si se instala una máquina virtual + Win 7 en Inglés - Elegí durante la instalación Win idioma, trató de diferentes maneras de instalar Win7 en el cambio de Rusia a Inglés. - En algún lugar, ya sea en el registro o una carpeta sigue siendo de Rusia, debido a esto, la plantilla Robert Giesecke compilado con advertencias y no funcionará la exportación.dll

SZZY: guardé una imagen de la máquina virtual de 10GB en mi disco duro, ahora sin problemas puedo usar la plantillaRobert Giesecke

 
chicos, ¿por qué me devuelven los ceros? ¿Y la cola está vacía?