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

 
AlexeyVik:
Ce n'est probablement pas exactement comme ça que j'ai essayé.
J'ai juste recompilé le code dans EA et l'ai exécuté. Lorsque je modifie le paramètre Sys dans le commentaire, cette valeur change.

J'ai encore essayé de passer à votre version... ça ne marche toujours pas... C'est dans l'EA, et c'est visible en tant qu'EA...
 
peace1984:

J'ai encore essayé de passer à votre version... ça ne marche toujours pas... c'est dans l'EA, et c'est visible en tant qu'EA...


Ou est-ce que je me suis trompé ?

Dossiers :
11_1_1.mq4  8 kb
 
AlexeyVik:


Ou ai-je mal compris quelque chose ???



je comprends que le message "sys ne devrait pas être 1" apparaîtra si sys!=1, mais si vous changez l'utilisateur de 0, il devrait être 1. et "sys devrait être 1" devrait apparaître

dans votre version de l'EA, pendant le test, dans le coin supérieur gauche, il est indiqué sys=0 et cela ne devrait pas être le cas...

 
peace1984:

Je comprends que le message "sys ne devrait pas être 1" apparaîtra si sys!=1 et si vous changez l'utilisateur de 0, il devrait être 1 et "sys devrait être 1" devrait apparaître.

Voici un aperçu du nouveau lancement. Alignez-vous à partir du bas.


L'expert est chargé.

Liste des variables externes : Sys = 0

Initialisation réussie.

les 3 lignes suivantes sont imprimées depuis EA.

Raison de désinitialisation 5(Les paramètres d'entrée ont été modifiés par l'utilisateur)

Liste des variables externes : Sys = 1

Initialisation passée

Les 3 lignes suivantes, l'impression de l'Expert Advisor.

Raison de désinitialisation 1(le programme a été retiré du tableau)


Que voulez-vous clarifier ? Je ne comprends pas ce qui ne fonctionne pas...

ps : ne faites pas attention à de tels symboles. C'est un compte d'options, d'où ces noms de symboles.

 
AlexeyVik:

Ce n'est pas la question. Personne n'a besoin de votre code secret complet. Il suffit d'écrire un morceau de code de test complet avec ce malentendu. Que pensez-vous de ça ?

Quand avez-vous effacé la ligne en surbrillance ? Les télépathes n'aideront pas, les simples mortels encore moins...

Et puis il y a cette partie.

Je ne sais pas quel programmeur l'a écrit, mais c'est complètement inadéquat... Ce n'est pas de ta faute. Vous, comme beaucoup d'autres, avez juste pris le code et essayé de le réparer...

Si la variable counted_bars est égale au nombre de barres restées inchangées depuis le dernier appel de l'indicateur (la première ligne)

Comment il peut devenir inférieur à zéro si(counted_bars < 0) je ne pourrai jamais comprendre...

Le reste n'a pas de sens non plus, mais je suis trop paresseux pour le démonter...


Je suis tout à fait d'accord avec vous. Pourquoi n'y avez-vous pas pensé ? )

Je joins le code et le fichier d'un indicateur aussi misérable.

Lancez le graphique, le terminal se bloque naturellement, laissez-le pendant 10 minutes (selon les performances du PC. J'ai un i5 3.1 Ghz), fermez de force MT, ouvrez le fichier de log avec le nom "bug log.csv", observez le fait du bug IndicatorCounted().

#property indicator_separate_window
#property indicator_buffers 1

double Buffer_1[];

bool busy=false;
int han;

int init()
{
   han=FileOpen("bug log.csv", FILE_CSV|FILE_WRITE);
   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,1);       
   SetIndexBuffer(0,Buffer_1); 
   return(0);
}

int deinit()
{
   FileClose(han);
   return(0);
}

int start()
{
   //if(busy) return(0);
   int limit=3000;
   if(IndicatorCounted()>0) limit=1;
   
   for (int i=0; i<limit; i++)
   { 
      busy=true;
      FileWrite(han, TimeToStr(TimeCurrent(), TIME_MINUTES|TIME_SECONDS), DoubleToStr(i, 0), DoubleToStr(IndicatorCounted(), 0));
      FileFlush(han);
      
      for(int j=1; j<7000; j++)
        for(int k=1; k<7000; k++)
          double var=2*0.34*MathArccos(0.5)+1.33*MathArcsin(0.23)+1.53*MathArctan(0.11)+2.33*MathCos(0.23)+1.22*MathLog(12)+1.22;
      
      Buffer_1[i]=var;
   }
   
   busy=false;
   return(777);
}
Dossiers :
bugqtest.mq4  2 kb
 

Bonjour à tous, pouvez-vous m'indiquer ce qui manque dans le script, s'il ferme tous les ordres ouverts si la condition (AccountProfit()>1) est remplie, maintenant il ferme seulement une partie des ordres jusqu'à ce que la condition soit remplie ?

f(AccountProfit()>1)

{ for (i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
si(OrderType()==OP_BUY)
{ OrderClose(OrderTicket(),OrderLots(),Bid,10,Green) ; return(0) ;
} else { OrderClose(OrderTicket(),OrderLots(),Ask,10,Red) ; return(0) ;
}}}
 
Expert:


Je suis tout à fait d'accord avec vous. Pourquoi n'y avez-vous pas pensé ? )

Je joins le code et le fichier de l'indicateur woe-is-me lui-même.

Lancez le graphique, le terminal se bloque naturellement, laissez-le pendant 10 minutes (selon la vitesse du PC. J'ai un i5 3.1 Ghz), fermez de force MT, ouvrez le fichier de log avec le nom "bug log.csv", observez le fait du bug IndicatorCounted().

Je ne sais pas. J'ai un indicateur qui a enregistré un fichier comme celui-ci.

Dossiers :
test.zip  21 kb
 
AlexeyVik:

Je ne sais pas. J'ai fait écrire à cet indicateur un fichier comme celui-ci.




Merci beaucoup pour vos commentaires !

J'ai essayé votre version - même résultat ((

Avez-vous une idée de la raison pour laquelle cela se produit ?
Il n'y a pas que moi. Je l'ai essayé sur un autre PC, plus puissant que le mien, et c'est le même problème.

Dossiers :
bugflog.zip  122 kb
 
i999i:

Bonjour à tous, pouvez-vous m'indiquer ce qui manque dans le script, s'il ferme tous les ordres ouverts si la condition (AccountProfit()>1) est remplie, maintenant il ferme seulement une partie des ordres jusqu'à ce que la condition soit remplie ?

f(AccountProfit()>1)

{ for (i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
si(OrderType()==OP_BUY)
{ OrderClose(OrderTicket(),OrderLots(),Bid,10,Green) ; return(0) ;
} else { OrderClose(OrderTicket(),OrderLots(),Ask,10,Red) ; return(0) ;
}}}
return(0) ; était redondant, merci à tous.
 
Expert:


Merci beaucoup pour vos commentaires !

J'ai essayé votre version - même résultat ((

Une idée de la raison pour laquelle cela se produit ?
Je ne suis pas le seul. Je l'ai essayé sur un autre PC, plus puissant que le mien, et c'est le même problème.

Soit je ne te comprends pas, soit tu ne comprends pas quelque chose... Quel est le problème avec le fichier .csv ? Jusqu'à ce que la première barre soit comptée prev_calculated ou IndicatorCounted() (dans l'ancienne version) sera zéro et ceci est correct.
Raison: