[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 419
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Program çıktısı olarak fiyat olarak EMA seviyesi nasıl yapılır? Diyelim ki ЕМА1 periyodu (1), ЕМА2 periyodu (0), ЕМА1 eşittir 1.3321 ve ЕМА2 cari dönem için 1.3200. (EMA1-EMA2) ifadesinin sonucunun 0.0121'e eşit olması gerekir. Kontrol etmek için komut dosyasını çalıştırdığınızda, uyarı sıfır değerini gösterir, ancak bunun "0.0121" olması gerekir. Bu sorun nasıl çözülür?
Program çıktısı olarak fiyat olarak EMA seviyesi nasıl yapılır? Diyelim ki ЕМА1 periyodu (1), ЕМА2 periyodu (0), ЕМА1 eşittir 1.3321 ve ЕМА2 cari dönem için 1.3200. (EMA1-EMA2) ifadesinin sonucunun 0.0121'e eşit olması gerekir. Kontrol etmek için komut dosyasını çalıştırdığınızda, uyarı sıfır değerini gösterir, ancak bunun "0.0121" olması gerekir. Bu sorun nasıl çözülür?
Senaryonun kendisini görmek mümkün mü? - Muhtemelen, ya çift yerine bir tamsayı almak için yanlış veri tipini kullanıyorsunuz (bu nedenle, sıfıra yuvarlanmıştır) ya da sıfır değerine yol açan başka bir şey kullanıyorsunuz: kod olmadan anlamak zor.
Bu arada, daha önce yazdıklarınızı kontrol etmek için bir komut dosyası kullanırsanız, hata komut dosyasının kendisinde (muhtemelen özellikle göstergenizi kontrol etmek için yazılmıştır) veya göstergenin kendi kodunda olabilir.
Yazmanızı önerdiğim siparişlerinizin filtrelenmesi doğru yazılırsa ve hesaplamalarınızda komisyon ve takasları da hesaba katarsanız, her şey yolunda gider.
görünüşe göre çok zor bir yol vermişsin.
Hiçbir şey yapamam.
Aşağıdakileri aptalca örneğinize ekledim:
Bir rakam veriyor, ama gerçeklikten uzak.
Her şeyin çalışması için 12 sayısını girmem gereken özellikle aptal olanlar için GÖSTERİR MİSİNİZ? Çünkü “sipariş filtreleme” hakkında hiç bilgim yok ....
görünüşe göre çok zor bir yol vermişsin.
Hiçbir şey yapamam.
Aşağıdakileri aptalca örneğinize ekledim:
Bir rakam veriyor, ama gerçeklikten uzak.
Her şeyin çalışması için 12 sayısını girmem gereken özellikle aptal insanlar için GÖSTERİR misiniz? Çünkü “sipariş filtreleme” hakkında hiç bilgim yok ....
Fonksiyonun tam kontrolü için tüm ara hesaplamalar grafikte gösterildi.
Size sadece kodu yazmanız kalıyor.
İki yol vardır: ya kendiniz bulun (ve örnekler kullanarak - size çalışan bir senaryo verdim) ya da sizin için her şeyi yapacak birini arayın.
Not Aniden bunu çözme arzusu varsa, buradan başlayabilirsiniz.
Senaryonun kendisini görmek mümkün mü? - Muhtemelen, ya çift yerine bir tamsayı almak için yanlış veri tipini kullanıyorsunuz (bu nedenle, sıfıra yuvarlanmıştır) ya da sıfır değerine yol açan başka bir şey kullanıyorsunuz: kod olmadan anlamak zor.
Bu arada, daha önce yazdıklarınızı kontrol etmek için bir komut dosyası kullanırsanız, hata komut dosyasının kendisinde (muhtemelen özellikle göstergenizi kontrol etmek için yazılmıştır) veya göstergenin kendi kodunda olabilir.
Fonksiyonun tam kontrolü için tüm ara hesaplamalar grafikte gösterildi.
Size sadece kodu yazmanız kalıyor.
İki yol vardır: ya kendiniz bulun (ve örnekler kullanarak - size çalışan bir senaryo verdim) ya da sizin için her şeyi yapacak birini arayın.
Not Aniden bunu çözme arzusu varsa, buradan başlayabilirsiniz.
Teşekkürler, kesinlikle çözmeye çalışacağım
Programın fiyat olarak EMA düzeyi çıktısı nasıl alınır? Diyelim ki ЕМА1 periyodu (1), ЕМА2 periyodu (0), ЕМА1 eşittir 1.3321 ve ЕМА2 cari dönem için 1.3200. (EMA1-EMA2) ifadesinin sonucunun 0.0121'e eşit olması gerekir. Kontrol etmek için komut dosyasını çalıştırdığınızda, uyarı sıfır değerini gösterir, ancak bunun "0.0121" olması gerekir. Bu sorun nasıl çözülür?
Hesaplamalarda int değil, double türündeki değişkenleri kullanın;
NormalizeDouble(sayı1-sayı2, istenen kesinlik) ifadesinin sonucunu hesaplarken normalleştirmeyi kullanın;
sonucu ekranda görüntülemek için kullanın (günlükte) DoubleToStr(alınan sonuç, istenen doğruluk);
Kodunuz olmadan söylenecek başka bir şey yok ...
Haklısın, EMA'yı int'den double'a kaldırdım ve her şey olması gerektiği gibi oldu.
Sonuç olarak: Tabii ki, ilgi uğruna, yalnızca genel bir tanım verdiğiniz için koşulları daha ayrıntılı olarak açıklamanızı isteyebilirim: gecikmeler robot tarafından ne zaman kuruldu (önceden veya değil; manuel olanlar) zaman olarak robotla yaklaşık olarak aynıdır veya değildir, vb.). Ama yine de, bu durumda, sadece komisyoncu ile uğraşmak zorunda kalacaksınız, çünkü. muhtemelen işlemlerin yürütülmesini sıraya koyan kendi iş parçacığına sahiptir. Diyelim ki, sıranızın önce manuel bir ertelemesi varsa, o zaman ertelemelerin yürütme süresi farklı olacaktır (diğer müşterilerin kuyruğu dahil), bu nedenle fiyat da farklı olabilir. Ve eğer robot sinyal oluşturma periyodu sırasında gecikmeler yaparsa, o zaman kuyruğa girmek tekrar belirgin değildir - bu nedenle uygulama fiyatında kaymalar mümkündür. Hakkında hiçbir şey yazmadığınız pozisyonların boyutu da etkileyebilir... vb...
Ama ... hepsi aynı, sadece bir komisyoncu (DC) ile öğrenebilirsiniz. Ve sanırım bahsetmediğim bir sürü sebep bulacaktır. - Ve tavsiye doğruydu: elbette, bekleyen siparişler için taleplerinizin taşındığını düşünüyorsanız, ellerinize ve komisyoncuya giriş yapın. Ancak sadece 2 farklı kavramı karıştırmayın: Bekleyen Emir ve bu Bekleyen Emir için bir Anlaşma. Bekleyen Emir, beyan edilen hacimle herhangi bir en yakın fiyattan piyasaya girmek için verilen bir emirdir. Anlaşma, beyan edilen para miktarı (lot) için emrinizi gerçekleştirmeyi başardığınız fiyattır. - Ve bu emirlerin fiyatları büyük olasılıkla (özellikle size link verilen hızlı piyasada) farklılık gösterecektir. Limit emirleri için - emir fiyatı ve uygulama fiyatı eşittir (tanım gereği).
Ve komisyoncu ve demo ile gerçeğin farklı olmaması gerçeği - bu iyi! - Bu, komisyoncunun müşterileri çekmek için (sizin sözlerinizden) hile işlemleri yapmadığını gösterir. - Bu durumda anlaşmazlık görülmez.
Bu kadar ayrıntılı bir cevap için teşekkür ederim, neyin ne olduğu belli oldu. Anında Yürütme emri yürütme sistemi kullanılarak bu sorun çözülecek mi?
Söylemediğim şartlara gelince:
Robot, gecikmeleri manuel olarak ayarlananlardan daha erken ayarladı, ancak bunlar haberlere göre değiştirildi.
İşlem hacmi aynıydı, mesafeler aşağı yukarı aynıydı.
genel koşullarda neredeyse tamamen benzerdi
Geçerli gün, mevcut D1 çubuğunun başlangıcından başlar (iTime (NULL, PERIOD_D1, 0)), AMA kolay yollar aramıyor musunuz?! :)))
İşte sorun burada ortaya çıktı.
her şey çalışır, ancak yalnızca BİR kez. Onlar. Bir günün dönemini (iTime (NULL, PERIOD_D1 , 0)) ayarlarsam, ertesi gün artık çalışmaz.
test etmek için test kodu yazdı