Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 214

 
Vladimir Tkach:

Depuis deux jours, je fais un beau panneau. Mais il s'est avéré que je ne pouvais pas modifier les paramètres de l'Expert Advisor définis comme entrées par ce biais.

Que dois-je faire maintenant ?

pas d'imagination du tout ?

input double _PARAM=1.0; // да, input менять в коде нельзя, они типа const

double PARAM=0;         // но никто не заставляет использовать только и исключительно их

int OnInit()

{

   if (MoonPhaze()==0 && _PARAM>0.1) {

       PARAM=_PARAM;       // всё что задаёт пользователь через input должно проверяться и использоваться только внутри OnInit - это просто хороший тон

   }

}
 

Il semble que je sois mal compris.

Je modifie les paramètres sur le panneau (qui est sur le graphique), mais ils ne changent pas dans le conseiller expert. La tristesse, la tristesse.


 
Bien que leurs valeurs changent au cours du programme. OK, c'est bon.
 
missha32:

Aidez-moi s'il vous plaît, je suis complètement confus en écrivant cette fonction.

J'ai besoin que la fonction renvoie le nombre d'ordres fermés en un jour.


Je l'écrirais comme ça :

int CountInHistoryCloseOrder() 
{
int kp=0;
for(int i=OrdersHistoryTotal(); i>=0; i--) 
 {
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
   {
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==mn) 
     {//mn - должна быть глобальной
      if(TimeToString(OrderCloseTime(),TIME_DATE)==TimeToString(TimeCurrent(),TIME_DATE))
       {
        kp++;
       }
     }
   }
 }
return(kp);
 
missha32:

Aidez-moi s'il vous plaît, je suis complètement confus en écrivant cette fonction.

J'ai besoin que la fonction renvoie le nombre d'ordres fermés en un jour.

int OrdersClosedInDay(datetime time) {

datetime from=time-TimeHour(time)*60*60-TimeMinutes(time)*60-TimeSeconds(time);

datetime to=from+24*60*60;

int count=0;

for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--) {

   if (!OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)) continue;

   if (OrderCloseTime()>=from && OrderCloseTime()<to)   count++;

}

return count;

}

 
Valerius:


Je l'écrirais de cette façon :

Merci pour votre aide, cela commence à avoir du sens, mais ce n'est qu'au début d'une nouvelle journée que les valeurs sont réinitialisées, et nous avons besoin que cela reste jusqu'à la prochaine série d'ordres à clôturer en une journée.

Je l'ai compris et j'ai ajouté une autre fonction

 
Artyom Trishkin:
Vous ne pouvez pas dessiner d'objets. Mais vous pouvez dessiner en utilisant la classe CCanvas - vous pouvez ici
Merci !
 
Vladimir Tkach:

Il semble que je sois mal compris.

Je modifie les paramètres sur le panneau (qui est sur le graphique), mais ils ne changent pas dans le conseiller expert. La tristesse.


Si vous ne voulez pas créer des instances dupliquées et les utiliser ensuite dans le programme, vous pouvez toujours définir les paramètres utilisateur comme "externes" - leurs valeurs peuvent être modifiées par programme au cours du travail.
 
Veuillez me conseiller. Comment puis-je configurer mon EA pour qu'il se ferme sur la prochaine bougie ?
 
AlGuru:
Veuillez me conseiller. Comment puis-je spécifier dans l'EA de fermer sur la prochaine bougie ?
Si la barre sur laquelle la position a été ouverte est 1, alors fermez cette position.
Raison: