MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 423

 
novichok2018:

こんにちは!私は状況を解決するために役立ちます:私は Y1の条件の下でポジション 1を開き、Y2の条件の下で閉じてください。しかし、U2の発生前にもう一度U1が発生し、位置2を開いた場合、それはU2が来るに反応せず、新しいU1の後に来た次のU2にハングアップ(!)とこの新しい位置が新しいU2で閉じていない、と次の条件U1-U2を待ちます。それを避けるにはどうしたらいいのか。頭が痛くなりそうだ。ありがとうございます。

条件U2のすべての注文のOrderClose(...)を閉じるためのループが必要です - たとえ100個の注文があったとしても。1)U2条件により、フラグを立てる。2) フラグが立った場合、ONEオーダーを削除する。3) 命令がない場合は、旗を下げる。そうすると、次々と注文が削除されていく...。

 
STARIJ:

条件U2によるすべての注文のOrderClose(...)を閉じるためのループが必要です - 100個必要です。


このままではサイクルに入ってしまう。何か問題があるのでしょうか?

void ClosePoz()
  { int total=OrdersTotal();
  if(total>1)
   {
      for(int i=0;i<OrdersTotal();i++)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 
      { Print("позиция для закрытия не найдена");
         break;
      }
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {double WPR0 = iWPR(NULL,PERIOD_M5,bars,0);
         if(OrderType()==OP_BUY && MathAbs(WPR0)>80)
           OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,clrNONE);                  
         }
      }
    } 
  }   
 
novichok2018:
このままではサイクルに入ってしまう。何か問題があるのでしょうか?
SRCを使ってコードを挿入したのに、表示されないのですが、どうしたらいいのでしょうか?
挿入]、[追加]の順に押す必要があります
 
STARIJ:
貼り付け(Paste)を押して、追加(Add)する必要があります

上記、適切な場所ではないですが、読み取れます。あ!今、正しい場所にありますね。おお、なんということでしょう!

 
novichok2018:

あなたのコードを正しく挿入しました。

まずSRCボタンを押し、コードをウィンドウにコミットし、「挿入」ボタンを押し、メッセージを送信してください。

 
tura210577:

ご返信ありがとうございました

どういたしまして。こんな風に、マルチプラットフォーム機能を使ってみてください。

//+------------------------------------------------------------------+
//| Returns specified Open by shift                                  |
//+------------------------------------------------------------------+
double Open(const string symbol_name,const ENUM_TIMEFRAMES timeframe,const int shift)
  {
   double array[];
   if(CopyOpen(symbol_name,timeframe,shift,1,array)==1) return array[0];
   return 0;
  }
//+------------------------------------------------------------------+
//| Returns specified High by shift                                  |
//+------------------------------------------------------------------+
double High(const string symbol_name,const ENUM_TIMEFRAMES timeframe,const int shift)
  {
   double array[];
   if(CopyHigh(symbol_name,timeframe,shift,1,array)==1) return array[0];
   return 0;
  }
//+------------------------------------------------------------------+
//| Returns specified Low by shift                                   |
//+------------------------------------------------------------------+
double Low(const string symbol_name,const ENUM_TIMEFRAMES timeframe,const int shift)
  {
   double array[];
   if(CopyLow(symbol_name,timeframe,shift,1,array)==1) return array[0];
   return 0;
  }
//+------------------------------------------------------------------+
//| Returns specified Close by shift                                 |
//+------------------------------------------------------------------+
double Close(const string symbol_name,const ENUM_TIMEFRAMES timeframe,const int shift)
  {
   double array[];
   if(CopyClose(symbol_name,timeframe,shift,1,array)==1) return array[0];
   return 0;
  }
//+------------------------------------------------------------------+
//| Returns specified Time by shift                                  |
//+------------------------------------------------------------------+
datetime Time(const string symbol_name,const ENUM_TIMEFRAMES timeframe,const int shift)
  {
   datetime array[];
   if(CopyTime(symbol_name,timeframe,shift,1,array)==1) return array[0];
   return 0;
  }
//+------------------------------------------------------------------+
 
novichok2018: このままではサイクルに入ってしまう。何か問題があるのでしょうか?

コードに2つのエラーがあります。1)ループ内の注文の順番について説明します。2) break - ループを抜けて続行する - これをスキップする

 
Artyom Trishkin:

あなたのコードを正しく挿入しました。

まずSRCボタンを押し、コードをウィンドウにコミットし、「挿入」ボタンを押し、メッセージを送信します。


ありがとうございます(苦笑)。少なくとも、私の文章で笑わせてくれました。質問の意図は何ですか?ループ内はすべて正しいか?

 
novichok2018:

ありがとうございます(苦笑)。少なくとも、私の文章で笑わせてくれました。何が言いたいの?そのサイクルは正しいか?

すでに回答済みです。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MQL4に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。

スタリイ さん 2018.01.18 20:19

コードに2つのエラーがあります。1)ループ内の注文の順番について説明します。2) break - ループから抜け、続行する - これをスキップする


 
Artyom Trishkin:

すでに回答済みです。



はい、ありがとうございます、ページを読みました。MKL4の知識だけでは、私のループではポジションが0から最後にループされるのに対して、例では逆に最後から0にループされることにしか気がつかなかったのです。どこに区切りを入れればいいのか、まだ わからない。また、ループをリバースに変更すると、ポジションが全く閉じなく なりました。