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