概要
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( // 処理された要素の数を返す constint rates_total, // 配列のサイズ constint prev_calculated,// 前回の呼び出しで処理された要素 constdouble &array[] // 入力値の配列 );
//--- 配列の各要素に基づく計算メソッド:double MainOnValue( // 指定された要素のMACD値を返す constint rates_total, // 配列のサイズ constint prev_calculated,// 処理された配列の要素 constint begin, // 配列の重要なデータが始まる位置 constdouble value, // 配列の要素値 constint 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; ... //+------------------------------------------------------------------+//| カスタムインジケーターの反復関数 |//+------------------------------------------------------------------+intOnCalculate(constint rates_total, constint prev_calculated, constint begin, constdouble &price[]) { //--- 価格の時系列に基づくインジケーター計算: macd.MainOnArray(rates_total,prev_calculated,price); ... //---

コメント 0