설명
CEROnRingBuffer 클래스는 적응형 이동 평균(Adaptive Moving Average, AMA)에서 사용하는 효율성 비율(ER) 기술 지표를 계산하기 위해 설계되었습니다. 이 클래스는 링 버퍼 알고리즘을 사용합니다.
클래스 선언
class CEROnRingBuffer : public CArrayRing
타이틀
#include <IncOnRingBuffer\CEROnRingBuffer.mqh>CEROnRingBuffer.mqh 파일은 MQL5\Include\의 IncOnRingBuffer 폴더에 위치해야 합니다. 이 폴더에 있는 클래스의 예제 파일 두 개가 설명서에 첨부되어 있습니다. 링 버퍼 클래스 파일도 이 폴더에 있어야 합니다.
클래스 메서드
//--- 초기화 메서드: bool Init( // 오류 발생 시 false 반환, 성공 시 true 반환 int period = 34, // ER 계산 기간 int size_buffer = 256, // 링 버퍼 크기, 저장된 데이터 수 bool as_series = false // true이면 타임 시리즈, false이면 일반 인덱스 입력 데이터 );
//--- 시계열 또는 지표 버퍼를 기반으로 한 계산 메서드: int MainOnArray( // 처리된 요소 수 반환 const int rates_total, // 배열 크기 array[] const int prev_calculated, // 이전 호출 때 처리된 요소 const double &array[] // 입력 값 배열 );
//--- 배열의 개별 요소를 기반으로 한 계산 메서드 double MainOnValue( // 설정된 요소에 대한 ER 값 반환 const int rates_total, // 배열 크기 const int prev_calculated, // 처리된 배열 요소 const int begin, // 배열의 중요한 데이터 시작 위치 const double value, // 배열 요소 값 const int index // 요소 인덱스 );
//--- 데이터 접근 메서드: int BarsRequired(); // 지표를 그리기 위해 필요한 바 수 반환 string Name() // 지표 이름 반환 int Period() // ER 계산 기간 반환 int Size(); // 링 버퍼 크기 반환
링 버퍼에서 계산된 지표 데이터를 일반 배열처럼 가져올 수 있습니다. 예를 들어:
//--- ER 지표 계산 메서드를 가진 클래스: #include <IncOnRingBuffer\CEROnRingBuffer.mqh> CEROnRingBuffer er; ... //+------------------------------------------------------------------+ //| 사용자 정의 지표 반복 함수 | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- 가격 시계열에 기반한 지표 계산: er.MainOnArray(rates_total,prev_calculated,price); ... //--- 링 버퍼 "er"에서 데이터 사용, // 예를 들어, 지표 버퍼에 데이터 복사: for(int i=start;i<rates_total;i++) { ER_Buffer[i] = er[rates_total-1-i]; // 지표 선 } //--- 다음 호출을 위한 prev_calculated 반환 값: return(rates_total); }
링 버퍼의 인덱싱은 시계열과 동일합니다.
예제
- Test_ER_OnArrayRB.mq5 파일은 가격 시계열을 기반으로 지표를 계산합니다. MainOnArray() 메서드 사용이 설명됩니다.
- Test_ER_OnValueRB.mq5는 MainOnValue() 메서드의 사용을 보여줍니다. 처음에 ER 지표가 계산되고 그려진 후, 이 지표의 링 버퍼를 기반으로 추가 ER이 그려집니다.

Test_ER_OnArrayRB.mq5의 결과, 링 버퍼 크기 256 요소

Test_ER_OnValueRB.mq5의 결과, 링 버퍼 크기 256 요소
이 코드를 작성하는 데는 MetaQuotes Software Corp., Integer 와 GODZILLA의 개발물이 사용되었습니다.
댓글 0