2つのポジションを独立して制御するトロールプロからアドバイスが欲しいのですが、どのように実装すればよいでしょうか?

 

トロールを設定する、1つの位置で正常に動作する

が、複数のポジション、例えば2つの売りポジションがある場合

を同時に閉じます。

各ポジションに対して個別にトロールを行う必要があります。

手動で取引 する場合は可能です。つまり、1つのポジションにSell StopLoss

もう一方の売りポジションには別のStopLossが設定されています。

Googleは役に立たなかった

 

トロールはいずれにしても位置を区別する必要があるので、オーダーに異なる魔法を割り当てて、異なる魔法を持つ2つのトロールを設定することができるのです。

それとも、EAにトロールコードを埋め込むべきでしょうか?その場合でも、注文に異なるマジックナンバーを割り当てて、2つのマジックシンボルにトレール機能を重複させる必要があります。IMHO

 
チケットで分割してみましたが、うまくいきません
 
Sancho77:
いずれにせよ、トロールはポジションを区別する必要があるので、オーダーに異なる魔法を割り当てて、異なる魔法を持つ2つのトロールを設定することも可能です。


コード上ではどのように見えるのでしょうか?

は、各ポジションに別々のトロールがあるのでしょうか?

6~8ポジションある場合は?

本当にシンプルにすることは不可能なのでしょうか?

トロールはEAにある

 
charony:


コード上ではどのように見えるのでしょうか? 各ポジションごとに新しいマジックを書くことは可能でしょうか?

は、各ポジションに別々のトロールがあるのでしょうか?

6~8ポジションある場合は?

もっとシンプルにできないものか。

ポジションがたくさんある場合、それぞれのトロールを別々にするのは難しいですね、そうですね。一度に2つのポジションがあれば、私的には問題ないです。

もっとシンプルにできるかもしれませんが、オーダーの違いによるトロールの差はどうすればいいのでしょうか?

 
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ポジション
理由: