诚信为本
量力而为
当前位置:峰汇在线 ea编程知识 正文

外汇ea能修改订单手数吗?

订单修改也是EA中常用的编程事项,移动止损、平均止盈、修正挂单等等,都是属于订单修改。那么能不能修改订单手数呢?最近就碰到有人问这个问题。

在mql4语言中修改订单是通过OrderModify()函数进行,我们看下它的函数构成就清楚哪些可以修改。

bool  OrderModify
  ( 
   int        ticket,      //订单编号
   double     price,       // 价格 
   double     stoploss,    //止损
   double     takeprofit,  // 止盈
   datetime   expiration,  //有效期
   color      arrow_color  // 箭头颜色
   );

下面来理解一下 OrderModify() 函数各参量的意思:

  • ticket:订单编号,这是修改订单的重要参量,注意它不是赋值新的订单号,而是用需要修改的订单的订单号填充。通常用 OrderTicket(),如果指定修改某个单一的订单,那要先获取它的订单号;
  • price:这个价格对于多单或空单,只能用原订单的OrderOpenPrice()填充,对于未成交的挂单可以用新的挂单价格填充;
  • stoploss:不论是多单、空单,还是挂单,都可以用新的合理的止损价格进行修改;
  • takeprofit:不论是多单、空单,还是挂单,都可以用新的合理的止盈价格进行修改;
  • expiration:仅对挂单而言,可以修改新的有效期;
  • arrow_color:可以设置箭头显示修改过的订单止损止盈位置。

从上面 OrderModify() 函数结构及各参量来看,没有手数OrderLots()修改项。所以在智能交易EA编程中是不能通过订单修改函数来修改手数的。对于未成交的挂单,如果要修改手数,可以先删除掉,然后用新的手数重新挂。如果是已经成交的多单或空单,只能通过OrderClose()函数来平仓部分手数,比如一手的单子,可以通过 OrderClose()函数先平仓0.5手。

版权所有转载请注明标题及链接:峰汇在线 » 外汇ea能修改订单手数吗?