iBarShift'e benzer

Alexander  

MT4 için iBarShift'e benzer işlevleri gözden kaçırdım. Bana nasıl yapacağımı söyle?

Ve Time[10] yerine CopyTime kullanmak gerektiğini ne kadar anlıyorum?

Aleksey Sergan  
GarF1eld писал(а) :

MT4 için iBarShift'e benzer işlevleri gözden kaçırdım. Bana nasıl yapacağımı söyle?

Ve Time[10] yerine CopyTime kullanmak gerektiğini ne kadar anlıyorum?

ibarshift'e benzer:

 int iBarOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false )

Zamanın analogu[]:

Time( int i )

Yararlı olacak daha pek çok şey var:

 double iHigh( string symbol, int tf, int ind)
double High( int i )
double iLow( string symbol, int tf, int ind)
double Low( int i )
double iClose( string symbol, int tf, int ind)
double Close( int i )
double iOpen( string symbol, int tf, int ind)
double Open( int i )
double HighOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false )
double LowOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false )
double CloseOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false )
double OpenOnTime( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact=false )
string SPeriod( ENUM_TIMEFRAMES tf)   //символьное представление периода
datetime iTime( const string symbol, int tf, int ind  )

//+------------------------------------------------------------------+
//| Аналог Bars(), не требует предварительной синхронизации истории  |
//| Вход  : symbol - символ в терминале                              |
//|         timeframe - таймфрейм                                    |
//| Выход : нет                                                      |
//| Прим. : нет                                                      |
//+------------------------------------------------------------------+
int BarsSinh( string symbol, ENUM_TIMEFRAMES   timeframe )

//+------------------------------------------------------------------+
//| Произвести синхронизацию таймсерии с историей                    |
//| Вход  : symbol - символ в терминале                              |
//|         tf     - таймфрейм                                       |
//| Выход : нет                                                      |
//| Прим. : нет                                                      |
//+------------------------------------------------------------------+
void SynhronizeSeries( string symbol, ENUM_TIMEFRAMES tf )

//+------------------------------------------------------------------+
//| Проверить наличие истории на дату start_date, если остуствует,   |
//| то произвести попытку загрузки                                   |
//| Вход  : symbol - символ в терминале                              |
//|         period - таймфрейм                                       |
//|         start_date - дата проверки истории                       |
//| Выход : код результата выполнения операции подробнее             |
//|         см. https://www.mql5.com/ru/docs/series/timeseries_access |
//| Прим. : нет                                                      |
//+------------------------------------------------------------------+
int CheckLoadHistory( string symbol, ENUM_TIMEFRAMES period, datetime start_date)
//+------------------------------------------------------------------+
//| возвращает строкое значение периода                              |
//+------------------------------------------------------------------+
string GetPeriodName( ENUM_TIMEFRAMES period)
Dosyalar:
common.mqh  22 kb
Alexander  
gdtt :

ibarshift'e benzer:

Zamanın analogu[]:

İşe yarayacak daha pek çok şey var:

teşekkür etmek! kullanışlı şey

standarttan daha mantıklı bir şey yoksa, kütüphanedeki algoritmaları kullanacağım

Stanislav Korotky  
Herhangi biri daha hızlı bir iBarShift analogu önerebilir mi? Profil oluşturucuya bakılırsa CopyTime ile mevcut seçeneklerin çok yavaş olduğu ortaya çıkıyor. Bar-bar senkronizasyonu gereklidir. Hindiyi her çubukta bir kez sayıyorum ama maalesef çubuk senkronize olana kadar keneleri işlemem gerekiyor. Zamanlayıcı da taktım, performansta bir artış gözlemlemiyorum.
Stanislav Korotky  

İlgilenen varsa, bir alternatif buldum.

 int iBarShiftFast( string symbol, ENUM_TIMEFRAMES timeframe, datetime time)
{
   datetime lastBar;
   SeriesInfoInteger (symbol, timeframe, SERIES_LASTBAR_DATE , lastBar);
   return ( Bars (symbol, timeframe, time, lastBar) - 1 );
}

Ölçümlerime göre, CopyTime seçeneğine kıyasla hızlanma 2 ila 7 kat arasında (giriş verilerine bağlı olarak). Yorumlarınız veya hatalarınız varsa, lütfen yazın.

Roman Shiredchenko  
marketeer :

İlgilenen varsa, bir alternatif buldum.

Ölçümlerime göre, CopyTime seçeneğine kıyasla hızlanma 2 ila 7 kat arasında (giriş verilerine bağlı olarak). Yorumlarınız veya hatalarınız varsa, lütfen yazın.

Teşekkür ederim. kullanmaya çalışacağım.

Roffild  

Ya da belki böylesi daha iyidir:

int bar = Bars(0, 0, barTime_last, TimeCurrent());
Nikolai Semko  
Roffild :

Ya da belki böylesi daha iyidir:

int bar = Bars(0, 0, barTime_last, TimeCurrent());

Ve daha da hızlı ve daha doğru (ilk parametre NULL olmalıdır, sıfırla çalışmaz)

 int bar = Bars ( NULL , 0 , t, 32000000000 );

Neden ekstra bir işlev TimeCurrent () gerçekleştirin?

32000000000 şimdiki andan değil, neredeyse 3000 andan itibaren

Denis Kanapis  
Nikolai Semko :

Ve daha da hızlı ve daha doğru (ilk parametre NULL olmalıdır, sıfırla çalışmaz)

Neden ekstra bir işlev TimeCurrent () gerçekleştirin?

32000000000 şimdiki andan değil, neredeyse 3000 andan itibaren


Peki ya -1? Önemli bir nokta...
Nikolai Semko  
Denis :

Peki ya -1? Önemli bir nokta...
Ne hakkında olduğunu anlamadın mı?
Açıklamak.
Denis Kanapis  
Nikolai Semko :
Ne hakkında olduğunu anlamadın mı?
Açıklamak.

Çubuklar işlevi , çubukların sayısını döndürür. 9 indeksli çubuğun indeksini almamız gerektiğinde (totoloji için üzgünüm), 10 dönecektir, çünkü ilk çubuğun indeksi 0'dır.
Neden: