Discusión sobre "Cómo escribir una DLL para MQL5 e intercambiar datos en 10 minutos". - página 5

 
mql5 писал(а)  :

1) ¿qué versión del terminal es de 32 o 64 bits?

2) ¿qué versión de dll es de 32 o 64 bits?

1) ¿se puede elegir? Creo que sólo se puede descargar x86 desde aquí...

2) dll 32

 

La reinstalación de MT5 dio el siguiente resultado. Al lanzar el script, aparece la siguiente información en el log No se encuentra la función fnCalculateSpeed en 'MQL5DLLSamples.dll'.

Adjunto una captura de pantalla de la biblioteca de Dependency Walker por si acaso.

 
denkir:

La reinstalación de MT5 dio el siguiente resultado. Al lanzar el script, aparece la siguiente información en el log No se encuentra la función fnCalculateSpeed en 'MQL5DLLSamples.dll'.

Adjunto una captura de pantalla de la biblioteca de Dependency Walker por si acaso.

¿Cuál es el número de compilación del terminal reinstalado?
 
stringo:
¿Cuál es el número de compilación del terminal reinstalado?
Al parecer, es antiguo, no es la última versión de 240.
 
Renat писал(а) :
Aparentemente antiguo, claramente no es la última compilación de 240.

Sí, definitivamente no es el último...

Después de actualizar a 240 bild la primera ejecución del script funcionó bien. Me emocioné. Pero las siguientes carreras sólo dieron lugar a un accidente. MT 4 funcionaba en paralelo.

 

Después de reiniciar, todo parece funcionar. :-))

He comentado la función fnCrashTest(int arr)

Gracias a todos los que ayudaron.

 
En general, no he conseguido aumentar la velocidad de cálculo utilizando dll en más de 2,5 veces. Esto demuestra la alta velocidad de MQL5, y para la mayoría de las tareas de comercio no tiene sentido molestarse con dll, excepto cuando es necesario proteger el código y cuando se necesitan cálculos "pesados".
 
joo:
En general, no he conseguido aumentar la velocidad de cálculo utilizando dll en más de 2,5 veces. Esto demuestra la alta velocidad de MQL5. Para la mayoría de las tareas de comercio no tiene sentido molestarse con dll, excepto cuando es necesario proteger el código y cuando se requieren cálculos "pesados".

La optimización final de los registros de MQL5 aún no está habilitada, por lo que la velocidad de ejecución seguirá aumentando considerablemente.
 

Renat, gracias por el artículo. Creo que mucha gente lo necesitará más de una vez. Tengo una pregunta adicional relacionada con el dll. (Terminal 249, Editor 248).

Ejemplo

Tenemos una libra demo.dll con una sola función.

_DLLAPI void __stdcall demo(char *stream, char *buf){ buf=stream;}

Tenemos un script mql demo.mq5.

#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#import "demo.dll"
void demo(string s1, string &s2);
#import

void OnStart(){
   string a="TEST"; string b;
   demo(a,b);
   Print(b);    
}

El compilador no muestra errores ni advertencias.

Ejecútalo en el terminal y obtén lo siguiente

Al comprobar en la depuración visual, también descubrí que la propia función demo.dll tiene su primer carácter, no una cadena.

La pregunta es

¿Cuál es el problema? ¿Cómo pasar la cadena de MQL a dll de forma humana?

 
Utilizarwchar_t en lugar de char