Probador de estrategias. - página 8

 
<br / translate="no"> en el registro seleccione el menú contextual para abrir. abra el archivo de registro correspondiente y vea si se emitió o no. la pestaña de registro emite datos de forma asíncrona, en un temporizador para no ralentizar el probador, por lo que los datos pueden perderse en la pestaña (y no en el registro, es decir, no en el propio registro).

Menos mal que me lo has dicho :) Pronto todo habría comenzado a estrellarse. El archivo de registro ya tiene unos 2Gb.
 
Muy a menudo en diferentes Asesores Expertos, el probador genera datos de salida en blanco (vacíos) al optimizar, pasando por todos los ciclos, pero sin realizar ninguna operación. ¿Alguien sabe por qué ocurre esto?
 
¡Creo que he vuelto a encontrar el "bicho"! :)
No recuerdo si alguna vez escribí sobre ello...
Al final, el problema era el siguiente:
if(CurTime()-OrderOpenTime()<900) return(0);


Por alguna razón, el optimizador no pone el contador a 'cero' (o lo que sea). Y, probablemente, cuenta el tiempo global, no el tiempo de prueba. En general, no sé qué y cómo no se hace correctamente, pero pasé un montón de nervios, mientras que la captura. :) Si alguien tiene el mismo problema, ¡toma nota!

 
Al probar la estrategia, hay entradas en lugares donde, a simple vista, esto no debería ocurrir de ninguna manera. He perdido tres días de mi vida. ¿Y para qué? ¿Ves los números encima de la barra? La primera cifra es el valor del indicador (línea roja). Es 1,3014. Y el segundo número es el valor de la barra baja que se devuelve al programa. Podemos ver en el gráfico que el mínimo está por debajo de la línea del indicador. Y el mínimo de esta barra es 1,3012. Pero el programa recibe el valor 1,3015. Ahora veo por qué se dispara aquí.
 
¿Explicar qué me pasa?

Este es el programa:
//+------------------------------------------------------------------+ int i; //+------------------------------------------------------------------+ int init () { return(0); } int deinit() { return(0); } int start() { i++; CreateArrow(DoubleToStr(i,0),Time[0],High[0],108,Aqua); i++;
  CreateArrow(DoubleToStr(i,0),Time[0],Low[0],108,Yellow); return(0); } void CreateArrow(string name, datetime time1, double price1, int code_arrow, int clr) { ObjectCreate(name,OBJ_ARROW,0,time1,price1);
  ObjectSet(name,OBJPROP_ARROWCODE,code_arrow); ObjectSet(name,OBJPROP_COLOR,clr); }



Estos son los resultados de la ejecución de las pruebas

 
Ver la respuesta en el foro de Alpari, demasiado perezoso para escribir dos veces.
 
Ver la respuesta en el foro de Alpari, demasiado perezoso para escribir dos veces.

Poner el enlace
 
Смотри ответ на форуме Альпари , два раза лень писать.

Tira el enlace


http://forum.alpari-idc.ru/viewtopic.php?p=220941#220941
 
Todo es muy sencillo. Tal y como yo lo veo, las pruebas están en modo de apertura de barra.
¿Qué es lo más alto y lo más bajo de la barra que acaba de salir?
Sugerencia: Apertura=Alto=Bajo=Cierre, Volumen=1

Por eso, la primera flecha de color Aqua está justo debajo de la segunda amarilla.
 
Es muy sencillo. Tal y como yo lo veo, las pruebas están en modo de apertura de barra. <br / translate="no"> ¿Cuál es el Máximo y el Mínimo del bar que acaba de abrir?
Sugerencia: Apertura=Alto=Bajo=Cierre, Volumen=1

Por eso, la primera flecha de color Aqua está justo debajo de la segunda amarilla.

Gracias por la aclaración.