Negatif sayının nereden geldiğini daraltmak için marginAllot, PercentRisk ve pipToSL değerlerini yazdırmayı deneyin. Spekülatif tahminim, pipsToSL'nin belirli koşullar altında negatif bir sayı olarak geçirildiği yönünde.
NormalizeDouble (posSize, 2 );
Bu çizgi hiçbir şey yapmaz.- NormalizeDouble'ı HİÇBİR ZAMAN KULLANMAYIN. HERHANGİ BİR Sebep için. Bu bir çamur, kullanmayın. Kullanımı her zaman yanlıştır
- SL/TP (duraklar) boyutu işaretlemek için normalleştirilmelidir. ( 5Digit Broker Stop'larında sadece tam pip değerlerine yer verilmesine izin verilir. mql'de nasıl öğrenilir? - MQL4 forum ) ve limitlere uyun İşlem Yapmada Gereklilikler ve Sınırlamalar - Ekler - MQL4 Eğitimi ve kayan nokta eşitliğinin anlaşılmasını gerektirir Fiyat != Fiyat ? - MQL4 forumu
- Yalnızca bekleyen siparişler için açık fiyatın ayarlanması gerekir. Para Birimlerinde, Point == TickSize, yani aynı cevabı alacaksınız, ancak Metaller üzerinde çalışmayacak. Öyleyse doğru yapın: NormalizeDouble'ı OrderSend - MQL4 forumunda kullanmak için Sondaki Çubuk Girişi EA - MQL4 forumu veya Bid/Ask: (Gerek Yok)
- Lot boyutu ayrıca LotStep'in bir katına ayarlanmalıdır. Bu 1/10'luk bir güç değilse, NormalizeDouble yanlıştır. Doğru yap.
Negatif sayının nereden geldiğini daraltmak için marginAllot, PercentRisk ve pipToSL değerlerini yazdırmayı deneyin. Spekülatif tahminim, pipsToSL'nin belirli koşullar altında negatif bir sayı olarak geçirildiği yönünde.
Aslında kodun geri kalanında pipToSL'nin yanlış olarak negatif olarak hesaplandığı bazı yerler bulabildim. Teşekkürler.
- Bu çizgi hiçbir şey yapmaz.
- NormalizeDouble'ı HİÇBİR ZAMAN KULLANMAYIN. HERHANGİ BİR Sebep için. Bu bir çamur, kullanmayın. Kullanımı her zaman yanlıştır
- SL/TP (duraklar) boyutu işaretlemek için normalleştirilmelidir. ( 5Digit Broker Stop'larında sadece tam pip değerlerine yer verilmesine izin verilir. mql'de nasıl öğrenilir? - MQL4 forum ) ve limitlere uyun İşlem Yapmada Gereklilikler ve Sınırlamalar - Ekler - MQL4 Eğitimi ve kayan nokta eşitliğinin anlaşılmasını gerektirir Fiyat != Fiyat ? - MQL4 forumu
- Yalnızca bekleyen siparişler için açık fiyatın ayarlanması gerekir. Para Birimlerinde, Point == TickSize, yani aynı cevabı alacaksınız, ancak Metaller üzerinde çalışmayacak. Öyleyse doğru yapın: NormalizeDouble'ı OrderSend - MQL4 forumunda kullanmak için Sondaki Çubuk Girişi EA - MQL4 forumu veya Bid/Ask: (Gerek Yok)
- Lot boyutu ayrıca LotStep'in bir katına ayarlanmalıdır. Bu 1/10'luk bir güç değilse, NormalizeDouble yanlıştır. Doğru yap.
Daha önce bununla ilgili gönderilerinizi okudum, ancak son bağlantınıza kadar amacınızı anlamadım. Teşekkürler.
MathRound() kullanıyorsam neden hala birden çok ondalık basamağa yanıt alıyorum? DoubleToString kullanmayı denedim ama bu hiç yardımcı olmadı. Bu tamamen Print()'in sınırlamalarından mı kaynaklanıyor yoksa yanlış olan başka bir şey mi var?
posSize = posSize * 10 ; MathRound (posSize); posSize = posSize / 10 ;
NoLimitations : MathRound() kullanıyorsam neden birden fazla ondalık basamağa yanıt alıyorum? | MathRound bir çift döndürür; sonsuz sayıda ondalık basamak. |
NoLimitations : MathRound() kullanıyorsam neden birden fazla ondalık basamağa yanıt alıyorum? | MathRound bir çift döndürür; sonsuz sayıda ondalık basamak. |
Bunun için doc sayfasına göre değil. https://docs.mql4.com/math/mathround
" Dönüş Değeri
Değer, en yakın tam sayıya yuvarlanır."
Yapması gerekiyorsa ama yapmıyorsa, MQ'ya bilgi verilmesi veya işleve bir uyarı etiketi koymaları gerekir.
JD4 haklı, belge sayfası en yakın tam sayıya yuvarlandığını söylüyor. Belirli sayıda ondalık basamağı yuvarlamadan veya kesmeden yukarıda yapmaya çalıştığım şeyi başarmanın başka bir yolundan emin değilim. Tam sayı döndürmezlerse MathRound() veya round()'un anlamı ne olurdu?
Ayrıca bunu boşuna kullanmayı denedim. Muhtemelen DTS, gerçek değeri değil, görünüm için bir değerin doğruluğunu değiştirir mi? Başka seçenek göremiyorum.
posSize = posSize * 100 ; DoubleToString (posSize,0); StringToDouble (posSize); posSize = posSize / 100 ;
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Stratejimde, konum boyutlarını hesaplamak için GetPosSize() işlevini kullanıyorum. Şu anda sadece EURUSD ile strateji kullanıyorum ve hayatım boyunca posSize'ın neden negatif bir değer döndürdüğünü ve bu da OrderSend hatası 4051 ile sonuçlandığını anlayamıyorum. Herhangi bir yardım çok takdir edilecektir. İlgili tüm kodları buraya göndereceğim. Kod boyunca posSize için başka hiçbir hesaplama yapılmaz, yalnızca işlev çağrılır. Üç ayrı kod parçası da fonksiyon içindedir.