MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 624
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Bu şekilde değiştirilecek
kodda çok hata var
fiyatları normalleştirmeniz gerekiyor, o zaman işe yarayacak, ardından "yanlış fiyatlar" vermek için bir sunucu hatası olacak, StopLoss_SELL'i daha yüksek normalleştirmek istenir
ve büyük olasılıkla zararı durdurmanın sıfıra eşit olup olmadığını kontrol etmeniz gerekir ve eşitlik için gerçek sayıları karşılaştırmak istenmez, > veya < için gerçek sayıları karşılaştırmaya çalışmanız gerekir.
Göstergedeki hatayı düzeltmeye yardımcı olur, günün en yüksek ve en düşük noktalarını saatin son mumundayken çekmez.
Burada bir gösterge çizdim, kodunuzdaki stringlerle çalışmayı sevmedim, daha kolay yazardım, işte bir örnek. Sunucu zaman farkını da hesaba katacak bir göreviniz olsa da,
benim örneğim de örnek değil hızlı yazdım bence tarihin sonundan başlangıca kadar saymamak gerekliydi ama sıfır çubuğundan tarihe doğru ise kod daha kısa olurdu ve geçerli gün daha hızlı hesaplanabilir - döngü daha küçük olurdu,
ama kontrol ettiğim test cihazında sorunsuz çalışıyor gibi görünüyor, öyle olsun, zaten geç oldu, uyumak istiyorum... Kötü bir örnek verdim (((
kodda çok hata var
fiyatları normalleştirmeniz gerekiyor, o zaman işe yarayacak, ardından "yanlış fiyatlar" vermek için bir sunucu hatası olacak, StopLoss_SELL'i daha yüksek normalleştirmek istenir
ve büyük olasılıkla zararı durdurmanın sıfıra eşit olup olmadığını kontrol etmeniz gerekir ve eşitlik için gerçek sayıları karşılaştırmak istenmez, > veya < için gerçek sayıları karşılaştırmaya çalışmanız gerekir.
Pekala. Kodda piyasa emirlerini neden değiştirmediğini az önce gösterdim: piyasadan gelen bir durdurma talebi 0 döndürür.
Burada bir gösterge çizdim, kodunuzdaki stringlerle çalışmayı sevmedim, daha kolay yazardım, işte bir örnek. Sunucu zaman farkını da hesaba katacak bir göreviniz olsa da,
benim örneğim de örnek değil hızlı yazdım bence tarihin sonundan başlangıca kadar saymamak gerekliydi ama sıfır çubuğundan tarihe doğru ise kod daha kısa olurdu ve geçerli gün daha hızlı hesaplanabilir - döngü daha küçük olurdu,
ama kontrol ettiğim test cihazında sorunsuz çalışıyor gibi görünüyor, öyle olsun, zaten geç oldu, uyumak istiyorum... Kötü bir örnek verdim (((
İndikatördeki kodum değildi, internette buldum, indikatör nasıl yazılır bilmiyorum. :)
Neden kötü bir örnek yaptılar, göstergenizi gerçekten beğendim, test cihazında çalışıyor ve gerçek grafiklerde her şeyi doğru gösteriyor.
Hızlı yardımınız için çok teşekkürler!
Kanalın çizdiği çizgileri kaldırmanızı rica edebilir miyim? Ekranda kırmızı oklarla işaretledim.
Ve hiç zorlaştırmıyorsa, lütfen o günkü çizgi oluşumunu devre dışı bırakma / etkinleştirme işlevini ekleyin. Ekranda mavi oklarla işaretledim. https://prnt.sc/kuuj3e
Şimdiden teşekkürler!
Merhaba canım!
Bana OnInit() prosedürünü nasıl uygulayacağımı söyle;
EA değişkenlerini değiştirdikten sonra!?
Uzman Danışmanı bir çizelgeye yerleştirirken OnInit() vardır; ve değişkenleri değiştirirken orada değil!?
EA değişkenlerini değiştirme olayı nasıl izole edilir!?
Lütfen bunun nasıl yapılacağına dair daha fazla kodla yardım edin!?
Merhaba canım!
Bana OnInit() prosedürünü nasıl uygulayacağımı söyle;
EA değişkenlerini değiştirdikten sonra!?
Uzman Danışmanı bir çizelgeye yerleştirirken OnInit() vardır; ve değişkenleri değiştirirken orada değil!?
EA değişkenlerini değiştirme olayı nasıl izole edilir!?
Lütfen bunun nasıl yapılacağına dair daha fazla kodla yardım edin!?
bu kodu deneyin, EA günlüğündeki mesajı okuyun (TF'yi değiştirin, bir değişken girin, EA'yı kapatmadan terminali yeniden başlatın...)
ve ikinci seçenek, global görünürlük düzeyinde statik değiştiricili bir değişkeni tanımlamaktır.
bu kodu deneyin, EA günlüğündeki mesajı okuyun (TF'yi değiştirin, bir değişken girin, EA'yı kapatmadan terminali yeniden başlatın...)
ve ikinci seçenek, global görünürlük düzeyinde statik değiştiricili bir değişkeni tanımlamaktır.
Statik değiştirici ile küresel düzeyde ????? Bu biraz sapkınlık.
Statik değiştirici ile küresel düzeyde ????? Bu biraz sapkınlık.
Eh, küresel düzeyde ve statik olmadan çalışacağının farkındayım, ancak deneyime göre, MT4 yapıları daha önce sık sık güncellendiğinde, "yaz" cevabını dinlemektense C++ klasiklerine göre yazmak daha iyidir. kod doğru" geliştiricilerle iletişim kurarken
Not: Bir MQL programının yürütülmesi sırasında bir değişkenin "değerini kaybetmemeyi" garanti etmeniz gerekiyorsa, neden statik değiştiriciyi global düzeyde yazmaya başladığımı hatırladım, daha önce (5 yıl önce) # yoktu. özellik katı ön derleyici yönergesi ve dosyaları eklerken (#include veya library - zaten hatırlamıyorum) bir keresinde “değişkenimi kaybettim” çünkü değişken adları her zamanki gibi dahil edilen dosyayla çakıştı - MQL'yi azarladım, sonra yanlışlıkla bu yanlış anlaşılmayı buldum, ancak statik değiştiriciyi yazarsanız, derleyici derlerken bir hata verdi
Şimdi MT4 derleyicisi oldukça kullanışlı ve güvenilir ve #property katı yönergesi ile bu tür önlemler gerekli olmayabilir, ancak bir değişkenin "değerini kaybetmek" istemediğimde statik alışkanlıktan yazıyorum
ZYZY: Bu değiştirici MQL programının yürütme hızını etkilemez ve bir süre sonra kodumu açıp statik görmem benim için uygun, bu değişkende "kaybetmemek" için önemli olan değerin olduğundan emin olacağım. program yürütme sırasında
Eh, küresel düzeyde ve statik olmadan çalışacağının farkındayım, ancak deneyime göre, MT4 yapıları daha önce sık sık güncellendiğinde, "yaz" cevabını dinlemektense C++ klasiklerine göre yazmak daha iyidir. kod doğru" geliştiricilerle iletişim kurarken
Not: Bir MQL programının yürütülmesi sırasında bir değişkenin "değerini kaybetmemeyi" garanti etmeniz gerekiyorsa, neden statik değiştiriciyi global düzeyde yazmaya başladığımı hatırladım, daha önce (5 yıl önce) # yoktu. özellik katı ön derleyici yönergesi ve dosyaları eklerken (#include veya library - zaten hatırlamıyorum) bir keresinde “değişkenimi kaybettim” çünkü değişken adları her zamanki gibi dahil edilen dosyayla çakıştı - MQL'yi azarladım, sonra yanlışlıkla bu yanlış anlaşılmayı buldum, ancak statik değiştiriciyi yazarsanız, derleyici derlerken bir hata verdi
Şimdi MT4 derleyicisi oldukça kullanışlı ve güvenilir ve #property katı yönergesi ile bu tür önlemler gerekli olmayabilir, ancak bir değişkenin "değerini kaybetmek" istemediğimde statik alışkanlıktan yazıyorum
ZYZY: Bu değiştirici MQL programının yürütme hızını etkilemez ve bir süre sonra kodumu açıp statik görmem benim için uygun, bu değişkende "kaybetmemek" için önemli olan değerin olduğundan emin olacağım. program yürütme sırasında
Değişken adları, eklenen dosyadaki adlarla eşleşirse, derleyici bir uyarı verir. Benim için bir uyarı bir hataya eşittir ve ben de onlara aynı şekilde tepki veriyorum. Ve statik değiştiricili küresel düzeydeki değişkenler tereyağına eşittir.
Ama ... böyle yazmayı seviyorsan, kimse sana bunu yasaklayamaz.
Ama ... böyle yazmayı seviyorsan, kimse sana bunu yasaklayamaz.
bu konudaki benzersizliğim hakkında şüpheler içeri girdi... ee, yalnız değilim, MQL5 klasöründe arama yaparak, MT5 teslimatından çeşitli kaynaklarda küresel düzeyde statik değiştiricili bu tür duyurular var
Kaynak kodundaki "RASTGELE KARAR ORMANINDA TAKVİYE ÖĞRENME" makalesinde bile global düzeyde bir duyuru buldum: static datetime last_time=0;
yani öyle bir şekilde yazdım ki, altını çizmeyi gerekli görüyorum ve yapacağım ama global düzeydeki değişkenlerin %100'ünü statik olarak tanımlamıyorum.
Kasayı Allah korumuş, dedi rahibe...))))