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
Karar vermiyor. Birkaç çubuk süren bir bağlantı kesintisi olacak, birkaç çubuk çöple başlatılmayacak.
Veya yukarıda Dmitry'nin dediği gibi birkaç çubukta bağlantı koptu... Bu arada prev_calculated bağlantı koptuğunda da 0 döndürür mü?
Görünüşe göre şu anda iletişimde gerçekten bir kopukluk vardı.
2016.10.19 04:45:37.260 Network '4092672': scanning network for access points
2016.10.19 04:45:36.630 Network '4092672': trading has been enabled - hedging mode
2016.10.19 04:45:36.630 Network '4092672': terminal synchronized with MetaQuotes Software Corp.
2016.10.19 04:45:36.000 Network '4092672': previous successful authorization performed from 31.173.80.3 on 2016.10.18 17:51:14
2016.10.19 04:45:36.000 Network '4092672': authorized on MetaQuotes-Demo through Access Point SG Singapore (ping: 583.86 ms)
2016.10.19 04:42:57.680 Network '4092672': connection to MetaQuotes-Demo lost
Ve büyük olasılıkla, prev_calculated bozulduğunda 0 döndürür.
Peki, uzun bir bağlantı kesilmesi oldu ve prev_calculated'ın diğer sıfırlamalarına ne sebep oldu?
bu satırlardan
2016.10.18 23:51:20.865 Network '4092672': scanning network for access points
yukarıdakilere kadar, bunun gibi ticaret sicillerinden başka kayıt yoktur.
ve önceki gönderimde kaç tane prev_calculated reset görülebilir.
Potansiyel olarak, söve burada olabilir:
{
minEquity = 0 ;
maxEquity = 0 ;
}
minEquity = NormalizeDouble ( fmin ((minEquity == 0 ? bal : minEquity), equity), 2 );
maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );
Yeni bir çubuk geldiğinde değerleri 0 - iyi olarak sıfırlarsınız. Ama sonra minEquity ve 0'ı eşitlik için, tavsiye edilmeyen bir şekilde kontrol edersiniz.
Sözlerimin teyidinde - senin çizimin. Dediğiniz gibi "çöp" değerlerinin yaklaşık sıfır olduğunu gösteriyor.
Ve elbette, şekle "çöp" değeri olan bir veri penceresi eklemek daha iyidir.Bu yöntemi neden önermediğimizi açıklayabilir misiniz?
minEquity == 0 olan kodun bu (minEquity == 0 ? bal : minEquity) kısmı biraz daha önce elde edilen bal değerini döndürür, minEquity değeri fmin() işlevi bitene kadar değişmez
Her ne kadar katılsam da böyle bir yazım biraz riskli... ama sorun bu değil.
Bu yöntemi neden önermediğimizi açıklayabilir misiniz?
minEquity == 0 olan kodun bu (minEquity == 0 ? bal : minEquity) kısmı biraz daha önce elde edilen bal değerini döndürür, minEquity değeri fmin() işlevinin sonuna kadar değişmez
Her ne kadar katılsam da böyle bir yazım biraz riskli... ama sorun bu değil.
Bunun hakkında özellikle konuştum: minEquity == 0. Eşitlik için iki katı karşılaştırıyorsunuz. Bu, değerlerin 0'a düşmesini açıklayabilir.
Açıkçası, minEquity == 0.0 daha doğru olurdu ... Buna alışamıyorum.
Son cümleyi hiç anlamadım. 0'dan önceki değerler nelerdir?
Açıkçası, minEquity == 0.0 daha doğru olurdu ... Buna alışamıyorum.
Son cümleyi hiç anlamadım. 0'dan önceki değerler nelerdir?
Ancak burada, örtük tip dökümün bir hataya neden olup olmayacağını bilmiyorum, prensipte gerçek türleri karşılaştırmaktan bahsediyordum. Onlar. burada, güvenilirlik için şöyle yazardım:
bool CompareDoubles( double number1, double number2)
{
if ( NormalizeDouble (number1-number2, 8 )== 0 ) return ( true );
else return ( false );
}
Ancak burada, örtük tip dökümün bir hataya neden olup olmayacağını bilmiyorum, prensipte gerçek türleri karşılaştırmaktan bahsediyordum. Onlar. burada, güvenilirlik için şöyle yazardım:
bool CompareDoubles( double number1, double number2)
{
if ( NormalizeDouble (number1-number2, 8 )== 0 ) return ( true );
else return ( false );
}
Evet, benim versiyonumda iki ondalık basamaklı para kabul ediliyor. Bunlar konuya bu kadar titizlikle yaklaşacak alıntılar değil.
Bu titizlikle ilgili değil, doğrulukla ilgili. Sizin durumunuzda bu, arabelleğe sıfır değerinin yazılmasına neden olabilir. Böyle bir hassasiyete ihtiyacınız yoksa, şunu yapın:
{
minEquity = - 1.0 ;
maxEquity = 0.0 ;
}
minEquity = NormalizeDouble ( fmin ((minEquity < 0 ? bal : minEquity), equity), 2 );
maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );
O zaman herhangi bir hata olmayacak.
Bu titizlikle ilgili değil, doğrulukla ilgili. Sizin durumunuzda bu, arabelleğe sıfır değerinin yazılmasına neden olabilir. Böyle bir hassasiyete ihtiyacınız yoksa, şunu yapın:
{
minEquity = - 1.0 ;
maxEquity = 0.0 ;
}
minEquity = NormalizeDouble ( fmin ((minEquity < 0 ? bal : minEquity), equity), 2 );
maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );
O zaman herhangi bir hata olmayacak.
Neden bu kadar aptalım??? MinEquity'yi sıfırdan başlatmanın daha iyi olduğunu nasıl tahmin edemem? O zaman her şey çok daha kolay olacak...
{
minEquity = DBL_MAX ;
maxEquity = 0.0 ;
}
minEquity = NormalizeDouble ( fmin (minEquity, equity), 2 );
maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );
Ayrıca maxEquity = DBL_MIN ;
Neden bu kadar aptalım??? MinEquity'yi sıfırdan başlatmanın daha iyi olduğunu nasıl tahmin edemem? O zaman her şey çok daha kolay olacak...
{
minEquity = DBL_MAX ;
maxEquity = 0.0 ;
}
minEquity = NormalizeDouble ( fmin (minEquity, equity), 2 );
maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );
Ya da böyle...