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

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

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

説明

このクラスは、リングバッファアルゴリズムを使用したマネーフロー指数(Money Flow Index、MFII)テクニカル指標の計算のために設計されています。 

宣言

class CMFIOnRingBuffer : public CArrayRing

タイトル

#include <IncOnRingBuffer\CMFIOnRingBuffer.mqh>

CMFIOnRingBuffer.mqhクラスファイルはMQL5\Include\に作成されたIncOnRingBufferフォルダに配置されます。クラスによって使用されるこのフォルダからの2つのファイルの例は説明に添付されています。リングバッファ移動平均クラスファイルもこのフォルダになければなりません。

クラスメソッド

//--- 初期化メソッド:
bool Init(                                             // エラーならfalse、
                                                       // 成功ならtrueを返す
   int                 period         = 14,            // MFI期間
   ENUM_MA_METHOD      method         = MODE_SMA,      // 平滑化手法
   ENUM_APPLIED_PRICE  applied_price  = PRICE_TYPICAL, // 計算に使用される価格
   ENUM_APPLIED_VOLUME applied_volume = VOLUME_TICK,   // 計算に使用される数量
   int                 size_buffer    = 256,           // リングバッファのサイズ
   bool                as_series      = false          // 時系列の場合は true、入力データの索引付けが通常の場合はfalse
   );
//--- 時系列または指標バッファーに基づいた計算法:          
int MainOnArray(                  // 処理された要素の数を返す
   const int     rates_total,     // 配列サイズ
   const int     prev_calculated, // 前の呼び出しで処理された配列要素
   const double& open[],          // 始値
   const double& high[],          // 最高値
   const double& low[],           // 最低値
   const double& close[],         // 終値
   const long&   tick_volume[],   // ティックボリューム
   const long&   volume[]);       // 株の数量
   );
//--- 配列の別個の一連の要素に基づいた計算法           
double MainOnValue(              // 設定された要素のMFI 値を返す(バー)
   const int    rates_total,     // 配列サイズ
   const int    prev_calculated, // 処理された配列要素
   const int    begin,           // 配列の重要なデータの初め
   const double open,            // バーの始値
   const double high,            // バーの最大値
   const double low,             // バーの最小値
   const double close,           // バーの終値
   const long   tick_volume,     // バーのティックボリューム
   const long   volume,          // バーの株の数量
   const int    index            // 要素インデックス(バー)
   );
//--- データアクセスメソッド:
int                 BarsRequired(); // 指標描画に必要なバー数を返す
string              Name();         // 指標名を返す
int                 Period();       //  期間を返す
string              Method();       // 方法を文字列で返す
ENUM_APPLIED_PRICE  Price();        // 使われた値段のタイプを返す
ENUM_APPLIED_VOLUME Volume();       // 使われた数量のタイプを返す
int                 Size();         // リングバッファのサイズを返す

リングバッファからの指標の計算されたデータを取得するは、通常の配列から同様に可能です。例を示します。

//--- MFI指標計算メソッドを持つクラス:
#include <IncOnRingBuffer\CMFIOnRingBuffer.mqh>
CMFIOnRingBuffer mfi;

...

//+------------------------------------------------------------------+
//| カスタム指標反復関数                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
//--- 時系列に基づいた指標計算:
   mfi.MainOnArray(rates_total,prev_calculated,open,high,low,close,tick_volume,volume);

...

//--- 「mfi」リングバッファのデータを使う:
//    例えば、データを指標バッファにコピーする:
   for(int i=start;i<rates_total && !IsStopped();i++)
      MFI_Buffer[i] = mfi[rates_total-1-i]; // 指標ライン

...

//--- 次の呼び出しのためのprev_calculatedの返し値
   return(rates_total);
  }

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

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


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



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

 

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

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

TrendEnvelopes TrendEnvelopes

典型的なセマフォトレンド指標。

ytg_Fractals_Price ytg_Fractals_Price

フラクタルの価格レベルの指標

リングバッファを使用してモメンタムを描画するクラス リングバッファを使用してモメンタムを描画するクラス

このクラスはリングバッファを使用したモメンタム(Momentum)の計算のために設計されています。

ブレイクアウトバートレンドEA ブレイクアウトバートレンドEA

ブレイクアウトバートレンドv2指標に基づいたエキスパートアドバイザー。エントリは、設定に関係なく、決まった数の偽シグナルを逃した後にトレンド反転のように行われます。