Çünkü çek temelde yanlıştır. Diyelim ki Barlar 1000 ve cb de 1000 döndürdü. Sonra döngüde, ilk yinelemede 1000 değerini alıyorum. Döngü gövdesinin ilk koşulunda:
diziden aynı anda iki çıkış: 1000 indeksli ve 1001 indeksli çubuğa erişim. Sonuçta, grafikte 1000 çubuk varsa, o zaman ilk çubuk 0 indeksine ve sonuncusu - 999'a sahiptir.
Döngünün gövdesi boyunca, tarihte daha da uzak çubuklara bir itiraz vardır:
Tüm bunlar ilk kontrol sırasında dikkate alınmalıdır.
Doğru nasıl kontrol edilir? MQL4 yardımındaki IndicatorCounted() işlevi örneğine bakın. Yalnızca şimdi IndicatorCounted()'ı Rate_total (bu Barlar) ve prev_calculated (bu IndicatorCounted()) değişkenlerini paylaşmakla değiştirmek daha iyidir.
Teşekkürler, Bulundu
int counted_bars= IndicatorCounted ();
if (counted_bars> 0 ) counted_bars--;
Gösterge verilerinin görüntülendiği çubuk sayısını sınırlamanız gerekirse, bunu yapmak daha iyidir:
int GetRecalcIndex( int & total, constint ratesTotal, constint prevCalculated)
{
total = ratesTotal - 2 - barsig;
if (cb > 0 && cb < total)
total = MathMin (cb, total);
if (prevCalculated < ratesTotal - 1 )
{
InitializeBuffers(); // Это функция, которая должна заново инициализировать все индикаторные буфера, т. к. имеем дело с первой загрузкой индикатора или подкачкой историиreturn (total);
}
return ( MathMin (ratesTotal - prevCalculated, total));
}
Bu şekilde kullanın:
int total;
int limit = GetRecalcIndex(total, rates_total, prev_calculated);
for ( int i = limit; i >= 0 ; --i)
{
...
}
Toplam değer, gösterge ayarlarının değerlerine göre erişilebilen, tarihteki en derin çubuğun indeksidir.
başka birine sahip olacaksın diğer tamponlara. Gösterge grafik nesnelerle çalışıyorsa , o zaman burada hepsini silmeniz gerekir, çünkü okumaların ilk işlenmesi yapılmalıdır.
Yoruma bunun tüm gösterge arabelleklerini başlatması gereken bir işlev olduğunu yazdım. Bu, kullanıcı tanımlı bir fonksiyondur. bende şöyle var:
başka birine sahip olacaksın diğer tamponlara. Gösterge grafik nesnelerle çalışıyorsa , o zaman burada hepsini silmeniz gerekir, çünkü okumaların ilk işlenmesi yapılmalıdır.
Teşekkürler, ama hiçbir şey değişmedi ...dizi 'HiLo.mq4' (130,15) içinde aralık dışında
Hala uçuyor.
[i+ 1 ] var, +2 tane daha kontrol etmeniz gerekiyor
genel olarak böyle bir şey yapmalısın
Çünkü çek temelde yanlıştır. Diyelim ki Barlar 1000 ve cb de 1000 döndürdü. Sonra döngüde, ilk yinelemede 1000 değerini alıyorum. Döngü gövdesinin ilk koşulunda:
diziden aynı anda iki çıkış: 1000 indeksli ve 1001 indeksli çubuğa erişim. Sonuçta, grafikte 1000 çubuk varsa, o zaman ilk çubuk 0 indeksine ve sonuncusu - 999'a sahiptir.
Döngünün gövdesi boyunca, tarihte daha da uzak çubuklara bir itiraz vardır:
Tüm bunlar ilk kontrol sırasında dikkate alınmalıdır.
Doğru nasıl kontrol edilir? MQL4 yardımındaki IndicatorCounted() işlevi örneğine bakın. Yalnızca şimdi IndicatorCounted()'ı Rate_total (bu Barlar) ve prev_calculated (bu IndicatorCounted()) değişkenlerini paylaşmakla değiştirmek daha iyidir.
Teşekkürler, Bulundu
ne ile karşılaştıralım? örnekte limit ile başlar
limit= Bars -counted_bars;bu "cb"yi neyle karşılaştırmalıyım?
Teşekkürler, Bulundu
ne ile karşılaştıralım? örnekte limit ile başlar
bu "cb"yi neyle karşılaştırmalıyım?
Gösterge verilerinin görüntülendiği çubuk sayısını sınırlamanız gerekirse, bunu yapmak daha iyidir:
Bu şekilde kullanın:
Toplam değer, gösterge ayarlarının değerlerine göre erişilebilen, tarihteki en derin çubuğun indeksidir.[i+ 1 ] var, +2 tane daha kontrol etmeniz gerekiyor
genel olarak böyle bir şey yapmalısın
Tam olarak böyle yaptım, 'HiLo.mq4' (122,15) içinde dizi aralık dışında yazıyor
+2 daha ne kontrol edilir?
Gösterge verilerinin görüntülendiği çubuk sayısını sınırlamanız gerekirse, bunu yapmak daha iyidir:
Bu şekilde kullanın:
Toplam değer, gösterge ayarlarının değerlerine göre erişilebilen, tarihteki en derin çubuğun indeksidir.derleyici yemin ediyor
'InitializeBuffers' - işlev tanımlanmadı MerhabaLo.mq4 161 7
derleyici yemin ediyor
'InitializeBuffers' - işlev tanımlanmadı MerhabaLo.mq4 161 7
Yoruma bunun tüm gösterge arabelleklerini başlatması gereken bir işlev olduğunu yazdım. Bu, kullanıcı tanımlı bir fonksiyondur. bende şöyle var:
başka birine sahip olacaksın diğer tamponlara. Gösterge grafik nesnelerle çalışıyorsa , o zaman burada hepsini silmeniz gerekir, çünkü okumaların ilk işlenmesi yapılmalıdır.
Yoruma bunun tüm gösterge arabelleklerini başlatması gereken bir işlev olduğunu yazdım. Bu, kullanıcı tanımlı bir fonksiyondur. bende şöyle var:
başka birine sahip olacaksın diğer tamponlara. Gösterge grafik nesnelerle çalışıyorsa , o zaman burada hepsini silmeniz gerekir, çünkü okumaların ilk işlenmesi yapılmalıdır.
Teşekkürler, ama hiçbir şey değişmedi ...dizi 'HiLo.mq4' (130,15) içinde aralık dışında
. Sorun nedir?
Teşekkürler, ama hiçbir şey değişmedi. Sorun nedir?
Elbette sonuç değişmeyecek. Sonuçta, ana nedeni (cb döngüsü) ortadan kaldırmadınız. Bu döngü yanlış organize edilmiştir:
Kaldırmanız ve bunun yerine bir döngü sınırı koymanız gerekir. Her iki yerde.
Elbette sonuç değişmeyecek. Sonuçta, ana nedeni (cb döngüsü) ortadan kaldırmadınız. Bu döngü yanlış organize edilmiştir:
Bunu kaldırmanız ve bunun yerine bir döngü sınırı koymanız gerekir. Her iki yerde.
Böyle 3 döngü var, onları değiştirdim, terminal donuyor.
Ben yaptım donmuyor, kilitlenmiyor ama ilk tamponda (fx2) 3 değer var: fiyat, 0.0 ve 164874239.218492.
sell_1_B!=EMPTY_VALUE ve sell_1_B!=0 ise bu bir fiyat olduğu anlamına gelmez.
Sinyal nasıl alınır?