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

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

 

2012年09月10日(月)

MT5で両建てシステム(8)〜仮想ポジションの決済関数 [MQL5]



前回、成行売買オーダーを送信する関数OrderSendMarket()を作成しました。今回は、ポジションを決済する関数について説明します。

MQL4では、ポジションを決済するためにOrderClose()という関数があったのですが、MQL5ではそういう関数はありません。OrderSend()関数のパラメータにもポジション決済に対応するものはありません。

ではどうするかと言うと、ポジションを決済するためには、反対売買を行うしかありません。つまり、買いポジションがあったとすると、それを決済するために売りポジションを建てるということです。

MQL4の場合、買いポジションと売りポジションの両方が建ち、両建ての状態になるのですが、MQL5では同じ通貨ペアのポジションは常に合算されるので、両建てになった瞬間にポジションは0になってしまいます。つまり、これがポジションを決済したことになるのです。

この仕様の違いのため、MQL4と同じようなポジション管理をするために、MQL5では実際のポジションではなく、仮想的なポジションという面倒なことをしなくてはいけないわけです。

ここで、MQL5用の決済関数として、OrderClose()を作成してみましょう。

一応、ポジション情報はMyPosという変数に保存されているという前提で話を進めます。本来なら通貨ペア名も保存しておいた方がよかったのですが、ここでは簡単のため、通貨ペアはEAを挿入したチャート上のものとします。

// クローズポジション
bool OrderClose()
{
MqlTradeRequest request={0};
MqlTradeResult result={0};

MqlTick tick;
SymbolInfoTick(_Symbol, tick);

double lots = MyPos.lots;
if(lots > 0)
{
request.type = ORDER_TYPE_SELL;
request.magic = MAGIC_B;
request.price = tick.bid;
}
else if(lots < 0)
{
request.type = ORDER_TYPE_BUY;
request.magic = MAGIC_S;
request.price = tick.ask;
}
else return(true);

request.action = TRADE_ACTION_DEAL;
request.symbol = _Symbol;
request.deviation = Slippage;
request.volume = MathAbs(lots);
request.type_filling = ORDER_FILLING_FOK;
OrderSend(request,result);
ZeroMemory(MyPos);
return(true);
}

関数の内容は、前回のOrderSendMarket()とだいたい同じなのですが、売買の種類とマジックナンバーの指定に注意してください。

まず、MyPos.lotsの符号でポジションの売買の種類を判別します。

買いポジションの場合、売りオーダーを送信するために売買の種類はORDER_TYPE_SELLとしますが、マジックナンバーは買いポジションの決済ということで、MAGIC_Bを指定します。

売りポジションの場合、その逆で買いオーダーにするので、売買の種類はORDER_TYPE_BUYとしますが、マジックナンバーはMAGIC_Sとします。

最後に、決済が完了するとポジションはなくなるので、MyPosをリセットしておきます。 ZeroMemory(MyPos)と書くと、構造体変数 MyPosの各メンバーがすべて0に初期化されます。


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




Posted at 16時20分


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

Sponsor AD

2012/9

            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            

プロフィール

豊嶋久道

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

PHOTO

Excelでヒストグラムの作成

Excelでヒストグラムの作成

カテゴリーリスト

最近の記事

検索


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

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

RSS1.0

[Login]


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