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

 

MT5 tablosunda çizim yaparken garip bir hata bulundu: düşük mumlar yerine oklar, sanki tabloya göre dengelenmiş gibi rastgele yerlere yerleştirildi




 #property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property indicator_chart_window

#property strict

#property indicator_buffers 1 
#property indicator_plots    1
 
#property indicator_label1    "Arrows" 
#property indicator_type1    DRAW_ARROW 
#property indicator_color1    clrGreen 
#property indicator_width1    1

double Buf_0[];

int OnInit ()
  {

   SetIndexBuffer ( 0 ,Buf_0, INDICATOR_DATA );
   PlotIndexSetInteger ( 0 , PLOT_ARROW , 233 );
   
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
   
   for ( int i= 0 ; i<rates_total; i++)
      {
   
      Buf_0[i]= iLow ( _Symbol , _Period ,i);
      }
   return (rates_total);
  }

 
psyman :

MT5 tablosunda çizim yaparken garip bir hata bulundu: düşük mumlar yerine oklar, sanki tabloya göre dengelenmiş gibi rastgele yerlere yerleştirildi




1. Gösterge ZATEN düşük diziye sahip. Ve uygulayın.

2. Görselleştirmeyi maksimum hızda çalıştırmaya gerek yok.

3. Kod KORKUNÇ HATALI - çünkü her tikte TÜM BARLARDA bir geçiş yapılır.

 
Vladimir Karputov :

1. Gösterge ZATEN düşük diziye sahip. Ve uygulayın.

2. Görselleştirmeyi maksimum hızda çalıştırmaya gerek yok.

3. Kod KORKUNÇ HATALI - çünkü her tikte TÜM BARLARDA bir geçiş yapılır.

 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[])
  {
   ArrayInitialize (Buf_0, EMPTY_VALUE );

   for ( int i= 0 ; i<rates_total; i++)
      {
   
      Buf_0[i]= iLow ( _Symbol , _Period ,i);
      }
   return (rates_total);
  }
 
Vladimir Karputov :

1. Gösterge ZATEN düşük diziye sahip. Ve uygulayın.

2. Görselleştirmeyi maksimum hızda çalıştırmaya gerek yok.

3. Kod KORKUNÇ HATALI - çünkü her tikte TÜM BARLARDA bir geçiş yapılır.

Kodu buraya göndermedim, ancak ayrıştırmayı basitleştirmek için en basitini yazdım.

Bana neyin yanlış olduğu hakkında daha fazla bilgi ver, maksimum hız hakkında belirsiz.

 
Vitaly Muzichenko :

Vitaliy, nedense başlatma yardımcı olmuyor. Onit PlotIndexSetDouble (0,PLOT_EMPTY_VALUE,0); aynısı olmuyor :(

 
psyman :

Kodu buraya göndermedim, ancak ayrıştırmayı basitleştirmek için en basitini yazdım.

Bana neyin yanlış olduğu hakkında daha fazla bilgi ver, maksimum hız hakkında belirsiz.

Adım adım düzeltmeye başlayın. Örneğin, ilk düzeltme:

Gösterge ZATEN düşük diziye sahip. Ve uygulayın.

 
Buf_0[i]= iLow ( _Symbol , _Period ,i);

iLow bir dizi true gibi çalışır, Buf_0 false, low[] da false. Onlar. Sizin durumunuzdaki 0. eleman, Rates_total-1 (ayna) değerini alır.

Bunlardan birini çevirmeniz gerekiyor, örneğin:

Buf_0[i]= iLow ( _Symbol , _Period ,rates_total-1-i);
 
psyman :

MT5 tablosunda çizim yaparken garip bir hata bulundu: düşük mumlar yerine oklar, sanki tabloya göre dengelenmiş gibi rastgele yerlere yerleştirildi



Pinokyo'dan elmalarla ilgili bilmeceyi bilmek kesinlikle bu soruna yardımcı olacaktır. Detayları hatırlamıyorum, birinin hatasız tekrar anlatmasını bekleyelim.

 
Igor Zakharov :

iLow bir dizi true gibi çalışır, Buf_0 false, low[] da false. Onlar. Sizin durumunuzdaki 0. eleman, Rates_total-1 (ayna) değerini alır.

Bunlardan birini çevirmeniz gerekiyor, örneğin:

Bu bir gösterge! OnCalculate ZATEN HAS dizileri

                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[]

Neden iXXXX işlevlerini göstergeye sokmalısınız?

 
Vladimir Karputov :

Bu bir gösterge! OnCalculate ZATEN HAS dizileri

Neden iXXXX işlevlerini göstergeye sokmalısınız?

Evet, nereden bileyim? Soruyu soran kişi tam olarak iLow() kullanmış, bu yüzden ona ihtiyacı var. Belki daha kolay algılar, belki girdi değişkeni aracılığıyla başka bir sembole veya zaman dilimine erişmeyi planlıyor ( dördünde kopyalar olup olmadığını hatırlamıyorum?)

Eklendi: Beşteki soru dörtlü başlıkta soruldu. Gözümden kaçmış, itiraf ediyorum. Ancak cevap yine aynı.