2.8 平仓交易
平仓市价单,即用当前市场价来进行平仓动作。而买进多单时,我们从Bid 价格出场,而空单方面则是从Ask 价格出场。在预挂单时,我们从交易库中删除该订单。
2.8.1 OrderClose( ) 平仓函数
平仓市价单可运用OrderClose ( )函数:

参考说明:
Ticket 一一平仓市价单的单号。
Lots 一一下单于数量,多数经纪商允许部分平仓。
Price一一在较佳的价格平仓。对于多单和空单,是当时的Bid 价格和Ask价格。
Slippage一一以点来计算允许平仓价的滑点。
Color一一平仓指示颜色常数。如果没有颜色表示,则不会有箭头显示。
当你手上有一比单时,你可以指定平仓一部分。例如: 如果你有2.00手,而你要平仓一半,这时可以指定l 手的参数。不过并非所有经纪商都支持部分平仓。如果你需要平掉不同标签的仓位,建议你设置多个订单来取代这平仓动作。从上面的例子来说: 当你想要将你的仓位平掉一半,你可以设置两个1.00手的平仓订单,然后先执行其中一个。
下面为买进市价单量范例:


CloseTicket 变量是我们想要平仓部位的订单编号。OrderSelect ( )函数选定该订单,并让我们检视订单讯息。如果订单已被平仓,则可以使用OrderCloseTime ( )来检查订单平仓时间。如果OrderCloseTime( )回传"0" ,即可知道订单尚未成交平仓。我们还需要检查订单类型,订单类型决定平仓价格。OrderType ( )函数回传订单类型。如果是买进市价单,则用OP_BUY 表示。接下来,我们检视目前下单手数,可用OrderLots ( )和存储该值CloseLots 。我们运算当前Bid 价的ClosePrice ,然后用OrderClose ( )函数来平仓订单。
我们用UseSlippage 指定滑点,并在图表上使用红色箭头。boolean 回传值被存储在平仓变量中,如果订单已被执行,则Close 数值是ture ,否则为false 。
平仓空单时,需改变订单类型为OP_SELL 并指定当前的Ask 价为Close Price:

2.8.2 OrderDelete( ) 删单函数
以下是专门处理预挂单函数。OrderDelete ( )有两个参数,关于下单编号和标注颜色。不用平仓价位,但每手买卖单位或滑点数值是必要的。下面是删除停损预挂单语法:

当我们使用OrderClose( )函数时,我们需要检查订单类型,以确保是预挂单。预挂单类型的常数是:OP BUYSTOP 、OP SEllSTOP 、OP_BUYUMTI 和OP_SELLLIMIT 。要关闭其他类型的预挂单,只需更改订单类型。如果订单已经排满,目前是市价单,必须关闭OrderClose ( )函数来取代。