無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
私たちのファンページに参加してください
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
- ビュー:
- 909
- 評価:
- パブリッシュ済み:
- 2016.12.15 10:02
- アップデート済み:
- 2017.07.17 17:21
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
このクロスプラットフォームライブラリを使うと、構造体や標準データ型でのバイト単位の操作が便利に実行できます。
特徴:
- 構造体と標準データ型同士のバイト単位の比較(==と!=)(MQLでは、構造体を比較する演算子はデフォルトでは存在しません)
- 構造体フィールドの名前によるバイトシフトの決定
- ソースデータのバイトシフトによる任意の標準型の値の読み取り
- ソースデータのバイトシフトによる構造体と標準型の記述
- 構造体と標準データ型のバイト配列への変換
上記は単純構造体に当てはまります。
ライブラリの機能を示すために、詳細なコメントを持つスクリプトが添付されています。
// MQL4&5-コード #property strict #include <TypeToBytes.mqh> #define PRINT(A) ::Print(#A + " = " + (string)A); void OnStart( void ) { MqlTick Tick; ::SymbolInfoTick(::Symbol(), Tick); MqlTick CloneTick = Tick; // 構造体の操作 if (_R(Tick) == CloneTick) // 構造体の比較が可能になる ::Print("Equal"); // シフトによって必要な型の結果を取得する PRINT(_R(Tick)[(datetime)0]) // 'datetime'値をMqlTick構造体のオブジェクトのゼロシフトで確認する - Tick.time // 構造体フィールドのシフトを取得する const int Offset = _OFFSET(Tick, bid); // MqlTickオブジェクトのbidフィールドでバイトシフトが検出される PRINT(Tick.bid) // Tick.bidの値を確認する _W(Tick, Offset, (double)1.23456); // 検出されたシフトで (double)1.098765 を書く PRINT(Tick.bid) // Tick.bid が1.098765に等しいと確認する PRINT(_R(Tick)[(double)Offset]) // シフトオフセットでの 'double' 値を出力 - それは再びTick.bidである PRINT(_R(Tick).Bytes[8]) // MqlTick構造体オブジェクトで8のシフトでバイト値を確認する PRINT(_R(Tick)[(uchar)8]) // 違う方法で同じことをする PRINT(CloneTick.bid) // CloneTick.bidの値を確認する _W(CloneTick, 0, Tick); // Tick構造体オブジェクトの値をシフトなしでCloneTickに書く PRINT(CloneTick.bid) // CloneTick.bid == Tick.bidだと確認する // 標準型の操作 color Color = C'241,248,255'; PRINT(_R(Color)[(uchar)1]) // 色の緑成分 - 248 _W(Color, 2, (uchar)230); // シフト2で (uchar)230 を書く PRINT(Color) // Colorが C'241,248,230'だと確認する // 混合した型での同時操作 if (_R(Tick) != Color) // 構造体と標準型の比較も可能 ::Print("Not equal"); return; }
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/16280