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

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

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

説明

CADXOnRingBufferクラスはリングバッファアルゴリズムを使用したテクニカル指標の平均方向性指数(Average Directional Movement Index、ADX)の計算のために設計されています。 

宣言

class CADXOnRingBuffer

タイトル

#include <IncOnRingBuffer\CADXOnRingBuffer.mqh>

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

クラスメソッド

//--- 初期化メソッド:
bool Init(                                // エラーならfalse、成功ならtrueを返す
   int            ma_period   = 14,       // 移動平均平滑化の期間
   ENUM_MA_METHOD ma_method   = MODE_EMA, // 移動平均の平滑化法
   int            size_buffer = 256,      // リングバッファのサイズ(格納されたデータの数)
   bool           as_series   = false     // 時系列の場合は true、入力データの索引付けが通常の場合はfalse
   );             
//---時系列または指標バッファーに基づいた計算法:          
int MainOnArray(                  // 処理された要素の数を返す
   const int     rates_total,     // 配列サイズ
   const int     prev_calculated, // 前の呼び出しで処理された配列要素
   const double &high[]           // 配列の最高値
   const double &low[]            // 配列の最低値
   const double &close[]          // 終値の配列
   );
//--- 配列の別個の一連の要素に基づいた計算法            
double MainOnValue(              // 設定された要素のADX値を返す
   const int    rates_total,     // 配列サイズ
   const int    prev_calculated, // 処理された配列要素
   const int    begin,           // 配列の重要なデータの初め
   const double high,            // 最高値
   const double low,             // 最低値
   const double close,           // 終値
   const int    index            // 要素インデックス
   );
//--- データアクセスメソッド:
int    BarsRequired();   // 指標描画に必要なバー数を返す
string NameADX();        // 指標名を返す
string NameNDI();        // 負方向の移動指示線の名前を返す
string NamePDI();        // 正方向の移動指示線の名前を返す
string MAMethod();       // 平滑化の方法を文字列で返す
int    MAPeriod();       // 平滑化の期間を返す
int    Size();           // リングバッファのサイズを返す

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

#include <IncOnRingBuffer\CADXOnRingBuffer.mqh>
CADXOnRingBuffer adx;

...

//+------------------------------------------------------------------+
//| カスタム指標反復関数                              |
//+------------------------------------------------------------------+
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[])
  {
//--- 指標の計算:
   adx.MainOnArray(rates_total,prev_calculated,high,low,close);

   ...
     
//--- 「adx」リングバッファのデータを指標にコピーする:
   for(int i=start;i<rates_total;i++)
     {
      ADX_Buffer[i]=adx[rates_total-1-i];      // 平均方向性指数
      PDI_Buffer[i]=adx.pdi[rates_total-1-i];  // 正の方向性指数
      NDI_Buffer[i]=adx.ndi[rates_total-1-i];  // 負の方向性指数
     }

   ...
  }

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

例示

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


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



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

 

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

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

リングバッファを使用して移動平均を描画するクラス リングバッファを使用して移動平均を描画するクラス

このクラスはリングバッファを使用した移動平均の計算のために設計されています。

CorrectedAverage CorrectedAverage

この指標はブレイクスルーラインを表示します。

リングバッファを使用してATRを描画するクラス リングバッファを使用してATRを描画するクラス

このクラスは、リングバッファアルゴリズムを使用したテクニカル指標の平均方向性指数(Average True Range、ATR)の計算のために設計されています。

1つのウィンドウでの複数のCChartObjectオブジェクトの表示 1つのウィンドウでの複数のCChartObjectオブジェクトの表示

このスクリプトは、気配値表示ウィンドウで通貨ペアの数に応じて1つのチャートウィンドウにいくつかのサブチャートを表示します。