affinement de la stratégie du conseiller - page 4

 
IRIP:

Où puis-je trouver des informations sur la manière de définir un seuil de perte ?

J'ai besoin, disons, d'un arrêt à la barre basse 2.


https://book.mql4.com/ru/trading/index
 
Merci.
 

Il y a maintenant plusieurs défis à relever

1. Le seuil de rentabilité lorsqu'un certain bénéfice est atteint

2. chaluter par des fractales ou un chiffre fixe

 
IRIP:

Il y a maintenant plusieurs défis à relever

1. Le seuil de rentabilité lorsqu'un certain bénéfice est atteint

2. chaluter par des fractales ou un chiffre fixe


Commencez à écrire et posez des questions au fur et à mesure...
 
IRIP:
si ( (Low[0]>Low[1]) && (Low[1]<Low[2]) && (Low[1]<Low[2]) && (High[1]<High[2]) ) BuyOp=true ;

si ( (High[0]<High[1]) && (Low[0]<Low[1]) && (High[1]>High[2]) && (Open[0]<Close[1]) ) SellOp=true ;


Vendre . Et aucun Trall ou Breakeven ne vous aidera. Et cela ne servira jamais si vous n'exploitez aucune régularité, comme dans ce cas.

 
DYN:


Vous le ferez. Et aucun chalut ou seuil de rentabilité ne vous aidera. Et cela ne servira jamais si vous n'exploitez aucune régularité comme dans ce cas.


Il le fera. Mais l'homme apprend à programmer, et ce n'est pas si mal !
 
ktest0:

Il le fera. Mais on apprend à programmer, et ce n'est pas une mauvaise chose !

Oui, je suis d'accord. Félicitations au mec pour ça. Il est difficile d'apprendre à partir de zéro au début - je sais ce que c'est -)-)-)
 
ktest0:

Il le fera. Mais on apprend à programmer, et ce n'est pas une mauvaise chose !

Oui, je veux vraiment apprendre à programmer.
 


Des livres, c'est génial. Mais, par exemple, j'ai trouvé un conseiller qui fait généralement ce dont j'ai besoin.

//+------------------------------------------------------------------+

//| TrailingStopLight.mq4 |

//| Copyright © 2011, Khlystov Vladimir.

//| http://cmillion.narod.ru |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2011, cmillion@narod.ru"

#lien de propriété "http://cmillion.narod.ru"

#property show_inputs

//--------------------------------------------------------------------

extern int Stoploss = 0, //stopploss, si 0, reste inchangé

Bénéfice net = 0 ; //le bénéfice net, s'il est égal à 0, reste inchangé.

extern int TrailingStop = 20 ; //longueur de tramp, si 0, alors pas de trailing stop

extern int StepTrall = 0 ; //pas de marche - déplacez le StopLoss pas plus près que StepTrall

extern int NoLoss = 10, //transfert vers le seuil de rentabilité à un nombre spécifié de points de profit, si 0, alors pas de transfert vers le seuil de rentabilité

MinProfitNoLoss = 0 ; //profit minimum pour que le transfert atteigne le seuil de rentabilité.

//--------------------------------------------------------------------

int STOPLEVEL,TimeBar ;

//--------------------------------------------------------------------

int init()

{

}

//--------------------------------------------------------------------

int deinit()

{

ObjectDelete("SLb") ;

ObjectDelete("SLs") ;

}

//--------------------------------------------------------------------

int start()

{

//while(!IsStopped())

{

//RefreshRates() ;

STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL) ;

double OSL,OTP,OOP,StLo,SL,TP ;

double Profit,ProfitS,ProfitB,LB,LS,NLb,NLs,price_b,price_s,OL,sl ;

int b,s,OT,OMN ;

for (int i=OrdersTotal()-1 ; i>=0 ; i--)

{

si (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

OMN = OrderMagicNumber() ;

si (OrderSymbol() == Symbol())

{

OOP = NormalizeDouble(OrderOpenPrice(),Digits) ;

OT = OrderType() ;

OL = OrderLots() ;

si (OT==OP_BUY)

{

prix_b = prix_b+OOP*OL ;

b++ ; LB+= OL ;

ProfitB+=OrderProfit()+OrderSwap()+OrderCommission() ;

}

si (OT==OP_SELL)

{

prix_s = prix_s+OOP*OL ;

s++;LS+= OL ;

ProfitS+=OrderProfit()+OrderSwap()+OrderCommission() ;

}

}

}

}

ObjectDelete("SLb") ;

ObjectDelete("SLs") ;

si (b>0)

{

NLb = NormalizeDouble(price_b/LB,Digits) ;

ObjectCreate("SLb",OBJ_ARROW,0,Time[0],NLb,0,0,0) ;

ObjectSet ("SLb",OBJPROP_ARROWCODE,6) ;

ObjectSet ("SLb",OBJPROP_COLOR,Blue) ;

}

si (s>0)

{

NLs = NormalizeDouble(price_s/LS,Digits) ;

ObjectCreate("SLs",OBJ_ARROW,0,Time[0],NLs,0,0,0) ;

ObjectSet ("SLs",OBJPROP_ARROWCODE,6) ;

ObjectSet ("SLs",OBJPROP_COLOR,Red) ;

}

int OTicket ;

pour (i=0 ; i<OrdersTotal() ; i++)

{

si (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

si (OrderSymbol()==Symbol())

{

OT = OrderType() ;

OSL = NormalizeDouble(OrderStopLoss(),Digits) ;

OTP = NormalizeDouble(OrderTakeProfit(),Digits) ;

OOP = NormalizeDouble(OrderOpenPrice(),Digits) ;

SL=OSL ; TP=OTP ;

si (OT==OP_BUY)

{

b++ ;

si (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

{

SL = NormalizeDouble(Bid - Stoploss * Point,Digits) ;

}

sinon SL=OSL ;

si (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

{

TP = NormalizeDouble(Ask + Takeprofit * Point,Digits) ;

}

sinon TP=OTP ;

si (NoLoss>=STOPLEVEL && OSL<NLb && NoLoss!=0)

{

Si (OOP<=NLb && NLb!=0 && NLb <= NormalizeDouble(Bid-NoLoss*Point,Digits))

SL = NormalizeDouble(NLb+MinProfitNoLoss*Point,Digits) ;

}

si (TrailingStop>=STOPLEVEL && TrailingStop!=0)

{

StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits) ;

si (StLo>=NLb && NLb!=0) si (StLo > OSL) SL = StLo ;

}

si (SL != OSL || TP != OTP)

{

OTicket=OrderTicket() ;

if (!OrderModify(OTicket,OOP,SL,TP,0,White)) Print("OrderModify Error ",GetLastError()) ;

}

}

si (OT==OP_SELL)

{

s++ ;

si (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

{

SL = NormalizeDouble(Ask + Stoploss * Point,Digits)

}

sinon SL=OSL ;

si (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

{

TP = NormalizeDouble(Bid - Takeprofit * Point,Digits) ;

}

sinon TP=OTP ;

si (NoLoss>=STOPLEVEL && (OSL>NLs || OSL==0) && NoLoss!=0)

{

si (OOP>=NLs && NLs!=0 && NLs >= NormalizeDouble(Ask+NoLoss*Point,Digits))

SL = NormalizeDouble(NLs-MinProfitNoLoss*Point,Digits) ;

}

si (TrailingStop>=STOPLEVEL && TrailingStop!=0)

{

StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits) ;

si (StLo<=NLs && NLs!=0) si (StLo < OSL || OSL==0) SL = StLo ;

}

si ((SL != OSL || OSL==0) || TP != OTP)

{

OTicket=OrderTicket() ;

if (!OrderModify(OTicket,OOP,SL,TP,0,White)) Print("OrderModify Error ",GetLastError()) ;

}

}

}

}

}

si (IsTesting())

{

si (TimeBar!=Time[0])

{

OrderSend(Symbol(),OP_BUY,1,NormalizeDouble(Ask,Digits),3,0,0, "test",0,0,Blue) ;

OrderSend(Symbol(),OP_SELL,1,NormalizeDouble(Bid,Digits),3,0,0, "test",0,0,Red) ;

TimeBar=Time[0] ;

}

}

//Sleep(1000) ;

}

}

//--------------------------------------------------------------------

Pourrait-il (théoriquement) être inséré dans le mien ?

 
IRIP:


Des livres, c'est génial. Mais, par exemple, j'ai trouvé un conseiller qui fait généralement ce dont j'ai besoin.

//+------------------------------------------------------------------+

//|                                            TrailingStopLight.mq4 |

//|                              Copyright © 2011, Khlystov Vladimir |

//|                                         http://cmillion.narod.ru |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2011, cmillion@narod.ru"

#property link      "http://cmillion.narod.ru"

#property show_inputs

//--------------------------------------------------------------------
extern int Stoploss             = 0,//стоплосс, если 0 то не изменяется
           Takeprofit           = 0;//тейкпрофит, если 0 то не изменяется
extern int TrailingStop         = 20;//длинна тралла, если 0 то нет тралла
extern int StepTrall            = 0;//шаг тралла - перемещать стоплосс не ближе чем StepTrall
extern int NoLoss               = 10,//перевод в безубыток при заданном кол-ве пунктов прибыли, если 0 то нет перевода в безубыток
           MinProfitNoLoss      = 0//минимальная прибыль при переводе вбезубыток
//--------------------------------------------------------------------
int  STOPLEVEL,TimeBar;
//--------------------------------------------------------------------
int init()
{

}
//--------------------------------------------------------------------
int deinit()
{
   ObjectDelete("SLb");
   ObjectDelete("SLs");
}
//--------------------------------------------------------------------
int start()                                  
{
   //while(!IsStopped())
   {
      //RefreshRates();
      STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
      double OSL,OTP,OOP,StLo,SL,TP;
      double Profit,ProfitS,ProfitB,LB,LS,NLb,NLs,price_b,price_s,OL,sl;
      int b,s,OT,OMN;
      for (int i=OrdersTotal()-1; i>=0; i--)
      {                                               
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
            OMN = OrderMagicNumber();
            if (OrderSymbol() == Symbol())
            {
               OOP = NormalizeDouble(OrderOpenPrice(),Digits);

               OT = OrderType();
               OL = OrderLots();
               if (OT==OP_BUY)
               {
                  price_b = price_b+OOP*OL;
                  b++; LB+= OL;
                  ProfitB+=OrderProfit()+OrderSwap()+OrderCommission();
               }
               if (OT==OP_SELL)
               {
                  price_s = price_s+OOP*OL;

                  s++;LS+= OL;

                  ProfitS+=OrderProfit()+OrderSwap()+OrderCommission();

               }

            }

         }

      }

      ObjectDelete("SLb");

      ObjectDelete("SLs");

      if (b>0) 

      {

         NLb = NormalizeDouble(price_b/LB,Digits);

         ObjectCreate("SLb",OBJ_ARROW,0,Time[0],NLb,0,0,0,0);                     

         ObjectSet   ("SLb",OBJPROP_ARROWCODE,6);

         ObjectSet   ("SLb",OBJPROP_COLOR, Blue);

      }

      if (s>0) 

      {

         NLs = NormalizeDouble(price_s/LS,Digits);

         ObjectCreate("SLs",OBJ_ARROW,0,Time[0],NLs,0,0,0,0);                     

         ObjectSet   ("SLs",OBJPROP_ARROWCODE,6);

         ObjectSet   ("SLs",OBJPROP_COLOR, Red);

      }

      int OTicket;

      for (i=0; i<OrdersTotal(); i++)

      {    

         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

         {

            if (OrderSymbol()==Symbol())

            { 

               OT = OrderType(); 

               OSL = NormalizeDouble(OrderStopLoss(),Digits);

               OTP = NormalizeDouble(OrderTakeProfit(),Digits);

               OOP = NormalizeDouble(OrderOpenPrice(),Digits);

               SL=OSL;TP=OTP;

               if (OT==OP_BUY)             

               {  

                  b++;

                  if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

                  {

                      SL = NormalizeDouble(Bid - Stoploss   * Point,Digits);

                  } 

                  else SL=OSL;

                  if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

                  {

                      TP = NormalizeDouble(Ask + Takeprofit * Point,Digits);

                  } 

                  else TP=OTP;

                  if (NoLoss>=STOPLEVEL && OSL<NLb && NoLoss!=0)

                  {

                     if (OOP<=NLb && NLb!=0 && NLb <= NormalizeDouble(Bid-NoLoss*Point,Digits)) 

                        SL = NormalizeDouble(NLb+MinProfitNoLoss*Point,Digits);

                  }

                  if (TrailingStop>=STOPLEVEL && TrailingStop!=0)

                  {

                     StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits); 

                     if (StLo>=NLb && NLb!=0) if (StLo > OSL) SL = StLo;

                  }

                  if (SL != OSL || TP != OTP)

                  {  

                     OTicket=OrderTicket();

                     if (!OrderModify(OTicket,OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());

                  }

               }                                         

               if (OT==OP_SELL)        

               {

                  s++;

                  if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

                  {

                     SL = NormalizeDouble(Ask + Stoploss   * Point,Digits);

                  }

                  else SL=OSL;

                  if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

                  {

                      TP = NormalizeDouble(Bid - Takeprofit * Point,Digits);

                  }

                  else TP=OTP;

                  if (NoLoss>=STOPLEVEL && (OSL>NLs || OSL==0) && NoLoss!=0)

                  {

                     if (OOP>=NLs && NLs!=0 && NLs >= NormalizeDouble(Ask+NoLoss*Point,Digits)) 

                        SL = NormalizeDouble(NLs-MinProfitNoLoss*Point,Digits);

                  }

                  if (TrailingStop>=STOPLEVEL && TrailingStop!=0)

                  {

                     StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits); 

                     if (StLo<=NLs && NLs!=0) if (StLo < OSL || OSL==0) SL = StLo;

                  }

                  if ((SL != OSL || OSL==0) || TP != OTP)

                  {  

                     OTicket=OrderTicket();

                     if (!OrderModify(OTicket,OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());

                  }

               } 

            }

         }

      }

      if (IsTesting())

      {

         if (TimeBar!=Time[0])

         {

            OrderSend(Symbol(),OP_BUY,1,NormalizeDouble(Ask,Digits),3,0,0,"тест",0,0,Blue);

            OrderSend(Symbol(),OP_SELL,1,NormalizeDouble(Bid,Digits),3,0,0,"тест",0,0,Red);

            TimeBar=Time[0];

         }

      } 

      //Sleep(1000);

   } 
}
//--------------------------------------------------------------------

Peut-il (théoriquement) être inséré dans le mien ?

Tout d'abord, apprenez à insérer du code avec un bouton SRC!

Que "les livres sont géniaux" doit encore être démontré ! En attendant, vous envisagez de sortir sur des indices. Et "sans travail...", vous connaissez probablement le résultat ou vous allez le découvrir, et le temps presse ! Sans connaissance, on ne va nulle part !