DRAW_FILLING çizim özelliğini kullanarak yayınlanan kodu kullanarak kendi indikatörümü yazmaya çalıştım.
Ancak, boş değerlerle ayrılmış komşu çizilmiş bölümlerin yapışmasıyla ilgili sorunlarım var.
Bir pencerede iki çizilmiş bölüm görünürse, EMPTY_VALUE değerine sahip bir gösterge bölümü ile ayrılmış olmalarına rağmen, bu boş bölüm hala komşu bölümlerin değerleriyle çizilir.
Bu durumu ele aldım çünkü oturumlar göstergesi için yayınlanan kodlar benim için çalışmıyor, bu yüzden her şeyi yeniden yazmaya karar verdim.
İşte bir taslak.
Sadece bu seçeneği sunabilirim
Teşekkür ederim, ama biraz gitmeyeceğim, belki grafik nesneleri üzerinde duracağım.
Teşekkür ederim ama biraz gitmeyecek, grafik nesneleri üzerinde duracağım.
- www.mql5.com
DRAW_FILLING tarzı çizim çokgenlerle yapıldığından, ne yazık ki güzel dikdörtgenler elde edemezsiniz.
Aynı sorunla ben de karşılaştım (boş değerlerin olduğu alanlara yapışma). Her ne kadar yukarıda dikdörtgen elde etmenin imkansız olduğu söyleniyor gibi görünse de bu dikdörtgenleri çizen bir örnek olduğu için(trading sessions indicator) konuyu araştırmaya karar verdim.
Açıkçası yukarıdaki göstergede dikdörtgenlerin nasıl elde edileceğini anlayamadım. Bu nedenle, herhangi bir açıklama için minnettar olacağım (platform geliştiricilerinden, yazardan, üçüncü taraf geliştiricilerden).
Öte yandan, deneyler sırasında dikdörtgenler elde etmenin o kadar da zor olmadığı ortaya çıktı - sadece boş değerlerden oluşan bir bölümden sonra dosyalama tamponlarını değiştirmeniz gerekiyor. Başka bir deyişle, bu kod
... //--- for ( int bar = startBar; bar < rates_total && !IsStopped(); bar++ ) { if ( prev_calculated != rates_total && bar == rates_total - 1 ) { _up = up; } if ( bar % 4 == 0 ) { if ( up ) { draw(bar, high[bar], low[bar]); up = false; } else { draw(bar, low[bar], high[bar]); up = true; } } } //--- sonraki çağrı için prev_calculated değerini döndürür return(rates_total); } //+------------------------------------------------------------------+ void draw(int bar, double price1, double price2) { //--- int start = bar-2; for ( int i = start; i <= bar; i++ ) { FillingBuffer1[i] = price1; FillingBuffer2[i] = price2; } //--- }
bu sonucu verir:

Sorun çözülmüş gibi görünüyor. Kullanıcı tarafından belirlenen zaman aralıklarını günlük olarak ayıran bir gösterge yazdım ve yeni bir sürprizle karşılaştım:

Ne kadar çevirirsem çevireyim, "yan etkileri" kaldıramıyorum. İlk durumda (yukarıdaki kod ve resim) böyle bir şey gözlemlenmediğini unutmayın.
Dolayısıyla, sorular:
- ticaret seansları göstergesinin (yazının başındaki bağlantı) neden boş değer alanlarına yapışma sorunu yok?
- neden bazı durumlarda dikdörtgenler normal çizilirken diğer durumlarda yan etkiler alıyoruz? Kodlar yazının sonuna eklenmiştir. (Evet, bu tür olaylar her zaman meydana gelseydi, çokgenler hakkındaki ifadeye katılırdım).
Tekrar ediyorum: Tüm açıklamalar için minnettar olacağım.
Not:1 Bana öyle geliyor ki, dikdörtgenler sorununun çözümü, nesnelere (bir şekilde gerçekten kullanmak istemediğim) iyi bir alternatif. Sonuçta, aynı zaman aralıkları seçimi ve doğrusal tersine çevirme ve Darvas alanları ve çeşitli desenlerin seçimi, vb.
Not:2 TimeZone göstergesini kod tabanına koymayı düşündüm, ancak buna değer mi ("sol" çubuklarla)?
aralığı doldurmamak için PlotIndexSetDouble (1,PLOT_EMPTY_VALUE,EMPTY_VALUE); kullanın.
Neden bazen etki ediyor ama bazen etki etmiyor?
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz

DRAW_FILLING:
DRAW_FILLING çizim stili, iki gösterge arabelleğinin değerleri arasına renkli alan çizer. Aslında, iki çizgi çizer ve bu iki çizginin arasındaki alanı renkle doldurur.
Yazar: MetaQuotes