
注文が正常に完了すると、特に注文を修正したい場合には、注文に関する情報を収集する必要があります。 この MQL4 OrderSelect 関数の記事では、注文情報を取得する方法と、EA に注文情報を変更またはクローズさせる場合のこの関数の使用方法を学習します。
これらはすべて OrderSelect() 関数で行われます。 OrderSelect() を使用するには、注文のチケット番号を使用するか、オープンな注文のプールをループして各注文を順番に選択します。
OrderSelect() 関数の構文は次のとおりです。
bool OrderSelect (int Index , int Select, int Pool=MODE_TRADES)
参考までに、上記のパラメータの説明を以下の表に示します。
| パラメータ | 説明 |
|---|---|
| インデックス | 選択する注文の番号、または注文プール内の位置。 Select パラメーターは、どれを選択するかを示します。 |
| 選択 | Index パラメータがチケット番号であるか注文プールの位置であるかを示す定数:
|
| Pool | 注文プールを示すオプションの定数: 未決/オープン注文またはクローズ済み注文。
|
以下は注文番号を使用した OrderSelect() 関数の例です。 買い注文が発生した後にストップロスとテイクプロフィットを変更するように設定されています:
if (OrdersTotalMagicOpen()==0 & ;& OpenBuy ==true)
{
チケット = OrderSend(Symbol(),OP_BUY,NormalizeDouble(Lots,LotDigits),
Ask,vSlippage,0,0,EAName, MagicNumber, 0, Green) ;
return (ticket);
if(ticket>0)
{
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(OrderTicket(), OrderOpenPrice(),入札 – Stop_Loss * vPoint、Ask+TakeProfit * vPoint,0,Green);
}
}
上記の例では、OrderSelect() を使用して単一の数値を選択し、それを OrderModify() 関数と組み合わせて、StopLoss と TakeProfit を変更できるようにします。 この例は、ECN ブローカーに特に役立ちます。 ECN ブローカーでは、OrderSend() 関数内の対応するパラメーターにストップロスとテイクプロフィットの値を入れることはできません。 代わりに、これらのパラメータは 0 のままにする必要があります。 上の図に示すように、注文の発注後のみ、OrderSelect() 関数と OrderModify() 関数を通じて注文のストップロスとテイクプロフィットを変更できます。 上記の OrderSelect() は OrderModify() 関数と組み合わされていますが、実際には一連の注文情報関数を展開して注文に関する情報を取得することが可能です。 これらの関数の完全なリストは、MLQ リファレンスで入手できます。。 以下は、一般的に使用される注文情報関数のリストです:
| Functions | Description |
|---|---|
| OrderSymbol() | The symbol of the instrument that the order was placed on. |
| OrderType() | The type of order: buy or sell; market, stop or limit. |
| OrderOpenPrice() | The opening price of the selected order. |
| OrderLots() | The lot size of the selected order. |
| OrderStopLoss() | The stop loss price of the selected order. |
| OrderTakeProfit() | The take profit of the selected order. |
| OrderTicket() | The ticket number of the selected order. |
| OrderMagicNumber() | The magic number of the selected order. |