TF değişikliği bir sorundur

 
Aslında sorun şu ki, geçmişin henüz pompalanmadığı TF'yi değiştirirken çizgiyi çizen gösterge verileri hesaplıyor, ardından grafiğe çubuklar ekleniyor ve verileri tekrar hesaplıyor, sırasıyla geçmiş olanlar. + boşluklar da kaldırıldı.
 
Vasyl Nosal :
Aslında sorun şu ki, geçmişin henüz pompalanmadığı TF'yi değiştirirken çizgiyi çizen gösterge verileri hesaplıyor, ardından grafiğe çubuklar ekleniyor ve verileri tekrar hesaplıyor, sırasıyla geçmiş olanlar. + boşluklar da kaldırıldı.

Bu, göstergenin mantığında bir hata anlamına gelir. Geçmişi yüklerken, göstergenin çalışması için ideal yol, geçmişte değişmeyen son çubuğun anındaki durumunu hesaplamak ve geçmişin güncellenen bölümündeki verileri yeniden hesaplamaktır.

Gerçekte, bu seçenek her zaman mümkün değildir, çünkü gösterge ortamının belirtilen herhangi bir çubuğa döndürülmesi, hesaplamanın geçmişin başından itibaren yapılması anlamına gelir. Bu nedenle, biraz karmaşık gösterge algoritmaları durumunda, bir çubuk yüklendiğinde (yeni bir çubuğun açılmasıyla karıştırılmamalıdır) geçmişin tam bir yeniden hesaplanması gerçekleştirilir.

 
Vasyl Nosal :
Aslında sorun şu ki, geçmişin henüz pompalanmadığı TF'yi değiştirirken çizgiyi çizen gösterge verileri hesaplıyor, ardından grafiğe çubuklar ekleniyor ve verileri tekrar hesaplıyor, sırasıyla geçmiş olanlar. + boşluklar da kaldırıldı.

OnCalculate() içindeki göstergede şunları kontrol etmeniz gerekir:

 if (prev_calculated== 0 )   // значит история изменилась или это первый проход
 
Karputov Vladimir :

OnCalculate() içindeki göstergede şunları kontrol etmeniz gerekir:

Teşekkür ederim.

Uyarıların bana tarihin parçalara ayrıldığı gerçeğini vermesi beni utandırdı.

Evet. Ve orada.

 
Ihor Herasko :

Bu, göstergenin mantığında bir hata anlamına gelir. Geçmişi yüklerken, göstergenin çalışması için ideal yol, geçmişte değişmeyen son çubuğun anındaki durumunu hesaplamak ve geçmişin güncellenen bölümündeki verileri yeniden hesaplamaktır.

Gerçekte, bu seçenek her zaman mümkün değildir, çünkü gösterge ortamının belirtilen herhangi bir çubuğa döndürülmesi, hesaplamanın geçmişin başından itibaren yapılması anlamına gelir. Bu nedenle, biraz karmaşık gösterge algoritmaları durumunda, bir çubuk yüklendiğinde (yeni bir çubuğun açılmasıyla karıştırılmamalıdır) geçmişin tam bir yeniden hesaplanması gerçekleştirilir.

Yani sadece çalışan çözüm sadece?

for(int i=rates_total-prev_calculated;i>=0;i--)

 
Vasyl Nosal :

Sadece çalışan çözüm bu mu?

for(int i=rates_total-prev_calculated;i>=0;i--)

Ve yalnızca mevcut çubuğu yeniden hesaplamanız gerekiyorsa, o zaman (örneğin, 4)?

 for ( int i=rates_total-prev_calculated+ 4 ;i>= 0 ;i--) 

{ 

if (i> Bars ) i= Bars ; 
 

Evet, çalışıyor.

Çubuklar parçalar halinde yüklendiğinde, daha sonra parçalar halinde ve yeniden hesaplama.

Doğru parçanın yalnızca en son yüklenen parça olduğu ortaya çıktı haha.

 
Vasyl Nosal :

Evet, çalışıyor.

Çubuklar parçalar halinde yüklendiğinde, daha sonra parçalar halinde ve yeniden hesaplama.

Doğru parçanın yalnızca en son yüklenen parça olduğu ortaya çıktı haha.

Göstergelerin nasıl yazılacağını öğrenmenin zamanı geldi
 
Victor Nikolaev :
Göstergelerin nasıl yazılacağını öğrenmenin zamanı geldi

Öğretmek.

Ve geliştiricilerin göstergenin ilk hesaplamalarında ayarlamalar yapması gerektiğini söylüyorum.

 
Victor Nikolaev :
Göstergelerin nasıl yazılacağını öğrenmenin zamanı geldi

hile mi istiyorsun Bil bakalım hangi Uyarı döndü?

 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 (prev_calculated!= 0 ) Alert (prev_calculated, " M:" , Period ());
return (rates_total);
  }

 
Vasyl Nosal :

hile mi istiyorsun Bil bakalım hangi Uyarı döndü?

Göstergelerde uyarı kullanmıyorum. Geçmiş yüklenmişse tam bir yeniden hesaplama sağlarım. Bunu kontrol etmek kolaydır.