[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 149
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
lütfen acemi birine söyle, AccountBalance() - bakiyedeki fon miktarını gösterir ve benim hesaplanan bakiyemi (calc_balance) hesaplamam gerekiyor,
özü basittir, ancak henüz yazıya uygun değildir, toplam açık ve bekleyen emir sayısı (Ordertotal), örneğin 3 adet, açık pozisyon başına maksimum risk% 2'dir,
bir sonraki anlaşmayı açmak için maks. uzlaştırma bakiyesinin riski (%2), yani. formülün mantığı yaklaşık olacaktır: calc_balance=AccountBalance()-2%-2%-2%,
yani sıralı çıkarma - ancak kodda nasıl yazılacağı henüz mümkün değil, yardımlarınızı bekliyorum.
Şimdiden teşekkürler!
Equity (AccountEquity() ) ve Marjın (AccountMargin() ) Alış ve Satış pozisyonları için ayrı ayrı nasıl olduğunu söyleyin?
Beyler, birisi D1'de destek ve direnç seviyelerini tercihen gecikmesiz olarak ayarlayan bir gösterge veya danışman önerebilir mi)))
Hepinize iyi günler! Bir sorunum var ve neyin yanlış olduğunu anlayamıyorum.
İki fonksiyon verilmiştir. 1'i ararsam hiçbir şey işe yaramaz. İkinci durumda, her şey çalışıyor. Bana neyin yanlış olduğunu söyle?
Şimdiden teşekkürler!
int OrderBuy(double pLots, string pComment, int pMagic, int pDatetime, color pColor) { int ticket = 0; int err = 0; int c = 0; int NumberOfTries = 100; for (c = 0; c < NumberOfTries; c++) { RefreshRates(); ticket = OrderSend(Symbol(), OP_BUY, pLots, Ask, 0, Ask-0.0005, Ask+0.0005, pComment, pMagic, pDatetime, pColor); err = GetLastError(); if (err == 0/* NO_ERROR */) break; if (!(err == 4/* SERVER_BUSY */ || err == 137/* BROKER_BUSY */ || err == 146/* TRADE_CONTEXT_BUSY */ || err == 136/* OFF_QUOTES */)) break; Sleep(5000); } return(ticket); } int OrderSell(double pLots, string pComment, int pMagic, int pDatetime, color pColor) { int ticket = 0; int err = 0; int c = 0; int NumberOfTries = 100; for (c = 0; c < NumberOfTries; c++) { RefreshRates(); ticket = OrderSend(Symbol(), OP_SELL, pLots, Bid, 0, Bid+0.0005, Bid-0.0005, pComment, pMagic, pDatetime, pColor); err = GetLastError(); if (err == 0/* NO_ERROR */) break; if (!(err == 4/* SERVER_BUSY */ || err == 137/* BROKER_BUSY */ || err == 146/* TRADE_CONTEXT_BUSY */ || err == 136/* OFF_QUOTES */)) break; Sleep(5000); } return(ticket); } //вызовы функций ticket = OrderBuy(lot, "---"+count+" ---", MagicNumber, 0, HotPink); Print(ticket+":тикет");//здесь выдает -1 if (ticket < 0) { Print("Error: ", GetLastError());//здесь выдает "0"; return (0); } ticket = OrderSell(lot, "---"+count+" ---", MagicNumber, 0, HotPink); Print(ticket+":тикет"); if (ticket < 0) { Print("Error: ", GetLastError()); return (0); }
double ld_MarginPosition = AccountFreeMargin() - AccountFreeMarginCheck();
Hepinize iyi günler! Bir sorunum var ve neyin yanlış olduğunu anlayamıyorum.
İki fonksiyon verilmiştir. 1'i ararsam hiçbir şey işe yaramaz. İkinci durumda, her şey çalışıyor. Bana neyin yanlış olduğunu söyle?
Şimdiden teşekkürler!
Bir döngüde OrderSell ve OrderBuy'da hata değerini sıfırlayan GetLastError() işlevi ( Dikkatli bir şekilde GetLastError hakkındaki yardıma bakın), bu nedenle
fonksiyonu çağırırken 0 verecek. Direkt döngüde yazdırmayı deneyin, ardından siparişin nerede, hangi hatadan dolayı açılmadığını göreceksiniz.
Aracı "çeviren" basit bir gösterge yaptım. Bazen algı için tam tersine bir çift görmek daha kolaydır ve aynı resme bakarken göz "bulanıklaşır". Ne yazık ki, aşağıdaki ikinci bölümde, grafik Close[i]'den alınmıştır, bir dosyadan okumadan (bir dosyayla çalışmayı hiç denemedim bile), tam teşekküllü bir grafik görüntüleyebilirsiniz, herkes var mı? Düşüncesi olan var mı.
Yine de, Kim'in işlevleri arasında herhangi bir arama bulamadım.
Açık siparişlerin marjı ayrı ayrı nasıl doğru bir şekilde hesaplanır?
şöyle düşündüm:
terminalin gösterdiğinden farklı değerler aldı
double ld_MarginPosition = AccountFreeMargin() - AccountFreeMarginCheck();
Sadece alıp götürmek işe yaramaz, her yön için ayrı ayrı hesaplamalara ihtiyacım var.