無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
インディケータ

リングバッファを使用してMACDを描画するクラス - MetaTrader 5のためのインディケータ

ビュー:
918
評価:
(19)
パブリッシュ済み:
2016.08.08 15:57
アップデート済み:
2016.11.22 07:34
\MQL5\Include\IncOnRingBuffer\ \MQL5\Indicators\IncOnRingBuffer\
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

説明

CMACDOnRingBuffer classクラスはリングバッファアルゴリズムを使用した移動平均収束拡散(Moving Average Convergence/Divergence、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,     // array[]配列のサイズ
   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);

...

//--- 「macd」リングバッファのデータを使う:
//    データを指標バッファにコピーする:
   for(int i=start;i<rates_total;i++)
     {
      MainBuffer[i]   = macd[rates_total-1-i];          // 指標ヒストグラム
      SignalBuffer[i] = macd.signal[rates_total-1-i];   // 指標のシグナルライン
     }
//--- 次の呼び出しのためのprev_calculatedの返し値
   return(rates_total);
  }

リングバッファでの索引付けは時系列と同じであることにご注意ください。

例示

  1. Test_MACD_OnArrayRB.mq5ファイルは価格の時系列に基づいて指標を計算します。MainOnArray() メソッドの適用が実証されます。
  2. Test_MACD_OnValueRB.mq5ファイルはMainOnValue()メソッドの使用法を実証します。 初めにMACD指標が計算されて描画されます。この指標のリングバッファに基づいて、もう1つのMACD指標が算出されます。 


256要素のリングバッファでのTest_MACD_OnArrayRB.mq5の作業の結果



256要素のリングバッファでのTest_MACD_OnValueRB.mq5の作業の結果

 

コードを書く上でMetaQuotes Software Corp.Integer 及びGODZILLAの開発が使われました。

MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/1361

VininI_Trend_LRMA VininI_Trend_LRMA

LRMA移動平均とその期間が等差数列によって変更するシグナルラインから取られたシグナルに基づいてその値を決定するトレンド指標。

VininI_Trend_XMA_WPR VininI_Trend_XMA_WPR

ウィリアムズパーセントレンジ指標とその期間が等差数列によって変更するシグナルラインから取られたシグナルに基づいてその値を決定するトレンド指標。

EF_distance EF_distance

移動平均線のあと一つのバリエーション

Exp_CorrectedAverage Exp_CorrectedAverage

CorrectedAverage 移動平均を使ったブレイクスルーシステム。