MT5のポジションエントリー(cTraderを使用した発注方法)
ポジションエントリー(cTraderを使用した発注方法)
MQL5でコードを記述する際には、つまづきやすい点の一つに発注方法が挙げられます。
MQL4とは大きく異なる点として発注から約定までは「Order」として扱われ、約定したものは「Position」として扱われること、構造体を用いて値を渡すこと、ネッティング口座とヘッジ口座が存在することなどがあります。
OrderSend()関数
MQL5における「OrderSend()」関数は、指定された「MqlTradeRequest」構造体を渡し、結果が指定された「MqlTradeResult」構造体に返されるため、コーディングが複雑になることがあります。
さらに、業者によって渡す値が異なる場合があるため、別の処理を行う必要があります。
| MQL4 | MQL5 |
| |
| |
|
cTradeライブラリ
MQL5には多数の標準ライブラリが用意されており、その中には「cTrade」ライブラリも含まれています。
このライブラリを使用することで、MQL4に近い形で発注を行うことが可能となります。
特に、「cTrade」ライブラリの「PositionOpen()」関数は、MQL4よりもオプション数が少なく、簡潔なコードで発注を行うことができます。
| MQL4 | MQL5 |
| |
使用例
#include <Trade\Trade.mqh>
CTrade Trade;
MqlTick Tick;
input int MAGIC = 5963;
input double LOT = 0.1;
input string COMMENT = "test";
void OnTick() {
SymbolInfoTick(_Symbol, Tick);
double SL = NormalizeDouble(Tick.bid - 1, _Digits);
double TP = NormalizeDouble(Tick.bid + 1, _Digits);
//発注 ※無限に発注します
Trade.SetExpertMagicNumber(MAGIC);
Trade.PositionOpen(_Symbol, ORDER_TYPE_BUY, LOT, Tick.bid, 0, 0, COMMENT);
}
解説)
#include <Trade\Trade.mqh>
cTradeのライブラリを呼び出します。
CTrade Trade;
MqlTick Tick;
Trade , Tickの使用を宣言します。
SymbolInfoTick(_Symbol, Tick);
宣言したTickに現在の値を入れます。今回はBidの値を使用します。
Bidの値はTick.bidに代入されます。
Trade.SetExpertMagicNumber(MAGIC);
マジックナンバーを発注前に指定します。
PositionOpen()関数にはマジックナンバーを入れるオプションがありません。
Trade.PositionOpen(_Symbol, ORDER_TYPE_BUY, LOT, Tick.bid, 0, 0, COMMENT);
宣言したTradeのPositionOpen()を使用して発注します。
戻り値は基本構造体のチェックが成功した場合は true、それ以外の場合は falseです。発注が成功したかどうかではありません。
「cTrade」ライブラリを使用することで、MQL4に近い感覚で発注を行うことが可能となります。
さらに、このライブラリを使用することで、業者間の差異を気にすることなく、簡単かつスムーズに発注を行うことができます。
執筆者
MT5
Trading View
記事執筆者のご紹介
お役立ちコンテンツ