Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 115
![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
İnsanların böyle bir sorusu var - bir değişkenin değerlerini tek boyutlu bir diziye nasıl koyabilirim?
Yardıma göndermeyin - benzer bir görev için HİÇBİR örnek yoktur.
Diyelim ki belirli koşullar altında değişen bir a değişkeni var.
Diziye yazılması için bu değişkenin son 3 değerine ihtiyacım var. mql4'te nasıl uygulanır?
int mas[3] yazıyorum;
kütle[]=a; bir değişikliğin olduğu koşuldan sonra döngü içinde,
ama mantıklı olması gerektiği halde nifiga çalışmıyor. derleyici ']' - ifade bekleniyor, parantez içindeki mas[]=a içine bilinmeyen bir ifade koymamı istiyor.
MQL4'te, döngünün her yinelemesinde diziyi değişkenin değeriyle dolduracak herhangi bir işlev var mı?
Yazışmanın başlangıcını bulamadığım için özür dilerim, ancak bunlarda karmaşık koşullardan ve hesaplamalardan kaçınmanızı derhal tavsiye etmek istiyorum - bu, kodu okunamaz hale getirir ve sonuç olarak mantıksal hataları aramayı zorlaştırır, bunun gibi kod:
Neyin tehlikede olduğunu anlıyorsanız o zaman verdiğim kodu biraz daha değiştirebilirsiniz, onu ayrı bir duruma taşımaktan bahsediyorum if ( OrderType () == OP_BUY....
o zaman mantıksal hataları bulmak çok daha kolay olacak, IMHO
Her OrderSend'den sonra ekle => iade
veya switch ile bir seçim yapın:
deniyorum ve çalışmıyor.
özel gösterge çağrısında birkaç giriş parametreniz var - Morning Flat göstergesinde kaç tane harici değişken olduğunu sayın? (harici) - bu, iCustom'u kullanırken iletmeniz gereken aynı sayıda parametredir
.....
int mas[3]=a; bir değişikliğin olduğu koşuldan sonra döngü içinde,
ama mantıklı olması gerektiği halde nifiga çalışmıyor.
Tüm eylemleri bir kerede değil, adım adım yapmayı öğrenin.
Misal :
özel gösterge çağrısında birkaç giriş parametreniz var - Morning Flat göstergesinde kaç tane harici değişken olduğunu sayın? (harici) - bu, iCustom'u kullanırken iletmeniz gereken aynı sayıda parametredir
Hepsini çoktan geçtim.
Sorunu farklı bir şekilde çözdü. Göstergeden fiyat hesaplama kodunu Expert Advisor'a ekledim.
tam olarak budur - kodun mantığı aynıdır, sadece koşulları bölerseniz, mantıksal hatanın nerede olduğunu çabucak bulacaksınız, sizin durumunuzda, eğer çıkarırsanız:
ayrı bir koşulda, kod optimizasyonu elde ederiz - koşul, örneğinizdeki gibi 4 kez değil, bir kez kontrol edilecektir.
Çıktıyı uzman günlüğüne şu şekilde gönderin:
kodun hangi bölümünün yürütüldüğünü ve hangi parametrelerle yürütüldüğünü görmek için günlükler yazmak
Cevap için teşekkürler. Koşulları sınırına kadar ezdim. Mantığını yorumlarla kontrol ettim. İlk açık pozisyonu kapatma şartlarına göre pozisyonların kapatıldığı ortaya çıktı. Yani, önce kapanma koşulu 1 olan bir AL veya HÜCRE açtıysanız ve ardından ikinci bir benzer pozisyon açıldı, ancak kapanma koşulu 2 ile bu kapatma koşulu yok sayılır ve diğer sihire rağmen ikinci konum yok sayılır. , ayrıca koşul 1'e göre kapalıdır Ve ne yapmalı?
Hepsini çoktan geçtim.
Sorunu farklı bir şekilde çözdü. Göstergeden fiyat hesaplama kodunu Expert Advisor'a ekledim.
peki, demek oluyor ki, iCustom() öğesini doğru bir şekilde çağırmadığınızı fark ettim, şöyle olmalıydı:
Göstergeyi çağırırken 7 parametreyi geçiyorum ve sen 3 parametre ile aradın
Gösterge çağrısını bırakırdım, ancak göstergenin kendisini değiştirirdim - gösterge kodundaki gereksiz harici değişkenleri ve grafik nesneleri kaldırırdım
Mantığını yorumlarla kontrol ettim. İlk açık pozisyonu kapatma şartlarına göre pozisyonların kapatıldığı ortaya çıktı.
tebrikler! Doğru yoldasınız, ancak hata ayıklama aşamasında bir yorum (Cometn() ) yerine günlüğe çıktı almak (Print()) daha iyidir
kodu göster
peki, demek oluyor ki, iCustom() öğesini doğru bir şekilde çağırmadığınızı fark ettim, şöyle olmalıydı:
Göstergeyi çağırırken 7 parametreyi geçiyorum ve sen 3 parametre ile aradın
Gösterge çağrısını bırakırdım, ancak göstergenin kendisini değiştirirdim - gösterge kodundaki gereksiz harici değişkenleri ve grafik nesneleri kaldırırdım
tebrikler! Doğru yoldasınız, ancak hata ayıklama aşamasında bir yorum (Cometn() ) yerine günlüğe çıktı almak (Print()) daha iyidir
kodu göster
Kaldırılan baskılar.
Kaldırılan baskılar.
Kodunuzun tüm mantığını bilmiyorum, ancak her sipariş kapanışından sonra kesinlikle döngüden çıkmanız gerekiyor; ve bir sonraki onay işaretinde, koşullarınız için siparişleri tekrar kontrol edin - Sipariş kapatıldıktan sonra OrderSelect()'in nasıl davrandığını bilmiyorum - sipariş kapalıysa, o zaman aynı seçilen nedir? yoksa bir hata mı olacak?
Burada, prensipte sorununuz, her şeyi bir kerede kontrol etmek ve kapatmak istemenizdir, birkaç çözüm vardır:
değiştirmek()
veya bir fonksiyonda sipariş kapanışını düzenleyin (siparişler için hazır fonksiyonlar vardır https://www.mql5.com/en/forum/131859/page2#434206)
veya kodunuzdaki bir siparişi kapattıktan sonra ara kullanın
Kodunuzun tüm mantığını bilmiyorum, ancak her sipariş kapanışından sonra kesinlikle döngüden çıkmanız gerekiyor; ve bir sonraki onay işaretinde, koşullarınız için siparişleri tekrar kontrol edin - Sipariş kapatıldıktan sonra OrderSelect()'in nasıl davrandığını bilmiyorum - sipariş kapalıysa, o zaman aynı seçilen nedir? yoksa bir hata mı olacak?
Burada, prensipte sorununuz, her şeyi bir kerede kontrol etmek ve kapatmak istemenizdir, birkaç çözüm vardır:
değiştirmek()
veya bir fonksiyona sipariş kapatma işlemi yapın (siparişler için hazır fonksiyonlar vardır https://www.mql5.com/ru/forum/107476 )
veya kodunuzdaki bir siparişi kapattıktan sonra ara kullanın
Teşekkür ederim. mola yardımcı gibi görünüyordu. Bakalım bundan sonra ne olacak.