需要一个拖网专业人员的建议,即控制两个位置相互独立,如何实现?

 

设置拖网,在一个位置上运行良好

但如果有一个以上的职位,例如两个Sell职位

它同时关闭了它们两个。

我需要一个拖网来分别对每个位置进行工作

手动交易 时,这是有可能的,即一个头寸有一个卖出止损。

另一个卖出头寸有一个不同的止损。

谷歌并没有提供帮助

 

反正拖网需要区分位置,所以我们可以给订单分配不同的魔法,并设置两个具有不同魔法的拖网。

或者我们应该把拖网代码嵌入到EA中?在这种情况下,我们还是应该给订单分配不同的魔法号码,并在两个魔法符号上重复追踪功能。IMHO。

 
试着按票据拆分,没有成功
 
Sancho77:
在任何情况下,拖网都需要区分位置,所以可以给订单分配不同的魔法,并设置两个具有不同魔法的拖网。


这在代码中会是什么样子?

每个职位都有单独的拖网吗?

如果有6-8个职位怎么办?

真的无法简化吗?

拖网是在EA

 
charony:


它在代码中会是怎样的? 是否可以为每个位置写一个新的魔术?

每个职位都有单独的拖网吗?

如果有6-8个职位怎么办?

难道不能更简单吗?

如果有很多职位,就很难对每个职位进行单独的拖网,我同意。如果一次有两个位置,在我看来是可以的。

也许可以更简单,但不同订单的拖网应该有什么区别?

 
charony:


每个位置都要写一个新的魔法吗?

是否对每个职位都有单独的拖网?

而如果有6-8个职位呢?

是否真的无法简化?

拖网是在EA

在EA中禁用拖网,使用内置的拖网,每个位置都有一个单独的拖网。
 
sanyooooook:
在EA中禁用拖网,使用内置的拖网,每个位置都有一个单独的拖网。

不好笑
 
//--------------------------------------------------------------- 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个位置