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

Mike 2013.01.08 00:45 63 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(// 처리된 요소 수 반환constint rates_total, // 배열 크기constint prev_calculated, // 이전 호출에서 처리된 요소 수constdouble &array[] // 입력 값 배열
);
//--- 개별 시리즈 요소 기반의 계산 메서드:double MainOnValue(// OsMA 값 반환constint rates_total, // 배열 크기constint prev_calculated, // 처리된 배열 요소constint begin, // 배열의 시작 위치constdouble value, // 배열의 중요한 요소constint index // 요소 인덱스
);

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

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

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

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