我有两个独立的开仓条件,某根K线里两个条件先后满足了,然后在同一根K线内重复开仓了,但开仓的条件判断里有holding=0才开仓的,而图表上显示持仓仍是1手。理论上同根K线里不应重复开仓的啊,是不是?求解答。
sellshort(开多信号1 and holding<0,holding,limitr,open+mindiff*1),ORDERQUEUE;
buy(开多信号1 and holding=0,1,limitr,open+mindiff*1),ORDERQUEUE;
sellshort(开多信号2 and holding<0,holding,limitr,open+mindiff*1),ORDERQUEUE;
buy(开多信号2 and holding=0,1,limitr,open+mindiff*1),ORDERQUEUE;
代码顺序问题,比如你上面如果开多信号2满足了,然后开多信号1也满足
此时因为开多1在前面所以其实holding还是=0的。
但图表显示持仓为1手,这样就会导致虚拟和实际持仓不一致……这不麻烦了么,有什么办法解决这个问题?
你从哪里看到图表持仓是1手的,看下当时图表上有几个信号?
另外你的开仓条件是否有闪烁,比如开仓1满足了,过了不久这个信号消失,开仓2又满足了。这种情况是会开2次仓的
图表显示就是k线图上啊,有holding输出显示虚拟持仓的。当时图表上就只有一个信号,确定没有信号闪烁,我一直盯着的。
ho:holding;
buy(c>o,1,market); //自己去看下第一根开仓语句的输出ho值,代码顺序是从上到下。你后面的开仓语句是不会影响前面的持仓的。
你或者在开仓语句各自加上一个
buy(开多信号1 and holding=0 and not(开多信号2),1,limitr,open+mindiff*1),ORDERQUEUE; //这样如果开多2成立,那么第一条开仓也不会执行
诚如所言,确是第二个开仓语句先触发的,然后很快在同一根k线内第一个开仓语句也触发了。“后面的开仓语句不会影响前面的持仓”,这是我以前没有想到的。
你的建议是,第一个开仓语句中加not(开多信号2),第二个开仓语句中加not(开多信号1),就能避免重复开仓了?
cond1:开多信号1 OR 开多信号2;
sellshort(COND2 and holding<0,holding,limitr,open+mindiff*1),ORDERQUEUE;
buy(COND1 and holding=0,1,limitr,open+mindiff*1),ORDERQUEUE;
哪来的COND2?是不是笔误?
能理解,但实践中这样行不通。因为我的模型两个开多信号时完全不同的,下单语句并不一样,并非都是limitr,open+mindiff这么简单。
上面yukizzc的加not限制之解答是否可行?
buy(开多信号1 and holding=0 and not(开多信号2),1,limitr,open+mindiff*1),ORDERQUEUE;
buy(开多信号2 and holding=0,1,limitr,open+mindiff*1),ORDERQUEUE;
如果开多信号1成立,那么holding=1了下面开仓语句不会去执行。如果开多信号2成立那么由于not(开多信号2)的存在第一条开仓语句不会执行。