Trascinate SL e TP nel tester. - pagina 14

 
Ho ancora deciso di aggiungere il trascinamento di SL e TP alla terza variante. Cioè dopo l'algoritmo 3 opzioni impostare SL e TP, possiamo trascinarli dove necessario. Questa è secondo me la migliore opzione (universale). Nel void OnTick() ci dovrebbe essere una linea: if(PriceModify<Point()) {OnSL=0;OnTP=0;}
void ModifySlTp2(double priceModify=0)
 {
  double sl=0,tp=0;
  
  for(int i=0; i<OrdersTotal(); i++) 
     { 
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
        { 
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) 
           {
            if(MathAbs(OrderOpenPrice()-priceModify)<10*Point())  {OnOrd=true;}    
            if(MathAbs(OrderStopLoss()-priceModify)<10*Point())   {OnSL=true;}
            if(MathAbs(OrderTakeProfit()-priceModify)<10*Point()) {OnTP=true;}
            if(OnOrd || OnSL || OnTP) {TicketModifyOrder=OrderTicket();}
            if(OnOrd) {OnOrd=false; return;}
           }
        }  
     }  
   if(TicketModifyOrder>0)
     {
      if(OrderSelect(TicketModifyOrder, SELECT_BY_TICKET))
        {
         bool typOrdBuy = OrderType()==OP_BUY  || OrderType()==OP_BUYSTOP  || OrderType()==OP_BUYLIMIT;
         bool typOrdSell= OrderType()==OP_SELL || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT;
         if(!OnOrd && !OnSL && !OnTP)
           {
            if(typOrdBuy)
              {
               sl = NormalizeDouble(priceModify,Digits);
               tp = NormalizeDouble(OrderOpenPrice()+Ktp*(OrderOpenPrice()-sl),Digits);
              }
            if(typOrdSell)
              {
               sl = NormalizeDouble(priceModify,Digits);
               tp = NormalizeDouble(OrderOpenPrice()-Ktp*(sl-OrderOpenPrice()),Digits);
              }
            }    
            if(OnSL) {sl=NormalizeDouble(priceModify,Digits);tp=OrderTakeProfit();}
            if(OnTP) {tp=NormalizeDouble(priceModify,Digits);sl=OrderStopLoss();}
                                                             
            ModifyOrder1(-1, sl, tp, 0); 
            if(OnSL || OnTP) {TicketModifyOrder=0;} 
        }           
     }  
 }
 

Oggi ho testato una strategia nel tester. La pratica ha dimostrato che è più conveniente trascinare sl e tp se si fa una regolazione delle 2 costanti.

Ecco qui:

...

if(MathAbs(OrderOpenPrice()-priceModify)<10*Point())  {OnOrd=true;}    
if(MathAbs(OrderStopLoss()-priceModify)<30*Point())   {OnSL=true;}
if(MathAbs(OrderTakeProfit()-priceModify)<30*Point()) {OnTP=true;}
if(OnOrd || OnSL || OnTP) {TicketModifyOrder=OrderTicket();}
if(OnOrd) {OnOrd=false; return;}

...



 
Grazie per il vostro aiuto. Questo è utile. Stavo cercando come aprire gli ordini nel tester. Lo si fa attraverso le variabili globali. È solo scomodo che l'indicatore debba essere collocato su un grafico.