ilk önce , ayrılmış bir int için "exp" kullanamazsınız
ikinci olarak "SL" yi ifade edersiniz
SL = MathFloor (( iATR ( NULL , PERIOD_D1 , 7 , 0 )* MathPow ( 10 , Digits - exp )+ 1 )* 0.1 );
init bölümünde, kötü fikir
çünkü 4066 Hatası alırsanız "SL" = 0
o zaman "lotlarda" sıfır pay alırsınız
lots=MoneyRisk/SL/( MarketInfo ( Symbol (), MODE_TICKVALUE )*multi);
ve gösterge durur ve göstergeyi yeniden yüklemeniz gerekir
açıkçası güncellemeden kaçamazsınız ;-) ama " sıfır bölme " durumundan kaçınmalısınız
bu yüzden sıfır bölmeden kaçınmanız durumunda değişkenlerden birinin 0'a eşit olup olmadığını kontrol etmelisiniz.
ve bir göstergeyi durduramayacağınız için bir şey bulmanız gerekir.
misal:
SL = MathFloor (( iATR ( NULL , PERIOD_D1 , 7 , 0 )* MathPow ( 10 , Digits - exp )+ 1 )* 0.1 ); if (SL == 0 ) // because error 4066 (for example) { SL = Someting; } lots=MoneyRisk/SL/( MarketInfo ( Symbol (), MODE_TICKVALUE )*multi);
Haklısın.. Bundan kaçamam. :-)
Demek istediğim, SL hesaplamasına geçmeden önce güncellemenin tamamlanmasını bekleyebilir miyim? Sorun şu ki, SL'ye rastgele bir değer veremem çünkü o zaman tüm gösterge işe yaramaz. Bu yüzden 4066 hatasını kontrol etmek istiyorum ve eğer oluşursa, devam etmeden önce bir şekilde bekleyip tekrar kontrol etmek istiyorum.
Bu arada, bu göstergeyle aynı sorunu yaşıyorum. Ama neden "eski" MetaTrader'da bir sorun değildi? Burada ATR(5) için her zaman sıfır alıyorum. NİYE YA?!?! Bu daha önce hiç olmadı.. Bu yeni MetaTrader'dan nefret ediyorum...!
int start() //---- { double Spread = MarketInfo ( Symbol (), MODE_SPREAD ); double ATR = iATR ( NULL , PERIOD_D1 , 5 , 0 ); int exp1 = 0 ; if ( Digits == 5 || Digits == 3 ) { Spread=Spread* 0.1 ; exp1 = 1 ; } Comment ( "ADR(5): " , DoubleToStr (ATR* MathPow ( 10 , Digits -exp1), 1 ), " || TODAY: " ,( iHigh ( NULL , PERIOD_D1 , 0 )- iLow ( NULL , PERIOD_D1 , 0 ))* MathPow ( 10 , Digits -exp1), " || " , DoubleToStr ((( iHigh ( NULL , PERIOD_D1 , 0 )- iLow ( NULL , PERIOD_D1 , 0 ))* MathPow ( 10 , Digits -exp1)/(ATR* MathPow ( 10 , Digits -exp1))* 100 ), 2 ), "%" , "\n" + "SPREAD: " , Spread, " || RATIO: " , DoubleToStr ((Spread/ATR)* MathPow ( 10 ,-( Digits -exp1- 2 )), 2 ), "%" ); //---- return ( 0 ); }
Sanırım sorunu buldum! Kesinlikle bir güncelleme sorunudur. Şimdi para birimlerini değiştirdiğimde gösterge çalışıyor. Ama sonra bugün henüz açmadığım bir döviz çiftini açtım. Sonra şu mesajı aldım:
gibi bir şey koymalısın
if ( number== 0 )dothis; else dothis;
ShowSpread.mq4'te
Sadece bu sıfır bölünmenin gerçekleştiği satırı arayın.
Sanırım sorunu buldum! Kesinlikle bir güncelleme sorunudur. Şimdi para birimlerini değiştirdiğimde gösterge çalışıyor. Ama sonra bugün henüz açmadığım bir döviz çiftini açtım. Sonra şu mesajı aldım:
angevoyageur, sanırım bu gönderiyi benden görmedin:
Mart 2014.04.02 08:16 #
Haklısın.. Bundan kaçamıyorum. :-)
"Demek istediğim, SL hesaplamasına geçmeden önce güncellemenin tamamlanmasını bekleyebilir miyim? Sorun şu ki, SL'ye rastgele bir değer veremem çünkü o zaman tüm gösterge işe yaramaz. Bu yüzden kontrol etmek istiyorum. 4066 hatası için ve oluşursa, bir şekilde beklemek ve devam etmeden önce tekrar kontrol etmek istiyorum."
Orada, tavsiyeyi takip edemediğimi ve bu çözüme geldiğim için qjol'un bana ne tavsiye ettiğini kesinlikle kontrol ettiğimi görebilirsiniz.
- Ücretsiz alım-satım 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
Hey kodlayıcılar,
Benim için iyi çalışan küçük bir Moneymanagement göstergesi yaptım. Ancak yeni MQL4'ten beri baş edemediğim sorunlara neden oluyor.
Bu göstergeyi grafiğinize sürüklediğinizde, en sağ tarafta bazı sayılar yazdırılır. İlk sayı, pip cinsinden Stoploss'u, ikincisi ise lot boyutunu ifade eder. Seçeneklerde riski seçebilirsiniz. Diğer sayı Stoploss Seviyeleridir. Ancak döviz çiftini değiştirdiğimde sayılar kayboluyor. Bunun yerine birkaç kez "Etiket" kelimesini görüyorum. Ve gösterge listesine baktığımda göstergem de gitti. Özetle, döviz çiftini değiştirdikten sonra gösterge gitti ve sayılar yerine Etiketler bıraktı.
tamamen kafam karıştı. Bu gösterge sorunsuz çalışıyordu. Yardım çok takdir edilmektedir.
İşte kod: