Hodrick-Prescott 필터

 

안녕하세요 친애하는 프로그래머!

내 생각에 칠면조를 쓰는 간단한 작업을 누가 해결할 것입니까? Hodrick-Prescott 필터로 행을 필터링하는 칠면조를 작성해야 합니다. 원칙적으로 이 함수는 MATLAB에 있습니다. 제가 틀리지 않은 경우 Matlab 컴파일러를 사용하여 DLL을 만들 수 있습니다. 따라서 이 DLL을 참조하는 칠면조를 만듭니다. 입력에서 행의 길이, 평활화 매개변수와 같은 매개변수를 적용합니다. 출력에서 추세 구성 요소(차트에 그리기)와 순환 구성 요소(오실레이터)를 얻습니다.

MATLAB Compiler와 MQL4도 이해하지 못하기 때문에 스스로 할 수 없습니다.

그래프에서 유로달러 H4의 분해. 보시다시피 거의 역사를 통틀어 가격 움직임의 특징은 추세를 돌파 한 후 가격이 이전 극값과 추세의 차이만큼의 거리로 이동했다는 것입니다. 간단히 말해서 진폭은 거의 같은. 예외는 최신 데이터이지만 극단적인 경우도 있습니다. 그런 칠면조는 원칙적으로 데이터 포인트 수가 적으면 다시 그려야 하지만, 가령 2000개로 늘리면 다시 그리는 데 문제가 없을 것이라고 생각합니다.

 
Constantin писал(а) >>

그래프에서 유로달러 H4의 분해. 보시다시피 거의...

볼 수 없습니다. 여기 일정이 어떻게 되나요?

 

 
이동 평균 에서 지연이 보이지 않습니다. 이것은 작성자가 자신이 설정한 것을 이해하지 못하거나 알고리즘 및 표시기가 다시 그리는 오류가 있음을 의미합니다.
 
Neutron >> :
이동 평균에서 지연이 보이지 않습니다. 이것은 작성자가 자신이 설정한 것을 이해하지 못하거나 알고리즘 및 표시기가 다시 그리는 오류가 있음을 의미합니다.

일반적으로 이동 평균이 아니기 때문에 지연이 없습니다. 주어진 급수에 대해 함수를 최소화하는 문제가 해결됩니다. 당연히 행이 이동할 때 행의 길이가 작으면 특히 버스트가 있는 경우 새로운 정보의 출현으로 다시 그려집니다. http://en.wikipedia.org/wiki/Hodrick-Prescott_filter의 필터 설명

 
Constantin писал(а) >>

원칙적으로 이 함수는 MATLAB에 있습니다. 제가 틀리지 않은 경우 Matlab 컴파일러를 사용하여 DLL을 만들 수 있습니다. 따라서 이 DLL을 참조하는 칠면조를 만듭니다.

dll보다 세상이 더 심플해진 것 같아요.

이 디지털 필터를 구축하기 위해 최소화해야 하는 기능은 다음과 같습니다.

이 설정에서 필터는 기록 데이터에서만 작동할 수 있음을 알 수 있습니다. 현재 시점의 추세선 값을 계산하려면 이 추세의 이전 값뿐만 아니라 한 단계 앞으로 t[i+1]도 알아야 합니다. 역사에 대한 이러한 필터는 인용문(topikstarter가 데모로 첫 번째 게시물에서 가져온 것)과 부드러운 곡선의 정확한 일치를 보여주고 인용문의 오른쪽 가장자리에 뻔뻔스럽게 다시 그립니다.

인터넷에서 찾은 또 다른 내용은 다음과 같습니다.

이 필터를 만들기 위한 준비된 레시피를 찾을 수 없습니다. 실제로 VR의 오른쪽 가장자리에 대한 기능을 직접 가져와서 구축해 보겠습니다(위 방정식).

매개변수 y[0]에 대한 미분을 취해 보겠습니다. 현재 값을 0과 같게 하면 원하는 HP 필터(하위 방정식)에 대한 재귀 표현식을 즉시 얻을 수 있습니다. 필터의 평활화 속성이 평활화 매개변수 w에 어떻게 의존하는지 봅시다.

여기에서 녹색 선은 kotir이고 검은색 선은 w=0.5 등입니다. 모든 것이 올바르게 작동하는 것을 볼 수 있습니다. 피할 수 없는 위상 지연이 있습니다. 더 커질수록 앤티 앨리어싱이 더 강해지고 오른쪽 가장자리가 다시 그려지지 않습니다. 이제 MQL로 코딩할 수도 있습니다.

//+------------------------------------------------------------------+
//| Moving Average HP.mq4 |
//| Code by Neutron |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_color1 Blue
#property indicator_width1 3
extern double w=0.1;
int Start,i,m;
double MA[5000],Y[5000];
int start()
{
Start=5000;
MA[Start]=Open[Start];
MA[Start-1]=Open[Start-1];
for (i=Start-2;i>=0;i--) MA[i]=w*(Open[i]-2.*MA[i+1]+MA[i+2])+2.*MA[i+1]-MA[i+2];
}
int init()
{
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MA);
return(0);
}

결과는 다음과 같습니다.

파란색 - HP, 녹색 - kotir, 빨간색 - 2차 워터아웃 필터(비교용).

실제로 이 필터는 선형 추세를 정직하게 포착하려고 합니다. 그렇지 않으면 안됩니다. 게시물 상단의 기능을 보면 따옴표(첫 번째 합계)에서 이동 평균의 편차를 최소화하기 위한 요구 사항 외에도 2차 미분(2차 합)! 그러나 선의 2차 도함수는 0과 같으며 이를 최소화하기 위한 요구 사항은 임의의 입력 데이터 벡터에 대한 추세선에 대한 최대 흡인 요구 사항과 동일합니다. 접근 방식이 마음에 들었습니다.

추신: 함수에 대한 표현에서 두 번째가 아닌 첫 번째 도함수(상단 방정식)의 최소화가 필요한 경우 지수 평균 EMA(하단 방정식)에 대한 순환 이동 공식을 얻습니다.

지수 평균은 가능한 모든 이동 평균 중에서 가장 부드러운 것으로 밝혀졌습니다!

 

다음은 이 HP 필터(빨간색)를 기반으로 한 발진기(파란색 선)의 모양입니다.

이미 거래를 시도할 수 있습니다 :-)

오실레이터 레벨이 0보다 높을 때 매수하고 - 아래에서 매도합니다. Attach의 표시기.

파일:
difhp.mq4  1 kb
 
Neutron писал(а) >>

지수 평균은 가능한 모든 이동 평균 중에서 가장 부드러운 것으로 밝혀졌습니다.

예, 주제에 대한 기사가 있습니다.

나는 기사에 따라 그것을하지 않았지만 ema 부드러움에 대한 동일한 아이디어를 개발함으로써 좋은 부드러움을 얻을 수 있습니다.

파란색 - EMA15 지연 5.

빨간색 - 동일한 지연으로 더 부드러운 MA.

파일:
stan.zip  147 kb
 
NR 닫기, UGKOZN M1,
빨간색 = 1600
파란색 = 100
노란색 = EMA 14, 닫기.
 
Korey >> :
UKKOZN

UGKOZN은 다섯입니다! 아마 10초 멈췄다, 이게 뭐야. :) 또 다른 옵션 - UGKYV

 
그래서, JPY- 안돼, (여자들이 사이트에 보인다)
사유: