MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 850

 
Artyom Trishkin :

Döngüde, n==0 olduğunda, çubuk zamanı n'yi yazdırın - döngünün nereden başladığını hemen anlayacaksınız.

Evet, her şey doğru görünüyor


 
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
         ); 
  }
 

İncelemeyi mevcut mumdan başlatır ve boş olmayan bir değer bulduğu anda sona erer.

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

İncelemeyi mevcut mumdan başlatır ve boş olmayan bir değer bulduğu anda sona erer.

O zaman yanlış olan ne?

 
Artyom Trishkin :

O zaman yanlış olan ne?

 
Sergey Voytsekhovsky :
Orada ne var?
 

İyi görünüyor, gerekli olduğu yerde ve gerektiğinde görünüyor.

Ancak grafikte zaten yeni bir ok var, ancak yorumlarda, baskılarda henüz görünmüyor.


 
Artyom Trishkin :
Orada ne var?

Mavi ile vurgulanan, hem sizin seçeneğiniz (n==0) hem de benimkine göre (sizinkinin hemen ardından) anketlerin - yeni bir mumun başlangıcından itibaren - olanıdır. Bu doğru, bence.

Ancak arkada üç mum zaten aşağı ok var ve baskılarda ve yorumlarda 12 ve 57 aşırı okları olan mum endeksleri var.

 
Sergey Voytsekhovsky :

İyi görünüyor, gerekli olduğu yerde ve gerektiğinde görünüyor.

Ancak grafikte zaten yeni bir ok var, ancak yorumlarda, baskılarda henüz görünmüyor.


Bu yeni el saat kaçta ve döngü ne zaman başlıyor?

Kendi kodunuzla kendiniz uğraşmak zorundasınız. Çok basit - ya tüm değerleri yazdırın ve bacakların nereden büyüdüğünü anlayın ya da bir kesme noktası ayarlayın ve hata ayıklayıcıya gidin ve her adımda tüm değerleri izleyin. Ama bence henüz bir hata ayıklayıcıya ihtiyacınız yok ...