OrderModify
OrderModify
修改已打开或待处理的订单的特性。
bool OrderModify(
int ticket, // ticket
double price, // price
double stoploss, // stop loss
double takeprofit, // take profit
datetime expiration, // expiration
color arrow_color // color
);参数
- ticket
[in] 订单票证的唯一编号。
- price
[in] 待处理订单的新开单价格。
- stoploss
[in] 新的止损水平。
- takeprofit
[in] 新的获利平仓水平。
- expiration
[in] 待处理订单的到期时间。
- arrow_color
[in] 图表中止损/获利平仓修改的箭头颜色。如果参数缺失或值为CLR_NONE,则不会在图表中显示箭头。
返回值
如果函数成功,则返回true,否则返回false。要获取详细的错误信息,请调用GetLastError()函数。
注意
仅对待处理订单可以更改开单价格和到期时间。如果作为函数参数传递的值未改变,将生成错误1 (ERR_NORESULT)。
在某些交易服务器中,可以禁用待处理订单的到期时间。在这种情况下,当在到期参数中指定非零值时,将生成错误147 (ERR_TRADE_EXPIRATION_DENIED)。
示例:
void OnStart()
{
int TrailingStop=50;
//--- modifies Stop Loss price for buy order №12345
if(TrailingStop>0)
{
OrderSelect(12345,SELECT_BY_TICKET);
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
bool res=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStop,Digits),OrderTakeProfit(),0,Blue);
if(!res)
Print("Error in OrderModify. Error code=",GetLastError());
else
Print("Order modified successfully.");
}
}
}
}最后更新于