Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 112
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
Merhaba. Parti hesaplamasını Uzman Danışmanıma şu şekilde yazdım:
lot=NormalizeDouble(AccountBalance()*risk/(SL*MarketInfo(Symbol(),MODE_TICKVALUE))2));
Amaç, hesap para birimi ve çifti ne olursa olsun, verilen riskler için doğru lot büyüklüğünü elde etmek ve zararı durdurmaktır. risk Durdurma kaybı tetiklendiğinde kayıpların yüzdesi olarak ayarlanır. Kaybı Durdur SL puan cinsinden (burada bir nokta, çiftin fiyatındaki olası minimum değişikliktir). Bu danışmanı gerçek bir hesapta çalıştıracağım. Ancak şüpheler var. Daha deneyimli programcılardan biri size hangi hataların oluşabileceğini söylerse çok minnettar olacağım.İlk strateji test cihazı . Sonra bir demo hesabı. Ve ancak o zaman gerçek. Formülü test etmek için bir komut dosyası yazın. Ya da sadece kağıda güvenin. Bakiye aldı=100, risk=0,1 SL=100, Kene=0,00001 Parti=100*0,1 / (100*0,00001) = 10 / 0,001 = Bakiyeden 10000 lot fazla mı? Belki omuz dikkate alır?
MarketInfo(Symbol(),MODE_TICKVALUE)) minimum onay boyutunu döndürmez. Yardım diyor ki:
Mevduat para biriminde enstrümanın fiyatındaki minimum değişikliğin miktarı.
Ancak gerçekte, sözleşmenin 1 lotunun mevduat para biriminde enstrümanın fiyatındaki minimum değişikliğin maliyeti ortaya çıkıyor.
Verdiğiniz örnekte MarketInfo(Symbol(),MODE_TICKVALUE)) 1 değerini döndürür. Ve sonra her şey doğru. Gerçek dolar ve ruble hesaplarında bir komut dosyası ile kontrol ettim, her şey çalışıyor. İşte test ettiğim komut dosyası:
#property telif hakkı "Telif hakkı 2016, MetaQuotes Software Corp."
#özellik bağlantısı "https://www.mql5.com"
#özellik sürümü "1.00"
#mülkiyet katı
#özellik show_inputs
dış çift risk=0.10;
dış int sl=1000;
//+------------------------------------------- --------------------+
//| Komut dosyası programı başlatma işlevi |
//+------------------------------------------- --------------------+
OnStart() geçersiz
{
Alert(NormalizeDouble(AccountBalance()*risk/(sl*MarketInfo(Symbol(),MODE_TICKVALUE))),2));
}
//+------------------------------------------- --------------------+
Haklısın. Komut dosyası denetimi - daha hızlı ve daha güvenilir
Ayrıca NormaliseDouble işlevindeki doğruluğu izin verilen minimum partiye bağlı hale getirmeniz gerekir. Aksi takdirde OrderSend fonksiyonuna örneğin 0.11 lotu geçilirse ve enstrüman sadece 0.1'in katları olan lotlarda işlem görürse hata oluşur.
merhaba! Neden tüm açık anlaşmaların hemen silinmediğini anlayamıyorum, yani danışman bazılarını siliyor ve geri kalanında orderdelete 4108 hatası veriyor, piyasa emri birkaç kez silinemiyor ve ancak o zaman siliyor. silme döngüsünün başlamasından önce zaten açık olmalarına rağmen.
merhaba! Neden tüm açık anlaşmaların hemen silinmediğini anlayamıyorum, yani danışman bazılarını siliyor ve geri kalanında orderdelete 4108 hatası veriyor, piyasa emri birkaç kez silinemiyor ve ancak o zaman siliyor. silme döngüsünün başlamasından önce zaten açık olmalarına rağmen.
Bu sayfada nasıl silineceği açıklanmaktadır. 2 hatan var.
Çalışırken 'expert1.0.mq4' (69,25) dosyasında dizi sürekli aralık dışında hata veriyor... Dizi olduğunu anladım. Ve ne yapacağımı yapmayacağım.
Bu diziyi işleyen koda veya bir parçasına bakmanız gerekir.
Telepatlar bugün dinleniyor.
Bu diziyi işleyen koda veya bir parçasına bakmanız gerekir.
Telepatlar bugün dinleniyor.
}
İşte fonksiyon.
Standart modda herhangi bir hata olmadığı için sorunun kodda olmadığını düşündüm.