Problemas na verificação de comércio aberto - 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, então eu o consertei para que o intervalo pré-determinado seja o único conjunto. Agora, por alguma razão, a seção USDJPY do código não está funcionando. É o mesmo que as outras 4 declarações com o par alterado em iopen e o valor correto da matriz.

Aqui está o que ele faz ---> http://clip2net.com/s/13WDY

Como você coloca espaços na função de comentário e consegue imprimir para a próxima linha?

 
dazamate:

Ok, então eu o consertei para que o intervalo pré-determinado seja o único conjunto. Agora, por alguma razão, a seção USDJPY do código não está funcionando. É o mesmo que as outras 4 declarações com o par alterado em iopen e o valor correto da matriz.

Aqui está o que ele faz ---> http://clip2net.com/s/13WDY

Como você coloca espaços na função de comentário e consegue imprimir para a próxima linha?


O primeiro elemento de uma matriz é 0, se uma matriz tiver 4 elementos o último será 3 e não 4 ;-) https://docs.mql4.com/basis/variables

Comentário()

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

Muito bem, este código está basicamente fazendo o que deve ser feito, exceto quando uma nova vela das 6:00 horas se abre. Se a vela atual for uma vela das 6:00, eu quero que ela faça uma varredura para que as barras se abram e voltem 24 barras e façam todas as ligações e se a barra atual não for uma barra das 6:00, então continue recuando uma barra até encontrar a última vela das 6:00. Parece estar recuando ok, mas não parece gostar se a vela atual for a das 6:00. Não dá para resolver isso. As lendas podem detectar o problema?


O código está ficando muito extenso para ser publicado aqui, então eu tive que carregar o código fonte.

Arquivos anexados:
hothand.mq4  11 kb
 
dazamate:

Parece estar recuando ok, mas não parece gostar se a vela atual for a das 6:00. Não dá para resolver isso. As lendas podem detectar o problema?


Isto é usar o Testador de Estratégia? se fosse . . .

WHRoeder 2011.07.18 18:30

Limitação do Testador: Você não pode obter dados de barra zero no testador para outros períodos de tempo ou pares. Tente:

 

Nope Raptor isto estava em uma carta ao vivo, Se eu mudar


for(b=0; b<=24; b++) to for(b=-1; b<=24; b++)
Só de pensar em voz alta, não tenho certeza se isso consertaria alguma coisa
 
dazamate:

Nope Raptor isto estava em uma carta ao vivo, Se eu mudar


Só de pensar em voz alta, não tenho certeza se isso consertaria alguma coisa
Ah, OK, vou ver seu código novamente . . .
 
Vou testar seu código na próxima mudança de hora porque não consigo ver nada óbvio ... você tem certeza de que estava verificando às 6 horas da manhã, horário do servidor ? horário do PC local não é necessariamente o mesmo horário do servidor, horário do servidor é o que é usado em seu código e em seus gráficos.
 

Tudo parece funcionar bem, mas não vai pegar o bar das 6:00 a menos que esteja atrás do bar atual, se isso fizer sentido.


Obrigado por seu tempo Raptor

 
dazamate:

Tudo parece funcionar bem, mas não vai pegar o bar das 6:00 a menos que esteja atrás do bar atual, se isso fizer sentido.


Obrigado por seu tempo Raptor

Sim, acho que entendo o que você está dizendo, ele não é atualizado quando o horário muda de 05:59 para 06:00 . . .

Estou usando o MBT para testes e o horário do servidor para a barra H1 atual é 04:00, então eu defini iOpenHour para 5, vamos ver o que acontece em 20 mins.

 

OK, tenho o mesmo problema, sem atualização quando a vela atual abriu às 05:00 . . . interessante.