説明
リングバッファは、データを保存するため整理形態の一つです。通常、それは、最も古い要素が最新のデータで置き換えられる長さの限られた配列として表れされます。このように、最後のデータには常に特定の数へのアクセスがあります。これはほとんどの場合ストリームデータの非同期読み出し/書き込みに使用されます。詳細はこちらをご参照ください。
エキスパートアドバイザーと指標を書き込むときは、多くの場合、すべてのバーのために計算された値を格納する必要はありません。例えば、最後の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つの例があります。
MetaQuotes Software Corp.によりロシア語から翻訳された
元のコード: https://www.mql5.com/ru/code/1340
この移動平均線の描画はデマークのDaily Range Projections(日中の価格帯の予想)法に基づきます。
ColorStochNRオシレータのシグナルに基づいた取引システム。
この指標はブレイクスルーラインを表示します。
このクラスはリングバッファを使用した移動平均の計算のために設計されています。