prev_hesaplanmış - sayfa 10

 
Dmitry Fedoseev :
Karar vermiyor. Birkaç çubuk süren bir bağlantı kesintisi olacak, birkaç çubuk çöple başlatılmayacak.
Alexey Kozitsyn :
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:46:13.770 Network '4092672': scanning network finished
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:34.895 Network '4092672': scanning network finished
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.

2016.10.19 00:00:36.066 Trades   '4092672': cancel order #103987819 buy stop 0.10 USDJPY at 103.977 sl: 103.377 tp: 104.077

ve önceki gönderimde kaç tane prev_calculated reset görülebilir.

 
Alexey Kozitsyn :

Potansiyel olarak, söve burada olabilir:

if (rates_total > prev_calculated)
   {
    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.

 
Alexey Viktorov :

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.
 
Alexey Kozitsyn :
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?

 
Alexey Viktorov :

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:

CompareDoubles( minEquity, 0.0 );

bool CompareDoubles( double number1, double number2)
  {
   if ( NormalizeDouble (number1-number2, 8 )== 0 ) return ( true );
   else return ( false );
  }
 
Alexey Kozitsyn :

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:

CompareDoubles( minEquity, 0.0 );

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.
 
Alexey Viktorov :
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:

if (rates_total > prev_calculated)
   {
    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.

 
Alexey Kozitsyn :

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:

if (rates_total > prev_calculated)
   {
    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...

if (rates_total > prev_calculated)
   {
    minEquity = DBL_MAX ;
    maxEquity = 0.0 ;
   }
   minEquity = NormalizeDouble ( fmin (minEquity, equity), 2 );
    maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );

Ayrıca maxEquity = DBL_MIN ;

 
Alexey Viktorov :

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...

if (rates_total > prev_calculated)
   {
    minEquity = DBL_MAX ;
    maxEquity = 0.0 ;
   }
   minEquity = NormalizeDouble ( fmin (minEquity, equity), 2 );
    maxEquity = NormalizeDouble ( fmax (maxEquity, equity), 2 );


Ya da böyle...
 
Alexey Kozitsyn :
Ya da böyle...
Ama genel olarak sorun bu değil. Her ne kadar bir şekilde atlamayı başarabilsem de, gösterge başlatıldığında gösterge arabelleğindeki çöp doğru değil.