オーダー情報を取得処理をまとめたモジュール

概要

 EAアンチパターンの2章で紹介したように、OrderSelect関数を使用してオーダー情報を取得処理を開発するには、かなりの経験と手間が必要となります。そこでオーダー情報取得処理をまとめたモジュールを作成しました。

使い方

GithubからOrder.mqhとOrderData.mqhをダウンロードして下さい。

MT4のデータフォルダを開き、Order.mqhをMQL4/Include/mql4_modules/Order/Order.mqhとして保存します。
さらにOrderData.mqhをMQL4/Include/mql4_modules/OrderData/OrderData.mqhとして保存します。

mql4のコード内でOrder.mqhをincludeしたら準備完了です。

#include <mql4_modules/Order/Order.mqh>

実際に利用するには、まずオーダー情報を受け取るためのOrderData構造体を作成します。
OrderDataの配列を作成して、getOrderByTradesメソッドで情報を取得します。
第一引数にマジックナンバーを、第二引数にOrderData配列を渡します。

OrderData data[];
if(!Order::getOrderByTrades(magic, data)) return;
if(ArraySize(data) > 0) {
   int ticket = data[0].ticket;
}

OrderData配列には、第一引数で渡したマジックナンバーと一致するポジションの情報が入ります。
後はdata配列から情報を取り出して利用するだけです。

マジックナンバーは配列を渡して複数指定することも可能です。1つのEAで複数のマジックナンバーを使用している場合に、まとめてオーダー情報を取得するのに使用できます。

OrderData data[];
int magic_arr[2];
magic_arr[0] = magic1;
magic_arr[1] = magic2;
if(!Order::getOrderByTrades(magic_arr, data)) return;
if(ArraySize(data) > 0) {
   int ticket = data[0].ticket;
}

ヒストリープールからオーダーを取得する場合には、getOrderByHistoryメソッドを使います。
また、チケット番号を使ってオーダー情報を取得するには、getOrderByTicketメソッドを使います。

arrow_upward