無料でロボットをダウンロードする方法を見る
Telegram上で私たちを見つけてください。
私たちのファンページに参加してください
私たちのファンページに参加してください
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
- ビュー:
- 864
- 評価:
- パブリッシュ済み:
- 2016.08.08 15:33
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
説明
リングバッファは、データを保存するため整理形態の一つです。通常、それは、最も古い要素が最新のデータで置き換えられる長さの限られた配列として表れされます。このように、最後のデータには常に特定の数へのアクセスがあります。これはほとんどの場合ストリームデータの非同期読み出し/書き込みに使用されます。詳細はこちらをご参照ください。
エキスパートアドバイザーと指標を書き込むときは、多くの場合、すべてのバーのために計算された値を格納する必要はありません。例えば、最後の100バーのデータを維持するので十分でしょう。リングバッファは、このために好適です。明白な利点:
- 計算の増加
- メモリの経済化
- 使いやすく、配列を超えたエグジットの心配が不必要
宣言
сlass CArrayRing
タイトル
#include <IncOnRingBuffer\CArrayRing.mqh>
CArrayRing.mqhクラスファイルは MQL5\Include\に作成されたIncOnRingBufferフォルダに配置されます。クラスの使用例は下のリンクにあります。
クラスメソッド
//--- バッファ初期化メソッド: bool Init( // エラーならfalse、成功ならtrueを返す int size, // リングバッファサイズ double volue=EMPTY_VALUE // 空の位置バッファ ); //--- 新しい要素をバッファに加えるメソッド void Add( const double element // 追加された要素の値 ); //--- このメソッドは指定されたインデックスを持つ要素の値を上書きする bool Update( // エラーならfalse、成功ならtrueを返す const double element, // 要素の新しい値 const int index=0 // 要素インデックス ); //--- このメソッドは指定されたインデックスを持つ要素の値を返す double At( // 要素の値を返す const int index // 要素インデックス ) const; //--- このメソッドはバッファ要素に書き込まれた最後の値を返す double Last() const; //--- このメソッドはバッファ要素に書き込まれた最後の値を上書きする: void Last( const double element // 要素の新しい値 ); //--- このメソッドはリングバッファのサイズを返す: int Size(); //--- このメソッドはリングバッファのサイズを変更する: bool Resize( const int size // 新しいサイズ );
注意事項:
- バッファサイズが減少すると、最後ではなく最も古い要素がなくなります。
- このりングバッファの実装では索引付けは時系列すなわち通常の反対です。
例示
出版の瞬間にもリングバッファを使用した3つの例があります。
- 移動平均描画クラス
- Average True Range描画クラス
- Average Directional Movement Index描画クラス
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/1340

この移動平均線の描画はデマークのDaily Range Projections(日中の価格帯の予想)法に基づきます。

ColorStochNRオシレータのシグナルに基づいた取引システム。

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

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