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

 
Aleksei Stepanenko #:

Je ne sais pas pourquoi c'est fait de cette façon, c'est essentiellement une fonction booléenne.

Ça donne quelque chose comme ça :

Dans un enum, les éléments commencent par zéro, donc Ok=0 , AllocError=1

c'est-à-dire que GetRepeat renvoie soit 0 soit 1

respectivement ! GetRepeat est la négation de la valeur de retour.

0 est faux, 1 est vrai.


Il est facile de se casser la tête

Exactement !)) Merci, Alexey !

 
Vous êtes les bienvenus :)
 

Bonne journée ! !!

Voici une fonction permettant de calculer le prix moyen d'une grille d'ordres et de l'afficher sur un graphique. Après la fermeture de la grille, les lignes horizontales indiquant la ligne moyenne ne sont pas supprimées.

Aidez-nous à écrire une fonction qui supprimera ces lignes après la fermeture de la grille de commandes. Merci ! !!

//+----------------------------------------------------------------------------+
//| Расчет среденй цены (0)-buy (1)-sell ()-all                                |
//+----------------------------------------------------------------------------+
double GetAveragePrice(int ot=-1)
  {
   double order_lots = 0, order_price = 0, avg_price = 0;
     {
      for(int i = OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType()==ot||ot<0)
                 {
                  order_lots += OrderLots();
                  order_price += OrderOpenPrice() * OrderLots();
                 }
              }
           }
        }
     }
   avg_price = NormalizeDouble(order_price / order_lots, Digits);

   if(ObjectFind(0,"AveragePriceLine"+IntegerToString(ot))!=0)
      ObjectCreate(0,"AveragePriceLine"+IntegerToString(ot),OBJ_HLINE, 0, 0, avg_price);
   else
      ObjectSetDouble(0,"AveragePriceLine"+IntegerToString(ot),OBJPROP_PRICE,avg_price);
   if(ot==0)
      ObjectSet("AveragePriceLine"+IntegerToString(ot),OBJPROP_COLOR, clrLime);
   if(ot==1)
      ObjectSet("AveragePriceLine"+IntegerToString(ot),OBJPROP_COLOR, clrMagenta);
   return(avg_price);
  }

 
EVGENII SHELIPOV #:

Bonne journée ! !!

Voici une fonction permettant de calculer le prix moyen d'une grille d'ordres et de l'afficher sur un graphique. Après la fermeture de la grille, les lignes horizontales indiquant la ligne moyenne ne sont pas supprimées.

Aidez-nous à écrire une fonction qui supprimera ces lignes après la fermeture de la grille de commandes. Merci ! !!

Ce n'est pas l'endroit pour le faire.

void OnTick()
  {
//---
   if(ObjectFind(0,"AveragePriceLine"+0)==0&&CountTrade(0)<1)//для бай
     {ObjectDelete(0,"AveragePriceLine"+0);}
   if(ObjectFind(0,"AveragePriceLine"+1)==0&&CountTrade(1)<1)//для селл
     {ObjectDelete(0,"AveragePriceLine"+1);}

   .....

  }
 
MakarFX #:

Ce n'est pas l'endroit pour le faire.

Makar, comment liez-vous ceci dans void OnTick() ?

 
MakarFX #:

Ce n'est pas l'endroit pour le faire.

Merci, Makar, un petit travail sur les fichiers et c'est bon.

 

Veuillez me conseiller.

Le conseiller expert fixe l'heure de début et de fin des ordres d'ouverture. Je voudrais que ce temps soit affiché sur le graphique. Je n'ai pas encore réussi à le faire. Voici le code. Je voudrais vous demander de l'aide !

//-------------------------------------------------------------------+  Команда на открытие первых ордеров в сетке
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
   ObjectCreate(0, "Начало торговли", OBJ_VLINE,0,0, StartTime);
   ObjectSetInteger(0, "Начало торговли",OBJPROP_COLOR, clrBlue);
   ObjectCreate(0,"Окончание торговли", OBJ_VLINE, 0, 0, StopTime);
   ObjectSetInteger(0, "Окончание торговли", OBJPROP_COLOR, clrBlue);
     {
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }
 
EVGENII SHELIPOV #:

Veuillez me conseiller.

Le conseiller expert fixe l'heure de début et de fin des ordres d'ouverture. Je voudrais que ce temps soit affiché sur le graphique. Je n'ai pas encore réussi à le faire. Voici le code. Je voudrais vous demander de l'aide !

Afficher les variables StartTime et StopTime
 
MakarFX #:
Afficher les variables StartTime et StopTime
extern string               TIME                           = "Настройки времени";
extern int                  UseHour                        = 1;         // Торговля в установленное время "0"-ВЫКЛ, "1"-ВКЛ
extern int                  StartTime                      = 1;         // Начало торговли
extern int                  StopTime                       = 19;        // Окончание торговли
 
EVGENII SHELIPOV #:
   if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0)
     {
      if(ObjectFind(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE))!=0)
        {
         ObjectCreate(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StartTime*3600),0);
         ObjectSetInteger(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
         ObjectCreate(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StopTime*3600),0);
         ObjectSetInteger(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue);
        }
      if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0)
         SendFirsOrder(0);
      if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1)
         SendFirsOrder(1);
     }