ホーム テクニカル指標 投稿

MetaTrader 5でのTEMAをリングバッファで描く方法

添付ファイル
1417.zip (11.22 KB, ダウンロード 0回)

こんにちは、トレーダーの皆さん!今日はMetaTrader 5で使用できる「リングバッファ」を使ったトリプル指数移動平均(TEMA)の計算方法についてお話しします。

概要

CTEMAOnRingBufferクラスは、リングバッファのアルゴリズムを使ってTEMAを計算するために設計されています。詳細な説明はこちらをご覧ください。

クラスの宣言

class CTEMAOnRingBuffer : public CArrayRing

必要なファイル

CTEMAOnRingBuffer.mqhファイルは、MQL5\Include\IncOnRingBufferフォルダに配置する必要があります。このフォルダには、使用するクラスの例を含む2つのファイルも添付されています。また、リングバッファに必要なリングバッファDEMA、および移動平均のファイルも同じフォルダに配置してください。

クラスメソッド

//--- 初期化メソッド:
bool Init(int period = 12, // TEMAの期間
ENUM_MA_METHOD method = MODE_EMA, // 平滑化の方法
int size_buffer = 256, // リングバッファのサイズ
bool as_series = false); // 時系列の場合はtrue
//--- 時系列またはインジケータバッファに基づく計算メソッド:
int MainOnArray(const int rates_total, // 配列のサイズ
const int prev_calculated, // 前回処理された要素
const double& price[]); // 計算用の配列
//--- 配列の個別要素に基づく計算メソッド:
double MainOnValue(const int rates_total,
const int prev_calculated,
const int begin,
const double value,
const int index);

データへのアクセスメソッド

//--- データへのアクセスメソッド:
int BarsRequired(); // インジケータ描画に必要なバーの数を返す
string Name(); // インジケータ名を返す
int Period(); // 期間を返す
int Size(); // リングバッファのサイズを返す
double MA(int index); // 移動平均値を返す
double DEMA(int index); // DEMA値を返す

リングバッファから計算されたインジケータのデータは、通常の配列から取得することができます。以下のコードを参考にしてください。

//--- TEMAインジケータの計算メソッド:
#include <IncOnRingBuffer\CTEMAOnRingBuffer.mqh>
CTEMAOnRingBuffer tema;
//+------------------------------------------------------------------+
//| カスタムインジケータのイテレーション関数                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total, // 配列のサイズ
const int prev_calculated, // 前回処理されたバー
const int begin, // 重要なデータの開始位置
const double& price[]) { // 計算用配列
   tema.MainOnArray(rates_total, prev_calculated, price);

サンプルコードの例

  1. Test_TEMA_OnArrayRB.mq5ファイルでは価格の時系列に基づいてインジケータを計算します。MainOnArray()メソッドの使用例が示されています。
  2. Test_TEMA_OnValueRB.mq5では、MainOnValue()メソッドの使用方法が示されています。最初にTEMAインジケータが計算され、描画された後、このインジケータのリングバッファに基づいてさらに別のTEMAが描画されます。


Test_TEMA_OnArrayRB.mq5の作業結果(リングバッファサイズ:256要素)



Test_TEMA_OnValueRB.mq5の作業結果(リングバッファサイズ:256要素)

 

このコードの作成には、MetaQuotes Software Corp.Integer、およびGODZILLAの開発が使用されました。

関連記事

コメント (0)