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

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

 

2012年10月29日(月)

MQL4/MQL5のオーダー関数(2)〜トレードの種類 [MQL5]



MQL4では、オーダーに関連する関数として以下のものがありました。

OrderSend() オーダーを送信する関数
OrderClose() オープンポジションを決済する関数
OrderDelete() ペンディングオーダーをキャンセルする関数
OrderModify() オーダーを変更する関数

ところがMQL5ではOrderSend()ひとつしかありません。

もちろんOrderSend()を使って、成行オーダーペンディングオーダーの送信はできます。

ただし、オープンポジションの決済については、MQL5では反対のポジションをオープンするということで対応するしかないので、決済するための機能はありません。

では、オーダーの変更ペンディングオーダーのキャンセルについてはどうかというと、MQL5では、これもOrderSend()関数で実行します。

要するに、MQL5では、オーダーに関する機能をすべてOrderSend()にさせているのです。そこで、それぞれの機能を区別するために、MqlTradeRequest型構造体に「action」というメンバーを用意しているのです。

actionは、「ENUM_TRADE_REQUEST_ACTIONS」という列挙型の変数として定義されており、以下の5種類の定数が代入できます。

TRADE_ACTION_DEAL     成行オーダーの送信
TRADE_ACTION_PENDING ペンディングオーダーの送信
TRADE_ACTION_SLTP  オープンポジションの変更
TRADE_ACTION_MODIFY  ペンディングオーダーの変更
TRADE_ACTION_REMOVE  ペンディングオーダーのキャンセル

新規オーダーの送信の場合、成行であれば「TRADE_ACTION_DEAL」を、指値、逆指値などペンディングオーダーであれば、「TRADE_ACTION_PENDING」を代入します。

またオーダーの変更に関しては、MQL4ではOrderModify()でオープンポジションとペンディングオーダーの変更を行っていましたが、MQL5では、action で区別しており、オープンポジションの変更の場合、「TRADE_ACTION_SLTP」、ペンディングオーダーの変更の場合、「TRADE_ACTION_MODIFY」を指定するようになっています。

最後にMQL4のOrderDelete()に対応するペンディングオーダーのキャンセルについては、actionに「TRADE_ACTION_REMOVE」を代入することで実行できます。

以下にオーダーの変更とキャンセルの記述例を挙げておきます。

例:オープンポジションの変更

MqlTradeRequest request;
MqlTradeResult result;
request.action = TRADE_ACTION_SLTP;
request.symbol = symbol;
request.sl = sl;
request.tp = tp;
OrderSend(request, result);

オープンポジションは通貨ペア単位で合算されているので、「symbol」を指定し、「sl」と「tp」の値を変更します。

例:ペンディングオーダーの変更

MqlTradeRequest request;
MqlTradeResult result;
request.action = TRADE_ACTION_MODIFY;
request.order = order;
request.price = price;
request.sl = sl;
request.tp = tp;
request.type_time = ORDER_TIME_GTC;
request.expiration = expiration;
OrderSend(request, result);

「order」に変更したいペンディングオーダーのチケット番号を指定し、「price」、「sl」、「tp」、「type_time」、「expiration」の変更を行います。

例:ペンディングオーダーのキャンセル

MqlTradeRequest request;
MqlTradeResult result;
request.action = TRADE_ACTION_REMOVE;
request.order = order;
OrderSend(request, result);

「order」にキャンセルしたいペンディングオーダーのチケット番号を指定してOrderSend()を実行すると、ペンディングオーダーがキャンセルされます。


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




Posted at 14時06分


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

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

ランダムウォークとランダムトレード(6)

ランダムウォークとランダムトレード(6)

カテゴリーリスト

最近の記事

検索


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

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

RSS1.0

[Login]


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