서로 독립적으로 두 위치를 관리하는 이익 트롤의 조언이 필요합니다. 어떻게 구현할 수 있습니까? - 페이지 6

 
charony :

그것이 거의 작동하는 방식입니다


트롤 활성화 기준에 관심이 없습니다.

각 열린 위치를 다른 위치와 별도로 유지하려면 흔적이 필요합니다.

내가 게시한 노예는 플러스에 있는 위치만 트롤을 시작하고 마이너스 위치의 발에는 전혀 닿지 않습니다.

"두 위치에 대해 50포인트의 트레일을 설정하는 것이 가능합니다.

그러나 그들은 동시에 닫히지 않을 것입니다

트롤 모두 50점"

둘 다 플러스에 있는 경우에만 닫히고, 1이 플러스에 있고 다른 하나가 마이너스에 있으면 정지는 플러스에 있는 경우에만 이동합니다.

 
PozitiF :

나는 모든 페이지를 읽지 않았지만, 대략적인 아이디어를 얻었다고 생각합니다.

https://www.mql5.com/ru/articles/1390 여기에서 주문이 있는 배열을 만들고 주문을 생성할 때 어딘가에서 마법을 가져오면 고문의 입력 매개변수에 Magic = 1을 쓸 수 있습니다. 예를 들어, 후속 미결 주문에서 값을 1만큼 늘리고,

터미널이 충돌하는 경우 어레이를 복원할 수 있습니다.

내가 쓴 이전 페이지에서 마술사가 매개변수로 사용하는 스랄.



배열이 올바르지 않으면 int와 double을 함께 하나의 배열로 밀어 넣을 수 없습니다.
 
charony :

배열이 올바르지 않으면 int와 double을 함께 하나의 배열로 밀어 넣을 수 없습니다.
점 앞에 정수를 넣으면 됩니다.
 
PozitiF :
점 앞에 정수를 넣으면 됩니다.


이중 가격 EUR/USD 1.3915에서 int 1로

int 판매 = 1, 이중 판매 = 1.0

그런 다음 프로그램이 작동하지 않는 이유를 찾습니다 ????????

또는 더 나쁜 것은 삼촌 "Kolya Marzhin"이옵니다.

 

왜 int에 가격을 입력해야 합니까? 저는 이에 대해 아무 것도 쓰지 않았고 제공하지도 않았습니다.

나는 double 유형의 변수에 int 숫자를 배치하는 것이 가능하다고 썼습니다.

두 번에서 다시 int로 그리고 다시 모든 것이 당신을 위해 작동합니다 1) https://www.mql5.com/ru/forum/136406

 

열려면 int MN= TimeCurrent() ; 이것은 OrderSend(Symbol(),OP_BUY,Lots_New,Ask,2,0,0,NULL,MN,0,Green)입니다.

즉, 각 주문에는 마법이 할당됩니다.

선택 후 트롤에서

int Tip=주문 유형();

if(OrderSymbol()!=Symbol()||팁>1)계속;

if(OrderMagicNumber()==MN)

나는 지금 시도 할거야

 

아니요, 작동하지 않습니다. 다른 것이 엉망이 된 것 같습니다. 지금 후행에 대해 이야기하고 있는 중입니다.

추구할 것이다

 
PozitiF :

왜 int에 가격을 입력해야 합니까? 저는 이에 대해 아무 것도 쓰지 않았고 제공하지도 않았습니다.

나는 double 유형의 변수에 int 숫자를 배치하는 것이 가능하다고 썼습니다.

두 번에서 다시 int로 그리고 다시 모든 것이 당신을 위해 작동합니다 1) https://www.mql5.com/en/forum/136406

두 배 가격 EUR/USD 1.3915 int 1 그리고 다시 두 배에서 우리는 1.0 을 얻습니다.

이중 가격 EUR/USD 1.3915 =========> 이중 1.0

그들은 어디에서 웃고 있습니까????????????????????????



int 1 ------> double 1.0 ------> int 1은 아마도 여기에서 작동하지만 내장은 아닙니다.

 
charony :

아니요, 작동하지 않습니다. 다른 것이 엉망이 된 것 같습니다. 지금 후행에 대해 이야기하고 있는 중입니다.

추구할 것이다

Thral은 100% 작동하며 거의 모든 고문에서 작동합니다.

 int Trall = 50 ;

int MN= TimeCurrent ();

OrderSend ( Symbol (),OP_BUY,Lots_New,Ask, 2 , 0 , 0 , NULL ,MN, 0 , Green );

int Tip= OrderType ();

if ( OrderSymbol ()!= Symbol ()||Tip> 1 ) continue ;
for(int i = 0; i<OrderTotals(); i++){
   if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true){
      if ( OrderMagicNumber ()==MN) TrailingStop(Trall, 5 , MN);
   }
}

트롤해야합니다.

 
//+-----------------------------trailingstop----------------------------------------------+
 total= OrdersTotal ();
     for ( int n= 0 ;n<total;n++)
     {
       if ( OrderSelect (n, SELECT_BY_POS, MODE_TRADES) == true)
         { 
         int Tip= OrderType ();                  
         if ( OrderSymbol ()== Symbol ()&& OrderType ()==Tip)
            {
                MN = OrderMagicNumber ();
                TrailingStop(level_ts, level_step , MN);
            } 
         }    
      }
 
  

   
   return ;                             // exit start()
  }
//+-----------------------------start end----------------------------------------------+

void TrailingStop( int level_ts, int level_step , int MN) 
{
   int ot, err, quantity_orders, cx;
   bool fm;
   double op, as, bd, pt, sl, tp, ut;
//----
   quantity_orders = OrdersTotal ();
   if (quantity_orders >= 0 ) {
       for (cx = 0 ; cx < quantity_orders; cx++) {
         if (! OrderSelect (cx, SELECT_BY_POS, MODE_TRADES)) {
             Print ( "Error: SimpleTrailing(), OrderSelect: " + cx + ". Îøèáêà: " + GetLastError ());
         }
         if ( OrderMagicNumber ()==MN ) 
         {   
            pt = MarketInfo ( OrderSymbol (), MODE_POINT);
            bd = MarketInfo ( OrderSymbol (), MODE_BID);
            as = MarketInfo ( OrderSymbol (), MODE_ASK);
            op = OrderOpenPrice ();
            ot = OrderType ();
            sl = OrderStopLoss ();
            tp = OrderTakeProfit ();
            ut = level_ts + level_step;
         
             if (ot == OP_BUY) {
               if (sl == 0 || sl < op) {                              
                   if (op <  (bd - ut * pt)) {                         
                     sl = bd - level_ts * pt;
                  }
               }
               else {
                   if (sl < (bd - ut * pt) && bd > (op + ut * pt)) {
                     sl = bd - level_ts * pt;
                  }
               }
            }
             if (ot == OP_SELL) {
               if (sl == 0 || sl > op) {
                   if (op > (as + ut * pt)) {
                     sl = as + level_ts * pt;
                  }
               }
               else {
                   if (sl > (as + ut * pt) && as < (op - ut * pt)) {
                     sl = as + level_ts * pt;
                  }
               }
            }
             if (sl != OrderStopLoss ()) {
               op = NormalizeDouble (op, Digits );
               tp = NormalizeDouble (tp, Digits );
               sl = NormalizeDouble (sl, Digits );
               fm = OrderModify ( OrderTicket (), op, sl, tp, 0 , CLR_NONE );
               
            }
         }
      }
   }
}

//+-----------------------------trailingstop end----------------------------------------------+

코드를 삽입하면 트롤이 작동합니다

하지만 문제는 남아있다