안녕하세요, 트레이더 여러분! 오늘은 MetaTrader 5에서 링 버퍼를 활용하여 모멘텀 지표를 계산하는 방법에 대해 알아보겠습니다. 이 글에서는 CMomentumOnRingBuffer 클래스를 통해 모멘텀 지표를 효과적으로 계산하고 활용하는 방법을 소개할게요.
CMomentumOnRingBuffer 클래스 소개
CMomentumOnRingBuffer 클래스는 링 버퍼 알고리즘을 사용하여 기술 지표인 모멘텀(Momentum)을 계산하기 위해 설계되었습니다.
클래스 선언
class CMomentumOnRingBuffer : public CArrayRing
파일 위치
CMomentumOnRingBuffer.mqh 파일은 MQL5\Include\IncOnRingBuffer 폴더에 위치해야 하며, 이 폴더에는 클래스에 사용되는 예제 파일 두 개도 첨부되어 있습니다. 링 버퍼 클래스 파일도 이 폴더에 있어야 합니다.
클래스 메서드
//--- 초기화 메서드: bool Init(// 오류 시 false, 성공 시 true int period = 14, // 모멘텀 주기 int size_buffer = 256, // 링 버퍼 크기 bool as_series = false // true면 시계열, 아니면 false );
//--- 시계열 또는 지표 버퍼를 기반으로 계산하는 메서드: int MainOnArray(// 처리된 요소 수 반환 const int rates_total,// 배열 크기 const int prev_calculated,// 이전 호출에서 처리된 요소 const double& array[]);// 입력 데이터 배열
링 버퍼에서 계산된 데이터를 일반 배열과 동일하게 가져올 수 있습니다. 예를 들어:
//--- 모멘텀 지표 계산 클래스: #include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh> CMomentumOnRingBuffer momentum; ... //+------------------------------------------------------------------+ //| 사용자 정의 지표 반복 함수| //+------------------------------------------------------------------+ int OnCalculate (const int rates_total,// 배열 가격[] 크기 const int prev_calculated,// 이전 호출에서 처리된 막대 const int begin,// 유의미한 데이터 시작점 const double& price[])// 계산용 배열 {
예제 코드 및 결과
- Test_Momentum_OnArrayRB.mq5 파일은 가격 시계열을 기반으로 지표를 계산합니다. MainOnArray() 메서드 사용을 보여줍니다.
- Test_Momentum_OnValueRB.mq5 파일은 MainOnValue() 메서드를 사용한 예제를 보여줍니다. 먼저 모멘텀 지표가 계산되고 그 다음 이 링 버퍼를 기반으로 또 다른 모멘텀 지표가 그려집니다.

Test_Momentum_OnArrayRB.mq5의 결과 (링 버퍼 크기 256)

Test_Momentum_OnValueRB.mq5의 결과 (링 버퍼 크기 256)
이 코드를 작성하는 데는 MetaQuotes Software Corp., Integer 및 GODZILLA의 개발물이 사용되었습니다.