2.1 流程控制

2.1 流程控制

暂时丢开眼前的程序代码,先讨论一个手工盯盘的过程:第一步,根据指标信号新建一个0.1手的买入单,此时场内持有1 张订单;第二步,随着行情上涨,当指标信号再次发出买入指令时,在前一单开仓童基础上翻倍增加一张0.2手的买入单;第三步,买入组持仓数量达到两张后,不再加仓;第四步,出现平仓信号后,全部平仓。

上述四步为一个完整交易回合。决定开仓、平仓的关键因素有两个:指标信号和持仓单数量。如果当前是空仓状态,指标信号发出"买入"指令,则市价建仓;如果指标信号再次发出"买入"指令,则市价加仓;如果指标信号三次发出"买入"指令,由于持仓单数量为两张,则不再加仓:如果指标信号发出"平仓"指令,则消仓。

第一章控单模板中为我们预定义了22个公共变量,现在就要用到了。

【第一、二、三步】建仓与加仓

将公共变量"买入组成交持仓单数量总计" ( BuyGroupOrders) 以及交易信号作为共同的开仓条件,就能控制好持仓单数量,不会导致失控,且一段简短代码就完成了建仓、加仓和控制持仓单数量的任务。

【第四步】 平仓

在源码里还需要增加一个"交易信号"模块,用来返回交易指令,该模块具体做法将在下一章中详细描述。

实际交易中,两张持仓单平仓需要分两次才能完成,如果场内有1张订单平仓,还有1张单等待平仓时,指标信号却发出了"买入"指令,那就麻烦了,所以我们需要再增加一个条件,预定义一个公共变量一一全平仓布尔变量(CloseAllBool) ,当指标信号发出平仓指令后,全平仓布尔变数( CloseAllBool) 赋值为true ,禁止新开仓。

类似上述例子描述的交易流程控制做法在交易策略程序化过程中会频繁使用,希望读者能够理解精髓,掌握方法,灵活运用。