iBarShift'e benzer - sayfa 10

 
Aleksey Vyazmikin :

Onlar. Pazartesi gösterir? İşte buna ihtiyacım var... :)

İyi evet. Normal işlevin genel davranışında garip. Sonuçta, burada "referansı" altındaki değerleri tam olarak ayarlıyoruz.

MQL4'ten normal iBarShift işlevi , istenen zaman deliğe düştüğünde, sol çubuğun numarasını (yani bu durumda Cumartesi) döndürür ve iBarShift3, deliğin hemen yanındaki çubuğun numarasını (yani Pazartesi) döndürür. daha mantıklı.

 
Nikolai Semko :

İyi evet. Normal işlevin genel davranışında garip. Sonuçta, burada "referansı" altındaki değerleri tam olarak ayarlıyoruz.

MQL4'ten normal iBarShift işlevi, istenen zaman deliğe düştüğünde, sol çubuğun numarasını (yani bu durumda Cumartesi) döndürür ve iBarShift3, deliğin hemen yanındaki çubuğun numarasını (yani Pazartesi) döndürür. daha mantıklı.

Ve şimdi bir deliğin içindeysek (gerçek zamanlı) ve bar hakkında bilgi almayı beklersek ne olacak, bize hangi indeks sunulacak? MQL4'te "1" olacağını varsayıyorum, üçüncü algoritmada "0" olacak mı, olmayacak mı?

MQL4 işlevinin bir dereceye kadar doğru olan "geleceğe bakmama" mesajı olduğunu düşünüyorum - hepsi göreve bağlı.

 

Nikolai Semko :

...

Sürümünüzle ilgili tek bir şikayetim var: çok karmaşık ve yavaş.

(4 yıl önce) yayınladığımda, bulduğum diğer tüm sürümler yanlış olduğundan (mql4 sürümüne kıyasla) doğruluk (bir kez daha) ana hedefti.

Daha hızlı olabileceğini biliyorum .

Aksini kanıtlamaya çalışın. Sizin ve benimki farklı değerler gösterdiğinde en az bir parametre kombinasyonu bulun.

Çoğu durumda, işlev yanlış sonuç verir.

Sadece içindeki son kesin parametreyi uygulamadım, çünkü neden gerekli olduğunu anlamıyorum. Şahsen, buna hiç ihtiyacım olmadı.

Gereksinim SADECE mql4 sürümüne sahip olmaktır

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

iBarShift'e benzer

Alain Verleyen , 2018.04.05 00:18

Aslında sadece tam tersini gösteriyor, benim versiyonum doğru olan tek versiyon. (Ve bu koddaki orijinal iBarShift1 doğrudur).

Sürümüm, tıpkı mql4 iBarShift gibi bağımsız bir işlev olarak tasarlandı .


Not: İngilizce versiyonunu yayınlamak gerekli mi yoksa Rusça çeviri doğru mu?

 
vladevgeniy :
Benim işlevimi denemeyeceksin. Orada zamanla barların başlangıcını ve bitişini ortadan kaldıran bir çözüm uygulandı. Görünüşe göre her şey doğru. Ve zaman açısından, 3. sürüm en hızlınızdır. Yoksa şube mi daha önemli?))) Yoksa hatalar da mı var?) Uzun zamandır kullanıyorum....

Ve nerede, sizin işleviniz, denemek ne olurdu?

 
Aleksey Vyazmikin :

Ve şimdi bir deliğin içindeysek (gerçek zamanlı) ve bar hakkında bilgi almayı beklersek ne olacak, bize hangi indeks sunulacak? MQL4'te "1" olacağını varsayıyorum, üçüncü algoritmada "0" olacak mı, olmayacak mı?

MQL4 işlevinin bir dereceye kadar doğru olan "geleceğe bakmama" mesajı olduğunu düşünüyorum - hepsi göreve bağlı.

Numara. İlki sıfır. Gerçek zamanlı olarak aynı şekilde çalışır.

 
Aleksey Vyazmikin :

Ve nerede, sizin işleviniz, denemek ne olurdu?

Yani en sonunda 7. sayfada))

 int iBarShift ( string symbol, ENUM_TIMEFRAMES timeframe, datetime time){
datetime t1 = TimeCurrent ()+ 10000000 ;
int ps = PeriodSeconds (timeframe);
double div = time/( double )ps;
double mant = div - MathFloor (div);
int ret = Bars (symbol, timeframe, ( datetime )(time-(ps*mant)), t1)- 1 ;
return (ret);
}

Bu şekilde daha uygun olabilir

 
vladevgeniy :
Benim işlevimi denemeyeceksin. Orada zamanla barların başlangıcını ve bitişini ortadan kaldıran bir çözüm uygulandı. Görünüşe göre her şey doğru. Ve zaman açısından, 3. versiyon en hızlınızdır. Yoksa şube mi daha önemli?))) Yoksa hatalar da mı var?) Uzun zamandır kullanıyorum....

gülümsedi)))

İşte işleviniz:

 int iBarShift4( string symbol, ENUM_TIMEFRAMES timeframe, datetime time)
  {
   datetime t1= TimeCurrent ()+ 10000000 ;
   int ps= PeriodSeconds (timeframe);
   double div=time/( double )ps;
   double mant=div- MathFloor (div);
   int ret= Bars (symbol,timeframe,( datetime )(time-(ps*mant)),t1)- 1 ;
   return (ret);
  }

Bazı matematiksel operatörleri bilmediğiniz gerçeği göz önüne alındığında, örneğin % - bölümün geri kalanı

İşlevinizi biraz basitleştirelim.

Olmuş:

 int iBarShift4( string symbol, ENUM_TIMEFRAMES timeframe, datetime time)
  {
   time-=time% PeriodSeconds (timeframe);
   return ( Bars (symbol,timeframe,time, UINT_MAX )- 1 );
  }

Ve işte benim işlevim:

 int iBarShift1( const string Symb, const ENUM_TIMEFRAMES TimeFrame, datetime time)
  {
   return ( Bars (Symb,TimeFrame,time+ 1 , UINT_MAX ));
  }

Çok benzer. Gerçek?

Sadece sizinki her şeyi çok yanlış ve aynı zamanda daha yavaş yapıyor.

Bunu bu MQL4 betiğiyle doğrulayabilirsiniz.

Dosyalar:
 
Nikolai Semko :

Numara. İlki sıfır. Gerçek zamanlı olarak aynı şekilde çalışır.

Şey - sadece bir tür algoritma bana bugün gelecekteki verilerde "-1" gösterdi ....

 
Nikolai Semko :

gülümsedi)))


Eh, evet ve gerçekler tutarsızlıklar veriyor)) Tamam anladım.

 
vladevgeniy :

Eh, evet ve gerçekler tutarsızlıklar veriyor)) Tamam anladım.

Evet, daireler çiziyordum. Sadece şimdi en kısa çözüme doper.