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

 
avoitenko:

Declaración de la función DLL

Llamada a una función DLL

¡Exactamente! Eso es exactamente lo que hice. Gracias.
 

En el último ejemplo, también hiciste algunos cambios en la dll, ¿no?

Eso es lo que quiero decir.

bool ExcelSetTextCell(int X,int Y, uchar& Value[]);
 

Podrías darme una pista también, si no es mucha molestia. Hay un dll, se le pasa un valor de texto, la salida es un número en tipo cadena

Por ejemplo, así:

#import "n1.dll"
string fData (string a1);
#import

....

string znak = fData ("a");

// При значении "a" переменная znak будет равна например "172371", далее я значение znak конвертирую в int
// Так всё было в МТ4.

No puedo arreglar el dll por falta de conocimientos. Por favor, aconsejen cómo hacer un código correcto para pasarlo a dll, y cómo recibirlo correctamente. Tengo la sensación de que mi dll no funcionará en MT5.

Gracias de antemano por la ayuda.

Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Killa:

Podrías darme una pista también, si no es mucha molestia. Hay un dll, se le pasa un valor de texto, la salida es un número en tipo cadena

No puedo arreglar el dll por falta de conocimientos. Por favor, aconseja cómo escribir correctamente el código para enviarlo a la dll, y cómo conseguirlo correctamente. Porque mi dll no funciona en MT5 ahora mismo.

Gracias de antemano por su ayuda.

Volví a comprobar el trabajo con la cadena de retorno de la DLL y encontré el error en x64 (apareció después de algunas optimizaciones). La corrección se incluirá en la próxima versión.

Si está trabajando en x64, por favor, espere a la publicación de la compilación.

Lo único que puedo añadir, es que recuerde que MQL5 trabaja con cadenas Unicode.

 
Simplemente, hay que reescribir el dll...
 
Quiero sentir el poder de los dlls, se habla mucho de ellos. La cuestión es sencilla: por dónde empezar. Qué descargar, qué leer, a qué foro acudir, 5-6 puntos por favor. Mucho en esta vida depende del pendel inicial.
 
Renat:

Artículo publicado ¿Cómo escribir una DLL para MQL5 en 10 minutos e intercambiar datos?:

Autor: Renat Fatkhullin

Gracias por el artículo. Ya lo he utilizado.

El consejo es muy bueno. ¡Pero! He tardado 10 minutos en averiguar cómo establecer la ruta de la DLL correctamente en VS2010.

Resultó ser así:

C:\Users\пп\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries

Sugiero copiar la ruta desde el MetaEditor.

O especifique su propia ruta en el entorno (no lo comprobó).

Y otra cosa, ¿cómo se hace con el multithreading?

 

Gracias por el artículo. Lo repetí en su totalidad, pero quiero decir algunas palabras sobre lo que encontré durante la aplicación: estas cosas aparentemente pequeñas casi me desaniman. Lo que quería aclarar (usando VS2010 + MT5 (32 bit) build 756 + Win 7 Maximum x64):

  1. Intenté conectarlo en la plataforma x64 y falló - la razón, según entiendo, era la dependencia implícita de la DLL creada a partir de las bibliotecas estándar de Windows, que por alguna razón cargaba la biblioteca x86 - esto no es un problema de MQL5, pero aún así vale la pena decirlo. Salí de esta situación mediante la instalación de MT5 32bit - se hace utilizando la línea de comandos "carpeta de instalación"\mt5setup.exe /32. Utilizará DLLs x86. Por lo tanto, recomiendo utilizar sólo x86, al menos al principio.
  2. MT5 no pudo encontrar un plugin DLL de ninguna manera. El artículo dice que hay que poner la DLL en la carpeta de Bibliotecas del terminal, pero el terminal sigue sin poder verla. La solución es la siguiente: no importa dónde se almacenará la DLL, siempre que la ubicación se especifique en las variables del sistema. Cómo hacer esto ayudará a Google.

Por lo demás, no es un mal artículo... ¡Respeto!

 

En MT5 de 64 bits el ejemplo no funciona. El terminal informa que es una DLL de 32 bits y no la conecta. Pero bajo Win32 (como en este ejemplo y en todos los demás ejemplos - como en Delphi) - todas las DLL son de 32 bits. Al igual que en el post anterior, tengo que desinstalar la versión de 64 bits del terminal e instalar la de 32 bits. También necesito saber cómo hacerlo ya que la versión de 64 bits se instala a la fuerza. Resulta que MT5 64 bits es un terminal muerto, no sé por qué se libera. Estimados desarrolladores, si es posible, por favor hagan posible la conexión de una DLL de 32 bits a МТ5 de 64 bits.

Si esto es técnicamente imposible o difícil, escribir las trampas que esta versión no funcionará con DLL de 32 bits y los usuarios sufren y no pueden entender lo que está mal. Y escribe abiertamente que la carpeta Bibliotecas no está en los directorios del propio terminal, y sabe dónde, y sin experiencia no la encontrará, ni siquiera lo intente. Por cierto, en este lugar secreto están todos los indicadores y expertos, por lo que al instalar MT5 puedes olvidarte de ellos - si no sabes que todo esto está en una carpeta oculta C:\NUsers\nAppData\Roaming... ...o el usuario cree que está instalando un programa bien escrito, lo cual es un engaño.

 

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.