8.11 多笔订单

8.11 多笔订单

你可能想要在一个时间点下多笔订单,其中又有不同的停损点和停利点。有许多方法可以做到这点。

一种方法是简单地对每一笔想要开启的订单使用一个不同的OrderSend()语法。但是,这种方法假设每次都计划下同样数量的单。

另一种方法是使用for循环开启订单。这种方法可以调整每次下单的数量。可先加载停损价和获利价到数组中,然后在for循环中递增该数组。

我们先定义三个停损和停利的外部变量。任何三个以上额外的订单将不会有停损或获利的设置。我们也加入一个外部变量,以调整要开启的订单数量。程序源代码如下:

下一步则是该数组计算停损价和获利价,并将我们所计算的价格加载到数组中:

该数组保存停损价和获利价(BuyTakeProfit和BuyStopLoss)。当使用该函数时,其数组内的程序代码就会替我们标明出来。数组指数从“0”开始,并设定大小为“3”。我们的起始指数是“0”,最大指数是“2”。

接着,用我们在第四章所定义的CalcBuyStopLoss()及CalcBuyTakeProfit()函数计算停损价和获利价。将我们所计算出的停损值或获利值传到适当的数组元素。要注意:第一个数组指数是“0”;第三个数组指数是“2”。

以下是要开启订单的for循环源代码:

Count变量从“0”开始,和我们的第一个数组相符合。循环次数(也就是下单数)由MaxOrders-1决定。每一次重复循环,我们对停损及获利数组递增“1”。

我们使用Ordlnt变量在订单注释中递增订单总数。第一个订单注释将是“下单1”,下一个将是”下单2”,以此类推。OrderSend()函数使用Count变量以选择相关的数组元素,以合适的停损值和获利值下单。

这只是处理多笔订单的一种方法,虽然它可能是最有效的,但其主要的缺点是只能计算有限数量订单的停损价和获利价。

另有一种方法是,我们可以借明确定义一个数量来限制获利值和停损值,并可交易订单,且没有数量限制。源代码如下:

在上述范例中,首单的停损都是20点,每增加一份订单将递增停损20点。对于获利也是一样,所不同的是起始和递增皆为40点。

我们将舍数组,而以for循环计算停损和获利。源代码如下:

将StopLossIncr或TakeProfitlncr变数和Count相乘,并和StopLossStart或TakeProfitStart值相加,以决定获利和停损水平点。对第一个订单,停损或获利水平将等于StopLossStart或TakeProfitStart。接着,我们使用第四章的函数计算订单的停损价和获利价。最后我们用OrderSend()开启订单。循环将持续到MaxOrders明确定义的下单数量被完全成交为止。这个方法允许我们使用MaxOrders变量明确定义我们想要的下单数量,并确保所开启的每个订单皆有停损和获利。