MQL4用の取引モジュールを作りました

取引処理をモジュール化したのでご紹介します。

概要

MQL4の取引処理には大きく分けて4つの種類があります。

  1. 新規発注(OrderSend)
  2. 注文変更(OrderModify)
  3. 待機注文取消し(OrderDelete)
  4. オープンポジション決済(OrderClose)

これら4つの処理ごとにラッパー関数を用意して簡単に実行できるようにしました。
特にOrderSendは必要なパラメータの数が多く、書くのも手間ですしコードの見通しも悪くなってしまいます。
ラッパー関数を用意したことで、僅かなパラメータの指定だけで済み、コードの見通しも改善されました。

これらの関数に指定するパラメータは、基本的には同じ設定を使いまわすことが多いです。
そこで今回作成したモジュールでも、パラメータの使い回しを意識して処理を作成したのが特徴です。

準備

GithubからTrade.mqh, defines.mqh, enums.mqh, structs.mqhの4つのファイルをダウンロードして下さい。

MT4のデータフォルダを開き、ダウンロードしたファイルを全てMQL4/Include/mql4_modules/Tradeフォルダの中に保存します。

Trade.mqhはMQL4-Env, MQL4-Order, MQL4-Priceにも依存しております。これらのファイルもご用意ください。

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

#include <mql4_modules/Trade/Trade.mqh>

使い方

MQL4-Tradeモジュールには、4つのメソッドがあります。

  • Entry
  • Modify
  • Delete
  • Exit

Entryメソッド

Entryメソッドには、OrderSendRequest構造体をパラメータとして渡します。OrderSendRequest構造体とは、OrderSend関数に必要なパラメータを一纏めにした構造体です。

OrderSendRequest構造体の特徴として、価格の指定方法が独特です。価格はdouble型で指定するのではなく、TradePrice構造体で指定します。TradePrice構造体は、価格の計算方法と計算値の2つの値を持つ構造体です。価格の計算方法には、下記の3種類が存在します。

  • DYNAMIC_PRICE
  • DYNAMIC_PIPS
  • STATIC_PRICE

計算方法にDYNAMIC_PRICEが指定された場合、価格は現在の価格が使用されます。AskとBidのうちどちらが使用されるかは、取引種別に応じて自動的に計算されます。
DYNAMIC_PIPSが指定された場合は、計算値をpips値に変換した値と現在価格を足し合わせた価格が使用されます。例えば計算値に10.0が指定されていた場合は、現在価格 + 10.0pipsの価格が発注に使われる値となります。 STATIC_PRICEを指定した場合は、計算値に指定した値がそのまま発注に使われます。計算値に110.500と指定した場合は、110.500がそのまま発注に使われます。

Modifyメソッド

OrderSendRequest構造体の代わりに、OrderModifyRequest構造体をパラメータに指定します。それ以外については基本的にはEntryメソッドと同様です。

Deleteメソッド

Deleteメソッドでは、OrderDeleteRequest構造体をパラメータに指定します。

Exitメソッド

Exitメソッドでは、OrderCloseRequest構造体をパラメータに指定します。

arrow_upward