MT5 değişim terminalinde göstergeler (çizgiler, oklar, histogramlar) neden titriyor? - sayfa 2

 

OnCalculate'in en başında prev_calculated yazdırmayı deneyin.

Ve bazı standart göstergelerle karşılaştırın - yanıp sönüyor mu?

 
Andrey Khatimlianskii : OnCalculate'in en başında prev_calculated yazdırmayı deneyin. Ve bazı standart göstergelerle karşılaştırın - yanıp sönüyor mu?
Geçerli değerleri önceki değerlerle karşılaştırmak için OnCalculate() işlevine iki statik değişken eklendi:

statik int last_rates_total=0; // önceki değer "önceki giriş zaman serisinin boyutu"
statik int last_prev_calculated=0; // önceki değer "önceki çağrıda işlenen çubuklar"

ve log çıktılı doğrulama kodu

 //+------------------------------------------------------------------+
//| Custom indicator iteration function
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,       // размер входных таймсерий 
                 const int prev_calculated,   // обработано баров на предыдущем вызове 
...

{
   int N=rates_total-prev_calculated; if (N>MAX_PERIOD) N-=MAX_PERIOD;

   static int last_rates_total= 0 ;     // размер входных таймсерий 
   static int last_prev_calculated= 0 ; // обработано баров на предыдущем вызове 
   if (rates_total!=last_rates_total || prev_calculated!=last_prev_calculated) {
       Print ( "N=" , N,   ", rates_total=" , rates_total, ", prev_calculated=" , prev_calculated);
      last_rates_total=rates_total; last_prev_calculated=prev_calculated;
   }

   for ( int i=N; i> 0 && ! IsStopped (); i--) {
...
   }
   aUP[ 0 ]= EMPTY_VALUE ; aDN[ 0 ]= EMPTY_VALUE ;
   return (rates_total);
}

AOM göstergesini bir dakikalığına başlattım ve bu raporu aldım

FH       0        12 : 38 : 02.271     AOM (Si- 6.17 ,M1)        N= 41934 , rates_total= 41969 , prev_calculated= 0
FN       0        12 : 38 : 02.275     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41969 , prev_calculated= 41969
DE       0        12 : 38 : 51.845     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41970 , prev_calculated= 41969
GH       0        12 : 38 : 51.845     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41970 , prev_calculated= 41970
PO       0        12 : 39 : 51.207     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41971 , prev_calculated= 41970
EE       0        12 : 39 : 51.215     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41971 , prev_calculated= 41971
MH       0        12 : 40 : 52.423     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41972 , prev_calculated= 41971
IO       0        12 : 40 : 52.700     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41972 , prev_calculated= 41972
CR       0        12 : 41 : 51.214     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41973 , prev_calculated= 41972
OH       0        12 : 41 : 51.214     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41973 , prev_calculated= 41973
RO       0        12 : 42 : 51.207     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41974 , prev_calculated= 41973
HR       0        12 : 42 : 51.207     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41974 , prev_calculated= 41974
NI       0        12 : 43 : 51.439     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41975 , prev_calculated= 41974
RO       0        12 : 43 : 51.446     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41975 , prev_calculated= 41975
RR       0        12 : 44 : 51.373     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41976 , prev_calculated= 41975
DI       0        12 : 44 : 51.373     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41976 , prev_calculated= 41976
ML       0        12 : 45 : 51.449     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41977 , prev_calculated= 41976
GR       0        12 : 45 : 51.902     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41977 , prev_calculated= 41977
II       0        12 : 46 : 51.541     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41978 , prev_calculated= 41977
GL       0        12 : 46 : 51.541     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41978 , prev_calculated= 41978
PS       0        12 : 47 : 51.286     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41979 , prev_calculated= 41978
PI       0        12 : 47 : 51.303     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41979 , prev_calculated= 41979
QL       0        12 : 48 : 51.395     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41980 , prev_calculated= 41979
IS       0        12 : 48 : 51.408     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41980 , prev_calculated= 41980
DF       0        12 : 49 : 51.790     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41981 , prev_calculated= 41980
PL       0        12 : 49 : 51.790     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41981 , prev_calculated= 41981

Beklenmedik bir şey yok, sadece yeni çubukların gelişini işlemenin normal bir süreci var.

 
Eugene Myzrov :
Geçerli değerleri önceki değerlerle karşılaştırmak için OnCalculate() işlevine iki statik değişken eklendi:

Beklenmedik bir şey yok, sadece yeni çubukların gelişini işlemenin normal bir süreci var.

Standart ışıklar yanıp sönüyor mu?
 
Andrey Khatimlianskii : Standart paketteki göstergeler yanıp sönüyor mu?

Hayır, çizelgeye bir çift düzenli gösterge "Hareketli Ortalama", "Harika Osilatör" koydum. İzledim. Hayır, " Veri Penceresi " de herhangi bir titreme veya eksik değer gözlemlenmedi.

 
Eugene Myzrov :

Hayır, çizelgeye bir çift düzenli gösterge "Hareketli Ortalama", "Harika Osilatör" koydum. İzledim. Hayır, " Veri Penceresi " de herhangi bir titreme veya eksik değer gözlemlenmedi.

Kaynaklarda bulunan göstergelerden bahsediyorum (mq5).

Titremiyorlarsa, sorun açıkça kodunuzdadır. Titreme durana kadar basitleştirin. Veya tam tersi - standart kodu, titremeye başlayana kadar durumunuza göre değiştirin.

 
Bu, MT5, IMHO'nun bir özelliğidir.
 
Stanislav Korotky : Bu, MT5, IMHO'nun bir özelliğidir.

onlar. Bununla uzlaşıp, kabul edip bir sebep aramayı bırakmalı mıyız?

 
Andrey Khatimlianskii : Kaynaklardaki göstergelerden bahsediyorum (mq5). Titremiyorlarsa, sorun açıkça kodunuzdadır. Titreme durana kadar basitleştirin. Veya tam tersi - standart kodu, titremeye başlayana kadar durumunuza göre değiştirin.
Ama zaten kodu tamamen basitleştirdim. Tamam, diğer yolu deneyeceğim.


Bu arada, OnCalculate() işlevi için, normal göstergeler arasında bile, onu bir kez ve herkes için kullanmak için henüz evrensel bir "sarmalayıcı" ile karşılaşmadım.
Belki bana referans olarak kullanmak için böyle bir "sarmalayıcı" olan bir gösterge söyleyebilirsin?

 
Eugene Myzrov :

onlar. Bununla uzlaşıp, kabul edip bir sebep aramayı bırakmalı mıyız?

Servis masasına yazın.
 
Eugene Myzrov :
Ama zaten kodu tamamen basitleştirdim. Tamam, diğer tarafa gitmeye çalışacağım.

Herhangi bir küçük şey hakkında olabilir.


Eugene Myzrov :

Bu arada, OnCalculate() işlevi için, normal göstergeler arasında bile, onu bir kez ve herkes için kullanmak için henüz evrensel bir "sarmalayıcı" ile karşılaşmadım.
Belki bana referans olarak kullanmak için böyle bir "sarmalayıcı" olan bir gösterge söyleyebilirsin?

Birkaç seçenek gördüm. Arayabilir ve seçebilirsiniz.
Ben kendim böyle bir şey kullanıyorum:

         //---
         if ( rates_total < MinBars ) return ( 0 );

         //--- last counted bar will be recounted
         int limit=rates_total-prev_calculated- 1 ;
         if (prev_calculated> 0 ) limit++;

         //---
         for ( int i=limit; i>= 0 ; i--)
        {
           IndBuffer[i] = Add your code here
        }

         //---
         return (rates_total);