为何模拟交易不开仓?代码如下:
CC:=TAVGENTERPRICE;//持仓价位
NB:=N;//多头止损
NS:=N1;//空投止损
K:=tasset*0.1667/(close*multiplier*0.11);//开仓量
KK:=IF(K>1,intpart(K),1);//开仓量最少1手
TSELLSHORT(TIME>=145800 and THOLDING<0,THOLDING,LMT,C+20); //交易系统之平空操作
TSELLSHORT(THOLDING<0,THOLDING,STPLMT,CC+NS,C+20);
TBUY(BK and THOLDING=0,KK,LMT,C+20);//交易系统之开多操作
TSELL(TIME>=145800 and THOLDING>0,THOLDING,LMT,C-20);
TSELL(HOLDING>0,THOLDING,STPLMT,CC-NB,C-20);//交易系统之平多操作
TBUYSHORT(SK and THOLDING=0,KK,LMT,C-20); //交易系统之开空操作
TBUY(BK and THOLDING=0,KK,LMT,C+20);//交易系统之开多操作
这句有问题的,因为后台自动交易是取的真实仓位数量,在之前的的平仓语句被执行后,THOLDING不会是马上就是0,所以TBUY的THOLDING=0判断条件不会马上成立,故导致不能开多。后台自动交易与图表还是有比较大的区别的,不能简单的把函数名都加T就可以保证一致,要注意逻辑上的不同和工作原理上的不同
后台自动交易的平仓反手模型,请参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=332 问题5
可我的系统从未开仓和平仓。THOLDING调用的账户数据应该就是0。所以TBUY的THOLDING=0判断条件不会马上成立,故导致不能开多,这个原因似乎不成立。
还有到底该如何修改才能确保开仓。
谢谢
TBUY(BK,KK,LMT,C+20);//
如果这么改了后还是不能开仓
那你只能通过DEBUGFILE检查BK变量为什么没有成立导致没有开仓信号,或者看看KK是不是变成0了