MQL4 OrderClose Function

成行注文を閉じるときは、現在の市場価格で取引を終了します。これは、買い注文の場合は現在のビッド価格、売り注文の場合は現在のアスク価格になります。 この完全な MQL4 OrderClose 関数の記事で、終了条件が満たされたときにオープン注文をクローズするように EA をプログラムする方法を学びましょう。


成行注文を閉じるために使用されるコードは OrderClose() 関数で、その構文は次のとおりです。


bool OrderClose (int Ticket、double Lots、double Price、int Slippage、color Arrow);


次の表でそれぞれについて説明します。これらのパラメータのうち 1 つ:

範囲説明
Ticketポジションを決済するための成行注文のチケット番号
Lots閉店予定のロット。
Price取引を成立させるための優先価格。
Slippage終値の許容スプレッド。
Color閉じた矢印の色定数。

以下の例では、MACD の例から借用した成行買い注文をクローズします:

for(cnt=0; cnt<total ;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
if(MacdCurrent>0 && MacdCurrentSignalPrevious &&
MacdCurrent>(MACDCloseLevel*Point))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
return(0); // exit
}

 

説明

ここでの終了コードは for 演算子で始まり、コード ブロックをループして終了条件を評価します。


関数 OrderSelect() は、オープン注文のプールをチェックし、一致するシンボルと注文タイプ (OP_BUY または OP_SELL) を探すために使用されます。


このコード ブロックの最後で最も重要な条件は、出口戦略条件 (上記の例では MACD 出口条件) を観察することです。


オープンポジションと注文タイプが決定され、MACD 終了条件が満たされると、OrderClose() 関数をデプロイでき、そのパラメーターが指定されます。上の表で議論します。

カスタムクローズ関数

カスタム close 関数を使用すると、一連の条件に基づいて注文をクローズする必要があるときに Start() 関数から簡単に呼び出すことができるため、便利な場合があります。 カスタムクローズ関数は、オープン注文の現在のプールを確認し、注文タイプとそのマジックナンバーを特定する必要があります。

MT4 コードスニペット

void close(int type){
if(OrdersTotal()>0){
for(Counter=OrdersTotal()-1;Counter>=0;Counter–){
OrderSelect(Counter,SELECT_BY_POS,MODE_TRADES);

if(type==OP_BUY && OrderType()==OP_BUY){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits), vSlippage);
} }

if(type==OP_SELL && OrderType()==OP_SELL){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {
RefreshRates(); OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),vSlippage);
}}
}}}

 

MT4の使用

if (OType==0 && CloseBuy==true)
{
close (OP_BUY); // Close Buy

 

説明

カスタム close 関数の名前として close() を選択し、それを呼び出したいときはいつでも、上記の使用例のように、close 条件の後に単語を挿入するだけです。


2 行目は、オープンポジションの合計がゼロより大きい場合に関数を開始します。 3 行目は、現在オープンしている注文プールをチェックし、それらをカウントします。 4 行目は OrderSelect() 関数を呼び出して、これらのカウントされた注文をさらなる処理のために選択します。


カスタム close 関数のパラメータは 1 つだけ作成します。これは、括弧 () 内の変数 int 型です。 このパラメータは注文タイプの識別子になります。 カスタム関数では、タイプが OP_BUY または OP_SELL と等しい (==) ことを示しているため、close() を呼び出すときは、使用法のように close() がクローズ (OP_BUY) であるかクローズ (OP_SELL) であるかを示す必要があります。上記の例。 関数では、type==OP_BUY と OrderType==OP_BUY をシンボル (&&) に関連付けます。


また、6 行目で行ったように、正しいコードとマジック ナンバーを使用して買い注文を選択したことを確認したいと思います。

< p>

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) {


Refresh Rates() は、通貨ペアのレートを更新して最新のレートが入力されるようにする関数です。


最後に、OrderClose() 関数をデプロイします。この関数のパラメータは上の表にあります。