Любые вопросы новичков по 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) и по моему (следом сразу за Вашим) - с начала новой свечи. Это правильно, я думаю.

Но три свечи назад уже есть стрелка вниз, а на принтах и коментах индексы свечек с крайними стрелками 12 и 57.

 
Sergey Voytsekhovsky:

Сосмотрами все хорошо, смотрит куда надо и когда надо.

Но на графике уже есть новая стрелка, а в коментах, в принтах ее ещё не видно.


На каком времени эта новая стрелка и с какого времени начинается цикл?

Вы сами должны разбираться же со своим кодом. Просто - либо принтуете все значения и понимаете откуда ноги растут, либо ставите точку останова и идёте в отладчик и смотрите все значения на каждом шаге. Но, думаю, что отладчик вам пока не нужен...

Причина обращения: