Problemas de comprobación del comercio abierto - página 3

 
extern int     iOpenHour                = 6;

int start()
  {
                                                            
int b, scannedhour;
datetime bartime;
double dibsclose, dibsopen, prevdayrange[4];       //  prevdayrange Array Categorys ( 1  EURUSD, 2 GBPUSD, 3 USDCHF, 4 USDJPY )

//----------------------------------------------------------------------------------------------
//        EURUSD PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("EURUSD", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("EURUSD", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen     = iOpen("EURUSD", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[1] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement
    

//----------------------------------------------------------------------------------------------
//        GBPUSD PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("GBPUSD", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("GBPUSD", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen    = iOpen("GBPUSD", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[2] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement



//----------------------------------------------------------------------------------------------
//        USDCHF PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("EURUSD", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("USDCHF", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen     = iOpen("USDCHF", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[3] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement



//----------------------------------------------------------------------------------------------
//        USDJPY PREV DAY RANGE CALC

for(b=0; b<=24; b++)                               // scans the last 24 bars on eurusd
   {
      bartime = iTime("USDJPY", 60, b);               // checks the open time of each bar
      scannedhour = TimeHour(bartime);                // extracts the hour of that bar
    
      if ( scannedhour == iOpenHour )                    // Check to see if scanned hour = Dibs hour
         {
            dibsclose    = iOpen("USDJPY", 60, b);    // Get the open value of that bar (Close of 6gmt day) 
            dibsopen     = iOpen("USDJPY", 60, b+24); // Get the value of the bar 24 bars before the Dibs bar (Open of 6gmt day)
            prevdayrange[4] = (dibsclose-dibsopen);   // Calculate the range of the Dibs day
         }                                                  // End of if statement
    }                                                       // End of for statement


//----------------------------------------------------------------------------------------------



Comment("EURUSD RANGE=", prevdayrange[1],        //Display Ranges of each pair
        "GBPUSD RANGE=", prevdayrange[2],
        "USDCHF RANGE=", prevdayrange[3],
        "USDJPY RANGE=", prevdayrange[4]);      


   return(0);
  }

Ok, lo he arreglado para que el prevdayrange sea el único array. Ahora por alguna razón la sección USDJPY del código no está funcionando. Es lo mismo que las otras 4 declaraciones con el par cambiado en iopen's y el valor correcto del array...

Esto es lo que hace ---> http://clip2net.com/s/13WDY

¿Cómo se ponen los espacios en la función de comentario y se puede conseguir que se imprima en la siguiente línea?

 
dazamate:

Ok, lo he arreglado para que el prevdayrange sea el único array. Ahora por alguna razón la sección USDJPY del código no está funcionando. Es lo mismo que las otras 4 declaraciones con el par cambiado en iopen's y el valor correcto del array...

Esto es lo que hace ---> http://clip2net.com/s/13WDY

¿Cómo se ponen espacios en la función de comentario y se puede conseguir que se imprima en la siguiente línea?


El primer elemento de un array es 0, si un array tiene 4 elementos el último será 3 no 4 ;-) https://docs.mql4.com/basis/variables

Comentario()

Comment("This adds some spaces ", "   ", "this adds a carriage return", "\n");
 

Muy bien, este código está haciendo más o menos lo que se supone que debe hacer, excepto que cuando se abre una nueva vela de las 6:00 no se actualiza la información. Si la vela actual es una vela de las 6:00, quiero que escanee esa barra abierta y retroceda 24 barras y escanee esa barra abierta y haga todos los cálculos y si la barra actual no es una barra de las 6:00, entonces siga retrocediendo una barra hasta que encuentre la última vela de las 6:00. Parece que retrocede bien pero no parece gustarle si la vela actual es la de las 6:00. No puedo resolverlo. ¿Pueden las leyendas detectar el problema?


El código se está volviendo demasiado extenso para publicarlo aquí así que tuve que subir el código fuente

Archivos adjuntos:
hothand.mq4  11 kb
 
dazamate:

Parece que retrocede bien pero no parece gustarle si la vela actual es la 6:00. No puedo resolverlo. ¿Pueden las leyendas detectar el problema?


¿Esto es usando el Probador de Estrategias? si es así...

WHRoeder 2011.07.18 18:30

Limitación del probador: No se pueden obtener datos de la barra cero en el probador para otros plazos o pares. Pruebe:

 

Nope Raptor esto fue en un gráfico en vivo., ¿Debo cambiar


for(b=0; b<=24; b++) to for(b=-1; b<=24; b++)
Solo pensaba en voz alta, no estoy seguro si eso arreglaría algo.
 
dazamate:

Nope Raptor esto fue en un gráfico en vivo., ¿Debo cambiar


Solo pensaba en voz alta, no estoy seguro de que eso arregle algo.
Ah, OK, voy a mirar su código de nuevo...
 
Probaré tu código en el próximo cambio de hora porque no veo nada evidente... ¿estás seguro de que lo estabas comprobando a las 6 de la mañana hora del servidor? la hora local del PC no es necesariamente la misma que la del servidor, la hora del servidor es la que se utiliza en tu código y en tus gráficos.
 

Todo parece funcionar bien pero no capta la barra de las 6:00 a menos que esté detrás de la barra actual si eso tiene sentido.


Gracias por tu tiempo Raptor

 
dazamate:

Todo parece funcionar bien pero no capta la barra de las 6:00 a menos que esté detrás de la barra actual si eso tiene sentido.


Gracias por tu tiempo Raptor

Sí creo que entiendo lo que dices, no se actualiza cuando la hora cambia de 05:59 a 06:00 .

Estoy usando MBT para probar y la hora del servidor para la barra H1 actual es 04:00 así que he puesto iOpenHour a 5, veamos que pasa en 20 minutos.

 

OK, tengo el mismo problema, no se actualiza cuando la vela actual se abrió a las 05:00... interesante.