2.9.2 使用预挂单

2.9.2 使用预挂单

修改EA处理预挂单。在下面的例子中,我们将使用止损单。当快速移动平均线大于慢速移动平均线时,将买入止损单的价位挂在目前的高价上,往上加10个点,而卖出止损订单价则低于目前点的10个点。PendingPips为外部调整变量。

extern int PendingPips 10;

添加OrderDelete()函数用于在买单和卖单命令块上执行平仓预挂单操作。我们需要用SellTicket检查订单类型,以确保使用正确的函数来平仓。

使用OrferType()函数来检查所选的卖单是否为市价单或停损单。如果是市价单,可用OrderClose()进行平仓;如果是预挂单,则可使用OrderDelete()函数平仓。

关于预挂单价格的计算。现在来简单地转换PendingPips与Usepoint的分数值,并把它加到目前收盘价,并将此值存在PendingPrice变量中。接下来,计算止损和利润,还有预挂单价格的相对关系。最后用OrderSend()来下预挂单,交易结果相关信息存在BuyTicket中。计算预挂单价格源代码:

以下为卖出止损单源代码:


本书附录A中有更完整的程序源代码。