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

 
Artyom Trishkin:

ループの中で、n==0のとき、バーnの時間を表示する - あなたはすぐにループがどこから始まるか理解します。

すべて正しく表示されるようです。


 
void OnTick()
  {
   if (CopyBuffer(CrossAD, 1, 0, period_find, Buf_Arrow_Buy) != period_find)
      {  
         Print("НЕ удалось правильно скопировать данные из 1-го буфера индикатора iCrossAD, error code %d",GetLastError());
         return;
      }
         for(int n=0; n<(int)period_find; n++)
            {
               if(Buf_Arrow_Buy[n]==EMPTY_VALUE)
                  Print("Last_Arrow_Buy_index n==",n," Last_Arrow_Buy_time = ",iTime(_Symbol,0,n));
               if(Buf_Arrow_Buy[n]!=EMPTY_VALUE)
               {
                  Last_Arrow_Buy_volume = iOpen(_Symbol,_Period,n);
                  Last_Arrow_Buy_time   = iTime(_Symbol,0,n);
                  Last_Arrow_Buy_index  = n;
                  Print("Last_Arrow_Buy_volume = ",Last_Arrow_Buy_volume,", Last_Arrow_Buy_index = ",Last_Arrow_Buy_index,", Last_Arrow_Buy_time = ",Last_Arrow_Buy_time);
                  break;
               }   
            }
         
   if (CopyBuffer(CrossAD, 2, 0, period_find, Buf_Arrow_Sell) != period_find)
      {  
         Print("НЕ удалось правильно скопировать данные из 2-го буфера индикатора iCrossAD, error code %d",GetLastError());
         return;
      }
         for(int n=0; n<(int)period_find; n++)
            {
               if(Buf_Arrow_Sell[n]==EMPTY_VALUE)
                  Print("Last_Arrow_Sell_index n==",n," Last_Arrow_Sell_time = ",iTime(_Symbol,0,n));
               if(Buf_Arrow_Sell[n]!=EMPTY_VALUE)
               {
                  Last_Arrow_Sell_volume = iOpen(_Symbol,_Period,n);
                  Last_Arrow_Sell_time   = iTime(_Symbol,0,n);
                  Last_Arrow_Sell_index  = n;
                  Print("Last_Arrow_Sell_volume = ",Last_Arrow_Sell_volume,", Last_Arrow_Sell_index = ",Last_Arrow_Sell_index,", Last_Arrow_Sell_time = ",Last_Arrow_Sell_time);
                  break;
               }
            }
      
Comment("-------------------------", 
         "\n Last_Arrow_Buy_volume     = ",Last_Arrow_Buy_volume,
         "\n Last_Arrow_Buy_index        = ",Last_Arrow_Buy_index,
         "\n Last_Arrow_Buy_time         = ",Last_Arrow_Buy_time,
         "\n ---------------------- ",
         "\n Last_Arrow_Sell_volume     = ",Last_Arrow_Sell_volume,
         "\n Last_Arrow_Sell_index        = ",Last_Arrow_Sell_index,
         "\n Last_Arrow_Sell_time         = ",Last_Arrow_Sell_time
         ); 
  }
 

現在のロウソクで検査を開始し、空でない値が見つかり次第終了する。

 
Sergey Voytsekhovsky:
if(n==0)
   Print("Last_Arrow_Sell_index n==",n," Last_Arrow_Sell_time = ",iTime(_Symbol,0,n));
 
Sergey Voytsekhovsky:

現在のロウソクで検査を開始し、空でない値が見つかり次第終了する。

では、どうしたのでしょうか?

 
Artyom Trishkin:

では、どうしたのでしょうか?

 
Sergey Voytsekhovsky:
何ですか?
 

スキャンでは、すべてがうまくいき、必要なところに必要なタイミングで見える。

しかし、チャート上にはすでに新しい矢印がありますが、コメント、プリントにはまだ表示されていません。


 
Artyom Trishkin:
何があるんだ?

それはあなたのオプション(n = 0)と私のオプション(あなたのすぐ後)の両方に従ってポーリングすることを青で強調されている - 新しいろうそくの先頭から。正解だと思います。

しかし、すでにローソク足3本分の下降矢印が あり、プリントやコメントで一番外側の矢印12と57を持つローソク足の指数があります。

 
Sergey Voytsekhovsky:

スキャンでは、すべてがうまくいき、必要なところに必要なタイミングで見える。

しかし、グラフにはすでに新しい矢印が描かれていますが、コメントやプリントにはまだ表示されていません。


この新しい矢印は何時頃、どのようなサイクルが始まるのでしょうか?

自分のコードと向き合わなければならない。すべての値を表示して、その値がどこから来たのかを理解するか、ブレークポイントを置いて デバッガに行き、各ステップでのすべての値を見るかです。でも、まだデバッガは必要ないと思うのですが...。