Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 800

 

Serait-il correct de transférer les bénéfices des distributeurs automatiques de billets ?

(OrderProfit()+OrderCommission()+OrderSwap())/OrderLots()*MarketInfo(Symbol(),MODE_TICKVALUE)*(MarketInfo(Symbol(),MODE_POINT)/MarketInfo(Symbol(),MODE_TICKSIZE))
 
Bonjour ! Aidez moi à comprendre les fonctions, et comment cela fonctionne, merci d'avance.
//+----------------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Модификация одного предварительно выбранного ордера.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    pp - цена установки ордера                                              |
//|    sl - ценовой уровень стопа                                              |
//|    tp - ценовой уровень тейка                                              |
//|    ex - дата истечения                                                     |
//+----------------------------------------------------------------------------+
void ModifyOrder(double pp=-1,double sl=0,double tp=0,datetime ex=0) 
  {
   bool   fm;
   color  cl=IIFc(OrderType()==OP_BUY
                  || OrderType()==OP_BUYLIMIT
                  || OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell);
   double op,pa,pb,os,ot;
   int    dg=MarketInfo(OrderSymbol(),MODE_DIGITS),er,it;

   if(pp<=0) pp=OrderOpenPrice();
   if(sl<0 ) sl=OrderStopLoss();
   if(tp<0 ) tp=OrderTakeProfit();

   pp=NormalizeDouble(pp, dg);
   sl=NormalizeDouble(sl, dg);
   tp=NormalizeDouble(tp, dg);
   op=NormalizeDouble(OrderOpenPrice() , dg);
   os=NormalizeDouble(OrderStopLoss()  , dg);
   ot=NormalizeDouble(OrderTakeProfit(), dg);

   if(pp!=op || sl!=os || tp!=ot) 
     {
      for(it=1; it<=NumberOfTry; it++) 
        {
         if(!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
         while(!IsTradeAllowed()) Sleep(5000);
         RefreshRates();
         fm=OrderModify(OrderTicket(),pp,sl,tp,ex,cl);
         if(fm) 
           {
            if(UseSound) PlaySound(SoundSuccess); break;
              } else {
            er=GetLastError();
            if(UseSound) PlaySound(SoundError);
            pa=MarketInfo(OrderSymbol(), MODE_ASK);
            pb=MarketInfo(OrderSymbol(), MODE_BID);
            Print("Error(",er,") modifying order: ",ErrorDescription(er),", try ",it);
            Print("Ask=",pa,"  Bid=",pb,"  sy=",OrderSymbol(),
                  "  op="+GetNameOP(OrderType()),"  pp=",pp,"  sl=",sl,"  tp=",tp);
            Sleep(1000*10);
           }
        }
     }
  }
//+----------------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Версия   : 11.09.2008                                                     |
//|  Описание : Сопровождение позиций простым тралом                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
void SimpleTrailing(string sy="",int op=-1,int mn=-1) 
  {
   double po,pp;
   int    i,k=OrdersTotal();

   if(sy==NULL) sy=Symbol();
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
        {
         if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) 
           {
            po=MarketInfo(OrderSymbol(),MODE_POINT);
            if(mn<0 || OrderMagicNumber()==mn) 
              {
               if(OrderType()==OP_BUY) 
                 {
                  pp=MarketInfo(OrderSymbol(),MODE_BID);
                  if(pp-OrderOpenPrice()>=TrailingStart*po) 
                    {
                     if(OrderStopLoss()<pp-(TStop_Buy+TrailingStep-1)*po) 
                       {
                        ModifyOrder(-1,pp-TStop_Buy*po,-1);
                       }
                    }
                 }
               if(OrderType()==OP_SELL) 
                 {
                  pp=MarketInfo(OrderSymbol(),MODE_ASK);
                  if(OrderOpenPrice()-pp>=TrailingStart*po) 
                    {
                     if(OrderStopLoss()>pp+(TStop_Sell+TrailingStep-1)*po || OrderStopLoss()==0) 
                       {
                        ModifyOrder(-1,pp+TStop_Sell*po,-1);
                       }
                    }
                 }
              }
           }
        }
     }
  }
//+----------------------------------------------------------------------------+
 
lihn:

Pourquoi ont-ils effacé l'auteur des fonctions d'Igor Kim ? ! Par manque de respect pour l'auteur, mais il est obligatoire de publier avec l'indication de la paternité !

Et il est préférable d'adresser votre question à l'auteur dans sa branche ! Vous pouvez le trouver dans une recherche ou sur google !

 

Pouvez-vous me dire s'il est possible de dessiner des indicateurs multicolores dans MQL4 ? Où puis-je trouver un exemple ?


La documentation de MQL4 contient INDICATOR_COLOR_INDEX, mais le sujet n'est pas du tout abordé. J'ai trouvé un exemple dans MQL5 - https://www.mql5.com/ru/articles/135 .

Il compile avec succès, mais ne fonctionne pas comme prévu. La fonction PlotIndexSetInteger utilisée dans l'exemple a été compilée avec succès, bien qu'elle ne soit pas mentionnée dans la documentation MQL4.


Il existe une autre incohérence : la doc MQL4 contient un exemple similaire dans la description de la fonction ArrayCopy qui utilise également la fonction PlotIndexSetInteger.


Les développeurs sont-ils perdus dans leur propre bois, ou qu'est-ce que je manque ?

 
Dubovik:

Savez-vous s'il est possible de dessiner des indicateurs de couleurs différentes dans MQL4 ? Où puis-je trouver un exemple ?


La documentation de MQL4 contient INDICATOR_COLOR_INDEX, mais le sujet n'est pas du tout abordé. J'ai trouvé un exemple dans MQL5 - https://www.mql5.com/ru/articles/135 .

Il compile avec succès, mais ne fonctionne pas comme prévu. La fonction PlotIndexSetInteger utilisée dans l'exemple a été compilée avec succès, bien qu'elle ne soit pas mentionnée dans la documentation MQL4.


Il existe une autre divergence : la doc MQL4 contient un exemple similaire dans la description de la fonction ArrayCopy et la fonction PlotIndexSetInteger y est également utilisée.


Les développeurs sont-ils perdus dans leur propre forêt, ou bien je ne comprends pas quelque chose ?

Il y a autant de couleurs que de tampons, cherchez-les dans la documentation, la base de code, les articles et dans le forum ! Et Google à la rescousse !
 
borilunad:
Autant de couleurs, autant de tampons, regardez dans la Documentation, la Codebase, les Articles et le Forum ! Et Google à la rescousse !

Ce n'est pas ce que je veux dire, je veux parler des indicateurs qui ont un tampon ajouté comme celui-ci :

 SetIndexBuffer(4,buffer_color_line,INDICATOR_COLOR_INDEX);
 
Dubovik:

Ce n'est pas ce que je veux dire, je veux parler des indicateurs qui ont un tampon ajouté comme celui-ci :

Ce paramètre ne fonctionne pas en quadruple. Autant de tampons, autant de couleurs
 
Est-ce que c'est dans mcl4 ?!
 
Oui, dans MQL4. Il y a quelque chose dans la documentation qui est sommaire et qui ne fonctionne pas vraiment.
 
Dubovik:
Oui, dans MQL4. Il y a quelque chose dans la documentation qui est décrit par bribes, mais qui ne fonctionne pas vraiment.
C'est étrange, d'habitude il est trop tard pour le mettre dans le doc, mais maintenant c'est l'inverse ! Il en sera ainsi ! Seulement quand ? !