보조지표 게시글

노이즈 감소 기능이 추가된 스토캐스틱 오실레이터 - MetaTrader 4 지표

첨부파일
9279.zip (2.09 KB, 다운로드 0회)

설명:

감도 기능이 추가된 표준 스토캐스틱 오실레이터입니다.

기본 스토캐스틱과 동일한 파라미터를 가지고 있지만, 추가적인 "감도" 파라미터(Sens)가 있습니다.

이 기능은 미리 정의된 임계값 아래의 진동만 고려하여, 많은 잘못된 신호를 줄여줍니다.

클래식 레인 스토캐스틱은 현재 가격이 몇 개의 바에 대한 최대값과 최소값 사이에 위치하도록 하며, %K(Kperiod) 값에 의해 정의됩니다. 그러나 극단값의 차이를 구분하지 않습니다. 예를 들어 1포인트와 100포인트의 차이는 같기 때문에 과매수/과매도 신호를 동일하게 발생시킵니다.

그러나 임계값을 이용해 우리는 의미 있는 진동만 고려할 수 있습니다.

아래 그림 1은 EURUSD 1분 차트에서 표준 스토캐스틱과 제안된 지표를 보여줍니다.

이미지:

그림 1.

지표 필드는 iStochastic과 동일하지만, 추가적인 파라미터 Sens - 감도가 포함되어 있습니다.

출력 버퍼는 동일하며: 0-스토캐스틱 값, 1-신호선입니다.

double iCustom(string symbol, int timeframe, "_StochNR", int %Kperiod, int %Dperiod, 
int slowing, int method, int price_field, int mode, int shift); // StochNR에 새로운 Sens 필드 추가

double iStochastic(string symbol, int timeframe, int %Kperiod, int %Dperiod, 
int slowing, int method, int price_field, int mode, int shift) // 표준 스토캐스틱

실제로 사용하기 위해서는 위와 같이 호출할 수 있지만, 다른 방법으로 수행하는 것이 더 좋습니다. 여러분의 Stoch 함수에 아래 코드를 추가하세요:

double Stoch(int Kperiod, int Slowing, int PriceFild, double sens, int i) {  
   // 최대 및 최소 가격
   double max,min,c;
   for(int j=i; j<i+Slowing; j++) {
      if(PriceFild==1) { // 종가 기준
         max+=Close[ArrayMaximum(Close,Kperiod,j)];
         min+=Close[ArrayMinimum(Close,Kperiod,j)];
        }
      else { // 고가/저가 기준
         max+=High[ArrayMaximum(High,Kperiod,j)];
         min+=Low[ArrayMinimum(Low,Kperiod,j)];
        }
      c+=Close[j];
     }
   
   double delta=max-min;
   if(delta<sens) {
      sens/=2;
      max+=sens; min-=sens;
     }
   delta=max-min;
   if(delta==0) double s0=1;
   else s0=(c-min)/delta;

   return(100*s0);
  }

신호선을 필요로 한다면, 그 값의 이동 평균을 추가해야 합니다. 또 다른 방법은 iCustom의 첫 번째 버퍼에서 값을 가져오는 것이지만, 이는 느릴 수 있습니다.

이제 이름이 더 정보성이 풍부해졌고, 가격 계산 유형이 포함되었습니다. 감도가 0보다 큰 경우, 해당 값이 오실레이터의 이름에 추가됩니다.


편집자 노트:

이 내용은 원본 러시아어 버전의 미러 번역입니다.

저자에게 질문이나 제안, 의견이 있으시면 여기서 게시하는 것이 좋습니다.

이 코드를 거래나 교육 목적으로 유용하게 사용하셨다면, 저자에게 감사의 말씀을 잊지 마세요.

연관 포스트

댓글 (0)