Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 893

 
Eh bien, maintenant le forum est aussi en panne : le message n'est pas complet, mais il n'accepte pas les modifications...
 
tuner:
Vous pourriez, par exemple, changer l'horizon temporel de manière programmatique, puis le changer à nouveau si nécessaire.
Je ne pense pas que ce soit la façon dont les variables sont réinitialisées.
 
tuner:
Ou essayez de sauvegarder le modèle et de le charger à nouveau.
Bonne idée ! C'est possible ?
 

Je ne sais pas quoi...

J'ai écrit trois versions de l'Expert Advisor, toutes compilées sans erreurs, mais dans le testeur quelque chose d'étrange se produit - sur M5 il ouvre une position et ne la ferme pas, mais sur M1 il ouvre sur chaque tick et ferme sur le suivant, indépendamment des conditions prescrites.

 
abeiks:
Je ne pense pas que ce soit la façon dont les variables sont réinitialisées.
Les variables externes sont réinitialisées parce que OnInit() est appelé lorsque l'horizon temporel est modifié.
 
abeiks:
Bonne idée ! C'est possible ?
Probablement... il existe des fonctions intégrées dans MQl4 liées à l'enregistrement et au chargement des modèles : ChartSaveTemplate, ChartApplyTemplate
 
rapid_minus:

Je ne sais pas quoi...

J'ai écrit trois versions de l'Expert Advisor, toutes compilées sans erreurs, mais dans le testeur quelque chose d'étrange se produit - sur M5 il ouvre une position et ne la ferme pas, mais sur M1 il ouvre sur chaque tick et ferme sur le suivant, sans tenir compte des conditions prescrites.

Dites-moi s'il vous plaît, si vous écrivez une fonction de multiplication

double f(double a1, double a2)
{
 return(a1*a2+1);
}

Cette fonction donnera-t-elle jamais le résultat 2*2=4 ou pas ?

Je veux dire qu'aucun compilateur ne vérifie la logique du code. Et vos conseillers experts sont pleins d'erreurs logiques.

 
AlexeyVik:

Dites-moi s'il vous plaît, si vous écrivez une fonction de multiplication

Cette fonction donnera-t-elle jamais le résultat 2*2=4 ou pas ?

Je veux dire, aucun compilateur ne vérifie la logique du code. Et vos conseillers experts sont pleins d'erreurs logiques.

J'ai compris. Il n'y a qu'une chose que je ne comprends pas - lesquelles exactement ?

ZZY : et quelle erreur peut se comporter différemment dans différentes TF ?

ZZZY : par exemple, où est l'erreur logique ici :

void CritClose() 
{ 
  for (int ord = OrdersTotal()-1 ; ord >= 0; ord--) 
  { 
    if(!OrderSelect(ord,SELECT_BY_POS,MODE_TRADES))Comment("Не найдено открытых ордеров. Ошибка #",GetLastError());
     
    if (OrderSymbol() == Symbol()) 
    {if ((OrderMagicNumber()==10011 || OrderMagicNumber()==10033 || OrderMagicNumber()==10133)&&(((условие А) && (условие Б)&&(условие В)) || ((условие Г) && (условие Д)&&(условие Е))))      
          {        
          ord_close=OrderClose(OrderTicket(),0.1, Bid, 0, Red);          
            if (ord_close = false)          
               { Comment("Закрытие позиции БАЙ завершилось с ошибкой #",GetLastError()); }            
               else  { Ord=0; }
          }
      else if (... и т.д....
 

Aïe ! Gourou ! Vous vous êtes cassé le doigt dans la paume ?

 
rapid_minus:

Compris. Ce que je ne comprends pas, c'est lesquels exactement ?

ZS : et quelle erreur pourrait se comporter différemment dans différentes TF ?

ZZY : par exemple, où est l'erreur logique ici :

L'erreur logique ici est que la structure du programme est mauvaise. Après le commentaire "Non trouvé ... "le code continuera à s'exécuter comme s'il avait été trouvé. Vladimir, lis un manuel, veux-tu ?