prev_hesaplanmış - sayfa 3

 
Alexey Viktorov :

Yanlış soruya cevap verme yeteneği...

Şimdi bana şu durumlarda ne olacağını açıklayın:

1. 100 bar yeniden hesaplandı, 0'dan 99'a kadar tamponlara girildi (yönü bir zaman serisi olarak ele alalım) değeri 1.03

2. Aniden geçmiş yüklendi ve prev_hesaplanan 0 oldu

Gösterge hangi çubuktan 1.03 değerini gösterecek?

  1. Bir zaman serisinde olduğu gibi indekslemeyi hesaba katmak için, gösterge arabelleğinin OnInit() içinde AS_SERIES bayrağını ayarlamanız gerekir - bu yüzden "en sağdaki çubuk" kavramlarıyla çalışmayı tercih ediyorum - böylece kimse hatalı bir şekilde bilgilendirilmeyecek .
  2. İşte cevap:
       if (prev_calculated== 0 )
         {
           //--- инициализация элементов индикаторного буфера при первом запуске или при подкачке истории
           for ( int i= 0 ;i<rates_total;i++)
             ExtBuffer[i]= 1.01 ;
           return (rates_total);
         }
    "prev_calculated==0" ile kesinlikle gösterge arabelleğinin tüm öğeleri "1.01" değerleriyle yeniden başlatılacak ve "return(rates_total);" ile hemen çıkacaktır. Yani, gösterge arabelleğinde önceki "1.03" değerlerinin izi olmayacak.
 
Alexey Viktorov :

Göstergenin İLK başlangıcında çöplerden nasıl kurtulacağınızı daha iyi açıklayın .

Ördek basittir - prev_calculated'ı unutun, 'yandaki delik' olmadan kendi kopyanızı yaratın. Örnekteki fxsaber gibi önceden hesaplanmış çubukların kaydını tutmanız gerekiyorsa
fxsaber :
Asla koltuk değneği değil. Ben öyle yapıyorum .
Basit bir ilk çalıştırma / zaten ilk değil bayrağı yeterliyse, prev_calculated'ı statik bool b_First_Run ile değiştirin. Veya arabellek başlatmayı OnInint'e taşıyabilirsiniz.
 
Karputov Vladimir :
  1. Bir zaman serisinde olduğu gibi indekslemeyi hesaba katmak için, gösterge arabelleğinin OnInit()'inde AS_SERIES bayrağını ayarlamanız gerekir - bu yüzden "en sağdaki çubuk" kavramlarıyla çalışmayı tercih ediyorum - böylece kimse hatalı bir şekilde bilgilendirilmeyecek .
  2. İşte cevap:
       if (prev_calculated== 0 )
         {
           //--- инициализация элементов индикаторного буфера при первом запуске или при подкачке истории
           for ( int i= 0 ;i<rates_total;i++)
             ExtBuffer[i]= 1.01 ;
           return (rates_total);
         }
    "prev_calculated==0" ile kesinlikle gösterge arabelleğinin tüm öğeleri "1.01" değerleriyle yeniden başlatılacak ve "return(rates_total);" ile hemen çıkacaktır. Yani, gösterge arabelleğinde önceki "1.03" değerlerinin izi olmayacak.

Dolayısıyla düzeltilmesi gereken sorun budur. Çöpe ihtiyacım yok (gerekli olmadığından değil, ekrana müdahale ediyor), ancak önceki gösterge hesaplamalarını kaydetmem gerekiyor. Göstergenin İLK başlatılışında, çöp arabelleğe girer ve geçmiş yüklenirken, arabelleklere konan her şey kaydedilmelidir... ve tercihen bir dosyaya yazmadan, hatta daha fazlası GV'ye.


katma:

Bu, düşüşü her dakika gerçek zamanlı olarak değerlendirmek için tasarlanmıştır. Danışman bir hafta boyunca durmadan çalışır ve haftalık ekran yerine, gösterge olmadan bile görülebilen yalnızca son değeri göreceğiz...

 
Alexander Puzanov :
Basit bir ilk çalıştırma / zaten ilk değil bayrağı yeterliyse, prev_calculated'ı statik bool b_First_Run ile değiştirin. Veya arabellek başlatmayı OnInint'e taşıyabilirsiniz.
Hayır, oradaki hedefler o kadar da ilkel değil.
 
fxsaber :
Hayır, oradaki hedefler o kadar da ilkel değil.
Burada değilsin - bu senin için bir teklif değil, Alexey Viktorov , anladığım kadarıyla, sadece buna ihtiyacın var - 1. başlangıçta arabellekleri sıfırla ve herhangi bir takas ile içlerindeki hiçbir şeye dokunmayın
 
Alexey Viktorov :

Dolayısıyla düzeltilmesi gereken sorun budur. Çöpe ihtiyacım yok (gerekli olmadığından değil, ekrana müdahale ediyor), ancak önceki gösterge hesaplamalarını kaydetmem gerekiyor. Göstergenin İLK başlatılışında, çöp arabelleğe girer ve geçmiş yüklenirken, arabelleklere konan her şey kaydedilmelidir... ve tercihen bir dosyaya yazmadan, hatta daha fazlası GV'ye.


katma:

Bu, düşüşü her dakika gerçek zamanlı olarak tahmin etmek için tasarlanmıştır. Danışman bir hafta boyunca durmadan çalışır ve haftalık ekran yerine, gösterge olmadan bile görülebilen yalnızca son değeri göreceğiz...

Ö! Şimdi daha net. akşama kadar cevaplarım
 
Alexander Puzanov :
Burada değilsin - bu senin için bir teklif değil, Alexey Viktorov , anladığım kadarıyla, sadece buna ihtiyacın var - 1. başlangıçta arabellekleri sıfırla ve herhangi bir takas ile içlerindeki hiçbir şeye dokunmayın
Tabii ki, OnInit () içindeki arabellekleri başlatarak başladım, ancak bir şeyler yanlıştı, ne olduğunu hatırlamıyorum ve OnCalculate'deki başlatmayı prev_calculated == 0 ile çıkardım
 

OnInit() içinde arabellek dizilerini başlatırsanız ne olacağını tekrar kontrol ettim.

İndikatör grafikten çıkarılıp yeni bir ayar yapıldığında bile HER ŞEY DEĞİL bazı tamponlarda eski değerler kalıyor. Tam olarak daha öncekiler bile değil, ancak bu değerlerden biri birkaç çubuğun üzerine çıkıyor.

 
Karputov Vladimir :
Ö! Şimdi daha net. akşama kadar cevaplarım
Cevapla geciktiğim için üzgünüm. Belirli bir zaman dilimi için hesaplanan değerleri kaydetmenin tek yolu, bir dosyaya kaydetmektir. Bu durumda, senkronizasyona dikkat etmeniz gerekir - böylece bir dosyadan okurken veriler çubuklarına yerleştirilir. En mantıklı şey, çubuk açılış zamanı ile senkronizasyondur, ancak burada nüanslar olabilir: örneğin, çubuk açılış zamanı (bir dosyaya kaydedilmiş) 2016.09.05 idi. 25:02 ve şimdi grafikte zamanı 2016.09.05 olan bir çubuk var. 25:01.
 
Karputov Vladimir :
Cevapla geciktiğim için üzgünüm. Belirli bir zaman dilimi için hesaplanan değerleri kaydetmenin tek yolu, bir dosyaya kaydetmektir. Bu durumda, senkronizasyona dikkat etmeniz gerekir - böylece bir dosyadan okurken veriler çubuklarına yerleştirilir. En mantıklı şey, çubuk açılış zamanı ile senkronizasyondur, ancak burada nüanslar olabilir: örneğin, çubuk açılış zamanı (bir dosyaya kaydedilmiş) 2016.09.05 idi. 25:02 ve şimdi grafikte zamanı 2016.09.05 olan bir çubuk var. 25:01.

Veya geliştiricilerin dikkatini gösterge arabelleklerini başlatma sorununa çekmek daha iyi olabilir mi? MT4'te neden böyle bir sorun yok? Belki yine tam bir anlayış değil? Sorun şu ki, SOME'da göstergeyi grafikten çıkardıktan sonra arabelleklerin zorunlu başlatılmasıyla bile, tüm arabellekler çöp içermez ve ondan hiçbir şey kaldırılamaz...

Şahsen ben koltuk değneklerine karşı değilim, ancak bu koltuk değnekleri çok zor değilse ve olumlu bir etkisi varsa. Ancak bir dosyaya sonradan okuma ile yazmak, beceriksiz bir koltuk değneğidir.