iBarShift'e benzer - sayfa 13

 
Nikolai Semko :

@Alain Verleyen'in yerleşik Barlar ve iBarShift işleviyle karşılaştırıldığında iBars işlevinin performansını gösteren bir gösterge
Mikrosaniye cinsinden işlev yürütme süresi.


Burada gerekli değildir - kod tabanında. Hem iBars() hem de iBarShift()

 
Nikolai Semko :

iBars işlevinin çok hantal olduğu ortaya çıkmış olsa da, MQ içindeki takılma hatasını düzeltene kadar normal Barlar yerine onu kullanmanızı tavsiye ederim.

Bunu yaparak da hızlandırabilirsiniz.

start_time -= start_time % PeriodSeconds (timeframe);
TimeCur -= TimeCur % PeriodSeconds (timeframe);

Mantıksal olarak 0 döndürmesi gerektiğinde iBar askıda kalıyor. Genellikle 10 saniyeden fazla döndürür. MQL4'te böyle bir hata yok.

İşte meydan okuma

 SeriesInfoInteger (symbol_name,timeframe, SERIES_LASTBAR_DATE )

düzgün çalışmıyor - olmaması gerektiğinde geçmişin değiştirilmesine neden oluyor. Bu nedenle frenler (hcc dosyalarının görünümünü görebilirsiniz).

 
Nikolai Semko :

@Alain Verleyen'in yerleşik Barlar ve iBarShift işleviyle karşılaştırıldığında iBars işlevinin performansını gösteren bir gösterge
Mikrosaniye cinsinden işlev yürütme süresi.

Tekrar ediyorum, performans talep edildiği yerde ölçülmelidir - Optimize Edici.

 
Artyom Trishkin :

Burada gerekli değil - kod tabanında. Hem iBars() hem de iBarShift()

Evet ediyorum. Şimdilik test edelim.

 
fxsaber :

Bunu yaparak da hızlandırabilirsiniz.

start_time ile, en başlangıç orada zaten uygulandı, ancak TimeCur ile evet - biraz hızlandırabilirsiniz. Yapacağım. Teşekkür ederim.

Bu arada, bu sadece M1'den D1'e uygundur. W1'in üç gün kaydırılması gerekiyor. 01/01/1970 Perşembe. Ve MN1 ile genellikle teflere ihtiyacınız var, çünkü bir ay 28,29,30,31 gün

İşte meydan okuma

düzgün çalışmıyor - olmaması gerektiğinde geçmişin değiştirilmesine neden oluyor. Bu nedenle frenler (hcc dosyalarının görünümünü görebilirsiniz).

Garip, böyle bir davranış gözlemlemedim.

fxsaber :

Tekrar ediyorum, performans talep edildiği yerde ölçülmelidir - Optimize Edici.

Optimize ediciden kastınız nedir?

 
Nikolai Semko :

start_time ile en başından beri zaten uygulanmış

Bir hata ile uygulandı. Örneğin, M1 başlangıç zamanı == D'12:00:05'. Ayrıca stoptime yapılması gerekiyor.

Optimize ediciden kastınız nedir?

Test Cihazında optimizasyon modu .

 
fxsaber :

Bir hata ile uygulandı. Örneğin, M1 başlangıç zamanı == D'12:00:05'. Ayrıca stoptime yapılması gerekiyor.

Lütfen neyin yanlış olduğunu açıklayın? Ve neden sadece zaman, ama tarih nerede?

Çubuklar ve iBar'lar bu formatta 0 döndürür .

 
Nikolai Semko :

Lütfen neyin yanlış olduğunu açıklayın? Ve neden sadece zaman, ama tarih nerede?

Tarih yazmak için çok tembel.

t=start_time-(start_time- 1 )%PerSec;

Bu satırda, start_time'ı dakikada sıfır olmayan bir saniye sayısıyla değiştirin.

 
fxsaber :

Tarih yazmak için çok tembel.

Bu satırda, start_time'ı dakikada sıfır olmayan bir saniye sayısıyla değiştirin.

Evet, her şey iyi. Bu bir hata değil. Olması gereken yol bu.

Bu kodu çalıştırmayı deneyin:

   Print ( Bars ( _Symbol , PERIOD_M1 , D'2018.04.04 18:00:00' , UINT_MAX ));
   Print ( Bars ( _Symbol , PERIOD_M1 , D'2018.04.04 18:00:01' , UINT_MAX )); //результат на единицу меньше
 
Nikolai Semko :

Evet, her şey iyi. Bu bir hata değil. Olması gereken yol bu.

Bu kodu çalıştırmayı deneyin:

O zaman Bars'ın neden 18:00:01'in 18:00 değil de 18:01 M1-bar'a ait olduğunu düşündüğünü anlamıyorum.


Bu arada, TimeCurrent , SYMBOL_TIME ile değiştirilmelidir.