iBarShift와 유사함 - 페이지 5

 
Aleksey Vyazmikin :

스크립트가 왜 이렇게 느린가요?

프로파일러 응답.

 
Andrey Khatimlianskii :

프로파일러 응답.

좋습니다. 프로파일러는 이 코드 조각을 참조하고 있습니다.

Res=:: Bars (Symb,TimeFrame,time, UINT_MAX )- 1 ;

그리고 그는 무엇을 좋아하지 않습니까? 기능은 내 것이 아니지만 위의 저자는 그것이 빨리 작동해야한다고 말했습니다 ...

 
Aleksey Vyazmikin :

좋습니다. 프로파일러는 이 코드 조각을 참조하고 있습니다.

그리고 그는 무엇을 좋아하지 않습니까? 기능은 내 것이 아니지만 위의 저자는 그것이 빨리 작동해야한다고 말했습니다 ...

유머를 이해하지 못했는데 MQL4 iBarShift 에서 표준 기능을 오버로드한 이유는 무엇입니까? 컴파일러는 아마도 이것 때문에 혼란에 빠질 것입니다.
또한, iBarShift2 기능은 MQL5용이지만 MQL4에서는 일반 기능의 표준과 비교하여 실행의 정확성만 테스트했습니다.

 
Nikolai Semko :

유머를 이해하지 못했는데 MQL4 iBarShift에서 일반 기능을 오버로드한 이유는 무엇입니까? 컴파일러는 아마도 이것 때문에 혼란에 빠질 것입니다.

취소된 사람 없음

 #ifdef __MQL5__
/**************************/
#else
/**************************/
#endif

그리고 혼미에는 아무것도 포함되어서는 안됩니다.

 
Nikolai Semko :

유머를 이해하지 못했는데 MQL4 iBarShift에서 표준 기능을 오버로드한 이유는 무엇입니까? 컴파일러는 아마도 이것 때문에 혼란에 빠질 것입니다.
또한, iBarShift2 기능은 MQL5용이지만 MQL4에서는 일반 기능의 표준과 비교하여 실행의 정확성만 테스트했습니다.

아마도 나는 세심하지 않지만 귀하의 게시물을 다시 보았습니다. 즉. MT4의 기능은 무엇입니까? 주제가 MT5에 관한 것이었으므로 분명히 이것이 나를 오도했습니다.

추가: Mlyn 모든 것 - 다른 코드를 찾았습니다. 모든 것이 흐릿했습니다. 죄송합니다.

 
Aleksey Vyazmikin :

아마도 나는 세심하지 않지만 귀하의 게시물을 다시 보았습니다. 즉. MT4의 기능은 무엇입니까? 주제가 MT5에 관한 것이었으므로 분명히 이것이 나를 오도했습니다.

추가: Mlyn 모든 것 - 다른 코드를 찾았습니다. 모든 것이 흐릿했습니다. 죄송합니다.

우와. 음 ... 아니. 여기에서 MQL5 코드를 시도하고 혼미에 빠졌습니다. 이제 무슨 말인지 이해합니다.
재미있는 그림이 나옵니다.
스크립트가 기본 TF = 1일에서 실행되면 모든 것이 정상입니다.
그러나 다른 TF에서 실행하면 엄청난 불균형 브레이크가 발생합니다. 아직까지는 컴파일러의 일종의 버그로 설명할 수 없습니다.
동시에 디버깅 모드 또는 프로파일링 모드 에는 이러한 브레이크가 없습니다!!!
이제 나는 실험하고 브레이크의 근원을 찾을 것입니다.

 
Nikolai Semko :

우와. 음 ... 아니. 여기에서 MQL5 코드를 시도하고 혼미에 빠졌습니다. 이제 무슨 말인지 이해합니다.
재미있는 그림이 나옵니다.
스크립트가 기본 TF = 1일에서 실행되면 모든 것이 정상입니다.
그러나 다른 TF에서 실행하면 엄청난 불균형 브레이크가 발생합니다. 아직까지는 컴파일러의 일종의 버그로 설명할 수 없습니다.
동시에 디버깅 모드 또는 프로파일링 모드 에는 이러한 브레이크가 없습니다!!!
이제 나는 실험하고 브레이크의 근원을 찾을 것입니다.

일반 날짜/시간 값을 대체하여 검색을 시작하십시오.

Res=:: Bars (Symb,TimeFrame,time, UINT_MAX )- 1 ;
 
Aleksey Vyazmikin :

스크립트가 왜 이렇게 느립니까?


예, 놀랍습니다.

나는 브레이크의 위치를 현지화했습니다.

 //+------------------------------------------------------------------+
//|                                                    iBarShift.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#property script_show_inputs

input ENUM_TIMEFRAMES TF= PERIOD_D1 ;
input int Bar= 3 ;
input int calcN= 1 ;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   for ( int index= 0 ;index<calcN;index++)
     {
       Print ( "0" );
       datetime T= iTime ( _Symbol , PERIOD_CURRENT ,index);
       Print ( "00  " + TimeToString (T));
       int Day_Shift= iBarShift ( _Symbol ,TF,T, false );
       Print ( "1" );
       int Start= iBarShift ( _Symbol , PERIOD_CURRENT , iTime ( _Symbol ,TF,Bar+Day_Shift), false );
       Print ( "2" );
       int Stop= iBarShift ( _Symbol , PERIOD_CURRENT , iTime ( _Symbol ,TF,Day_Shift), false );
       Print ( "3" );

       if (index< 3 ) Print ( "1 Start=" ,Start, " Stop=" ,Stop, " Day_Shift=" ,Day_Shift, " index=" ,index);
       Print ( "4" );

       if (index< 3 ) Print ( "1 Start=" , TimeToString ( iTime ( _Symbol ,TF,Bar+Day_Shift), TIME_DATE | TIME_MINUTES ),
         " Stop=" , TimeToString ( iTime ( _Symbol ,TF,Day_Shift), TIME_DATE | TIME_MINUTES ),
         " Day_Shift=" , TimeToString ( iTime ( _Symbol , PERIOD_CURRENT ,index), TIME_DATE | TIME_MINUTES ), " index=" ,index);
     }

   Print ( "5" );

  }
//+------------------------------------------------------------------+ 
//| Получим iBarShift для заданного номера бара                      | 
//+------------------------------------------------------------------+   
int iBarShift ( const string Symb, const ENUM_TIMEFRAMES TimeFrame, datetime time, bool exact= false )
  {
   static int Res=- 1 ;
   static string LastSymb= NULL ;
   static ENUM_TIMEFRAMES LastTimeFrame= 0 ;
   static datetime LastTime= 0 ;

   if ((time!=LastTime) || (Symb!=LastSymb) || (TimeFrame!=LastTimeFrame))
     {
       Print ( "10" );
      Res=:: Bars (Symb,TimeFrame,time, UINT_MAX )- 1 ;
       Print ( "11" );
       if (Res< 0 ) Res= 0 ;

      LastTime = time;
      LastSymb = Symb;
      LastTimeFrame=TimeFrame;
     }
   return (Res);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime iTime ( string symbol, ENUM_TIMEFRAMES tf, int index)
  {
   if (index < 0 ) return (- 1 );
   datetime Arr[];
   if ( CopyTime (symbol,tf,index, 1 ,Arr)> 0 )
       return (Arr[ 0 ]);
   else return (- 1 );
  }
//+------------------------------------------------------------------+

이 스크립트를 H4라고 말하면

에 대한 첫 번째 호출에서

Res=:: Bars (Symb,TimeFrame,time, UINT_MAX )- 1 ;

시스템의 혼란이 있습니다.

게다가, 이 혼란은 프로파일링이나 디버깅할 때 존재하지 않습니다.

서비스 데스크에 대한 명시적 질문

 
Aleksey Vyazmikin :

스크립트가 왜 이렇게 느립니까?

2018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=15 Stop=3 Day_Shift=0 index=0

2018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=0

2018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=15 Stop=3 Day_Shift=0 index=0

2018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=0

2018.03.30 09:20:49.300 Scripts script BS (Si Splice,H4) loaded successfully

2018.03.30 09:21:20.209 Scripts script BS (Si Splice,H4) removed

관찰해 주셔서 감사합니다.
이것은 Bars() 함수의 명백한 버그입니다.
질문을 열었습니다 오류, 버그, 보로스 스레드에서

 
Nikolai Semko :

관찰해 주셔서 감사합니다.
이것은 Bars() 함수의 명백한 버그입니다.
질문을 열었습니다 오류, 버그, 보로스 스레드에서

분석 감사합니다 아직 완전히 제정신이 아니어서...