안녕하세요, 트레이더 여러분! 오늘은 메타트레이더 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의 개발물이 사용되었습니다.