Errores, fallos, preguntas - página 624

 
ivandurak:

Error al cargar el archivo en el Asesor Experto. Encuentre 10 diferencias. El primer código se refiere al script, el segundo al Asesor Experto, son idénticos Ctrl-C Ctrl-V. El código funciona en el script, no funciona en el Asesor Experto.

Para encontrar 10 diferencias, hay que mirar el código de apertura de archivos. (y añadir a este código abierto la salida del código de error en caso de fallo)

En segundo lugar, si quieres probar el EA con este archivo añade la línea #property tester_file "KitMaRsi.csv" al código del EA

 
Hola. En MQL4, el error ERR_HISTORY_WILL_UPDATED(4066) puede ocurrir al ejecutar un programa. La función GetLastError() devuelve el código de error. ¿Tiene un error similar en MQL5? He buscado aquíhttps://www.mql5.com/ru/docs/constants/errorswarnings/errorcodes pero no he encontrado nada similar.
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки времени выполнения - Документация по MQL5
 
Druide:
Hola. En MQL4, al ejecutar un programa, puede producirse el error ERR_HISTORY_WILL_UPDATED(4066), cuyo código es devuelto por la función GetLastError(). ¿Tiene un error similar en MQL5? He buscado aquíhttps://www.mql5.com/ru/docs/constants/errorswarnings/errorcodes pero no he encontrado nada similar.

No diré nada sobre el error. El propio terminal se encarga de sincronizar los datos, usted puede sincronizar (cargar) los datos y comprobar si el historial está sincronizado o no.

La organización del acceso a los datos se describe aquí (hay un ejemplo de script de carga del historial).

Funciones que pueden ser necesarias: SeriesInfoInteger y SymbolIsSynchronized

 
awkozlov:

El cambio con variables de carácter no parece funcionar...

En lugar de:

'Tipo' - tipo de expresión de conmutación ilegal
'Comprar' - la expresión constante no es integral


Utilice identificadores en lugar de texto. Lo que sería más sencillo y lógico...

//Что-то типа такого (или свои идентификаторы). Написать функцию конвертирующую текст в идентификатор и обратно (при необходимости) достаточно просто.
//Да и выглядит это более профессионально в конечном итоге.
  switch(type)
  {
  case ORDER_TYPE_BUY: {direction = type;  price = SymbolInfoDouble(zSymbol,SYMBOL_ASK); break;}
  case ORDER_TYPE_SELL: {direction = type; price = SymbolInfoDouble(zSymbol,SYMBOL_BID); break;}
  default: {return(lot_value);}
  }

  switch(type)
  {
  case OP_BUY: {direction = ORDER_TYPE_BUY;  price = SymbolInfoDouble(zSymbol,SYMBOL_ASK); break;}
  case OP_SELL: {direction = RDER_TYPE_SELL; price = SymbolInfoDouble(zSymbol,SYMBOL_BID); break;}
  default: {return(lot_value);}
  }
 
awkozlov:

El cambio con variables de carácter no parece funcionar...

En su lugar:

'type' - tipo de expresión de conmutación ilegal
'Comprar' - la expresión constante no es integral

Tengo que dibujarlo así:

No es tan claro y está torcido.

Funciona bien en otros idiomas.

¿Debo escribirlo de otra manera?

Hice esto.

#define  OP_BUY               0
#define  OP_SELL              1
#define  OP_BUYLIMIT          2
 
Interesting:

No diré nada sobre el error. El propio terminal se encarga de sincronizar los datos, usted puede sincronizar (cargar) los datos y comprobar si el historial está sincronizado o no.

Aquí se describe la organización del acceso a los datos (hay un ejemplo de script de carga del historial).

Funciones que pueden ser necesarias: SeriesInfoInteger y SymbolIsSynchronized

Gracias. Lo tengo.
 

¿Existen análogos de tales bibliotecas como stdlib.mqh, WinUser32.mqh, stderror.mqh en MQL5, en particular, estoy interesado en la función PostMessageA?

 

Cuando se optimiza con varios agentes, los resultados se muestran en el gráfico en el orden en que se procesan, es decir, alternando. ¿Es posible hacer que el orden en el que se muestran los resultados esté en función de la selección de parámetros, como ocurría en MT4? Es decir, el resultado que viniera después se insertaría en el orden adecuado. Sólo digo que no es conveniente seguir las tendencias y regularidades durante la optimización y que los resultados sólo pueden analizarse una vez realizados los cálculos.

++: Se trata de la optimización con fuerza bruta total - naturalmente no tiene sentido en la genética.

 
Konstantin83:

Descripción en el manual

De hecho

bool ObjectCreate(
long chart_id, // identificador del gráfico
string name, // nombre del objeto
ENUM_OBJECT type, // tipo de objeto
intn win, // índice de la ventana);


Gracias, corregido.
 
x100intraday escribió https://www.mql5.com/ru/forum/1111/page610#comment_130250:

Vamos a ejecutar el código de ejemplo de iFractals de la ayuda en M1, que utiliza la segunda forma - completa - de la llamada a la función OnCalculate(). Pero antes de eso dentro de esta función vamos a corregir

a

para no perder de vista una sola línea con la salida (si lo dejamos como está, visualmente siempre se verá el 1, porque los otros valores son raros y se sustituyen inmediatamente por el 1, por lo que parece que siempre se muestra el 1) Tras el tiempo de ejecución vemos que los valores no unitarios se producen cada minuto, es decir, en cada nueva barra, lo que indica inequívocamente que el indicador se redibuja cada minutototalmente a pesar de que el código utilizaalgoritmo económico. Los dudosos pueden añadir varias líneas de código, dibujando, por ejemplo, líneas verticales en cada fractal y luego eliminarlas después del primer dibujo y esperar a que el conjunto completo de las mismas líneas aparezca al cabo de un minuto con una nueva barra. Todo lo que se refiere a terminar sólo el último fractal o línea está fuera de lugar por alguna razón.

Sí, efectivamente, el indicador del ejemplo en la función iFractals() refresca sus buffers de indicadores con valores del indicador incorporado. La segunda condición de la línea (resaltada en amarillo) es la "culpable" de esto:

//--- если это первый запуск вычислений нашего индикатора или изменилось количество значений в индикаторе iFractals
//--- или если необходимо рассчитать индикатор для двух или более баров (значит что-то изменилось в истории)
   if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
     {

Explicación: en cada tick se comparan estos dos valores y hay una asignación al final de la función

//--- запомним количество значений в индикаторе Fractals
   bars_calculated=calculated;

Y la diferencia entre ellos puede surgir en el espíritu:

  1. el propio historial, sobre el que se calcula el indicador fractal, ha cambiado (paginación del historial por parte del usuario)
  2. ocurrencia de un nuevo evento de barra

En este caso la separación de los dos eventos no se hace, lo has descubierto. No puedo decir todavía si vamos a arreglar este ejemplo para que no tengamos esas preguntas.