테스터에 SL과 TP를 끌어다 놓습니다. - 페이지 14

 
그러나 세 번째 옵션에 SL 및 TP 드래그를 추가하기로 결정했습니다. 저것들. 알고리즘 3에 따라 SL과 TP를 설치한 후 필요한 곳으로 드래그할 수 있습니다. 이것은 제 생각에 가장 최적의(보편적인) 옵션입니다. void OnTick()의 본문은 다음 행을 포함해야 합니다. 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 ;} 
        }           
     }  
 }
 

오늘은 테스터에서 하나의 전략을 테스트했습니다. 실습에 따르면 2개의 상수를 조정하면 sl과 tp를 휴대하는 것이 더 편리합니다.

여기:

...

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 ;}

...



 
도와주셔서 감사합니다. 도움이 되었습니다. 테스터에서 주문을 여는 방법을 찾고 있었습니다. 전역 변수 를 통해 . 차트에 표시를 걸어야 하는 것이 불편할 뿐입니다.