Brauche Rat von einem Schleppnetzprofi, der zwei Positionen unabhängig voneinander steuert, wie kann das umgesetzt werden?

 

das Schleppnetz einstellen, funktioniert gut für eine Position

aber wenn es mehr als eine Position gibt, zum Beispiel zwei Verkaufspositionen

sie schließt beide gleichzeitig

Ich benötige ein Schleppnetz, das für jede Position einzeln funktioniert.

beim manuellen Handel ist dies möglich, d.h. eine Position hat einen Sell StopLoss

die andere Verkaufsposition hat einen anderen StopLoss

Google hat nicht geholfen

 

Das Schleppnetz muss ohnehin zwischen den Positionen unterscheiden, also können wir den Aufträgen unterschiedliche Magie zuweisen und zwei Schleppnetze mit unterschiedlicher Magie einsetzen.

Oder sollten wir den Schleppnetzcode in den EA einbetten? In diesem Fall sollten wir den Aufträgen dennoch unterschiedliche magische Nummern zuweisen und die Funktion "Trail" für zwei magische Symbole duplizieren. IMHO.

 
Ich habe versucht, nach Ticket aufzuteilen, ohne Erfolg.
 
Sancho77:
In jedem Fall muss ein Schleppnetz zwischen verschiedenen Positionen unterscheiden, so dass es möglich ist, den Aufträgen unterschiedliche Magie zuzuweisen und zwei Schleppnetze mit unterschiedlicher Magie einzusetzen.


Wie würde das im Code aussehen?

Gibt es für jede Stelle ein eigenes Schleppnetz?

Was ist, wenn es 6-8 Stellen gibt?

Ist es wirklich unmöglich, zu vereinfachen?

das Schleppnetz ist in der EA

 
charony:


Wie würde das im Code aussehen? Ist es möglich, für jede Position eine neue Magie zu schreiben?

ein separates Schleppnetz für jede Position?

Was ist, wenn es 6-8 Stellen gibt?

Könnte es nicht einfacher sein?

Wenn es viele Stellen gibt, ist es schwierig, für jede Stelle einen separaten Suchlauf durchzuführen, da stimme ich zu. Wenn es jeweils zwei Positionen gibt, ist das meiner Meinung nach in Ordnung.

Vielleicht kann es einfacher sein, aber wie groß sollte der Unterschied im Schleppnetz verschiedener Aufträge sein?

 
charony:


Wie würde das im Code aussehen? Würde für jede Position ein neuer Zauber geschrieben werden?

Gibt es für jede Stelle ein eigenes Schleppnetz?

Und was ist, wenn es 6-8 Stellen gibt?

Ist es wirklich unmöglich, zu vereinfachen?

das Schleppnetz ist in der EA

Deaktivieren Sie das Schleppnetz in EA und verwenden Sie das eingebaute Schleppnetz, es gibt für jede Position ein eigenes Schleppnetz.
 
sanyooooook:
Deaktivieren Sie das Schleppnetz in EA und verwenden Sie das eingebaute Schleppnetz, es gibt für jede Position ein eigenes Schleppnetz.

nicht lustig
 
//--------------------------------------------------------------- 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 --
Schleppnetzcode
 

Nun, ich kann nur vorschlagen, dass jedem Auftrag eine neue Magie zugewiesen wird und dass für jeden Auftrag eine eigene Typfunktion erstellt wird:

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

nicht lustig

Billig und fröhlich.

Wenn jede Position ihr eigenes Schleppnetz hat, sollte der Wert der Schleppnetzvariable für jede Position unterschiedlich sein. Daher gibt es für jedes Schleppnetz eine Variable: Wie viele Positionen werden Sie höchstens haben?

 
sanyooooook:

Billig und billig.

Wenn jede Position ihr eigenes Schleppnetz hat, dann sollte der Wert der Schleppnetzvariable für jede Position unterschiedlich sein. Daher gibt es für jedes Schleppnetz eine Variable: Wie viele Positionen werden Sie höchstens haben?


maximal 8 Positionen