问题:为何信号闪烁开仓后第二根bar没有平仓?反而成为锁仓交易了,请看下代码有何问题?
需求:当根bar出现信号闪烁策略开仓后,在其后第二根bar平仓
事实上:第二根没有平仓,信号闪烁时开仓的仓位变成锁仓交易了
代码:
series<bool> posibuy(False); //多头仓位初始为0,判断为false
global Numeric buypoint; //设置全局变量buypoint,记录多头开仓时点的currentbar值
series<bool> strategybuy;//将开仓条件strategybuy设置为一个序列变量
posibuy=posibuy[1];
if(!posibuy and strategybuy ){ buy(1,open);posibuy=True;buypoint=currentbar;}//符合多头开仓条件,开仓1手
if(posibuy and (currentbar-buypoint)==1 and !strategybuy[1]){sell(1,open);posibuy=false;}
//发生信号闪烁后,strategybuy[1]应该会判定为false,平仓1手
sell的信号变成了开仓?
开了开平互转?还是净持仓
王老师您好:
具体是这样
if(!posibuy and strategybuy ){ buy(1,open);posibuy=True;buypoint=currentbar;}信号出现后策略是在bar1正常开多仓的;
但是信号闪烁后、开仓信号消失,我准备在第二根bar2平仓,故执行if(posibuy and (currentbar-buypoint)==1 and !strategybuy[1]){sell(1,open);posibuy=false;策略并不会平仓。
也就是说:在bar1闪烁时已开的多头仓位变成了锁仓交易,TB系统检测不出我开了一个多单,我使用了A_totalposition函数实盘也检查了一遍,发现信号闪烁时开的仓位totalposition=0
请问:bar1发生信号闪烁后,我欲在bar2的open平仓,这一交易需求如何实现?