MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 794
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
Bu, bir göstergede nasıl yapılacağına bir örnektir. Ve soru danışmanla ilgiliydi.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
MQL4, yardım ve algoritmalar ve kodlar hakkında herhangi bir acemi sorusu
Kuzeybatı , 2019.03.28 03:54
Hepinize iyi günler!
İki saat kaybetti ama hiçbir şey bulamadı.
Lütfen bana mq4'te danışmanda yetkin bir şekilde nasıl olduğunu söyle
yerleşik işlevleri kullanarak diğerinin verileri üzerinde bir gösterge oluşturun
ve hatta tüm bunların testler sırasında beklendiği gibi alt pencerede görüntülenmesi için,
örneğin RSI verilerinde MA?
Ancak, genel olarak, neredeyse doğrudur. Bir gösterge yazmak ve ondan değer almak, iMAOnArray için bir diziyi doldurmaktan daha kolaydır. Ama neden iki döngü?
Ama neden iki döngü?
göstergenin ilk başlatılmasını veya geçmiş verilerin yüklenmesini kontrol etmemek
bazen kod daha kompakt ve koşul kontrolü kullanmak için / for için ek bir if ve ardından koşul karşılandıktan sonra döngü deyimleri kullanmaktan daha verimlidir
iMAOnArray() hesaplama kodunu RSI verileriyle dizi doldurma döngüsüne "bağlarsanız", rsiBuffer[] dizisinde hala doldurulmamış e-postaların yanlış hesaplamaları olacaktır.
örnekte tüm dizi öğeleri için iMAOnArray() hesaplaması kullandığımı (toplam = 0) not edin, bu soruyu birkaç ay önce inceledim, ancak ne yazık ki, iMAOnArray() öğesinin ve https parametresinin nasıl doğru kullanılacağına dair özel bir bilgi yok ://docs.mql4.com/ru/indicators/imaonarray
int toplam, // eleman sayısı
iMAOnArray() konusunu tartışan başlık https://www.mql5.com/ru/forum/303372/page2#comment_10617854
Bu, bir göstergede nasıl yapılacağına bir örnektir. Ve soru danışmanla ilgiliydi.
sorunun bu olduğundan emin misin
ve hatta tüm bunların testler sırasında beklendiği gibi alt pencerede görüntülenmesi için,
))))))
göstergenin ilk başlatılmasını veya geçmiş verilerin yüklenmesini kontrol etmemek
bazen kod daha kompakt ve koşul kontrolü kullanmak için / for için ek bir if ve ardından koşul karşılandıktan sonra döngü deyimleri kullanmaktan daha verimlidir
sorunun bu olduğuna emin misin
))))))
)))) Bu, dikkatsizliğime ilk düştüğüm zaman değil. Göstergeyi okumadım bile.
Ama ek hakkında eğer
bu şu şekilde yazılabilir
Bu tür kayıtları kullanmıyor musunuz?Igor Makanu :
...Bu soruyu birkaç ay önce inceledim ama ne yazık ki, iMAOnArray() işlevinin ve parametresinin https://docs.mql4.com/en/indicators/imaonarray doğru şekilde nasıl kullanılacağına dair özel bir bilgi yok
int toplam, // eleman sayısı
Basit bir ortalamadan daha fazlasına ihtiyacınız olduğunda öğelerin sayısı önemlidir. Hangi MA türlerinin hesaplamalarında önceki değerlerini kullandığını önceden hatırlamıyorum. Bu durumda, eleman sayısı sonucu etkileyecektir. Ancak genel olarak, mql5'te bu yarım dürtme ile çözülür ve artık ilgilenmiyorum.
Bu tür kayıtları kullanmıyor musunuz?
Kullanıyorum, ancak genellikle kodlarımı "iki geçişte" yazarım - sıfırdan yazarken, if () koşullarıyla "fonetik analiz" (aslında yüksek sesle okumak için) için anlaşılabilir yapılar kullanırım, hepsini telaffuz etmek daha kolay)))
o zaman evet biraz “kodu birleştirip” benzer yapılar yapabilirim ama genelde bunu hazır örnekler (kodlar) kitaplığımda kullanırım
Not: bir yerde C#'daki programların performansını iyileştirmeyle ilgili bilgilerle karşılaştım , foreach() operatörünü ve bu operatörü kullanmaktan kaçınmaya çalışmak için öneriler olduğunu kesin olarak biliyorum. : - if () operatörü daha üretken gibi, ancak bunun kritik olmadığını düşünüyorum - uygun olarak kullanacağım
Basit bir ortalamadan daha fazlasına ihtiyacınız olduğunda öğelerin sayısı önemlidir. Hazırlıksız, hangi MA yardımcılarının hesaplamalarında önceki değerlerini kullandığını hatırlamıyorum. Bu durumda, eleman sayısı sonucu etkileyecektir. Ancak genel olarak, mql5'te bu yarım dürtme ile çözülür ve artık ilgilenmiyorum.
daha derin bir sorun var, bu forumda ve İngilizce olarak bir arama yaptım. forumda tartışmalar ve kullanım örnekleri vardı, iMAOnArray() hesaplamaları total = 0 veya total !=0 parametresinden farklıdır - Igor ile tartışırken (yukarıdaki bağlantı), kendim için iMAOnArray()'i yalnızca toplam = ile kullanmaya karar verdim = 0 parametre - eski tartışmalarda aynı çözüm vardı
daha derin bir sorun var, bu forumda ve İngilizce olarak bir arama yaptım. forumda tartışmalar ve kullanım örnekleri vardı, iMAOnArray() hesaplamaları total = 0 veya total !=0 parametresinden farklıdır - Igor ile tartışırken (yukarıdaki bağlantı), kendim için iMAOnArray()'i yalnızca toplam = ile kullanmaya karar verdim = 0 parametre - eski tartışmalarda aynı çözüm vardı
Bu doğru. Dizinin tüm öğelerini almazsanız ve EMA'yı bile hatasız almaya çalışırsanız, zor olacaktır.
Üstel Hareketli Ortalama (EMA)
Üstel olarak yumuşatılmış bir hareketli ortalama, önceki hareketli ortalamaya mevcut kapanış fiyatının belirli bir yüzdesinin eklenmesiyle belirlenir. Üstel hareketli ortalamalar kullanıldığında, en son kapanış fiyatları daha fazla ağırlığa sahiptir. Bir p yüzdesi üstel hareketli ortalama şöyle olacaktır:
EMA = (KAPAT (i) * P) + (EMA (i - 1) * (100 - P))
nerede:
KAPAT (i) — cari dönemin kapanış fiyatı;
EMA (i - 1) — önceki dönemin hareketli ortalamasının değeri;
P, fiyat değerinin kullanım payıdır.
Bu nedenle, 30 öğelik bir diziden 30. periyodun EMA'sını sayarsanız, EMA yerine basit bir MA elde edersiniz.
Bu doğru. Dizinin tüm öğelerini almazsanız ve EMA'yı bile hatasız almaya çalışırsanız, zor olacaktır.
Bu nedenle, 30 öğelik bir diziden 30. periyodun EMA'sını sayarsanız, EMA yerine basit bir MA elde edersiniz.
iMAOnArray() öğesini kontrol ettim - sonuçlar tahmin edilemez, bazen 2 * MA dönemi kullanabilirsiniz, bazen daha fazlasına ihtiyacınız vardır, toplam = 0 kullanırsanız, yine de hesaplama için bir kez kullanabilirsiniz ve çok sık kullanırsanız, o zaman terminal kilitleniyor olacak
peki, nadiren iMAOnArray() kullanırım
if (response == 0) {
Print("Что-то пошло не так");
// потом уже добавите диагностику из WinAPI
return false;
}
ve normal dönüşten önce sonucu da yazdırın
Print(" всё хорошо, результат:" toStr);
return toStr;
ve tüm kodu bir zamanlayıcıda, örneğin dakikada bir çalıştırın. Sizi kesinlikle yasaklamayacak ve kontrol edebilmeniz için her zaman farklı, ancak öngörülebilir bir zaman veren bir kaynak üzerinde eğitim alın.
----
telepatik olarak - eğer sorun gerçekten böyleyse,
ya başlatma işlemi yanlış yapıldı (WinSOCK'un InternetOpenW için başlatılması gerekip gerekmediğini hatırlamıyorum)
veya bazı kaynaklar serbest bırakılmaz.
her şeyi ekledi! Yazdır'da hiçbir şey görüntülenmiyor!!
Bir değişkeni grafikte göstermeden veri penceresinde nasıl gösterebilirim?
Nedense belgelerde bulamıyorum.
Bir değişkeni grafikte göstermeden veri penceresinde nasıl gösterebilirim?
Nedense belgelerde bulamıyorum.