설명:
감도 기능이 추가된 표준 스토캐스틱 오실레이터입니다.
기본 스토캐스틱과 동일한 파라미터를 가지고 있지만, 추가적인 "감도" 파라미터(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보다 큰 경우, 해당 값이 오실레이터의 이름에 추가됩니다.
편집자 노트:
이 내용은 원본 러시아어 버전의 미러 번역입니다.
저자에게 질문이나 제안, 의견이 있으시면 여기서 게시하는 것이 좋습니다.
이 코드를 거래나 교육 목적으로 유용하게 사용하셨다면, 저자에게 감사의 말씀을 잊지 마세요.