Perguntas de um "boneco" - página 148

 
Yedelkin:
Bem, veja você mesmo o seu código. A condição if(timeOntrade.hour===4 || timeOntrade.hour===15 || timeOntrade.hour===16) é inútil na sua forma actual. Porque independentemente do resultado que produza, o seu tempo de função boolOntrade () voltará sempre verdadeiro.
Parece lógico. É nisso que estou interessado. Acho que escrevi coisas desnecessárias e posso ter perdido o que era necessário.
 
Interesting:

alph, é disto que Yedelkin está a falar.

Estas variantes da função são idênticas na nossa mente

Estou a ver agora.
 
alph:
Parece lógico, é por isso que estou interessado. Parece-me que escrevi coisas desnecessárias e posso ter perdido as que eram necessárias.


Há mais uma coisa que ainda não está clara para mim

   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);

Isto é, se bem entendi, primeiro atribuímos o relógio a 0 e depois comparamo-lo.

Onde está a lógica?
 
Interesting:


Mais um ponto, que ainda não está claro para mim

Isto é, se bem entendi, primeiro atribuímos o relógio a 0 e depois comparamo-lo.

Onde está a lógica?
Ainda não removi a linha com true, mas parece-me, se a removerem, já no ontik não haverá comparação com o relógio como um valor ou parâmetro específico.
 
alph:
Ainda não removi a linha com true, mas parece-me que, se a retirarmos, não haverá comparação com o relógio como um valor ou parâmetro específico no ontik.

Neste momento, estas opções são idênticas na minha opinião

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);
   return(true);
   }

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   return(true);
   }

Em geral, não compreendo porque é que os valores precisam de ser atribuídos.

Isto é, tanto quanto sei, a melhor opção é

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.hour!=TradeHour) return(false);
   return(true);
   }
Neste caso, se a hora actual do servidor (apenas para o relógio) não for igual à hora definida, então retorna falsa, caso contrário retorna verdadeira.
 
Interesting:

No momento, estas opções são idênticas

Na verdade não compreendo porque é que precisamos de atribuir valores?

Para escrever isto:

nulo OnTick()

{...

//-----------------------------------------------------------------------------------------+

//Base para mudar para Aberto

MqlRates rt[1];

if(CopyRates(Symbol(),MyTframe,0,1,rt)<0) retorna;

if(rt[0].tick_volume>1) return;

if(!PositionSelect(_Symbol) && (timeOntrade(4) ||| ((timeOntrade(15) ||| timeOntrade(16))&& timeOntrade2(0)))) Abrir();// ir para a abertura de posição

timeOntrade.min = 0;

Isto é claramente desnecessário neste contexto


   timeOntrade.min = 0;
   timeOntrade.sec = 1;
 

alph:

Para colocar isto:

nulo OnTick()

Tente esta opção. Se não, então não entendo o que está a tentar obter...

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.hour!=TradeHour) return(false);
   return(true);
   }
 
Interesting:

Tente esta opção. Se não, então não entendo o que está a tentar obter...

Sim, sim, e dentro:

 bool timeOntrade2(int TradeMin)  
   {
   MqlDateTime timetrade2;
   TimeTradeServer(timetrade);
   if(timetrade.min!=TradeMin) return(false);
   return(true);
   }
 
alph:

Sim, sim, e dentro:

Então já assim (para ter a certeza). Mas, em princípio, acertou-me

 bool timeOntrade2(int TradeMin)  
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.min!=TradeMin) return(false);
   return(true);
   }
 
Interesting:

Depois é assim (para ter a certeza). Mas, em princípio, acertou-me

Obrigado! O resto do código está correcto?