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

 
Artyom Trishkin :

Pekala, iCustom()'u ilk döngünün dizinine göre hemen okuyun.

Başka bir soru, soldaki mevcut çubuktan veriye ihtiyacınız olmasıdır. Bu yüzden diyorum ki - sıfırdan gerekli olana kadar okuyun, ancak oranları_toplam-1'den fazla değil.

Aynı zamanda, sadece limit>1 ise okuyun

Zamanın geri kalanında yeni veri yok ve ihtiyacınız olan çubuğun dizini değişmeyecek.

Yorumlarda yakın okların çubuklarının sayıları doğru yazarken istemiyor.

 //+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   if (rates_total< 1 ) return ( 0 );
   int limit=rates_total-prev_calculated;
   if (limit> 1 ) 
     {
      limit=rates_total- 1 ;
       ArrayInitialize (BufferUP, EMPTY_VALUE );
       ArrayInitialize (BufferDN, EMPTY_VALUE );
     }
   for ( int i=limit; i>= 0 ; i--) 
     {
         if ( NormalizeDouble ( iCustom ( NULL , 0 , "Arrow v.3" , 0 ,i), Digits )!= EMPTY_VALUE )
           {
            num_buy=i;

           }
//
       if (num_buy== 10 )
        {
         BufferUP[i+ 1 ]=low[i+ 1 ]-distance*MyPoint;
         
        }
         if ( NormalizeDouble ( iCustom ( NULL , 0 , "Arrow v.3" , 1 ,i), Digits )!= EMPTY_VALUE
            )
           {
            num_sell=i;

           }
       if (num_sell== 10 )
        {
         BufferDN[i+ 1 ]=high[i+ 1 ]+distance*MyPoint;

        }
     
       Comment (num_buy, "num_sell" ,num_sell);
     }
//--- return value of prev_calculated for next call

   return (rates_total);
  }
 
mila.com :

istemiyor

Yazdıklarımı okuyor musun?

Başka bir soru, soldaki mevcut çubuktan veriye ihtiyacınız olmasıdır. Bu yüzden diyorum ki - sıfırdan gerekli olana kadar okuyun, ancak oranları_toplam-1'den fazla değil.

Aynı zamanda, sadece limit>1 ise okuyun

 
Artyom Trishkin :

Yazdıklarımı okuyor musun?

Başka bir soru, soldaki mevcut çubuktan veriye ihtiyacınız olmasıdır. Bu yüzden diyorum ki - sıfırdan gerekli olana kadar okuyun, ancak oranları_toplam-1'den fazla değil.

Aynı zamanda, sadece limit>1 ise okuyun

Ben yapmadım mı?
if(limit>1)
{
limit=oranlar_toplam-1;

 
mila.com :

Ben yapmadım mı?
if(limit>1)
{
limit=oranlar_toplam-1;

Daha sonra şunları yaptınız:

 for ( int i=limit; i>= 0 ; i--) 

Ne hakkında konuşuyordum?

 
Artyom Trishkin :

Daha sonra şunları yaptınız:

Ne hakkında konuşuyordum?

Limitte oku> 1

 for ( int i=limit; i> 1 ; i--) 

doğru anlamadım?

 
mila.com :

Limitte oku> 1

doğru anlamadım?

Bu yüzden diyorum ki - sıfırdan gerekli olana kadar okuyun, ancak oranları_toplam-1'den fazla değil.
 
Artyom Trishkin :
Bu yüzden diyorum ki - sıfırdan gerekli olana kadar okuyun, ancak oranları_toplam-1'den fazla değil.

Diyorum ki, nasıl olduğunu anlamıyorum. Lütfen bana göster)

 
mila.com :

Diyorum ki, nasıl olduğunu anlamıyorum. Lütfen bana göster)

 if (limit> 1 )
  {
   for ( int i= 0 ; i<limit; i++) 
     { 
       // тут поиск до нужного вам бара. Нашли - запомнили бар или поставили точку куда нужно и break;
     }
  }

Bu döngü, yalnızca ihtiyacınız olan bara (eğer varsa) veya tüm tarih boyunca - sınıra kadar gidecektir.

 
Artyom Trishkin :

Bu döngü, yalnızca ihtiyacınız olan bara (eğer varsa) veya tüm tarih boyunca - sınıra kadar gidecektir.

Gerçekten kötüyüm, hiçbir şey göstermiyorum.

 //+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   if (rates_total< 1 ) return ( 0 );
   int limit=rates_total-prev_calculated;
   if (limit> 1 ) 
     {
      limit=rates_total- 1 ;
       ArrayInitialize (BufferUP, EMPTY_VALUE );
       ArrayInitialize (BufferDN, EMPTY_VALUE );
     }
   if (limit> 1 )
  {
   for ( int i= 0 ; i<limit; i++) 
     { 
         if ( NormalizeDouble ( iCustom ( NULL , 0 , "Arrow v.3" , 0 ,i), Digits )!= EMPTY_VALUE )
           {
            num_buy=i;

           }
//
       if (num_buy== 10 )
        {
         BufferUP[i+ 1 ]=low[i+ 1 ]-distance*MyPoint;
         
        }
         if ( NormalizeDouble ( iCustom ( NULL , 0 , "Arrow v.3" , 1 ,i), Digits )!= EMPTY_VALUE
            )
           {
            num_sell=i;

           }
       if (num_sell== 10 )
        {
         BufferDN[i+ 1 ]=high[i+ 1 ]+distance*MyPoint;

        }
     
       Comment (num_buy, "num_sell" ,num_sell);
     }
     }
//--- return value of prev_calculated for next call

   return (rates_total);
  }
 
mila.com :

Gerçekten çok kötüyüm, hiçbir şey göstermiyorum.

Sadece anlamıyorum: neyi bulmak ve görüntülemek istiyorsunuz? Sadece kelimeler - kod yok.

Buraya yazıyorsun:

Merhaba, lütfen yardım edin.

Herhangi bir zamanda, üzerinde bir gösterge okunun bulunduğu çubuğun numarasını bilmek istiyorum.

Örnekte ok onuncu çubukta ise tamponu doldurmaya çalıştım.

Hemen sorulan soru bu: neden tam olarak onuncu çubuğa bakıyorsunuz? Genel olarak, hangi bara ihtiyacınız var? Ve hangi ok? En son? Veya son ikisi - üst ve alt? Veya istediğiniz okun çubuğunu sağdan sola numarasına göre bulmak mı?

Bu net değil.

Ve OnCalculate() yerine tüm göstergeyi ekleyin