Hatalar, hatalar, sorular - sayfa 1805

 
Alexey Kozitsyn :
@Slawa , lütfen OnCalculate() işlevinin dışında gösterge arabellekleri yazma konusunda herhangi bir kısıtlama olup olmadığını belirtin. OnTimer(), OnBookEvent(), OnChartEvent() fonksiyonlarında arabellekler yazılırsa, her şey her zaman doğru şekilde kaydedilecek mi?

Açık bir kısıtlama yoktur. Dene.

AMA, yeni bir çubuk eklerken arabelleklerin yeniden dağıtımıyla karşılaşabilirsiniz (yeniden dağıtım bir kenar boşluğu ile yapılır, bu nedenle her yeni çubukta değil).

PS olmasa da. tüm işlemler tek bir iş parçacığında gider, bu nedenle çakışma olmamalıdır. Denemek
 
Slawa :
Açık bir kısıtlama yoktur. Dene.

AMA yeni bir çubuk eklerken bir arabellek yeniden tahsisi ile karşılaşabilirsiniz (yeniden dağıtım bir kenar boşluğu ile yapılır, bu nedenle her yeni çubukta değil)

Burada daha fazla ayrıntı lütfen. Ne tür bir dağıtım, bununla nasıl başa çıkılır?

Soruyu yeni çubukta "takıldığını" fark ettiğim için yazdım. Ayrıca, bu donmalar , arabellek değerlerini sıfırlar \u003d 0 (ayrıca, benim tarafımdan açıkça ayarlanan boş değer EMPTY_VALUE'dir). Şu ana kadar bu anı yakalayamadım. Bazen göstergede sadece bir "atlama" olur ve hemen normal duruma geri döner, bazen sadece "yapışır". Takıldığında dosyaya herhangi bir değer yazılmaz ve arabellek çizilmez. OnBookEvent () içindeki arabelleklere yazıyorum.

OnCalculate() içindeki aynı kod iyi çalışıyor, ancak OnCalculate(), açık ilgi ve diğer değişim parametrelerinin tüm değerlerini toplamanıza izin vermiyor.

Sadece TF değiştirilerek tedavi edilir. Evet 5-7 özdeş gösterge aynı anda çalışıyor, farklı veriler yazıyor.

Katma:

Evet, bugün bile terminali açtığımda tamamen aynı şeyi fark ettim. Her şey, tüm arabelleklerde, tüm sıfır değerlerinde asılı kaldı, gösterge geçmişi vermedi (bir dosyaya yazılmıştır). Onlar. her şey asılı kaldı. Piyasa hala kapalıydı. TF değiştirildi - geçmiş yüklendi, ANCAK, yine OTURUM değerleri için bir zaman damgası ihtiyacı sorusuna: bilinen son değer, terminal kapatıldığında kaydedildi! Geçmiş senkronizasyonu başarılı oldu, hata yok. Ancak TimeCurrent() hatalı bir değer döndürdü (21:03 civarında bir yerde). Bu değerin gerçek varış zamanı 23:49:59 olmasına rağmen. Genel olarak, bir tür üzüntü ...

 
Alexey Kozitsyn :

Burada daha fazla ayrıntı lütfen. Ne tür bir dağıtım, bununla nasıl başa çıkılır?

Soruyu yeni çubukta "takıldığını" fark ettiğim için yazdım. Ayrıca, bu donmalar , arabellek değerlerini sıfırlar \u003d 0 (ayrıca, benim tarafımdan açıkça ayarlanan boş değer EMPTY_VALUE'dir). Şu ana kadar bu anı yakalayamadım. Bazen göstergede sadece bir "atlama" olur ve hemen normal duruma geri döner, bazen sadece "yapışır". Takıldığında dosyaya herhangi bir değer yazılmaz ve arabellek çizilmez. OnBookEvent () içindeki arabelleklere yazıyorum.

OnCalculate() içindeki aynı kod iyi çalışıyor, ancak OnCalculate(), açık ilgi ve diğer değişim parametrelerinin tüm değerlerini toplamanıza izin vermiyor.

Sadece TF değiştirilerek tedavi edilir. Evet 5-7 özdeş gösterge aynı anda çalışıyor, farklı veriler yazıyor.

Kolay. Yeni bir çubuğun ilk işareti gelir. Tampon 1000 bara bölünmüştür ve tamamen doldurulmuştur.

Tamponu 1250 bar olarak yeniden dağıtıyoruz, önceki tampondan 1000 barı yeni tampona kopyalıyoruz. Eski arabellek yerine yeni arabelleği açığa çıkarıyoruz, eski arabelleği siliyoruz. 1001. çubuğu ekleme.

"Onunla nasıl başa çıkılır" ne anlama geliyor?

Bir sembolün tüm göstergelerinin bir akışta birbiri ardına sırayla sayıldığını unutmayın. Bazı göstergeler yavaşlarsa, tüm sembol işleme akışı yavaşlar.
 
Slawa :
Kolay. Yeni bir çubuğun ilk işareti gelir. Tampon 1000 bara bölünmüştür ve tamamen doldurulmuştur.

Tamponu 1250 bar olarak yeniden dağıtıyoruz, önceki tampondan 1000 barı yeni tampona kopyalıyoruz. Eski arabellek yerine yeni arabelleği ortaya çıkarırız, eski arabelleği sileriz. 1001. çubuğu ekleme.

"Onunla nasıl başa çıkılır" ne anlama geliyor?

Bir sembolün tüm göstergelerinin bir akışta birbiri ardına sırayla sayıldığını unutmayın. Bazı göstergeler yavaşlarsa, tüm sembol işleme akışı yavaşlar.
Yaklaşık bir akış, bir kurstayım. Ve yeniden dağıtım, anladığım kadarıyla OnBookEvent() 'i OnCalculate() ' den daha fazla mı etkiliyor?
 
Alexey Kozitsyn :
Yaklaşık bir akış, bir kurstayım. Ve yeniden dağıtım, anladığım kadarıyla OnBookEvent'i () OnCalculate'den () daha fazla mı etkiliyor?
Yeniden dağıtım, yeni bir onay işareti geldiğinde gerçekleştirilir. Yeni bir onay işaretinin gelmesinden hemen sonra OnCalculate sıra dışı olarak çağrılır. Ve ancak bundan sonra, gösterge tarafından alınan olayların işlenmesi devam eder.

Ancak gösterge (bu sembol üzerindeki herhangi bir gösterge!) herhangi bir hesaplamayı (OnCalculate, OnTimer, OnChartEvent, OnBookEvent) tamamlayana kadar yeni bir onay işareti işlenmez.
 
Slawa :
Yeniden dağıtım, yeni bir onay işareti geldiğinde gerçekleştirilir. Yeni bir onay işaretinin gelmesinden hemen sonra OnCalculate sıra dışı olarak çağrılır. Ve ancak bundan sonra, gösterge tarafından alınan olayların işlenmesi devam eder.

Ancak gösterge (bu sembol üzerindeki herhangi bir gösterge!) herhangi bir hesaplamayı (OnCalculate, OnTimer, OnChartEvent, OnBookEvent) tamamlayana kadar yeni bir onay işareti işlenmez.

Ayrıca anladığım kadarıyla bir sembol üzerindeki göstergeler sırayla hesaplanıyor, yani. i1, i2, i3 indikatörünü art arda atarsam aynı sırayla mı hesaplanır?

Şimdi test için standart bir MACD ekledim, listedeki sonuncusu, yeni bir çubuk oluşumu ile donup donmayacağını göreceğim.

 
Alexey Kozitsyn :

Ayrıca anladığım kadarıyla bir sembol üzerindeki göstergeler sırayla hesaplanıyor, yani. i1, i2, i3 indikatörünü art arda atarsam aynı sırayla mı hesaplanır?

Şimdi test için standart bir MACD ekledim, listedeki sonuncusu, yeni bir çubuk oluşumu ile donup donmayacağını göreceğim.

İlk başta - evet, hesaplama aynı sırada olacaktır.

Ancak farklı göstergeleri kaldırır/eklerseniz, yeniden hesaplama sırası sizi şaşırtabilir. Bu yüzden sıraya bahse girme
 
Slawa :
İlk başta - evet, hesaplama aynı sırada olacaktır.

Ancak farklı göstergeleri kaldırır/eklerseniz, yeniden hesaplama sırası sizi şaşırtabilir. Bu yüzden sıraya bahse girme
Bu, göstergelerimin askıda olup olmadığını, sonuncunun hesaplanıp hesaplanmadığını kontrol etmek için gereklidir - standart MACD. Benimkilerin hepsi MACD'den önce gidiyor.
 
Slawa :

İşte bahsettiğim şey:

GOLD-3.17'ye göre yeni bir çubuk oluşturuldu, bu sembol için OnBookEvent() içinde hesaplanan tüm göstergelerime göre tüm mevcut değerler sıfırlandı. Göstergenin mantığına göre, yeni bir çubuğun oluşumu sırasında, arabellekler sıfırlanmaz, ancak mevcut değer onlara hemen yazılır. MACD sıfırlanmadı. Günlük boş, bu nedenle senkronizasyonsuzluk olmadı, tüm değerlerin doğru olması gerekirdi. Bu durumda, aksaklık yaklaşık 5 saniye sürdü.Dün birkaç dakika boyunca aksaklıklar yakaladım.

Diğer tüm karakterler iyi. Tekrar ediyorum, gösterge mantığı, değerleri 0'a sıfırlamayı içermiyor! Bu nedenle, soru şudur: yeni öğeleri yeniden dağıtırken, teoride çöp içermelidirler. Ve sonra 0.0 ve askıda kal...

Evet, bir şey daha: bir gösterge asılı kalırsa, geri kalanı değerlerini kaydetmek zorunda mı kalacak?! Ve sonra her şey bir anda sıfırlandı. Bunun olabileceği durumlar var mı?
 

BR-3.17'de de benzer bir donma meydana geldi:

@Slawa hangi yöne kazılacağına dair herhangi bir fikriniz var mı? Belki stok verilerini toplamanın ve göstermenin daha iyi bir yolu vardır?

Neden: