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

 
VasiliKolchanov:
Ihor merci pour votre réponse, une seule question, il n'y aura pas de délai, c'est à dire que les alertes seront accumulées à chaque tick pendant la pause, et à la fin du temps EA me les enverra toutes de toute façon (toutes accumulées) ? Cela peut sembler ridicule, mais désolé, je suis en train d'apprendre.

Il ne le fera pas, car il n'arrivera pas au point de déclencher une alerte. Vous recevrez une alerte, puis, après une période déterminée, une autre alerte et ainsi de suite.

 
Vitaly Muzichenko:

En fait, ce devrait être l'inverse)

Merci ! !!

 

Expliquez ce qui ne va pas ici. J'ai placé un ordre d'ouverture sur une ventilation quotidienne sur des chandeliers quotidiens. C'est-à-dire qu'à 00:00, une nouvelle bougie quotidienne s'ouvre à l'intérieur de la bougie précédente.



double open1, close1, open, close ;

open1=iHigh(NULL,PERIOD_D1,1) ;

close1=iLow(NULL,PERIOD_D1,1) ;

open=iHigh(NULL,PERIOD_D1,0) ;

close=iLow(NULL,PERIOD_D1,0) ;


if(O(m)==false){ //s'il n'y a pas de commande

si(open1<Ask){

b(......);} //ouverture de la commande


if(close1>Ask){

s(.......);}}/ordre ouvert



A Moscou, l'ordre s'ouvre à l'intérieur de la bougie précédente à 00.03, je regardais la nuit à 00.03 alors qu'une nouvelle bougie se formait et il ouvrait toujours l'ordre. C'est comme si l'EA ne voyait pas un nouveau chandelier quotidien.

Bien que j'aie fait exactement la même chose sur la ventilation horaire, cela fonctionne parfaitement.

Si j'active mon EA à 06.00, il fonctionnera comme il le devrait, mais je n'aimerai pas le fait que les pannes de jour se produisent avant 06.00 et que les ordres s'ouvrent aux mauvais endroits après 06.00. Le problème réside dans le décalage horaire entre la bougie quotidienne et l'heure de Moscou. DC grande capitale


À l'aide ! S'il vous plaît !

 
Evgeniy Oshurkevich : Vous avez répondu à votre propre question. Les chandeliers sont dessinés à l'heure du serveur. Et celle de votre région peut ne pas coïncider avec celle-ci.

Laissez donc le hibou pendant la nuit, s'il est écrit normalement, il vous donnera une position. Ou calculez vos chandeliers sur l'intervalle de temps qui vous intéresse.

 
Ihor Herasko:

Il ne le fera pas, car il n'arrivera pas au point de déclencher une alerte. Vous recevrez une alerte, puis, après une période déterminée, une autre alerte.

Merci !

 

Veuillez me conseiller sur la façon de traiter une situation où un ordre ouvert reporté à demain, automatiquement avec l'ouverture d'une nouvelle session a porté le bénéfice sur les paramètres spécifiés ? La seule question est : comment reconnaître une nouvelle session ? La nouvelle fonction de détection des barres ne fonctionne pas dans ma situation. Si je sais comment retourner séparément l'année, le mois et le jour d'ouverture de la commande, je résoudrai le problème dans ce cas, je ne sais pas comment faire tout le reste, et s'il vous plaît conseillez dans quel format la fonction retourne la valeur OrderOpenTime (année, mois, jour, heure : min : sec OU heure : min : sec) ?

 
VasiliKolchanov:

Veuillez me conseiller sur la façon de traiter une situation où un ordre ouvert reporté à demain, automatiquement avec l'ouverture d'une nouvelle session a porté le bénéfice sur les paramètres spécifiés ? La seule question est : comment reconnaître une nouvelle session ? La fonction de reconnaissance d'une nouvelle barre ne fonctionne pas dans ma situation. Le reste, j'ai une idée approximative de comment le faire.

Évidemment - la fonction de reconnaissance d'une nouvelle session est nécessaire)

 
VasiliKolchanov:

Peut-être que quelqu'un sait comment renvoyer séparément l'année, le mois et le jour d'ouverture de cet ordre, alors le problème serait résolu. Je ne sais pas comment faire le reste. Et je ne sais pas si cela m'aidera ou non de suggérer dans quel format renvoyer la valeur de la fonction OrderOpenTime (année.mois.jour.heure : min : sec OU heure : min : sec) ?

Ici, j'ai esquissé et testé un script qui va vérifier l'historique des ordres fermés (je n'ai pas d'ordres de marché pour le moment, vous pouvez le refaire vous-même) et trouver le dernier ordre fermé et l'enregistrer :

#property strict
//+------------------------------------------------------------------+
void OnStart()
  {
   int i,otype,k=OrdersHistoryTotal();
   string sy=Symbol();
   datetime oclose,t=0;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 
        {
         otype    = OrderType();
         oclose   = OrderCloseTime();
         if(OrderSymbol()==sy)
           {
            if(otype==OP_BUY || otype==OP_SELL)
              {
               if(t<oclose)
                 {
                  t=oclose;
                 }
              }
           }
        }
     }
   Print("Последний ордер закрыт: ",TimeDay(t)," день, ",TimeHour(t),"час, ",TimeMinute(t)," минуты");
  }
//+------------------------------------------------------------------+

résultat :

21:12:07.558 test EURUSD,H1 : Dernier ordre clôturé : jour 27, 21h, 17 min

 
Taras Slobodyanik:

évidemment - une nouvelle fonction de reconnaissance de session est nécessaire)

A quoi ressemble-t-il, Taras ?
 
Igor Makanu:

J'ai esquissé et testé un script qui vérifiera l'historique des ordres fermés (je n'ai pas d'ordres de marché pour le moment, vous pouvez le refaire vous-même) et trouvera le dernier ordre fermé et enregistrera les informations le concernant :

résultat :

21:12:07.558 test EURUSD,H1 : Dernier ordre clôturé : jour 27, 21h, 17 min