Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 534

 
PolarSeaman:

Talvez sim:

Onde está o estado do dia anterior aqui? Acontece que após a primeira encomenda no período 0-8, a etapa já será 10. E precisamos que seja 5. E só depois das 8 horas serão 10. Então retornamos o passo =5 a 0 se não houver ordens em aberto do dia anterior. Se a série continuar, então passo =10 antes de seu fechamento.
 
PolarSeaman:

A questão é que se você definir o intervalo de tempo como no Expert Advisor

Preciso excluir os candelabros que estão no intervalo dos cálculos.

No indicador, você trabalha em loop. Então, por que você precisa sair do loop?

Você não sabe como pular uma iteração no loop?

continuar

 
Tigerfreerun:
Onde está a condição para o dia anterior? Acontece que após a primeira encomenda no período 0-8, a etapa já será 10. E nós precisamos que fosse 5. E só depois das 8 horas serão 10. Então retornamos o passo =5 a 0 se não houver ordens em aberto do dia anterior. Se a série continuar, então passo =10 antes de seu fechamento.

A função deve retornar тру, se houver um pedido aberto ontem

   OP_TO(int mn)
     {
     int i, k=OrdersTotal();
      for(i=0; i<k; i++) 
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
           {
            if(OrderSymbol()==Symbol()) 
              {
               if(OrderType()==OP_BUY || OrderType()==OP_SELL) 
                 {
                  if(OrderMagicNumber()==mn) 
                    {
                     if(TimeDay(OrderOpenTime())==(Day()-1)
                      &&  TimeMonth(OrderOpenTime())==Month()
                      &&  TimeYear (OrderOpenTime())==Year()) return(True);
                    }
                 }
              }
           }
        }

      return(False);
     }
if(Hour()>=0&&Hour()<=8&&!OP_TO(mag_n))step = 5; else step =10;
 
Artyom Trishkin:

No indicador você está trabalhando em um loop. Então por que você precisa sair do laço com retorno?

Você sabe como pular uma iteração em um loop?

continuar

Obrigado. Não entendo, limitei o tempo, mas a impressão mostra o horário às 19:30 e 23:00 e 5:50, o que está errado?

   for(int i=limit-2; i>0; i--) 
     {
     if(Hour()>=17&&Hour()<=11)continue;
      if(i%2==0) 
        {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k1++;
           // if(k1>max) {max=k1; dat_max=time[i];}
            if(k1>=4)Print("Num: ",k1,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k1,time[i],high[i],Arr);
           }
         else k1=0;
         
           } else {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k2++;
            //if(k2>max){ max=k2; dat_max=time[i];}
            if(k2>=4)Print("Num: ",k2,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k2,time[i],high[i],Arr);
           }
         else k2=0;
         
        }
      
     }
 
PolarSeaman:

Obrigado. Não entendo, a impressão mostra o horário como 19:30 e 23:00 e 5:50 o que está errado?

O que a função Hora() retorna?
 
PolarSeaman:

A função deve retornar тру, se houver um pedido aberto ontem

É um pouco complicado para mim. Você poderia explicar em que parte do código acrescentar e o que significa mn e mag_n? onde devo colocar meu medjic EA aqui?




 
Senhores programadores, ajudem-me a entender o erro. minPrice = NormalizeDouble (GetMinPrice(),Digits); Erro: 'minPrice' - ponto-e-vírgula esperado.
 
KRIKS:
Cavalheiros, por favor, ajudem-me a entender o erro. minPrice = NormalizeDouble (GetMinPrice(),Digits); Erro: 'minPrice' - ponto-e-vírgula esperado.

Veja o código antes do minPreço. Não há nenhum ; (ponto-e-vírgula) ali.

 
Ihor Herasko:

Veja o código antes do minPreço. Não há nenhum ; (ponto-e-vírgula) ali.

int start()

{

minPrice = NormalizeDouble (GetMinPrice()Digits);

maxPrice = NormalizeDouble(GetMaxPrice()Digits); Can int start be followed by (;) ?

 
KRIKS:

int start()

{

minPrice = NormalizeDouble(GetMinPrice()Digits);

maxPrice = NormalizeDouble(GetMaxPrice()Digits); Can int start be followed by (;) ?

{

minPrice = NormalizeDouble (GetMinPrice(),Digits);

maxPrice = NormalizeDouble(GetMaxPrice(),Digits);

Razão: