概要
CMACDOnRingBufferクラスは、移動平均収束発散(MACD)インジケーターをリングバッファアルゴリズムを用いて計算するために設計されています。
クラスの宣言
class CMACDOnRingBufferファイルのインクルード
#include <IncOnRingBuffer\CMACDOnRingBuffer.mqh>CMACDOnRingBuffer.mqhファイルは、MQL5\Include内に作成する必要があるIncOnRingBufferフォルダに配置してください。このフォルダ内で使用されるサンプルファイルが2つ、説明に添付されています。また、リングバッファのクラスや、移動平均のクラスもこのフォルダに配置する必要があります。
クラスメソッド
//--- 初期化メソッド: 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なら時系列、falseなら通常のインデックス );
//--- 時系列またはインジケータバッファに基づく計算メソッド: int MainOnArray( // 処理された要素の数を返す const int rates_total, // 配列のサイズ const int prev_calculated,// 前回の呼び出しで処理された要素 const double &array[] // 入力値の配列 );
//--- 配列の各要素に基づく計算メソッド: double MainOnValue( // 指定された要素のMACD値を返す const int rates_total, // 配列のサイズ const int prev_calculated,// 処理された配列の要素 const int begin, // 配列の重要なデータが始まる位置 const double value, // 配列の要素値 const int index // 要素のインデックス );
//--- データへのアクセスメソッド: int BarsRequired(); // インジケーターを描画するために必要なバーの数を返す string Name() // インジケーターの名前を返す string NameMain() // インジケーターのメインラインの名前を返す string NameSignal() // インジケーターのシグナルラインの名前を返す string FastMethod() // 高速ラインのスムージングメソッドを文字列で返す string SlowMethod() // 低速ラインのスムージングメソッドを文字列で返す string SignalMethod() // シグナルラインのスムージングメソッドを文字列で返す int FastPeriod() // 高速ラインのスムージング期間を返す int SlowPeriod() // 低速ラインのスムージング期間を返す int SignalPeriod() // シグナルラインのスムージング期間を返す int Size(); // リングバッファのサイズを返す
リングバッファからインジケーターの計算データを取得する方法は、通常の配列と同様です。例えば:
//--- MACDインジケーター計算メソッドを持つクラス: #include <IncOnRingBuffer\CMACDOnRingBuffer.mqh> CMACDOnRingBuffer macd; ... //+------------------------------------------------------------------+ //| カスタムインジケーターの反復関数 | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- 価格の時系列に基づくインジケーター計算: macd.MainOnArray(rates_total,prev_calculated,price); ... //---関連記事