[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 276
![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 dosyalardan (önceden MT4'te gömülü olan) bir işlevi kullanırken (çağırırken), danışmanın yanlış çalışması durumunda, kodda yaptığımız hatanın numarasını günlükte görebiliriz.
Örneğin, GetLastError() işlevini çağırırız:
Bu durumda, kodda bir hata yaptıysak veya harici parametreleri yanlış ayarladıysak, bu hatanın numarası logda gösterilecektir.
Örneğin, - 130.
Ve sayfadaki sayının kodunun çözülmesine bakabilirsiniz - https://book.mql4.com/ru/appendix/errors
Ve artık kodun tamamını kürek çekmemize gerek kalmayacak, çünkü bu numaradan zaten biliyoruz - hatanın tam olarak nerede yapıldığını!
Biraz ince ayar yapacağım: GetLastError işlevi bir başlık dosyası olmadan çağrılır, ancak sitelerde gezinmeden hatanın açıklamasını almak için zaten kitaplığı eklemeniz gerekir:
Fonksiyonu yanlış çağırdınız.
Bunu şöyle adlandırdınız: if (NumberOfPositions(NULL,Magic)> 1)
Ve şöyle olması gerekiyor:
Farkı hissedin ("-1"i kaçırdınız)! ve KODUNUZU DÜZELTİN.
Ve kontrol için grafikte yorumları görüntüleyebilirsiniz. Örneğin, bunun gibi (BAŞLAT işlevinin en başında)
İkinci koşulunuza gelince, ben ("daha fazla uzatmadan"), ikinci koşula göre pozisyonları açmak için başka bir sihir ve ayrı bir Open_Buy_2() işlevi ayarlardım!Ardından ikinci koşulun kodu şöyle görünür:
kurtulmak
Teşekkürler, hatayı düzelttim, ikinci koşulun neden çalışmadığı da anlaşıldı, muhtemelen görevi doğru açıklamadım:
Danışmanın, prensipte, emirlerin kendisi tarafından açılıp açılmadığını, bu emirler uzun zaman önce kapatılmış olsa bile ayırt etmesi gerekir. NumberOfPositions çalışır, ancak mevcut açık pozisyonların sayısını sayar, eğer pozisyon kapalıysa, o zaman değer sırasıyla sıfırdır. (bu yüzden çalışmıyor)
EA kodumda, önceki pozisyonun verilerini dikkate alarak sonraki her pozisyonu açan bir komut dosyası var ve henüz önceki pozisyonlar yoksa, ilk emir bu koşul olmadan açılmalıdır (aksi takdirde EA basitçe açmaz). Başlat). Bunları ayırmak için, bu Expert Advisor'ın en az bir siparişinin açılıp açılmadığını (sipariş daha sonra kapatılmış olsa bile) anlayan bir fonksiyon olması gerektiği ortaya çıkıyor. Henüz sipariş yoksa (işin başlangıcı), ikinci koşul dikkate alınmadan ilk sipariş açılır ve sonraki tüm siparişler ikinci koşul dikkate alınarak açılır, yani. geçmiş siparişlere göre.
Fonksiyonu bu şekilde ayarlamak mümkün mü?
Lütfen bana iTime işlevinin ne gösterdiğini söyleyin.
Bu 10 basamaklı abra-kadabra nedir? saniye?
Nasıl yıl-ay-gün-saat-dakika'ya dönüştürülürler?
Açık. Tarihte bunun gibi pozisyonlar olup olmadığını belirleyebilirsiniz:
Ancak o zaman kodunuz yalnızca test cihazında çalışır. Çünkü Aksi takdirde, çevrimiçi danışmanı her açtığınızda sihri değiştirmeniz gerekecektir.
Görünüşe göre, hesap geçmişinin alındığı zamanı ayarlamanız gerekiyor.
Onlar. verilen büyü ile en son ne zaman anlaşma açıldı/kapatıldı? Altı ay önce mi yoksa bir gün önce mi?
Fonksiyonlar var, kedi. son anlaşmanın açılış veya kapanışının çubuk numarasını (geçmişin derinliklerinde mevcut olandan sayarak) döndürür.
Örneğin. Bu işlevleri kodumda şöyle kullandım:
Veya bunun gibi:
Hmm.Aynı basit problemden ben de muzdaribim.. bir pozisyon denizi açıyor ve artık sadece 1'e ihtiyacınız yok ve satın alma kapandığında ve bir satış açma sinyali geldiğinde... Lütfen bana söyleyin ve ne olduğunu düzeltin. yanlış. aşağıdaki kodda.. Ve sihri nereye yazmanız gerekiyor? Sizin için zor değilse, aptal bir test örneği yapın Böylece çaprazlama yaparken, satın alın (1'den fazla değil) ve aşağı, ayrıca 1'den fazla satmayın. Bunun birçok yeni başlayanın sorularını hemen çözeceğini düşünüyorum. Şimdiden teşekkürler
Başka bir aptal soru:
- Öğe sayısı harici bir değişken tarafından verilen bir dizi nasıl bildirilir.
Bunun gibi -
Başka bir aptal soru:
- Öğe sayısı harici bir değişken tarafından verilen bir dizi nasıl bildirilir.
https://docs.mql4.com/en/array/ArrayResize
Hmm.Aynı basit problemden ben de muzdaribim.. bir pozisyon denizi açıyor ve artık sadece 1'e ihtiyacınız yok ve satın alma kapandığında ve bir satış açma sinyali geldiğinde... Lütfen bana söyleyin ve ne olduğunu düzeltin. yanlış. aşağıdaki kodda.. Ve sihri nereye yazmanız gerekiyor? Sizin için zor değilse, aptalca bir test örneği yapın Böylece çaprazlama yaparken, satın alın (1'den fazla değil) ve aşağı, ayrıca 1'den fazla satmayın. Bunun birçok yeni başlayanın sorularını hemen çözeceğini düşünüyorum. Şimdiden teşekkürler
Şu şekilde deneyin:
(f-ve NumberOfPositions() değerlerini daha dikkatli bir şekilde ayarlamanız gerekir, çünkü başlık boşuna değil:
/| Açıklama : | Açıklama : Konum sayısını döndürür.
//| Seçenekler: |
//| sy - alet adı ("" veya NULL - geçerli sembol) |
//| operasyon - operasyon ( -1 - herhangi bir pozisyon) |
//| mn - MagicNumber ( -1 - herhangi bir büyü) |
//+------------------------------------------- ------------------------------+