基礎から学ぶシステムトレード
シストレブログ人気ランキング  

シストレ徹底攻略シストレマスターへの道ワールド・トレーディング・エッジ基礎から学ぶシステムトレードシストレニュースシストレツールシストレナビTOPへ

 

2012年10月22日(月)

MQL4/MQL5のオーダー関数(1)〜オーダーの種類 [MQL5]



今回から取り上げるテーマは「MQL4/MQL5のオーダー関数」です。

言うまでもなく、オーダー関数はEAを作成するときに必ず使う関数です。しかし、既にここのコラムで紹介しているように、オーダー関数はMQL4とMQL5とで大きく変わってしまいました

今回の連載では、MQL4とMQL5のオーダー関数の違いについて、もう少し詳しくみていくことにします。

1回目は「オーダーの種類」についてです。

まず、MQL4のオーダー送信関数は以下のような書式で定義されています。

int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

このなかで、オーダーの種類を指定するパラメータは2番目の「cmd」です。

以下の定数のいずれかを代入します。

OP_BUY      :成行買い
OP_SELL :成行売り
OP_BUYLIMIT :指値買い
OP_SELLLIMIT:指値売り
OP_BUYSTOP :逆指値買い
OP_SELLSTOP :逆指値売り

一方、MQL5のオーダー送信関数は以下のように定義されています。

bool OrderSend(MqlTradeRequest& request, MqlTradeResult& result)

ここで、MqlTradeRequest型の構造体は次のように定義されています。

struct MqlTradeRequest
{
ENUM_TRADE_REQUEST_ACTIONS action;
ulong magic;
ulong order;
string symbol;
double volume;
double price;
double stoplimit;
double sl;
double tp;
ulong deviation;
ENUM_ORDER_TYPE type;
ENUM_ORDER_TYPE_FILLING type_filling;
ENUM_ORDER_TYPE_TIME type_time;
datetime expiration;
string comment;
};

このなかで、オーダーの種類は「type」というメンバーで指定します。以下の定数のいずれかを代入します。

ORDER_TYPE_BUY            :成行買い
ORDER_TYPE_SELL :成行売り
ORDER_TYPE_BUY_LIMIT :指値買い
ORDER_TYPE_SELL_LIMIT :指値売り
ORDER_TYPE_BUY_STOP :逆指値買い
ORDER_TYPE_SELL_STOP :逆指値売り
ORDER_TYPE_BUY_STOP_LIMIT :条件付き指値買い
ORDER_TYPE_SELL_STOP_LIMIT:条件付き指値売り

これを見ると、MQL5では、MQL4になかった二つの種類が増えています。

ORDER_TYPE_BUY_STOP_LIMIT 条件付き指値買い
ORDER_TYPE_SELL_STOP_LIMIT 条件付き指値売り

これらは「ストップリミットオーダー」とも呼ばれる売買方法で、基本的にはリミットオーダー、つまり指値オーダーです。ただし、オーダー送信時にはまだ指値オーダーは有効になっておらず、ストップオーダーの条件を満たしたときに初めて指値オーダーが有効になります。

ここでストップオーダーの条件とは、逆指値の条件です。買いの場合、価格が上昇して逆指値に達した場合、売りの場合、価格が下落して逆指値に達した場合のことです。

このような条件付き指値オーダーでは、指値と逆指値の二つの価格を指定する必要があります。

MqlTradeRequest型構造体のメンバーのうち、指値は「price」で指定し、逆指値は「stoplimit」で指定します。

このオーダーはペンディングオーダーなので、「action」に「TRADE_ACTION_PENDING」を指定し、以下のようなプログラムとして記述します。

MqlTradeRequest request;
MqlTradeResult result;
request.action = TRADE_ACTION_PENDING;
request.magic = magic; // オプション
request.symbol = symbol;
request.volume = volume;
request.price = price;
request.stoplimit = stoplimit;
request.sl = sl;
request.tp = tp;
request.type = ORDER_TYPE_BUY_STOP_LIMIT;
request.type_filling = ORDER_FILLING_FOK;
request.type_time = ORDER_TIME_GTC;
request.expiration = expiration;
request.comment = comment; // オプション
OrderSend(request, result);

>>“基礎から学ぶシステムトレード”全記事バックナンバーはこちらから




Posted at 17時14分


ページのトップへ ページのトップへ

Sponsor AD

2012/10

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

プロフィール

豊嶋久道

2003年よりFX取引を始め、システムトレードの道へ。最近ではFXオプション取引も含めたトレーディングシステムの研究を行っている。システムトレードを基礎から正しく理解するための情報を発信する予定。

PHOTO

相場はランダムウォーク?

相場はランダムウォーク?

カテゴリーリスト

最近の記事

検索


当サイトコメントについて

当コメントは情報提供のみを目的として作成されたものであり、投資に関してはご自身でご判断くださいますようお願い致します。また、当資料は著作物であり著作権法により保護されております。無断で全文または一部を転載することはできません。

RSS1.0

[Login]


powered by a-blog
Copyright (C) 2008 PhiConcept,Inc. All rights reserved.