iBarShift와 유사함 - 페이지 7

 

다음은 모든 TF에서 가장 빠르고 정확한 작업 옵션입니다.

 int iBarShift3( const string Symb, const ENUM_TIMEFRAMES TimeFrame, datetime time)
  {
   static int Res=- 1 ;
   static string LastSymb= NULL ;
   static ENUM_TIMEFRAMES LastTimeFrame= 0 ;
   static datetime LastTime= 0 ;
   static int PerSec=:: PeriodSeconds (LastTimeFrame);

   if (LastTimeFrame!=TimeFrame) PerSec=:: PeriodSeconds (TimeFrame);
   if (TimeFrame< PERIOD_D1 ) time-=time%PerSec;

   if ((time!=LastTime) || (Symb!=LastSymb) || (TimeFrame!=LastTimeFrame))
     {
      Res=:: Bars (Symb,TimeFrame,time, UINT_MAX );
       if (TimeFrame< PERIOD_D1 ) Res--;
       if (Res< 0 ) Res= 0 ;

      LastTime = time;
      LastSymb = Symb;
      LastTimeFrame=TimeFrame;
     }

   return (Res);
  }

TF D1, W1 및 MN1의 속도가 느려집니다.

그리고 여기에 다른 버전의 개발과 속도를 명확하게 보여주는 테스트 표시기가 있습니다(두 번째 숫자. 숫자가 작을수록 기능이 빠름).


옵션 3과 4를 올바르게 해결하십시오. 그러나 3이 더 빠릅니다.

CopyTime 옵션이 가장 느립니다.

이것은 MQL4(지표 부착)에서 확인할 수 있습니다.

나는 다른 옵션의 저자를 표시하지 않습니다. 왜냐하면 이미 혼란.
그러나 세 번째로 가장 잘 작동하는 옵션은 @fxsaber 와 같은 80%입니다. 나는 단지 조금 나아졌다.

파일:
 
Nikolai Semko :

옵션 3과 4를 올바르게 해결하십시오. 그러나 3이 더 빠릅니다. CopyTime 옵션이 가장 느립니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

"상인을 위한 LifeHack: 정의(#define)에 ForEach 반죽" 기사에 대한 토론

fxsaber , 2018.02.14 11:58

ZY 기능의 속도 측정은 성능이 중요한 환경에서 측정해야 합니다 - 테스터.

 
fxsaber :

예, 여기서 측정은 특별히 중요하지 않습니다. 따라서 논리가 가장 빠릅니다.

 
Nikolai Semko :

다음은 모든 TF에서 가장 빠르고 정확한 작업 옵션입니다.

TF D1, W1 및 MN1의 속도가 느려집니다.

그리고 여기에 다른 버전의 개발과 속도를 명확하게 보여주는 테스트 표시기가 있습니다(두 번째 숫자. 숫자가 작을수록 기능이 빠름).


옵션 3과 4를 올바르게 해결하십시오. 그러나 3이 더 빠릅니다.

CopyTime 옵션이 가장 느립니다.

이것은 MQL4(지표 부착)에서 확인할 수 있습니다.

나는 다른 옵션의 저자를 표시하지 않습니다. 왜냐하면 이미 혼란.
그러나 세 번째로 가장 잘 작동하는 옵션은 @fxsaber 와 같은 80%입니다. 나는 단지 조금 나아졌다.

표시기에 TF를 추가했습니다. 처음 두 알고리즘은 일반적으로 사용할 수 없습니다.

그림에서 현재 TF는 H1이고 계산은 매일입니다.



 
Renat Akhtyamov :
예(강조 표시)

-1은 빼기(지정해야 함)가 있는 단위이며 함수에서 반환된 오류로 이러한 막대가 없음을 나타냅니다.

그게 내 기능이야

또한 개선이 필요합니다

그렇지만...

선적 서류 비치:

" 참고

Bars() 함수를 호출할 때 지정된 매개변수를 가진 시계열에 대한 데이터가 아직 터미널에서 생성되지 않았거나 함수 호출 시 시계열 데이터가 거래 서버와 동기화 되지 않은 경우 함수 는 null을 반환합니다. "

====

res==0이면 함수에서 -1을 catch합니다.

===

모든 것이 효과가 있으므로 건강에 사용하십시오!

위의 지표에서 이 방법이 어떻게 거짓말을 하는지 명확하게 알 수 있습니다.

 
Nikolai Semko :

다음은 모든 TF에서 가장 빠르고 정확한 작업 옵션입니다.

TF D1, W1 및 MN1의 속도가 느려집니다.

그리고 여기에 다른 버전의 개발과 속도를 명확하게 보여주는 테스트 표시기가 있습니다(두 번째 숫자. 숫자가 작을수록 기능이 빠름).


옵션 3과 4를 올바르게 해결하십시오. 그러나 3이 더 빠릅니다.

CopyTime 옵션이 가장 느립니다.

이것은 MQL4(지표 부착)에서 확인할 수 있습니다.

나는 다른 옵션의 저자를 표시하지 않습니다. 왜냐하면 이미 혼란.
그러나 세 번째로 가장 잘 작동하는 옵션은 @fxsaber 와 같은 80%입니다. 나는 단지 조금 나아졌다.

iBarShift3 옵션 이 제대로 작동하지 않습니다.

 

내 선택을 유지합니다. 주니어 프레임과 시니어 프레임 모두에서 작동하는 것 같습니다. 속도는 ibarshift3보다 약간 높습니다.


int iBarShift(문자열 기호, ENUM_TIMEFRAMES 시간 프레임, 날짜/시간 시간){

날짜 시간 t1 = TimeCurrent()+10000000;

int ps = PeriodSeconds(시간 프레임);

이중 div = 시간/(이중)ps;

이중 맨트 = div - MathFloor(div);

int ret = 막대(기호, 시간 프레임, (날짜/시간)(시간-(ps*mant)), t1)-1;

리턴(레트);

}

 
Vitaly Muzichenko :

iBarShift3 옵션 이 제대로 작동하지 않습니다.

작동하지 않는 예를 들어주실 수 있습니까?

그렇다면 네 번째 옵션만 남아 있습니까?

 
Vitaly Muzichenko :

iBarShift3 옵션 이 제대로 작동하지 않습니다.

어휘는 우리의 전부입니다.

 
Nikolai Semko :

어휘는 우리의 전부입니다.

재빨리 확인했습니다. 하루 이상 작동하는 기능이 있습니다. 대신 iBarShift3 으로 교체하고 EA가 잘못 작동하도록 했습니다. 이것에서 그는 결론을 내렸습니다.

여기 내가 사용하는

 int iBarShift ( string symbol, ENUM_TIMEFRAMES timeframe, datetime time, bool exact= false ) {
 datetime LastBAR;
   if (! SeriesInfoInteger (symbol,timeframe, SERIES_LASTBAR_DATE ,LastBAR)) {
   datetime opentimelastbar[ 1 ];
     if ( CopyTime (symbol,timeframe, 0 , 1 ,opentimelastbar)== 1 )
      LastBAR=opentimelastbar[ 0 ];
     else
       return (- 1 );
  }
//--- if time > LastBar we always return 0
   if (time>LastBAR)
     return ( 0 );
//---
 int shift= Bars (symbol,timeframe,time,LastBAR);
 datetime checkcandle[ 1 ];

   if ( CopyTime (symbol,timeframe,time, 1 ,checkcandle)== 1 ) {
   if (checkcandle[ 0 ]==time)
     return (shift- 1 );
   else if (exact && time>checkcandle[ 0 ]+ PeriodSeconds (timeframe))
     return (- 1 );
   else
     return (shift);
  }
   return (- 1 );
 }
사유: