Preguntas de un "tonto" - página 75

 
kirill-demo:
He creado mi Asesor Experto en Wizard. No conozco mql muy bien. ¿Podría explicarme qué hay que hacer con el ejemplo de los sobres?

La clase CSignalEnvelopes no tiene ese modelo de mercado.

Conclusión: Tenemos que mejorar la clase (o escribir nuestra propia clase).

 
¿Cuál es la diferencia entre llamar a funciones desde la dll en MT4 y MT5? Compilo la dll, funciona bien en MT5, pero en MT4 me da error:

2011.10.06 23:00:34 Ejecutor Solaris EURUSDm,M1: no se puede llamar a la función 'InfoOfTrading' desde la dll 'Solaris.dll' (error 127)

Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
 
joo:
¿Cuál es la diferencia entre llamar a funciones desde la dll en MT4 y MT5? Compilo una dll, funciona bien en MT5, pero en MT4 genera un error:

2011.10.06 23:00:34 Ejecutor Solaris EURUSDm,M1: no se puede llamar a la función 'InfoOfTrading' desde la dll 'Solaris.dll' (error 127)

Describa el prototipo de la función, por favor. Lo más probable es que haya utilizado el diseño _stdcall para MT5.

MT5 tiene un mecanismo más flexible para enlazar los nombres de las funciones de las DLL - soporta automáticamente tanto _stdcall (más avanzado con la decoración del nombre) como _cdecl (antiguo método clásico). MetaTrader 4 sólo soporta llamadas _cdecl.

¿Has leído el artículo"Cómo escribir una DLL para MQL5 y compartir datos en 10 minutos?" Explica con detalle cómo llamar a las funciones de la DLL.

 
Renat:

Proporcione una descripción del prototipo de la función, por favor. Lo más probable es que para MT5 hayas utilizado el diseño _stdcall.

MT5 tiene un mecanismo más flexible para enlazar los nombres de las funciones de las DLL - soporta automáticamente tanto _stdcall (más avanzado con la decoración del nombre) como _cdecl (antiguo método clásico). MetaTrader 4 sólo soporta llamadas _cdecl.

Lea el artículo"¿Cómo escribir una DLL para MQL5 e intercambiar datos en 10 minutos?" - hay una descripción detallada de las llamadas a las funciones de la DLL.

Intentó declararlo así:

_DLLAPI void _cdecl InfoOfTrading(int &ou_ParamCountALl, int &ou_BarsRequired)

Y así:

_DLLAPI void InfoOfTrading(int &ou_ParamCountALl, int &ou_BarsRequired)

en lugar del antiguo:

_DLLAPI void __stdcall InfoOfTrading(int &ou_ParamCountALl, int &ou_BarsRequired)

Pero ahora un error diferente:

2011.10.07 01:35:05 Ejecutor Solaris EURUSDm,M1: llamada a la función 'InfoOfTrading' desde la dll 'Solaris.dll' error crítico


He leído el artículo.


En la configuración del proyecto se especifica explícitamente la forma de llamar:


Y en MT5 sigue funcionando sin errores.

 
tol64:
En general, las señales se describen en la Ayuda exactamente de la forma en que usted las necesita. Puede verlo aquí. La imagen muestra la configuración del indicador CCI. Por lo tanto, lo más probable es que su Asesor Experto no se base únicamente en las señales del indicador Envelopes. También está la CCI.

Cierto, lo siento. He publicado la foto equivocada. Pero eso no cambia el asunto. Aquí hay una imagen de la EA sólo en los sobres.

¿Qué hago? ¿Cómo lo arreglo?

 

Por cierto, en el ejemplo de surs de la entrega estándar de MT4 la llamada se hace a través de __stdcall:

MT4_EXPFUNC double __stdcall GetDoubleValue(const double dpar)
  {
   printf("GetDoubleValue takes %.8lf\n",dpar);
   return(dpar);
  }

y funciona bien.

 
¡¡¡Que alguien me lo explique!!!
 
joo:

Por cierto, en el ejemplo surs de la entrega estándar de MT4 la llamada a través de __stdcall:

y funciona bien.


En el ejemplo de MT4:

#define MT4_EXPFUNC __declspec(dllexport)

MT4_EXPFUNC char* __stdcall GetStringValue(char *spar)

и имена экспортируемых функций явно описываются через *.def файл:

LIBRARY ExpertSample

EXPORTS GetIntValue
        GetDoubleValue
        GetStringValue
        GetArrayItemValue
        SetArrayItemValue
        GetRatesItemValue
        SortStringArray
        ProcessStringArray


stdcall parece ser compatible. No estoy seguro de que sea correcto describir el paso de parámetros mediante & para los cuatros.
Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
Renat:

El ejemplo de MT4:

#define MT4_EXPFUNC __declspec(dllexport)

MT4_EXPFUNC char* __stdcall GetStringValue(char *spar)

и имена экспортируемых функций явно описываются через *.def файл:

LIBRARY ExpertSample

EXPORTS GetIntValue
        GetDoubleValue
        GetStringValue
        GetArrayItemValue
        SetArrayItemValue
        GetRatesItemValue
        SortStringArray
        ProcessStringArray


stdcall resulta ser compatible. No estoy seguro de si es correcto describir el paso de parámetros a través de & para los cuatro.

Estoy completamente desaprendido en dos años con 4. :)

1. resulta que una variable pasada por referencia no puede ser escrita en una dll. Para ello hay que utilizar un array.

2. y es obligatorio utilizar el archivo *.def.

Aquí hay realmente 2 diferencias de trabajar con dlls de 4 y 5 que descubrí, puede haber más.

 
Amigos, disculpen si este tipo de preguntas ya son molestas, ¿pueden decirme cómo rellenar correctamente la pestaña de parámetros>correo? Tengo correo en mails.ru, ¿funcionará? No sé cuál es la dirección del servidor allí ... si no es adecuado, donde registrar un adecuado? Quiero hacer notificaciones por correo electrónico...