bisogno di consigli da un professionista della pesca a strascico che controlla due posizioni indipendentemente l'una dall'altra, come può essere implementato?

 

impostare la rete a strascico, funziona bene per una posizione

ma se c'è più di una posizione, per esempio due posizioni Sell

li chiude entrambi allo stesso tempo

Ho bisogno di un trawl per lavorare per ogni posizione separatamente

quando il trading manuale è possibile, cioè una posizione ha un Sell StopLoss

l'altra posizione Sell ha uno StopLoss diverso

Google non ha aiutato

 

La rete a strascico deve comunque distinguere le posizioni, quindi possiamo assegnare magie diverse agli ordini e impostare due reti a strascico con magie diverse.

O dovremmo incorporare il codice della rete a strascico nell'EA? In questo caso, dovremmo ancora assegnare numeri magici diversi agli ordini e duplicare la funzione trail su due simboli magici. IMHO.

 
provato a dividere per biglietto, senza fortuna
 
Sancho77:
In ogni caso uno strascico ha bisogno di distinguere tra le posizioni, quindi è possibile assegnare magie diverse agli ordini e impostare due strascichi con magie diverse.


Come apparirebbe nel codice?

c'è un trawl separato per ogni posizione?

E se ci sono 6-8 posizioni?

È davvero impossibile semplificare?

la rete a strascico è nell'EA

 
charony:


Come sarebbe nel codice? È possibile scrivere un nuovo magik per ogni posizione?

c'è una pesca a strascico separata per ogni posizione?

E se ci sono 6-8 posizioni?

Non potrebbe essere più semplice?

Se ci sono molte posizioni, è difficile avere un trawl separato per ognuna, sono d'accordo. Se ci sono due posizioni alla volta, secondo me va bene.

Forse può essere più semplice, ma quale dovrebbe essere la differenza nel trawl dei diversi ordini?

 
charony:


Come sarebbe nel codice? verrebbe scritto un nuovo magik per ogni posizione?

C'è un trawl separato per ogni posizione?

E se ci sono 6-8 posizioni?

è davvero impossibile semplificare?

la rete a strascico è nell'EA

Disabilita il trawl in EA e usa il trawl incorporato, c'è un trawl separato per ogni posizione.
 
sanyooooook:
Disabilita il trawl in EA e usa il trawl incorporato, c'è un trawl separato per ogni posizione.

non divertente
 
//--------------------------------------------------------------- 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 --
codice a strascico
 

Posso solo suggerire che ad ogni ordine dovrebbe essere assegnato un nuovo magik a turno, e che una funzione di tipo separato dovrebbe essere fatta per ogni ordine:

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

non divertente

Economico e allegro.

Se ogni posizione ha il suo trawl, il valore della variabile trawl dovrebbe essere diverso per ogni posizione. Quindi, per ogni pesca a strascico c'è una variabile: quante posizioni avrà al massimo?

 
sanyooooook:

Economico ed economico.

Se ogni posizione ha il suo trawl, allora il valore della variabile trawl dovrebbe essere diverso per ogni posizione. Quindi, per ogni pesca a strascico c'è una variabile: quante posizioni al massimo avrete?


massimo 8 posizioni