Questions des débutants MQL5 MT5 MetaTrader 5 - page 587

 
Karputov Vladimir:
Dream11:

Bonjour, voici le problème... il y a une fonction de trailing stop...

Comment le modifier pour qu'il parcoure un nombre illimité de commandes au lieu d'une seule ...


J'en ai un comme ça, il trafique tout.
extern int             TrailingStep = 10;     //Шаг трейлинга
extern int             TrailingStop = 30;     //Трейлинг стоп
//+------------------------------------------------------------------+
//Трейлинг стоп
void Trailing()
{
 int err = GetLastError();
 err = 0;
 
 for(int i = OrdersTotal()-1; i>=0; i--)
 {
  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  {
   if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
   {
    if(OrderType() == OP_BUY)
    {     
     if(Ask - OrderOpenPrice() > TrailingStop*Point)
     {
      if(OrderStopLoss() < Ask - (TrailingStep + TrailingStop)*Point)
      {
       if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask - TrailingStop*Point,Digits),OrderTakeProfit(),0,clrGreen))
       {
        err = GetLastError();
        if(err != 0) Print("Ошибка модификации ордера № ",OrderTicket()," на покупку! Код ошибки: ",err,".");
       }
      }
     }
    }
    if(OrderType() == OP_SELL)
    {
     if(OrderOpenPrice() - Bid > TrailingStop*Point)
     {
      if(OrderStopLoss() > Bid + (TrailingStep + TrailingStop)*Point)
      {
       if(!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid + TrailingStop*Point,Digits),OrderTakeProfit(),0,clrRed))
       {
        err = GetLastError();
        if(err != 0) Print("Ошибка модификации ордера № ",OrderTicket()," на продажу! Код ошибки: ",err,".");
       }
      }
     }
    }
   }
  }
 }
}
//+------------------------------------------------------------------+
 
barudkinarseniy:
J'en ai un comme ça, ça fout tout en l'air.
C'est à peu près la même chose, peut-être que tu l'appelles au mauvais endroit.
 
Alexey Viktorov:
Ne pouvez-vous pas le faire par le biais de la fonction OnTimer() ?

Je le fais par minuterie. J'ai déjà trouvé, merci, j'avais juste besoin d'ajouter la fonction ChartRedraw dans chaque boucle temporelle pour mettre à jour le graphique. Merde, ils ont ajouté beaucoup de complexités dans mql5 après mql4, mais c'est peut-être pour le mieux...

 
Autre question, comment convertir une variable date-heure (type datetime) en NUMÉRO de secondes après 1970 ? Parce que si l'on assimile le temps à un nombre entier normal, cette variable int sera effectivement égale à ce nombre de secondes, mais il y aura un avertissement"perte possible de données due à la conversion de type", c'est un peu ennuyeux, y a-t-il un moyen de résoudre le problème ?

 
loleg1991:
Autre question, comment convertir une variable date-heure (type datetime) en NUMÉRO de secondes après 1970 ? Parce que si l'on assimile une valeur temporelle entière normale, cette variable int sera effectivement égale à ce nombre de secondes, mais il y aura un avertissement"perte possible de données due à la conversion de type", c'est un peu ennuyeux, y a-t-il un moyen de résoudre le problème ?

Lire "Conversion des types numériques" dans la documentation.
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
loleg1991:
Autre question, comment convertir une variable date-heure (type datetime) en NUMÉRO de secondes après 1970 ? Parce que si l'on assimile une valeur temporelle entière normale, cette variable int sera effectivement égale à ce nombre de secondes, MAIS il y aura un avertissement"perte possible de données due à la conversion de type", c'est un peu gênant, y a-t-il un moyen de résoudre le problème ?

datetime est le nombre de secondes

https://www.mql5.com/ru/docs/basis/types/integer/datetime

.

https://www.mql5.com/ru/docs/convert/stringtotime

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип datetime - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
loleg1991:
Autre question, comment convertir une variable date-heure (type datetime) en NUMÉRO de secondes après 1970 ? Parce que si vous l'assimilez à une valeur entière normale de temps, cette int-variable sera vraiment égale à ce nombre de secondes, mais il y aura un avertissement"perte possible de données due à la conversion de type", c'est un peu ennuyeux, y a-t-il un moyen de résoudre le problème ?

Si vous voulez dire non pas comme une date, mais comme un nombre de secondes, alors convertissez-le explicitement en type long.
 
Alexey Kozitsyn:
Si vous voulez afficher le nombre de secondes, mais pas la date, faites-en explicitement un type long.
Oui, je voulais dire l'affichage, merci, ça aide.
 
loleg1991:
Oui, je voulais parler de l'affichage, merci, ça aide.
De rien)
 

Bonjour, pourriez-vous me dire s'il est possible pour l'Expert Advisor d'ajouter un objet tel qu'un bouton ou un interrupteur à bascule au graphique, et si oui, comment ?