Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
.
Her neyse, yüksek fraktalları yalnızca iMACD kesişmeleri veya EMA kesişmeleri veya diğer bazı gösterge kesişmeleri gibi başka bir koşul oluştuğunda oluşturmaya çalışıyordum.
Böylece fraktallar yalnızca tüm koşullar karşılandığında göstergede gösterilecektir.
Tam olarak ne yapmaya çalıştığınızdan emin değildim ama bunu deneyin, harici girdilere dikkat edin.
Bu sonuca tam olarak nasıl ulaştınız ve işlevsel fark nedir?
Bu sonuca vardım çünkü muhtemelen OOP perspektifinden bakıyordum. evet, bu MQL4 için geçerli değil, şimdi hatırlıyorum. İyi bir uygulama olsa da?
Ya da belki böyle bir şey?
gerçi gerçekten IndicatorCounted() kullanmalısınız , çünkü bunu böyle yaparsanız, göstergeniz tüm bu nesneleri bir kerede çizmek ve yeni çubuklar oluştukça yenilerini eklemek yerine her yeni tıklamada yeniden çiziyor.
Bu sonuca vardım çünkü muhtemelen OOP perspektifinden bakıyordum. evet, bu MQL4 için geçerli değil, şimdi hatırlıyorum. İyi bir uygulama olsa da?
Kapsamı sınırlamak her zaman iyi bir uygulamadır. Değişkeni/nesneyi kullanıldığı yerde tanımlamak ve bunları bu noktada başlatmak her zaman iyi bir uygulamadır.
Döngünün dışında bir nesnenin tanımlanması, varsayılan bir yapı artı N ataması ile sonuçlanır. Döngü içinde tanımlanmış, değeri olan N yapıyla sonuçlanır - genellikle daha hızlı.
Değişikliğin bir fark yarattığını kanıtlayana kadar optimizasyonlar hakkında asla endişelenmeyin.
Kapsamı sınırlamak her zaman iyi bir uygulamadır. Değişkeni/nesneyi kullanıldığı yerde tanımlamak ve bunları bu noktada başlatmak her zaman iyi bir uygulamadır.
Döngünün dışında bir nesnenin tanımlanması, varsayılan bir yapı artı N ataması ile sonuçlanır. Döngü içinde tanımlanmış, değeri olan N yapıyla sonuçlanır - genellikle daha hızlı.
Değişikliğin bir fark yarattığını kanıtlayana kadar optimizasyonlar hakkında asla endişelenmeyin.
Bu, yineleyicisi için de geçerli olmalıdır. için (i nt i=0;...
Her ne kadar, değişkenlerin (daha hızlı ve daha yavaş) döngü dışında bildirilmesinin neden döngü içinde uygunken iyi olmadığı konusunda biraz kafam karıştı.
Ve yine de int i = Barlar döngünün dışında mı yoksa döngünün içinde mi çalışacak?
Her neyse, üzerinde çalıştığım bazı fikirlerimin bu başlıkta zaten yayınlanmış olduğunu görmek güzel, bu yüzden bu iyi bir haber ve bir gün kendi başıma bir şeyler kodlayabilmeye biraz daha yaklaştığım anlamına geliyor. Bu yüzden biraz ilerleme, ilerlememekten daha iyidir. teşekkürler
Şimdi bazı gösterge zamanlarını karşılaştırmaya çalışabilirim, şimdi bunu çözmeye çalışacağım.
Gibi:
v1[i] ile v2[i] karşılaştırın Şu anda oluşturulmuş gösterge Times && / || if(v1[i] time is > v2[i] time) ve bunun gibi diğer karşılaştırmalar.
Tüm ipuçları için herkese teşekkürler, bu çok yardımcı oldu.
Kapsamı sınırlamak her zaman iyi bir uygulamadır. Değişkeni/nesneyi kullanıldığı yerde tanımlamak ve bunları bu noktada başlatmak her zaman iyi bir uygulamadır.
Döngünün dışında bir nesnenin tanımlanması, varsayılan bir yapı artı N ataması ile sonuçlanır. Döngü içinde tanımlanmış, değeri olan N yapıyla sonuçlanır - genellikle daha hızlı.
Değişikliğin bir fark yarattığını kanıtlayana kadar optimizasyonlar hakkında asla endişelenmeyin.
Tamam, şimdi çalışan bir kodun bazı varyasyonlarına sahibim gibi görünüyor.
Her ne kadar, değişkenlerin (daha hızlı ve daha yavaş) döngü dışında bildirilmesinin neden döngü içinde uygunken iyi olmadığı konusunda biraz kafam karıştı.
Ve yine de int i = Barlar döngünün dışında mı yoksa döngünün içinde mi çalışacak?
Ne yaptığınızı düşünmelisiniz, bir gösterge oluşturduğunuzda, kodunuzu grafikteki her bir çubuğa uyguluyorsunuz, bu, bu tarihsel çubukların her biri için olduğu gibi macd gösterge değerini almanız gerektiği anlamına geliyor.
orijinal kodunuzda yaptığınız:
son parametre 1, grafiğin 1. Çubuğunda olduğu gibi macd'nin değeridir, mevcut çubuktan önceki çubuk, çubuk 0 olarak endekslenirAçıkçası, tüm geçmiş grafiğin üzerinde koşullu operatörünüzde macd'nin bu tek değerini kullanmak istemezsiniz.
Macd'yi her çubukla aynı çubuk dizinine endekslemeniz gerekir, bu nedenle örneğin 500 numaralı çubukta buna ihtiyacınız vardır.
bu son parametre, göstergenizin algoritmalarını uyguladığı çubuk numarasına uyacak şekilde değişmelidir.
Bu nedenle, döngü içinde buna ihtiyacınız vardır, böylece son parametre için döngü döngüsü yineleyicisini ( i ) kullanabilirsiniz, böylece geçmiş grafiğin her çubuğu için olduğu gibi macd değerinizi elde edersiniz.
umarım bu işleri biraz netleştirmeye yardımcı olur.
Bu değişikliği deneyin
Ve bu neden for(int i = Bars ??
Lütfen öğüt verin, teşekkürler