Questions d'un "mannequin - page 148

 
Yedelkin:
Regardez vous-même votre code. La condition if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) est inutile dans sa forme actuelle. Car quel que soit le résultat qu'elle produit, votre fonction bool timeOntrade() retournera toujours true.
Ça semble logique. C'est ce qui m'intéresse. Je pense que j'ai écrit des choses inutiles et que j'ai peut-être manqué la chose nécessaire.
 
Interesting:

alph, c'est ce dont parle Yedelkin.

Ces variantes de la fonction sont identiques dans notre esprit.

Je vois maintenant.
 
alph:
Ça semble logique, c'est pourquoi je suis intéressé. Il me semble que j'ai écrit des choses inutiles et que j'ai peut-être oublié les choses nécessaires.


Il y a une autre chose qui n'est pas encore claire pour moi.

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

C'est-à-dire que, si je comprends bien, on affecte d'abord l'horloge à 0 et on la compare ensuite.

Où est la logique ?
 
Interesting:


Un autre point, qui n'est pas encore clair pour moi

C'est-à-dire que, si je comprends bien, on affecte d'abord l'horloge à 0 et on la compare ensuite.

Où est la logique ?
Je n'ai pas encore enlevé la ligne avec true, mais il me semble que si vous l'enlevez, déjà dans ontik il n'y aura pas de comparaison avec clock comme valeur ou paramètre spécifique.
 
alph:
Je n'ai pas encore supprimé la ligne avec true, mais il me semble que si on la supprime, il n'y aura pas de comparaison avec clock comme valeur ou paramètre spécifique dans ontik.

Pour l'instant, ces options sont identiques selon moi

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);
   }

En général, je ne comprends pas pourquoi il faut attribuer des valeurs.

C'est-à-dire, d'après ce que je comprends, la meilleure option est

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.hour!=TradeHour) return(false);
   return(true);
   }
Dans ce cas, si l'heure actuelle du serveur (uniquement pour l'horloge) n'est pas égale à l'heure définie, elle renvoie false, sinon elle renvoie true.
 
Interesting:

Pour l'instant, ces options sont identiques

En fait, je ne comprends pas pourquoi nous devons attribuer des valeurs ?

Pour écrire ça :

void OnTick()

{...

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

//Base pour le passage à Open

MqlRates rt[1] ;

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

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

if(!PositionSelect(_Symbol) && (timeOntrade(4) || ((timeOntrade(15) || timeOntrade(16))&& timeOntrade2(0)))) Open();//aller à la position d'ouverture

timeOntrade.min = 0;

C'est clairement inutile dans ce contexte


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

alph:

Pour mettre ça dedans :

void OnTick()

Essayez cette option. Sinon, je ne comprends pas ce que vous essayez d'obtenir...

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

Essayez cette option. Sinon, je ne comprends pas ce que vous essayez d'obtenir...

Oui, oui, et dedans :

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

Oui, oui, et dedans :

Alors déjà (pour être sûr). Mais, en principe, tu as raison

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

Alors c'est comme ça (pour être sûr). Mais, en principe, tu as raison

Merci ! Le reste du code est-il correct ?