besoin de conseils d'un pro du chalut qui contrôle deux positions indépendamment l'une de l'autre, comment le mettre en œuvre ?

 

mettre le chalut, fonctionne bien pour une position

mais s'il y a plus d'une position, par exemple deux positions de Sell.

il ferme les deux en même temps.

j'ai besoin d'un chalut pour travailler pour chaque position séparément

lorsque l'on négocie manuellement, cela est possible, c'est-à-dire qu'une position a un StopLoss de vente.

l'autre position de vente a un StopLoss différent

Google n'a pas aidé

 

Le chalut doit de toute façon distinguer les positions, nous pouvons donc attribuer des magies différentes aux ordres et mettre en place deux chaluts avec des magies différentes.

Ou devrions-nous intégrer le code du chalut dans l'EE ? Dans ce cas, nous devons toujours attribuer des numéros magiques différents aux ordres et dupliquer la fonction de suivi sur deux symboles magiques. IMHO.

 
J'ai essayé de diviser par ticket, sans succès
 
Sancho77:
Dans tous les cas, un chalut doit faire la distinction entre les positions, il est donc possible d'attribuer des magies différentes aux ordres et de définir deux chaluts avec des magies différentes.


Comment cela se présenterait-il dans le code ?

Y a-t-il un chalut distinct pour chaque poste ?

Et s'il y a 6 à 8 postes ?

Est-il vraiment impossible de simplifier ?

le chalut est dans l'EA

 
charony:


Comment cela se présenterait-il dans le code ? Est-il possible d'écrire un nouveau magik pour chaque position ?

Y a-t-il un chalut distinct pour chaque poste ?

Et s'il y a 6 à 8 postes ?

Cela ne pourrait-il pas être plus simple ?

S'il y a beaucoup de postes, il est difficile d'avoir un chalutage séparé pour chacun d'entre eux, je suis d'accord. S'il y a deux postes à la fois, c'est parfait à mon avis.

Peut-être que cela peut être plus simple, mais quelle devrait être la différence de chalutage entre les différents ordres ?

 
charony:


comment cela se présenterait-il dans le code ? un nouveau magik serait-il écrit pour chaque position ?

Y a-t-il un chalut distinct pour chaque poste ?

Et s'il y a 6 à 8 postes ?

est-il vraiment impossible de simplifier ?

le chalut est dans l'EA

Désactiver le chalut dans EA et utiliser le chalut intégré, il y a un chalut séparé pour chaque position.
 
sanyooooook:
Désactiver le chalut dans EA et utiliser le chalut intégré, il y a un chalut séparé pour chaque position.

pas drôle
 
//--------------------------------------------------------------- 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 --
code de chalutage
 

Eh bien, je ne peux que suggérer que chaque ordre devrait se voir attribuer un nouveau magik à son tour, et qu'une fonction de type distincte devrait être créée pour chaque ordre :

//--------------------------------------------------------------- 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:

pas drôle

Bon marché et joyeux.

Si chaque position a son propre chalut, la valeur de la variable du chalut doit être différente pour chaque position. Par conséquent, pour chaque chalut, il y a une variable, combien de postes aurez-vous au maximum ?

 
sanyooooook:

Bon marché et bon marché.

Si chaque position a son propre chalut, alors la valeur de la variable chalut doit être différente pour chaque position. Par conséquent, pour chaque chalut il y a une variable, combien de positions au maximum aurez-vous ?


8 positions maximum