Backtesting EA multidivisa - página 2

 
En mi caso la solución fue el método IsNewBar() y activar el método de ejecución "Every Tick" a menos que mi EA trabaje sólo en precios abiertos.
Documentation on MQL5: Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants
  • www.mql5.com
Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants - Documentation on MQL5
 
trendick:

Ali, el ejemplo que mencioné arriba es el EA al que te refieres, que es la fuente de la función IsNewBar() que mencionas, y ya la utiliza.

¿Cómo explicas esto?

Me refería a mi EA que opera con dos símbolos.Un símbolo obtiene los datos con ontick()

el otro utiliza Isnewbar()

cuando cambio su forma de obtener los datos el resultado es el mismo. podrías probar esto y comparar los resultados. también intenté obtener ambas cotizaciones usando isnewbar como el EA discutido arriba y tuve los mismos problemas sin embargo obteniendo las cotizaciones del símbolo original con ontick() el problema se resolvió.

por supuesto que hay un problema con el probador sólo mostré cómo me las arreglé para obtener mis resultados deseados.

 
kgo:
En mi caso la solución fue IsNewBar() metod y el interruptor en "Cada Tick" ejecución metod a menos que mi trabajo EA sólo en los precios abiertos..

¿Puede usted por favor elaborar? tal vez un fragmento de código para demostrar? ¿Puede manejar 3 monedas?
 
trendick:
¿Puede usted por favor elaborar? tal vez un fragmento de código para demostrar? ¿Puede manejar 3 monedas?

Ok, entiendo lo que quieres decir. Uno de los pares se utiliza para desencadenar una nueva apertura de barra y para el resto se leen instantáneamente los ticks.

 

Kgo, pero aún así esto no resuelve el problema en mi caso. ¿Podría mostrar un fragmento de lo que hace?

Gracias, trendick

 
¡Gracias TheEconmist! (Creía que os ceñíais a la hipótesis del paseo aleatorio...:-)): voy a comprobarlo ahora mismo.
 
He hecho una nueva prueba y mi post anterior es incorrecto. El método IsNewBar() no ayuda. TheEconomist mostrar un buen ejemplo de cómo OnTick() tiene que ser implementado para Multi-Divisa EA.
 
¿Puedes creer que ni siquiera sé dónde está este método IsNewBar()? ¿Qué clase?
 
TheEconomist:
¿Puedes creer que ni siquiera sé dónde está este método IsNewBar()? ¿Qué clase?

Nos referimos al método del artículo 105. Aquí está (sólo el principio y el final son relevantes):

Aquí está:

/+X================================================================X+
//| IsNewBar() function                                              |
//+X================================================================X+
bool IsNewBar(int Number,string symbol,ENUM_TIMEFRAMES timeframe)
  {
//----+
   static datetime Told[];
   datetime Tnew[1];
//----+ Declare variable to store sizes of variables arrays
   static int Size_=0;

//----+ Change size of variables arrays
   if(Number+1>Size_)
     {
      uint size=Number+1;
      //----
      if(ArrayResize(Told,size)==-1)
        {
         string word="";
         StringConcatenate(word,"IsNewBar( ",Number,
                           " ): Error!!! Unable to change sizes of variables arrays!!!");
         Print(word);
         //----          
         int error=GetLastError();
         ResetLastError();
         if(error>4000)
           {
            StringConcatenate(word,"IsNewBar( ",Number," ): Error code ",error);
            Print(word);
           }
         //----                                                                                                                                                                                                  
         Size_=-2;
         return(false);
        }
     }

   CopyTime(symbol,timeframe,0,1,Tnew);
   if(Tnew[0]!=Told[Number])
     {
      Told[Number]=Tnew[0];
      return(true);
     }
//----+
   return(false);
  }