私たちのファンページに参加してください
CArrayRing256リングバッファの簡易化されたクラス - MetaTrader 5のためのライブラリ
- ビュー:
- 673
- 評価:
- パブリッシュ済み:
- 2016.08.08 16:02
- このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
説明
CArrayRing256クラスはCArrayRingリングバッファの簡易版ですが、より高速で、 エキスパートアドバイザーや指標内で中間ストリームデータを格納するためのミニ時系列、指標ミニバッファや短いバッファを整理することができます。
簡素化は配列のインデックスとして使用されているuchar変数のプロパティに基づいています。例えばコードで
double array[UCHAR_MAX+1]; // リングバッファデータ uchar index=0; // バッファ要素インデックス while(!IsStopped()) { array[++index]; // バッファの次の要素に行く ... }
配列のインデックスは常に0~255の値をとり、配列次元の範囲を越えることはありません。これは、すべてのメソッド自体を簡素化してパフォーマンスを増加させることにより、配列の終わりを越えたインデックスの可能な出口を関連したメソッドでチェックし削除することができます。しかし、バッファサイズは常に一定で、256の要素のサイズを有します。多くのタスクについては、これは通常のCArrayRingクラスの受け入れ可能な代案です。
сlass CArrayRing256
タイトル
#include <IncOnRingBuffer\CArrayRing256.mqh>
CArrayRing256.mqh IncOnRingBufferクラスファイルはMQL5\Include\に作成されたIncOnRingBufferフォルダに配置されます。
クラスメソッド
//--- バッファ初期化メソッド: void Init( double volue=EMPTY_VALUE // 空の位置バッファの値 ); //--- 新しい要素をバッファに加えるメソッド void Add( const double element // 追加された要素の値 ); //--- このメソッドは、設定されたインデックスを持つ要素の値を書き換える void Update( // エラーならfalse、成功ならtrueを返す const double element, // 要素の新しい値 const uchar index=0 // 要素インデックス ); //--- このメソッドは指定されたインデックスを持つ要素の値を返す double At( // 要素の値を返す const uchar index // 要素インデックス ) const; //--- このメソッドはバッファ要素に書き込まれた最後の値を返す double Last() const; //--- このメソッドはバッファ要素に書き込まれた最後の値を上書きする: void Last( const double element // 要素の新しい値 ); //--- このメソッドはリングバッファのサイズを返す: int Size();
注意事項:
- リングバッファのサイズは、常に一定と256の要素に等しいです。
- このりングバッファの実装では索引付けは時系列すなわち通常の反対です。
例示
このクラスの使用法はCArrayRingに似ています。2,3の違いもあります:
- Init()メソッドは、確定値によるバッファの初期化に使用されます。
- バッファのサイズは常に一定であるのでResize()メソッドは存在しません。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/1379
極値からの距離とブレイクスルーバーに基づいたトレンド定義のための代替指標の2番目(編集され追加された)のバージョン。以前のトレンドのブレイクスルーのレベルと大きさが追加されます。
リングバッファを使用してAMAを描画するクラスこのクラスはリングバッファを使用した適応移動平均(Adaptive Moving Average、AMA)の計算のために設計されています。
CSVファイルは、経済ニュースを書くために書かれましたが、CSVファイルで作業する場合、ターミナルが正確にその行の数を区別していないという問題点がありました。これが私がこの問題に私の解決策を共有することを決めた理由です。
X-バーフラクタルX-バーフラクタル指標はフラクタルの左右のバーの数を設定することができます。これは、ローカルとグローバル極値のために使用できます。