iBarShift와 유사함

 

MT4용 iBarShift 와 유사한 기능을 간과했습니다. 방법을 알려주세요?

그리고 Time[10] 대신 CopyTime을 사용해야 한다는 것을 얼마나 이해하고 있습니까?

 
GarF1eld писал(а) :

MT4용 iBarShift와 유사한 기능을 간과했습니다. 방법을 알려주세요?

그리고 Time[10] 대신 CopyTime을 사용해야 한다는 것을 얼마나 이해하고 있습니까?

ibarshift와 유사:

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

시간[]의 유사체:

Time( int i )

더 많은 것이 유용할 것입니다:

 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)
파일:
common.mqh  22 kb
 
gdtt :

ibarshift와 유사:

시간[]의 유사체:

더 많은 것이 유용할 것입니다:

감사하다! 유용한 것

표준에서 더 제정신이 아닌 것이 있으면 라이브러리의 알고리즘을 사용하겠습니다.

 
iBarShift의 더 빠른 아날로그를 제안할 수 있는 사람이 있습니까? CopyTime이 있는 기존 옵션은 프로파일러 로 판단할 때 엄청나게 느립니다. 바별 동기화가 필요합니다. 각 막대의 칠면조를 한 번씩 세지만 불행히도 막대가 동기화될 때까지 눈금을 처리해야 합니다. 나는 또한 타이머를 삽입했지만 성능의 증가를 관찰하지 못했습니다.
 

관심 있는 사람이 있으면 대안을 찾았습니다.

 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 );
}

내 측정에 따르면 CopyTime 옵션과 비교하여 속도 향상은 2배에서 7배까지입니다(입력 데이터에 따라 다름). 의견이나 버그가 있으면 작성해 주십시오.

 
marketeer :

관심 있는 사람이 있으면 대안을 찾았습니다.

내 측정에 따르면 CopyTime 옵션과 비교하여 속도 향상은 2배에서 7배까지입니다(입력 데이터에 따라 다름). 의견이나 버그가 있으면 작성해 주십시오.

고맙습니다. 사용하려고 합니다.

 

또는 다음과 같이 더 좋습니다.

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

또는 다음과 같이 더 좋습니다.

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

그리고 더 빠르고 정확합니다(첫 번째 매개변수는 NULL이어야 하며 0에서는 작동하지 않습니다)

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

추가 기능을 수행하는 이유는 TimeCurrent()

32000000000은 현재 순간이 아니라 거의 3000의 순간부터

 
Nikolai Semko :

그리고 더 빠르고 정확합니다(첫 번째 매개변수는 NULL이어야 하며 0에서는 작동하지 않습니다)

추가 기능을 수행하는 이유는 TimeCurrent()

32000000000은 현재 순간이 아니라 거의 3000의 순간부터


하지만 -1은 어떻습니까? 중요한 포인트...
 
Denis :

하지만 -1은 어떻습니까? 중요한 포인트...
무슨 내용인지 이해하지 못하셨나요?
설명하다.
 
Nikolai Semko :
무슨 내용인지 이해하지 못하셨나요?
설명하다.

Bars 함수 는 막대 수를 반환합니다 . 인덱스가 9인 막대의 인덱스를 가져와야 할 때(동어반복어 죄송합니다), 10을 반환합니다. 첫 번째 막대의 인덱스는 0입니다.
사유: