iBarShift와 유사함 - 페이지 10

 
Aleksey Vyazmikin :

저것들. 월요일을 보여? 그게 나에게 필요한거야... :)

네, 그렇습니다. 일반 기능의 일반적인 동작이 이상합니다. 결국, 우리는 "참조"에서 값을 정확하게 조정하고 있습니다.

MQL4의 일반 함수 iBarShift 는 요청한 시간이 구멍에 들어갈 때 왼쪽 막대의 번호(즉, 이 경우 토요일)를 반환하고 iBarShift3은 구멍에서 오른쪽 막대(즉, 월요일)의 번호를 반환합니다. 더 논리적입니다.

 
Nikolai Semko :

네, 그렇습니다. 일반 기능의 일반적인 동작이 이상합니다. 결국, 우리는 "참조"에서 값을 정확하게 조정하고 있습니다.

MQL4의 일반 함수 iBarShift는 요청한 시간이 구멍에 들어갈 때 왼쪽 막대의 번호(즉, 이 경우 토요일)를 반환하고 iBarShift3은 구멍에서 오른쪽 막대(즉, 월요일)의 번호를 반환합니다. 더 논리적입니다.

그리고 우리가 지금 구멍(실시간)에 있고 막대에 대한 정보를 받기를 기대한다면 어떤 일이 벌어질까요? 어떤 인덱스가 우리에게 제공될까요? MQL4에서는 "1"이고 세 번째 알고리즘에서는 "0"이 될 것이라고 가정합니다.

MQL4 기능에는 "미래를 내다보지 말라"는 메시지가 있다고 생각합니다. 이는 어느 정도 사실입니다. 모두 작업에 따라 다릅니다.

 

Nikolai Semko :

...

귀하의 버전에 대해 한 가지 불만 사항이 있습니다. 매우 복잡하고 느립니다.

내가 그것을 출판했을 때(4년 전) 정확성이 주요 목표였습니다(다시 한 번). 내가 찾은 다른 모든 버전이 잘못되었기 때문입니다(mql4 버전과 비교).

더 빠를 수도 있다는 것을 알고 있습니다.

그렇지 않으면 증명해보십시오. 함수와 광산이 다른 값을 표시할 때 최소한 하나의 매개변수 조합을 찾으십시오.

대부분의 경우 함수는 잘못된 결과를 반환합니다.

왜 필요한지 전혀 이해하지 못하기 때문에 마지막 정확한 매개 변수를 구현하지 않았습니다. 개인적으로 나는 그것이 필요하지 않았습니다.

요구 사항은 mql4 버전과 같은 것입니다.

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

iBarShift와 유사함

알랭 벌리앙 , 2018.04.05 00:18

실제로는 반대의 경우만 표시되며, 내 버전만 올바른 버전입니다. (그리고 이 코드의 원래 iBarShift1은 정확합니다).

내 버전은 mql4 iBarShift 와 마찬가지로 독립 실행형 기능으로 생각되었습니다.


추신: 영어 버전을 게시해야 합니까 아니면 러시아어 번역이 정확합니까?

 
vladevgeniy :
글쎄, 당신은 내 기능을 시도하지 않습니다. 거기에서 시간에 막대의 시작과 끝을 제거하는 솔루션이 적용되었습니다. 모든 것이 맞는 것 같습니다. 그리고 시간적으로는 3번째 버전이 가장 빠릅니다. 아니면 브랜치가 더 중요한가요?))) 아니면 오류도 있나요?) 오래전부터 사용하고 있습니다....

그리고 당신의 기능은 어디에 있습니까? 무엇을 시도하시겠습니까?

 
Aleksey Vyazmikin :

그리고 우리가 지금 구멍(실시간)에 있고 막대에 대한 정보를 받기를 기대한다면 어떤 일이 벌어질까요? 어떤 인덱스가 우리에게 제공될까요? MQL4에서는 "1"이고 세 번째 알고리즘에서는 "0"이 될 것이라고 가정합니다.

MQL4 기능에는 "미래를 내다보지 말라"는 메시지가 있다고 생각합니다. 이는 어느 정도 사실입니다. 모두 작업에 따라 다릅니다.

아니요. 첫 번째는 0입니다. 실시간으로 동일한 방식으로 작동합니다.

 
Aleksey Vyazmikin :

그리고 당신의 기능은 어디에 있습니까? 무엇을 시도하시겠습니까?

그래서 맨 끝에 7 페이지에서))

 int iBarShift ( string symbol, ENUM_TIMEFRAMES timeframe, datetime time){
datetime t1 = TimeCurrent ()+ 10000000 ;
int ps = PeriodSeconds (timeframe);
double div = time/( double )ps;
double mant = div - MathFloor (div);
int ret = Bars (symbol, timeframe, ( datetime )(time-(ps*mant)), t1)- 1 ;
return (ret);
}

이렇게 하면 더 편할지도

 
vladevgeniy :
글쎄, 당신은 내 기능을 시도하지 않습니다. 거기에서 시간에 막대의 시작과 끝을 제거하는 솔루션이 적용되었습니다. 모든 것이 맞는 것 같습니다. 그리고 시간적으로는 3번째 버전이 가장 빠릅니다. 아니면 브랜치가 더 중요한가요?))) 아니면 오류도 있나요?) 오래전부터 사용하고 있습니다....

미소))))

기능은 다음과 같습니다.

 int iBarShift4( string symbol, ENUM_TIMEFRAMES timeframe, datetime time)
  {
   datetime t1= TimeCurrent ()+ 10000000 ;
   int ps= PeriodSeconds (timeframe);
   double div=time/( double )ps;
   double mant=div- MathFloor (div);
   int ret= Bars (symbol,timeframe,( datetime )(time-(ps*mant)),t1)- 1 ;
   return (ret);
  }

예를 들어 % - 나눗셈의 나머지 부분과 같은 일부 수학 연산자를 모른다는 사실을 고려하여

함수를 단순화해 보겠습니다.

일어난:

 int iBarShift4( string symbol, ENUM_TIMEFRAMES timeframe, datetime time)
  {
   time-=time% PeriodSeconds (timeframe);
   return ( Bars (symbol,timeframe,time, UINT_MAX )- 1 );
  }

제 기능은 다음과 같습니다.

 int iBarShift1( const string Symb, const ENUM_TIMEFRAMES TimeFrame, datetime time)
  {
   return ( Bars (Symb,TimeFrame,time+ 1 , UINT_MAX ));
  }

굉장히 유사한. 진실?

오직 당신만이 모든 일을 매우 잘못하고 있고 동시에 더 느리게 하고 있습니다.

이 MQL4 스크립트로 확인할 수 있습니다.

파일:
 
Nikolai Semko :

아니요. 첫 번째는 0입니다. 실시간으로 동일한 방식으로 작동합니다.

글쎄 - 어떤 종류의 알고리즘이 오늘 미래 데이터에 대해 "-1"을 보여주었습니다 ....

 
Nikolai Semko :

미소))))


글쎄요, 그리고 진실은 불일치를 보여줍니다)) 나는 그것을 선택합니다.

 
vladevgeniy :

글쎄요, 그리고 진실은 불일치를 보여줍니다)) 나는 그것을 선택합니다.

네, 빙글빙글 돌았습니다. 이제 가장 짧은 솔루션으로 도퍼하십시오.
사유: