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

 
FOTOGRAF14:

Bonjour à tous ! Comment rédiger ma condition ? J'ai besoin de placer un ordre stop-loss après que le prix ait dépassé la distance stop-loss.

pour Buy.....

si( )

{

------------

}

pour Sell.....


pour transférer le STB au Breakeven, le ticket d'ordre et la distance en pips sont passés dans la fonction

void zero_profit(int ticket, int distance)
  {
   double sl=0.0;

   if(OrderSelect(ticket,SELECT_BY_TICKET))
     {
      if(OrderType()==OP_BUY)
        {
         if(Bid>=OrderOpenPrice() && Bid-OrderOpenPrice()>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()>=OrderOpenPrice())return;
        }
      if(OrderType()==OP_SELL)
        {
         if(Ask<=OrderOpenPrice() && OrderOpenPrice()-Ask>=distance*_Point) sl=OrderOpenPrice();
         if(OrderStopLoss()!=0 && OrderStopLoss()<=OrderOpenPrice())return;
        }
      ResetLastError();

      if(sl<=0)return;
      if(!OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0))
        {
         int error=GetLastError();
         rezult=StringConcatenate(OrderSymbol(),": error modifying StopLoss order ",OrderTicket()," ",TypeToStr(OrderType())," №- ",error);
         Print(rezult);
        }

     }
  }


...

 
Vitaly Muzichenko:

Il n'y aura pas de peinture)

La logique de recherche elle-même est lourde, et je ne sais pas encore comment la rendre plus facile.

Vitaly, j'ai d'abord essayé de vous expliquer que ce ne sont pas les calculs qui ralentissent le testeur, mais les objets graphiques dans le test visuel. Faites-le comme il le conseille

Alexey Kozitsyn:

Vous pouvez le rouler dans l'indicateur sans le dessiner). Et il est préférable de faire un choix. Hop - dessin, hop - pas de dessin:)

et voyez la différence de vitesse.

Ce n'est même pas le dessin qui est en retard, c'est simplement la présence de graphiques sur le graphique.

 
Alexey Viktorov:

Ce n'est même pas le dessin qui ralentit les choses, c'est simplement la présence de graphiques sur le graphique.

Pas d'argument... C'est pourquoi j'ai dit que quand je n'en ai pas besoin, je le désactive (DRAW_NONE) et c'est tout... et vous pouvez accéder aux valeurs de la même manière.
 
Alexey Viktorov:

Vitaly, j'ai d'abord essayé de vous expliquer que ce ne sont pas les calculs qui ralentissent le testeur, mais les objets graphiques dans le test visuel. Faites ce qu'il dit

et voyez la différence de vitesse.

Ce n'est même pas le dessin qui est en retard, c'est simplement la présence de graphiques sur le graphique.

Je teste la fonction sans aucun graphique, le graphique a été réalisé uniquement pour voir la justesse des calculs lors de l'écriture du code - il était purement technique et a été retiré du code depuis longtemps. Le tableau est vide pendant le test.

Ainsi, lorsque je n'ai pas de fonction, les tests "volent", mais si je connecte la fonction - ça va lentement.

P.S. En principe, je n'ai pas besoin d'objets graphiques. Oubliez les graphiques - je n'en ai pas et n'en aurai pas !

 
Vitaly Muzichenko:

Je teste la fonction sans aucun graphique, le graphique a été fait uniquement pour voir la justesse des calculs lors de l'écriture du code - il était purement technique et a été retiré du code il y a longtemps. Le tableau est vide pendant le test.

Ainsi, lorsque je n'ai pas de fonction, les tests "volent", mais si je connecte la fonction - ça va lentement.

P.S. En principe, je n'ai pas besoin d'objets graphiques. Oubliez les graphiques - je n'en ai pas et n'en aurai pas !

Avez-vous regardé ici?
 
Artyom Trishkin:
Avez-vous regardé ici?

Cool, je vais essayer d'intégrer les fonctions dans l'EA. Je posterai le résultat plus tard.

Merci ! !!

 
Veuillez m'aider à comprendre comment écrire le code correctement pour obtenir l'indice des barres ouvertes à 4:00 et 15:00.
 
missha689:
S'il vous plaît, aidez-moi à comprendre comment écrire le code correctement pour obtenir l'indice des barres ouvertes à 4:00 et 15:00.

C'en est une.

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

Ça fait deux.

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
Доступ к таймсериям и индикаторам - Справочник MQL4
Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

C'en est une.

datetime some_time=D'2017.03.03 4:00';
  int      shift=Bars("EURUSD",PERIOD_CURRENT,some_time,TimeCurrent());
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);

Ça fait deux.

datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EURUSD",PERIOD_CURRENT,some_time);
  Print("index of the bar for the time ",TimeToStr(some_time)," is ",shift);
Je comprends qu'il est réglé sur un jour spécifique puisque la date est spécifiée, mais comment puis-je régler l'indice de barre à 15 hier et l'indice de barre à 4 aujourd'hui ?
 
Pouvez-vous me dire comment trouver la date et l'heure d'hier de manière programmatique ?