[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 530

 

...そして決定する - ここでは、 "村人 "ブランチのILANINSのいずれかのコードセクションもあります - 市場注文の平均価格とPriceTargetの目標価格の計算 - これは、レベル+ TPのB / Wです。 TPはすでにあなたの裁量で、あなたのニーズにも合わせて調整してください。

 total=CountTrades();
      AveragePrice = 0;
      double Count = 0;
      for(cnt=OrdersTotal()-1; cnt>=0; cnt--) 
        {
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) 
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL) 
              {
               AveragePrice+=OrderOpenPrice()*OrderLots();
               Count+=OrderLots();
              }
           }
        }
      if(total>0) AveragePrice=NormalizeDouble(AveragePrice/Count,Digits);
      if(NewOrdersPlaced) 
        {
         for(cnt=OrdersTotal()-1; cnt>=0; cnt--) 
           {
            OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
            if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) 
              {
               if(OrderType()==OP_BUY) 
                 {
                  PriceTarget= AveragePrice + TakeProfit * Point;
                  BuyTarget=PriceTarget;
                  Stopper=AveragePrice-Stoploss*Point;
                  flag=TRUE;
                 }
              }
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) 
              {
               if(OrderType()==OP_SELL) 
                 {
                  PriceTarget= AveragePrice - TakeProfit * Point;
                  SellTarget = PriceTarget;
                  Stopper=AveragePrice+Stoploss*Point;
                  flag=TRUE;
                 }
              }
           }
        }
      if(NewOrdersPlaced) 
        {
         if(flag == TRUE) 
           {
            for(cnt=OrdersTotal()-1; cnt>=0; cnt--) 
              {
               OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
               if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
               if(OrderSymbol()== Symbol() && OrderMagicNumber() == MagicNumber) OrderModify(OrderTicket(),AveragePrice,OrderStopLoss(),PriceTarget,0,Yellow);
               NewOrdersPlaced = FALSE;
              }
           }
        }
     }
   return(0);
  }
//???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

int CountTrades() 
  {
   int count=0;
   for(int trade=OrdersTotal()-1; trade>=0; trade--) 
     {
      OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
         if(OrderType()==OP_SELL || OrderType()==OP_BUY) count++;
     }
   return(count);
  }

このNewOrdersPlaced()とOrderModify()のかわりに

B/Uラインを描く(設定する)レベル、つまりモザイク全体があなたの手の中にあるのです。

 
Roman.:

以下は私のコードセクションです。この特定のEAの連続した負けトレードの総損失を計算する役割を担っています(マジシャンによれば)。私のバージョンのネットのアバランチ用に作りました - あなたのニーズに合わせて調整してください - コードはコメントアウトされています...

グローバル変数

このコードに続いて、このEAの未決済注文をループして、その合計利益を計算します。その後、この値と変数

と判断してください。

Iteration' - 変数が定義されていません D:Programs/MetaTrader 4 - RoboForex/experts/NewCobWebPivot.mq4 (204, 3)
Iteration' - variable not defined D:\ProgramsMetaTrader 4 - RoboForex﹑NewCobWebPivot.mq4 (234, 17)
 
belck:
Iteration' - 変数が定義されていません D:Programs/MetaTrader 4 - RoboForex/experts/NewCobWebPivot.mq4 (204, 3)
Iteration' - variable not defined D:\ProgramsMetaTrader 4 - RoboForex﹑NewCobWebPivot.mq4 (234, 17)

double  Level_new,  PointValue,
        lots;                       // вспомогательная переменная для расчета нового размера лота при очередной итерации
int Iteration, Counter_Loss, Ticket_at_history; // счетчик для подсчета последовательного убытка позиций колен лавины
//bool Flag_Counter_Loss = false;
double Current_Loss, Sum_Loss;     // текущий и суммарный убыток
 

前ページでユーリ・レシェトフが提案した簡単な方法をご覧ください。

もし、それが自分に合わないのであれば、自分の提案するコード部分をモザイク状に組み立ててください。

また、owlのコードを完全に分解することも有効かもしれません。前回の投稿によると、白黒レベルはCELAN Double_Minus_1ブランチのILANINです。骨ごとに分解してみると、より問題の解決方法が明確になると思います、IMHO。線を引くのであれば、オブジェクトを扱う 方法を知っておく必要があります。これらのことは、IMHOでは、「中堅プログラマー」が一目見て、押しも押されぬように解決することはできない...と考えています。:-)

平均化でコードフクロウ、トレーラーで白黒+TP。

ファイル:
 
Roman.:

Skypeで連絡できます:avto-personal-plus
 
Reshetov:
これはエラーではありません。ログブック内のエラーは、黄色のアイコンではなく、赤色のアイコンが表示されます。

では、なぜうまくいかないのでしょうか?
 

こちらにはSkypeがないんです。


簡易版では、Yuri Reshetovがフロントページでどのようにあなたを推薦しているかを見ることができます - 私のコードの直後に彼のコードを入力してください。

コメント付きの受信コード全文をご覧ください。


double  Level_new,  PointValue,
        lots;                       // вспомогательная переменная для расчета нового размера лота при очередной итерации
int Iteration, Counter_Loss, Ticket_at_history; // счетчик для подсчета последовательного убытка позиций колен лавины
//bool Flag_Counter_Loss = false;
double Current_Loss, Sum_Loss;     // текущий и суммарный убыток


int start()    // -----------------------СТАРТ ЭКСПЕРТА--------------- 
{
//---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
  Sum_Loss = 0;  // суммарный убыток по этим итерациям

datetime 
Time_at_History_Current = 0,
Time_at_History_Previos = 0;     
 
 if(OrdersHistoryTotal() != 0)
   {
    for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
      {
       OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
             if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера
                                   // для последующего его анализа при подсчете количества итераций
                {
                 double lastLoss = OrderProfit();
                 Sum_Loss=Sum_Loss+lastLoss;  // считаем общий убыток по закрытым подряд убыточным ордерам
                 Time_at_History_Current = OrderCloseTime();
                } 
             
             //Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             //Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             
             if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;
                //Print("Iteration at History в условии сравнения  = ",  Iteration);
               }   
             else // они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
               {
                if(OrderProfit() >= 0)
                  break;
               }
            }
         }
      }
   }

if (Sum_Loss < 0.0) { // Имеем убыток по закрытым позам
  if ((AccountEquity + Sum_Loss) >= AccountBalance) { // Достигли безубытка
    // Здесь какой-то код, который необходимо выполнить при достижении безубытка
  }
}


}// Конец старт
 
Roman.:

Skypeは持っていない。


前のページでYuri Reshetovが推奨していたように、簡略化したバージョンを試してみてください - 私のコードの直後に彼のコードを入力してください。

コメント付きの受信コード全文をご覧ください。



'TotalCloseProfit' - variable not defined D:\ProgrammingMetaTrader 4 - RoboForex NeitherexpertsNewCobWebPivot.mq4 (251, 24)
 
belck:
'TotalCloseProfit' - variable not defined D:\ProgrammingMetaTrader 4 - RoboForex NeitherexpertsNewCobWebPivot.mq4 (251, 24)

すでに修正済みです。もう一度試してみてください。
 

一番重要なのは、ここで白黒レベルを超えたら、あなたのアクションコードを入力するのを忘れないでください。

if (Sum_Loss < 0.0) { // Имеем убыток по закрытым позам
  if ((AccountEquity + Sum_Loss) >= AccountBalance) 
  { 

    // Достигли безубытка
    // Здесь какой-то код, который необходимо выполнить при достижении безубытка


  }
}