無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
私たちのファンページに参加してください
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
リングバッファを使用してMACDを描画するクラス - MetaTrader 5のためのインディケータ
- ビュー:
- 918
- 評価:
- パブリッシュ済み:
- 2016.08.08 15:57
- アップデート済み:
- 2016.11.22 07:34
- このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
説明
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); }
リングバッファでの索引付けは時系列と同じであることにご注意ください。
例示
- Test_MACD_OnArrayRB.mq5ファイルは価格の時系列に基づいて指標を計算します。MainOnArray() メソッドの適用が実証されます。
- Test_MACD_OnValueRB.mq5ファイルはMainOnValue()メソッドの使用法を実証します。 初めにMACD指標が計算されて描画されます。この指標のリングバッファに基づいて、もう1つのMACD指標が算出されます。
256要素のリングバッファでのTest_MACD_OnArrayRB.mq5の作業の結果 コードを書く上でMetaQuotes Software Corp.、Integer 及びGODZILLAの開発が使われました。
256要素のリングバッファでのTest_MACD_OnValueRB.mq5の作業の結果
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/1361
VininI_Trend_LRMA
LRMA移動平均とその期間が等差数列によって変更するシグナルラインから取られたシグナルに基づいてその値を決定するトレンド指標。
VininI_Trend_XMA_WPRウィリアムズパーセントレンジ指標とその期間が等差数列によって変更するシグナルラインから取られたシグナルに基づいてその値を決定するトレンド指標。