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

 
Renat:

Debes mejorar tu nivel técnico.

Para los programas de 64 bits se necesitan bibliotecas de 64 bits y no hay forma de conectar razonablemente bibliotecas de 32 bits. Para instalar la versión de 32 bits, el instalador debe ejecutarse con el interruptor /32

Voy a reescribir el artículo y añadir características interesantes que se han implementado desde hace tiempo en MetaEditor y plataformas MT4 y MT5. Muchos desarrolladores no conocen las nuevas características.

Gracias Renat por tu respuesta. Hoy en día los mercados son bastante complicados, y el trading te lleva casi al límite y casi no hay tiempo para mejorar en el área técnica. Realmente no entiendo la diferencia entre los programas de 32 y 64 bits. Sólo veo que crea algunos problemas innecesarios para los usuarios. Todo el mundo está conduciendo en algún lugar y Microsoft incluido, quieren llegar más rápido y más bruscamente, pero los usuarios sólo encuentran problemas. No veo ninguna diferencia de velocidad entre los 64 bits y los 32 bits. Sin embargo, mi procesador es i7-4, el último de Intel, tal vez por eso. También veo que Microsoft está comprimiendo C++. Incluso han eliminado la opción de trabajar con formularios C++ en el último compilador. Y cuando pregunté ¿por qué? La respuesta es por qué no pruebas el nuevo y más perfecto C++. Por lo tanto, si usted está mirando hacia el futuro, debe tenerlo en cuenta también.
 
ANG3110:


Y veo que Microsoft empezó a comprimir C++. En el último compilador incluso han eliminado la posibilidad de trabajar con formularios en C++. Y cuando pregunté ¿por qué? La respuesta es por qué no pruebas el nuevo y mejorado C++. Por lo tanto, si miras al futuro, también deberías tenerlo en cuenta.

Bueno, Microsoft es un notorio asesino tecnológico, y últimamente ha estado cavando su propia tumba tras tumba.

Por qué interferir en él, déjalo caer en su propio agujero. Es así, en sentido figurado, para no perder el tiempo en detalles técnicos. Quién quiere detalles - hay miles de ellos en Internet. Después de "mejor C#" no tengo otras palabras.

 
:)
 
Colegas, ¿cómo conecto las bibliotecas MT en VS? para que mi estudio no subraye la cadena, el datetime...
 
Renat Fatkhullin:

Debes mejorar tu nivel técnico.

Para los programas de 64 bits se necesitan bibliotecas de 64 bits y no hay forma de conectar razonablemente bibliotecas de 32 bits. Para instalar la versión de 32 bits hay que ejecutar el instalador con el interruptor /32.

Voy a reescribir el artículo y añadir características interesantes que se han implementado desde hace tiempo en MetaEditor y plataformas MT4 y MT5. Muchos desarrolladores no conocen las nuevas características.

¿Hay algún ejemplo para crear una dll de 64 bits para la versión de 64 bits del terminal? Y sobre las "cosas geniales" es interesante saber)
 

Resultó ser fácil.

Instalé el Visual Studio Community 2015 gratuito (exactamente Community, ya que tiene soporte x64, a diferencia de Express) Las versiones de pago también tienen x64, por supuesto, pero estaba mirando las opciones gratuitas. El instalador web me dio un error, así que instalé desde la imagen ISO. Al instalar, seleccione la instalación "personalizada" y marque C++ (no está instalado por defecto).

Luego hice todo como se describe en el artículo, es decir, creé un proyecto Win32. Hice un montaje, que el terminal x64 se negó a aceptar (como era de esperar).

Luego en la pestaña "Build" -> "Configuration Manager" cambié la plataforma a x64, (también puedes cambiar la "Plataforma de la Solución Activa" a x64)


Construido de nuevo. La nueva dll resultó estar en la carpeta \x64\Debug (la compilación final estará en x64\Release\), que el terminal x64 procesó sin problemas y devolvió la siguiente salida:

19:29:01.883 dll_test (EURUSD.e,H1) Tiempo 16 mseg, int: -752584127 double: 17247836076609.0
19:29:01.883 dll_test (EURUSD.e,H1) Conjunto: 0 1 2 3 4 5 6 7 8 9
19:29:01.883 dll_test (EURUSD.e,H1) Reemplazar: Un gato marrón rápido salta sobre el perro perezoso
19:29:01.886 dll_test (EURUSD.e,H1) Violación de acceso en 0x000007FEFB0F176F escribir en 0x0000000000000000 en '...\MQL5\Libraries\ConsoleApplication1.dll'
y una mayor descripción del error interceptado
Es decir, ¡¡¡todo funciona!!!

Downloads | Visual Studio
Downloads | Visual Studio
  • www.visualstudio.com
Visual Studio Community 2015 with Update 1 - Free Visual Studio Community 2015 with Update 1 is a free, fully featured, and extensible IDE for individual developers, open source projects, academic research, education, and small professional teams. Create applications for Windows, Android, and iOS as well as web applications and cloud services...
 

Nota:

Al transferir la DLL a otro ordenador, se negaba a funcionar porque utilizaba componentes del propio VS. El problema se resuelve en Proyecto -> Propiedades -> Usar MFC, puesto en "Usar MFC en la biblioteca estática". Después de eso reconstruir y recompilar la DLL

Lo encontré en el foro:

Es posible optimizar los EA con DLL no sólo en el ordenador local, sino también en una red local. Para ello, en los ordenadores de la red, añada la clave /dlls al registro de los agentes de prueba. Llamar al editor del registro: regedit

Renat Fatkhullin:

En el caso de los agentes ya instalados, los comandos de inicio sólo pueden cambiarse a través del registro en las ramas HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MetaTester-XXXX

Simplemente haga clic en cada parámetro de ImagePath y añada /dlls al final de la línea


 

Estoy en el proceso de vincular ZeroMQ a MT4 a través de DLL.

Es muy malo de alguna manera. El terminal se bloquea todo el tiempo al iniciar el indicador o al descargar. Y no aparece en el modo de depuración, así que no sé qué está pasando.

 

Buenas tardes.

Por alguna razón, cuando ejecuto el ejemplo de prueba, el script se bloquea en la primera llamada a la función importada

2016.07.30 23:30:14.088 Scripts script mql5dll_test (EURUSD,H1) eliminado

¿Qué estoy haciendo mal?

 
EsEr:

Buenas tardes.

Por alguna razón, cuando ejecuto el ejemplo de prueba, el script se bloquea en la primera llamada a la función importada

2016.07.30 23:30:14.088 Scripts script mql5dll_test (EURUSD,H1) eliminado

¿Qué estoy haciendo mal?

este artículo es de hace 6 años, algo debe haber cambiado.

¿Cuál es el código de error?