보조지표 게시글

링 버퍼를 활용한 스토캐스틱 오실레이터 클래스 소개

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

안녕하세요, 트레이더 여러분! 오늘은 메타트레이더 5에서 스토캐스틱 오실레이터를 계산하는 CStochasticOnRingBuffer 클래스를 소개해드리겠습니다. 이 클래스는 링 버퍼 알고리즘을 통해 스토캐스틱 오실레이터를 계산하는 데 최적화되어 있습니다.

클래스 설명

CStochasticOnRingBuffer 클래스는 스토캐스틱 오실레이터를 계산하기 위해 설계되었습니다. 이 클래스는 링 버퍼를 사용하여 효율적으로 데이터를 처리합니다. 사용 방법은 아래와 같습니다.

클래스 선언

class CStochasticOnRingBuffer

필요한 파일

CStochasticOnRingBuffer.mqh 파일은 MQL5\Include\IncOnRingBuffer 폴더에 위치해야 합니다. 이 폴더에 있는 예제 파일들도 함께 제공됩니다. 링 버퍼 클래스와 이동 평균 클래스도 해당 폴더에 있어야 합니다.

클래스 메서드

//--- 초기화 메서드:
bool Init(// 에러 발생 시 false, 성공 시 true 반환
    int period_k = 5, // %K 기간
    int period_d = 3, // %D 기간
    int period_s = 3, // %K 느림 기간
    ENUM_MA_METHOD method = MODE_SMA, // %D 방법
    int size_buffer = 256, // 링 버퍼 크기
    bool as_series = false // 시간 시리즈 여부
    );
//--- 시간 시리즈 또는 인디케이터 버퍼 기반 계산 메서드:
int MainOnArray(// 처리된 요소 수 반환
    const int rates_total, // 배열 크기
    const int prev_calculated, // 이전 호출에서 처리된 요소 수
    const double &high[], // 최대값 배열
    const double &low[], // 최소값 배열
    const double &close[]); // 종가 배열

이 클래스를 통해 링 버퍼에서 계산된 스토캐스틱 데이터를 쉽게 가져올 수 있습니다. 예를 들어:

//--- 스토캐스틱 인디케이터 계산 클래스:
#include <IncOnRingBuffer\CStochasticOnRingBuffer.mqh>
CStochasticOnRingBuffer st;

//... 

//+------------------------------------------------------------------+
//| 사용자 정의 인디케이터 반복 함수 |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
        const int prev_calculated,
        const datetime& time[],
        const double& open[],
        const double& high[],
        const double& low[],
        const double& close[],
        const long& tick_volume[],
        const long& volume[],
        const int& spread[]) {
    //--- 가격 시간 시리즈 기반 인디케이터 계산:
    st.MainOnArray(rates_total, prev_calculated, high, low, close);

//... 

//--- 링 버퍼 데이터 사용 예:
    for(int i=start; i<rates_total && !IsStopped(); i++) {
      MainBuffer[i] = st[rates_total-1-i]; // 인디케이터의 메인 라인
      SignalBuffer[i] = st.signal[rates_total-1-i]; // 인디케이터의 신호 라인
    }

//--- 다음 호출을 위한 prev_calculated 반환:
    return (rates_total);
}

링 버퍼의 인덱싱은 시간 시리즈와 동일하다는 점을 유의해 주세요.

예제

  • Test_Stochastic_OnArrayRB.mq5 파일은 가격 시간 시리즈를 기반으로 인디케이터를 계산합니다. MainOnArray() 메서드의 사용법이 포함되어 있습니다.
  • Test_Stochastic_OnValueRB.mq5 파일은 MainOnValue() 메서드의 사용을 보여줍니다. 처음에는 스토캐스틱 오실레이터가 계산되고 그려지며, 이후 링 버퍼를 기반으로 추가적인 스토캐스틱 오실레이터 라인이 그려집니다.


Test_Stochastic_OnArrayRB.mq5의 링 버퍼 작업 결과 (256 요소 크기)



Test_Stochastic_OnValueRB.mq5의 링 버퍼 작업 결과 (256 요소 크기)

 

코드 작성 시 MetaQuotes Software Corp., Integer, GODZILLA의 개발물이 사용되었습니다.

연관 포스트

댓글 (0)