在下面的测试中,第二手平仓没有问题但总是开不出来。何故?
runmode:0;
variable: holding1=0, holding2=0;
short:=todaybar=1;
long:=todaybar=4;
sell(short and holding1>0, 1, market);
sellshort(long and holding1<0, 1, market);
holding1:=if(short and holding1>0 or long and holding1<0, 0, holding1);
buy(long and holding1=0, 1, market);
buyshort(short and holding1=0, 1, market);
holding1:=if(long and holding1=0, 1, if(short and holding1=0, -1, holding1));
short:=todaybar=1;
long:=todaybar=4;
sell(short and holding2>0, 1, market);
sellshort(long and holding2<0, 1, market);
holding2:=if(short and holding2>0 or long and holding2<0, 0, holding2);
buy(long and holding2=0, 1, market);
buyshort(short and holding2=0, 1, market);
holding2:=if(long and holding2=0, 1, if(short and holding2=0, -1, holding2));
持仓1:HOLDING1,LINETHICK0;
持仓2:HOLDING2,LINETHICK0;
持仓:HOLDING,LINETHICK0;
分别注释掉第一手的平开仓操作或第二手的平开仓操作,保留的另一手操作均正常,同时运行是总是第二手的开仓开不出来,交易信号如附图
基本规律是反手前如果是两手空,则第二手多开不出来;反手前如果是两手多,则第二手空开不出来。反手前如果是一手,则第二手可以开出。各自记录的仓位显示是对的。
short:=todaybar=1;
long:=todaybar=4;
不知道你这个要表达什么
你输出
short:todaybar=1,noaxis;
long:todaybar,noaxis;
自己看看,这个是什么,是否符合你要的条件
就是在一个交易日的第一个K线结束时产生开空信号,在第4个K线结束时产生开多信号。
就是在一个交易日的第一个K线结束时产生开空信号,在第4个K线结束时产生开多信号。
不好意思,上一个贴图是5分钟的,我也不知道为何信号不对,在1小时里面是对的。下面是1小时的图。
http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=1246&replyID=&skin=1
使用调试功能,处理代码问题
调试的结果是:如果持仓是-2,在反手开多时,第一段平空执行完持仓是-1正确,接下来的开多执行完持仓还是-1(逻辑上这时的仓位是一个1一个-1,但软件丢掉了这次的开多),接下来的第二段反手执行完就只剩一手多了,holding是1。除了自己判断实际仓位来对应的办法外,还有什么简易的方法应对?
这样啊。多谢!