初期化に使用されるのがコンストラクタであり、構造体またはクラスのオブジェクトを作成する時に自動的に呼び出されます。コンストラクタ名は、構造体/クラス名と一致する必要があります。
|
//+——————————————————————+ |
以下の「Defines.mqh」というインクルードファイルをプロジェクトのルートフォルダに置きます。オブジェクトのフィールドをすぐに初期化するために、プライベートのコンストラクタを作成します。オブジェクトの種類(ステータス)とチケットは、後で識別するためにその情報が渡されます。
この「Defines.mqh」というインクルードファイルには、ライブラリに必要なすべての列挙型、マクロ置換、定数、構造体が格納されています。現在、注文状況を記述する列挙型と、「注文、取引、ポジション」のパラメータを記述する列挙型が必要です。注文のパラメータには、整数、実数、文字列の3つの列挙型があります。
※列挙型=いくつかの定数をひとまとめに定義することができる
//+------------------------------------------------------------------+ //| 抽象注文型(ステータス) | //+------------------------------------------------------------------+ enum ENUM_ORDER_STATUS { ORDER_STATUS_MARKET_PENDING, // 現在の未決注文 ORDER_STATUS_MARKET_ACTIVE, // アクティブな成行注文 ORDER_STATUS_HISTORY_ORDER, // 履歴成行注文 ORDER_STATUS_HISTORY_PENDING, // 削除された未決注文 ORDER_STATUS_BALANCE, // 残高操作 ORDER_STATUS_CREDIT, // クレジット操作 ORDER_STATUS_DEAL, // 取引 ORDER_STATUS_UNKNOWN // 未知のステータス }; //+------------------------------------------------------------------+ //| 注文、取引、ポジションの整数型プロパティ | //+------------------------------------------------------------------+ enum ENUM_ORDER_PROP_INTEGER { ORDER_PROP_TICKET = 0, // 注文チケット ORDER_PROP_MAGIC, // 注文マジック ORDER_PROP_TIME_OPEN, // 開始時間 ORDER_PROP_TIME_CLOSE, // 決済時間 ORDER_PROP_TIME_EXP, // 注文有効期限(未決注文用) ORDER_PROP_TYPE, // 注文と取引タイプ ORDER_PROP_STATUS, // 注文ステータス(ENUM_ORDER_STATUS列挙体から) ORDER_PROP_REASON, // 取引/注文/ポジション理由またはソース ORDER_PROP_POSITION_ID, // ポジションID ORDER_PROP_POSITION_BY_ID, // 反対側のポジションID ORDER_PROP_DEAL_ORDER, // 取引が実行された注文 ORDER_PROP_DEAL_ENTRY, // 取引の方向 – IN、OUT、IN/OUT ORDER_PROP_TIME_OPEN_MSC, // 開始時間(ミリ秒) ORDER_PROP_TIME_CLOSE_MSC, // 決済時間(ミリ秒)(実行または削除の時間 - ORDER_TIME_DONE_MSC) ORDER_PROP_TIME_UPDATE, // ポジション変更時間(秒) ORDER_PROP_TIME_UPDATE_MSC, // ポジション変更時間(ミリ秒) ORDER_PROP_TICKET_FROM, // 親注文チケット ORDER_PROP_TICKET_TO, // 派生注文チケット ORDER_PROP_PROFIT_PT, // 利益(ポイント) ORDER_PROP_CLOSE_BY_SL, // ストップロスによる決済のフラグ ORDER_PROP_CLOSE_BY_TP, // テイクプロフィットによる決済のフラグ ORDER_PROP_DIRECTION, // 方向(買または売) }; #define ORDER_PROP_INTEGER_TOTAL (22) // 整数型プロパティの総数 //+------------------------------------------------------------------+ //| 注文、取引、ポジションの実数型プロパティ | //+------------------------------------------------------------------+ enum ENUM_ORDER_PROP_DOUBLE { ORDER_PROP_PRICE_OPEN = ORDER_PROP_INTEGER_TOTAL, // 始値(MQL5取引価格) ORDER_PROP_PRICE_CLOSE, // 終値 ORDER_PROP_PROFIT, // 利益 ORDER_PROP_COMMISSION, // 手数料 ORDER_PROP_SWAP, // スワップ ORDER_PROP_VOLUME, // ボリューム ORDER_PROP_VOLUME_CURRENT, // 実行されていないボリューム ORDER_PROP_SL, // ストップロス価格 ORDER_PROP_TP, // テイクプロフィット価格 ORDER_PROP_PROFIT_FULL, // 利益+手数料+スワップ ORDER_PROP_PRICE_STOP_LIMIT, // ストップリミット注文が発動した際のリミット注文価格 }; #define ORDER_PROP_DOUBLE_TOTAL (11) // 実数型プロパティの総数 //+------------------------------------------------------------------+ //| 注文、取引、ポジションの文字列型プロパティ | //+------------------------------------------------------------------+ enum ENUM_ORDER_PROP_STRING { ORDER_PROP_SYMBOL = (ORDER_PROP_INTEGER_TOTAL+ORDER_PROP_DOUBLE_TOTAL), // 注文銘柄 ORDER_PROP_COMMENT, // 注文コメント ORDER_PROP_EXT_ID // 外部取引システムの注文ID }; #define ORDER_PROP_STRING_TOTAL (3) // 文字列型プロパティの総数 //+------------------------------------------------------------------+
上記の赤文字(親注文チケット、派生注文チケット、利益(ポイント)、ストップロスまたはテイクプロフィットによる決済のフラグ、利益+手数料+スワップを考慮した方向)のプロパティが追加されています。
これらのデータは取引戦略ロジックでよく使用されるため、抽象注文フィールドに格納するだけでなく、カスタムプログラムですぐに更新・受信できるようにしなければなりません。すべての注文プロパティ(整数、実数、文字列)をまとめるには、各プロパティタイプの3つの列挙のそれぞれにパラメータの数を含むマクロ置換を作成します。
整数型プロパティの列挙型の番号付けはゼロから始まりますが、他のプロパティの列挙型の番号付けは前のプロパティの総数から始まります。したがって、必要なプロパティのインデックスは常に、要求されたプロパティの番号と、この列挙の初期プロパティの番号の差として取得できます。






コメントを残す