OrderModify()関数は、既に約定した注文(=保有ポジション)や、待機注文に修正・変更を加えるために使用します。
OrderModify()関数は、以下のように定義されています。
bool OrderModify(
int ticket,
double price,
double stoploss,
double takeprofit,
datetime expiration,
color arrow_color
);
各引数の意味は、以下のとおりです。
- int ticket
修正・変更を加える注文のチケット番号を指定します。 - double price
待機注文の新しい注文価格を指定します。 - double stoploss
新しい損切り価格を指定します。 - double takeprofit
新しい利益確定価格を指定します。 - datetime expiration
待機注文の新しい有効期限を指定します。 - color arrow_color
MetaTrader4(MT4)では、OrderModify()関数によって損切り価格や利益確定価格を変更すると、チャート上の注文の修正・変更を行った位置にオブジェクトが表示されます。
この引数では、当該オブジェクトの表示色を指定します。
オブジェクトを表示させたくない場合は、「clr_NONE」と記述します。
戻り値
注文の修正・変更が正常になされた場合は「true」が返され、正常に注文の修正・変更がなされなかった場合は「false」が返されます。
エラーのより詳しい情報を得るためには、GetLastError()関数を使用します。
- GetLastError()関数の詳細については「こちら」を参照してください。
注意点
注文価格と有効期限は、待機注文に対してのみ修正・変更を加えることができます。
OrderModify()関数の引数として変更されていない値が渡された場合は、エラー1(ERR_NO_RESULT:計算結果の不存在)が生成されます。
待機注文の有効期限を指定することのできない取引サーバを使用している場合に、「0」以外の値を有効期限として指定すると、エラー147(ERR_TRADE_EXPIRATION_DENIED:有効期限の指定の拒否)が生成されます。
具体例
買いポジションを取得した後に、当該ポジションに対して損切り価格をしてたい場合は、以下のように記述します。
if(買いエントリー条件)
{
int Ticket = OrderSend(……);
if(OrderSelect(Ticket,SELECT_BY_TICKET) == true);
{
bool Modified =
OrderModify(OrderTicket(),OrderOpenPrice(),
OrderOpenPrice() - 50 * Point,
OrderTakeProfit(),0,clr_NONE);
}
……
- OrderSend()関数の詳細については「こちら」を参照してください。
- OrderSelect()関数の詳細については「こちら」を参照してください。
- OrderTicket()関数の詳細については「こちら」を参照してください。
- OrderOpenPrice()関数の詳細については「こちら」を参照してください。
- Pointの詳細については「こちら」を参照してください。
- OrderTakeProfit()関数の詳細については「こちら」を参照してください。