링 버퍼를 이용한 OsMA 지표 계산 방법 (MetaTrader 5)

Mike 2013.01.08 00:45 29 0 0
첨부파일

안녕하세요, 트레이더 여러분! 오늘은 MetaTrader 5에서 링 버퍼를 활용하여 OsMA(이동 평균 오실레이터) 지표를 계산하는 방법에 대해 알아보겠습니다.

지표 설명

COsMAOnRingBuffer 클래스는 링 버퍼 알고리즘을 이용해 OsMA 지표를 계산하도록 설계되었습니다. OsMA는 가격의 이동 평균과 이동 평균의 차이를 나타내는 지표로, 시장의 추세를 파악하는 데 유용합니다.

클래스 선언

class COsMAOnRingBuffer : public CArrayRing

파일 포함

#include <IncOnRingBuffer\COsMAOnRingBuffer.mqh>

COsMAOnRingBuffer.mqh 파일은 MQL5\Include\IncOnRingBuffer 폴더에 위치해야 하며, 이 폴더에는 링 버퍼, MACD 및 이동 평균 클래스와 관련된 다른 파일도 포함되어야 합니다.

클래스 메서드

//--- 초기화 메서드:
bool Init(// 오류 발생 시 false, 성공 시 true 반환
    int fast_period = 12, // 빠른 이동 평균 기간
    int slow_period = 26, // 느린 이동 평균 기간
    int signal_period = 9, // 신호 이동 평균 기간
    ENUM_MA_METHOD fast_method = MODE_EMA, // 빠른 이동 평균 방식
    ENUM_MA_METHOD slow_method = MODE_EMA, // 느린 이동 평균 방식
    ENUM_MA_METHOD signal_method = MODE_SMA, // 신호 이동 평균 방식
    int size_buffer = 256, // 링 버퍼 크기
    bool as_series = false // 시간 시리즈일 경우 true
);
//--- 시간 시리즈 또는 지표 버퍼 기반의 계산 메서드:
int MainOnArray(// 처리된 요소 수 반환
    const int rates_total, // 배열 크기
    const int prev_calculated, // 이전 호출에서 처리된 요소 수
    const double &array[] // 입력 값 배열
);
//--- 개별 시리즈 요소 기반의 계산 메서드:
double MainOnValue(// OsMA 값 반환
    const int rates_total, // 배열 크기
    const int prev_calculated, // 처리된 배열 요소
    const int begin, // 배열의 시작 위치
    const double value, // 배열의 중요한 요소
    const int index // 요소 인덱스
);

링 버퍼에서 계산된 지표 데이터를 일반 배열처럼 접근하여 사용할 수 있습니다. 예를 들어:

//--- OsMA 지표 계산을 위한 클래스:
#include <IncOnRingBuffer\COsMAOnRingBuffer.mqh>
COsMAOnRingBuffer osma;

...
//+------------------------------------------------------------------+
//| 사용자 정의 지표 반복 함수|
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total, 
    const int prev_calculated, 
    const int begin, 
    const double &price[]) 
{
    //--- 가격 시간 시리즈 기반의 지표 계산:
    osma.MainOnArray(rates_total, prev_calculated, price);

    ...
    //---                     
목록
댓글 0