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

 

트롤을 설정하면 한 위치에서 잘 작동합니다.

그러나 위치가 두 개 이상인 경우(예: 두 위치).판매

동시에 둘 다 닫힙니다

포지션별로 따로 작업할 트레일이 필요합니다

이것은 수동 거래 중에 가능합니다. 즉, 하나의 매도 포지션에는 자체 StopLoss가 있습니다.

다른 매도 포지션에는 다른 손절매가 있습니다.

구글은 도움이 되지 않았다

 

어쨌든 흔적은 위치를 구별해야하므로 주문에 다른 마법을 할당하고 다른 마법으로 두 개의 흔적을 설정할 수 있습니다.

아니면 후행 코드를 어드바이저에 내장해야 합니까? 그런 다음 여전히 주문에 다른 마법을 할당하고 두 마법에 대한 후행 기능을 복제해야 합니다. 임호.

 
티켓으로 나누려고 했지만 성공하지 못했습니다.
 
Sancho77 :
어쨌든 흔적은 위치를 구별해야하므로 주문에 다른 마법을 할당하고 다른 마법으로 두 개의 흔적을 설정할 수 있습니다.


코드에서 어떻게 보일까요? 새로운 마술사를 쓰기 위해 각 위치에 대해?

각 위치에 대해 별도의 트롤?

위치 6-8인 경우

더 쉬울 수 없습니까?

트롤은 고문에 있습니다

 
charony :


코드에서 어떻게 보일까요? 새로운 마술사를 쓰기 위해 각 위치에 대해?

각 위치에 대해 별도의 트롤?

위치 6-8인 경우

더 쉬울 수 없습니까?

글쎄, 위치가 많으면 개별 트롤이 어렵다는 데 동의합니다. 두 위치이지만 내 의견으로는 정상입니다.

어쩌면 더 간단할 수 있지만 다른 주문의 후행에서 차이점은 무엇입니까?

 
charony :


코드에서 어떻게 보일까요? 새로운 마술사를 쓰기 위해 각 위치에 대해?

각 위치에 대해 별도의 트롤?

위치 6-8인 경우

더 쉬울 수 없습니까?

트롤은 고문에 있습니다

어드바이저에서 후행을 끄고 내장된 후행 을 사용하십시오. 각 위치에 대해 별도의 추적이 있습니다.
 
sanyooooook :
Expert Advisor에서 후행을 비활성화하고 내장된 후행을 사용하십시오. 각 위치에 대해 별도의 추적이 있습니다.

재미 없다
 
//--------------------------------------------------------------- 1 --
// Функция модификации StopLoss всех ордеров указанного типа
// Глобальные переменные:
// Mas_Ord_New             Массив ордеров последний известный
// int TralingStop         Значение TralingStop(количество пунктов)
//--------------------------------------------------------------- 2 --
int Tral_Stop( int Tip)
  {
   int Ticket;                       // Номер ордера
   double
   Price,                           // Цена открытия рыночного ордера
   TS,                               // TralingStop (относит.знач.цены)
   SL,                               // Значение StopLoss ордера
   TP;                               // Значение TakeProfit ордера
   bool Modify;                     // Признак необходимости модифи.
//--------------------------------------------------------------- 3 --
   for ( int i= 1 ;i<=Mas_Ord_New[ 0 ][ 0 ];i++)   // Цикл по всем ордерам
     {                                     // Ищем ордера задан. типа
       if (Mas_Ord_New[i][ 6 ]!=Tip)         // Если это не наш тип..
         continue ;                         //.. то переступим ордер
      Modify= false ;                       // Пока не назначен к модифи
      Price =Mas_Ord_New[i][ 1 ];           // Цена открытия ордера
      SL    =Mas_Ord_New[i][ 2 ];           // Значение StopLoss ордера
      TP    =Mas_Ord_New[i][ 3 ];           // Значение TakeProft ордера
      Ticket=Mas_Ord_New[i][ 4 ];           // Номер ордера
       if (TralingStop<Level_new)           // Если меньше допустимого..
         TralingStop=Level_new;           // .. то допустимый
      TS=TralingStop*Point;               // То же в относит.знач.цены
       //--------------------------------------------------------- 4 --
       switch (Tip)                         // Переход на тип ордера
        {
         case 0 :                         // Ордер Buy
             if (NormalizeDouble(SL,Digits)< // Если ниже желаемого..
               NormalizeDouble(Bid-TS,Digits))
              {                           // ..то модифицируем его:
               SL=Bid-TS;                 // Новый его StopLoss
               Modify= true ;               // Назначен к модифи.
              }
             break ;                         // Выход из switch
         case 1 :                         // Ордер Sell
             if (NormalizeDouble(SL,Digits)> // Если выше желаемого..
               NormalizeDouble(Ask+TS,Digits)||
               NormalizeDouble(SL,Digits)== 0 ) //.. или нулевой(!)
              {                           // ..то модифицируем его
               SL=Ask+TS;                 // Новый его StopLoss
               Modify= true ;               // Назначен к модифи.
              }
        }                                 // Конец switch
       if (Modify== false )                   // Если его не надо модифи..
         continue ;                         // ..то идём по циклу дальше
       bool Ans=OrderModify(Ticket,Price,SL,TP, 0 ); //Модифицируем его!
       //--------------------------------------------------------- 5 --
       if (Ans== false )                     // Не получилось :( 
        {                                 // Поинтересуемся ошибками:
         if (Errors(GetLastError())== false ) // Если ошибка непреодолимая
             return ;                       // .. то уходим.
         i--;                             // Понижение счётчика
        }
      
     }
   return ;                                 // Выход из пользов. функции
  }
//--------------------------------------------------------------- 6 --
트롤 코드
 

글쎄, 나는 각 주문에 차례로 새로운 마법을 할당하는 것을 제안할 수 있을 뿐이며, 각 주문에 대해 다음과 같은 별도의 기능을 만드십시오.

 //--------------------------------------------------------------- 1 --
// Функция модификации StopLoss всех ордеров указанного типа
// Глобальные переменные:
// Mas_Ord_New             Массив ордеров последний известный
// int TralingStop_1         Значение TralingStop(количество пунктов)
//--------------------------------------------------------------- 2 --
int Tral_Stop( int Tip)
  {
   int Ticket;                       // Номер ордера
   double
   Price,                           // Цена открытия рыночного ордера
   TS,                               // TralingStop (относит.знач.цены)
   SL,                               // Значение StopLoss ордера
   TP;                               // Значение TakeProfit ордера
   bool Modify;                     // Признак необходимости модифи.
//--------------------------------------------------------------- 3 --
if(OrderMagicNumber() == magic_1){
  for ( int i= 1 ;i<=Mas_Ord_New[ 0 ][ 0 ];i++)   // Цикл по всем ордерам
     {                                     // Ищем ордера задан. типа
       if (Mas_Ord_New[i][ 6 ]!=Tip)         // Если это не наш тип..
         continue ;                         //.. то переступим ордер
      Modify= false ;                       // Пока не назначен к модифи
      Price =Mas_Ord_New[i][ 1 ];           // Цена открытия ордера
      SL    =Mas_Ord_New[i][ 2 ];           // Значение StopLoss ордера
      TP    =Mas_Ord_New[i][ 3 ];           // Значение TakeProft ордера
      Ticket=Mas_Ord_New[i][ 4 ];           // Номер ордера
       if (TralingStop<Level_new)           // Если меньше допустимого..
         TralingStop=Level_new;           // .. то допустимый
      TS=TralingStop*Point;               // То же в относит.знач.цены
       //--------------------------------------------------------- 4 --
       switch (Tip)                         // Переход на тип ордера
        {
         case 0 :                         // Ордер Buy
             if (NormalizeDouble(SL,Digits)< // Если ниже желаемого..
               NormalizeDouble(Bid-TS,Digits))
              {                           // ..то модифицируем его:
               SL=Bid-TS;                 // Новый его StopLoss
               Modify= true ;               // Назначен к модифи.
              }
             break ;                         // Выход из switch
         case 1 :                         // Ордер Sell
             if (NormalizeDouble(SL,Digits)> // Если выше желаемого..
               NormalizeDouble(Ask+TS,Digits)||
               NormalizeDouble(SL,Digits)== 0 ) //.. или нулевой(!)
              {                           // ..то модифицируем его
               SL=Ask+TS;                 // Новый его StopLoss
               Modify= true ;               // Назначен к модифи.
              }
        }                                 // Конец switch
       if (Modify== false )                   // Если его не надо модифи..
         continue ;                         // ..то идём по циклу дальше
       bool Ans=OrderModify(Ticket,Price,SL,TP, 0 ); //Модифицируем его!
       //--------------------------------------------------------- 5 --
       if (Ans== false )                     // Не получилось :( 
        {                                 // Поинтересуемся ошибками:
         if (Errors(GetLastError())== false ) // Если ошибка непреодолимая
             return ;                       // .. то уходим.
         i--;                             // Понижение счётчика
        }
      
     }
   return ;                                 // Выход из пользов. функции
  }
}
  //--------------------------------------------------------------- 6 --
 
charony :

재미 없다

저렴하고 명랑합니다.

각 위치에 자체 트롤이 있는 경우 트롤 변수의 값은 각 위치에 대해 달라야 합니다. 따라서 각 트레일에는 고유한 변수가 있습니다. 최대 위치는 몇 개입니까?

 
sanyooooook :

저렴하고 명랑합니다.

각 위치에 자체 트롤이 있는 경우 트롤 변수의 값은 각 위치에 대해 달라야 합니다. 따라서 각 트레일에는 고유한 변수가 있습니다. 최대 위치는 몇 개입니까?


최대 8자리