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
Fiyatın OrderOpenprice()'den 600 puan arttığını varsayalım, = StartTraillingStop (200) + 8(xai)*50
kod burada:
ancak kod, 0'dan 8'e kadar tüm xai'leri yapacak, diyelim ki kod xai = 4'te; bu durum doğru mu?
if ( ( ( OrderClosePrice() - OrderOpenPrice() ) / Figure ) >= ( StartTrailingStop + ( CummulativeValue * xai ) ) )
evet, o zaman SL şuna ayarlanacaktır: StartTraillinStop (200) + 4(xai)*50 (öncekiden aşağı gidiyor)
sonra xai 5, SL şuna ayarlanır: StartTraillinStop (200) + 5(xai)*50
vb., bu nedenle SL ayarlandıktan sonra ara vermek mümkün değildir;
juniorlcq Kodunuzu yeniden biçimlendirdiğiniz için okuması çok daha kolay. Göndermeyi küçültmek için biraz daha yeniden biçimlendirdim, olası sorunları vurguladım. Kodunuzun bazı izleri yürütmesini engelleyen "çift == çift hesaplanmış" sorununuz olabileceğini düşünüyorum. Hiç can price != price ile ilgili konuyu okudunuz mu?
Daha karmaşık hesaplamalar olduğu için en çok 2. ve 4. olanlardan şüpheliyim.
Gerçekten == yapıp yapmadıklarını görmek için Print() deyimlerini bu hesaplamalardan sonra koyun.
Kayan nokta hatası olarak bilinen hata, == olması gerektiği gibi görünse bile onları != yapabilir.
==, tamsayılarla kullanmak gerçekten yalnızca %100 güvenlidir, bu nedenle == öğesini bir test olarak <= veya >= olarak değiştirebilirsiniz.
Ayrıca bir yan not olarak: OrderOpenPrice(), OrderStopLoss(), OrderClosePrice() öğesini OrderSelect() döngünüzün başında bir kez çağırırsanız ve değerlerini geri kalanında kullanmak üzere yerel değişkenlere atarsanız kodunuz çok daha verimli olacaktır. kodun. Yerel değişkenler, işlev çağrılarından çok daha hızlı erişimdir, bu nedenle aynı sonuç için tekrarlanan işlev çağrıları yapmaktan kaçınmalısınız... Genel bir kural olarak, kodunuzda ne kadar çok pembe yazı varsa, EA'nın performansı o kadar yavaş olur.
Anlıyorum, çalıştıramıyorum, bu sipariş satın alma ile çalışabilir, SL açıklandığı gibi aşağı iniyor:
Ohhhhhhh bunu bilmiyordum. Teşekkürler WHRoeder :) .
Yani şu anlama mı geliyor,
Diyelim ki OrdersTotal() == 3 , for döngüsü için geri sayım ile ( int x = ( OrdersTotal() - 1 ) ; x >= 0 ; x-- ) x 1. değeri 2 olarak kaydedecek, sonra tekrar OrdersTotal()'a gitmeden for döngüsüne 2'den itibaren devam edin ??
juniorlcq Kodunuzu yeniden biçimlendirdiğiniz için okuması çok daha kolay. Göndermeyi küçültmek için biraz daha yeniden biçimlendirdim, olası sorunları vurguladım. Kodunuzun bazı izleri yürütmesini engelleyen "çift == çift hesaplanmış" sorununuz olabileceğini düşünüyorum. Hiç can price != price ile ilgili konuyu okudunuz mu?
Daha karmaşık hesaplamalar olduğu için en çok 2. ve 4. olanlardan şüpheliyim.
Gerçekten == yapıp yapmadıklarını görmek için Print() deyimlerini bu hesaplamalardan sonra koyun.
Kayan nokta hatası olarak bilinen hata, == olması gerektiği gibi görünse bile onları != yapabilir.
==, tamsayılarla kullanmak gerçekten yalnızca %100 güvenlidir, bu nedenle == öğesini bir test olarak <= veya >= olarak değiştirebilirsiniz.
Hayır o konuyu daha önce okumadım. Sadece yaptı.
Önerdiğiniz şey mantıklı geliyor. İkinci bir düşüncede, bazen MT4'te fiyat özellikleri üzerine çizgiler çizmek gerçekten 5 haneli fiyatı göstermez, bunun yerine bazen bundan daha fazlasını gösterir.
Ama işte önceki hesaplardan birinde dalgalı ticaretimden biri, basit bir baskı kodlamasıyla çiftin neye benzediğini görmek için onu yazdırdım. Tuhaf MQL4 Sanırım @.@ ?
Hala double == double bölümünü nasıl değiştirmem gerektiğini düşünüyorum .....
Ayrıca bir yan not olarak: OrderOpenPrice(), OrderStopLoss(), OrderClosePrice() öğesini OrderSelect() döngünüzün başında bir kez çağırırsanız ve değerlerini geri kalanında kullanmak üzere yerel değişkenlere atarsanız kodunuz çok daha verimli olacaktır. kodun. Yerel değişkenler, işlev çağrılarından çok daha hızlı erişimdir, bu nedenle aynı sonuç için tekrarlanan işlev çağrıları yapmaktan kaçınmalısınız... Genel bir kural olarak, kodunuzda ne kadar çok pembe yazı varsa, EA'nın performansı o kadar yavaş olur.
Ohhh, hız yürütmede büyük bir fark olacağını bilmiyordum, SDC kılavuzu için teşekkürler. İz durdurma çalışmaya başladıktan sonra rehberinize göre değiştirilecektir.
Son kod bloğunu bu hata ayıklama sürümüyle değiştirmeyi deneyin. Kodumu kontrol et , derlemedim.
Bu bir şeyi ortaya çıkarabilir, diğer == koşullarıyla da benzer bir şey yapabilirsiniz.
Son kod bloğunu bu hata ayıklama sürümüyle değiştirmeyi deneyin. xa ile benzer bir şey yapabilirsin
Bu bir şeyi ortaya çıkarabilir, diğer == koşullarıyla da benzer bir şey yapabilirsiniz.
Evet, sorunlar ortaya çıkıyor, bu "çift == hesaplanmış çift sorun". SDC sorununu belirttiğiniz için teşekkür ederiz.
Aynı sorunu daha önce de belirttiğiniz için teşekkür ederim , ancak doğru şekilde düzenlemedim ve sorun olmadığını düşündüm .
Yine de bir öneriye ihtiyacım var, 2. ve 3. için 2. for döngüsündeyse, içine "arasında" bir ifade koymak daha mı iyi? OrderStopLoss() gibi >= x + 1 && x - 1 ?? Yoksa sadece >= veya <= ??
Umarım WHR bunu okumaz, nöbet geçirir, ama ben size NormalizeDouble()'ı denemenizi söyleyeceğim .... eşit olmaları gerektiğinde bu koşulları eşit yapmalıdır. Bunu OrderStopLoss() tarafına da yapmak gerekli olmamalı, ancak yine de eşit gelmiyorsa, durumun her iki tarafına da yapmayı deneyebilirsiniz....