跳至内容

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.");
           }
        }
     }
  }
最后更新于