后台程序化交易,利用中证500指数计算条件,去买卖IC00合约。会不会有T+1的限定? 比如中证500只能一买一卖,而IC00是T+0,交易次数没有限制。
我发现今天按照模型今天会成交几次的,一开始有成交,后面就没有提示信号了
比如:
开多:= TBUY(KD,CW,MKT,0,0,'','IC00'),ALLOWREPEAT; //开多信号
平多:= TSELL(PD,CW,MKT,0,0,'','IC00'),ALLOWREPEAT; //平多信号
没有你说的限制。建议你用debugfile跟踪自己的条件。不要拿图表信号和后台信号对比。没有意义。
不会的。不会因为监控的是T+1就影响到实际下单品种的交易。建议你把KD,PD这些条件都进行一些调试输出。比如用debugout或者debugfile
今天再次出现同样的情况,前面2次(一卖一买)出现信号,成功成交,后面再次出现时的就没有信号。通过DEBUGOUT观察计算没有问题,就是没有触发信号。
代码情况:
平多:= TSELL(PD,1,MKT,0,0,'','IC00'),ALLOWREPEAT; //平多信号
DEBUGOUT('当前平多条件%.0f',PD);
DEBUGOUT('当前平多开仓%.0f',平多);
DEBUGOUT输出情况:PD一直提示是1,平多一直是0;
20.02.26 14:45:59 SH905
当前平多条件1
20.02.26 14:45:59 SH905
当前平多开仓0
20.02.26 14:45:59 SH905
运行结束
KD 的值是什么情况?你只输出了平仓条件,开仓条件呢。你应该也看下开仓条件是否满足了吧。
[此贴子已经被作者于2020/2/26 15:21:12编辑过]
此时手上已经有持仓了
KD:= TSELLHOLDINGEX('','IC00',2)>=0 AND TBUYHOLDINGEX('','IC00',2)=0 AND (KD1 OR KD2); //开多信号
PD:= TSELLHOLDINGEX('','IC00',2)=0 AND TBUYHOLDINGEX('','IC00',2)>0 AND PD1; //平多信号
开多:= TBUY(KD,CW,MKT,0,0,'','IC00'),ALLOWREPEAT; //开多信号
平多:= TSELL(PD,CW,MKT,0,0,'','IC00'),ALLOWREPEAT; //平多信号
CWSS:=TBUYHOLDINGEX('','IC00',2); //持仓手数
KCSS:=TSELLHOLDINGEX('','IC00',2); //持空仓手数
DEBUGOUT('当前买持状况%.0f',CWSS);
DEBUGOUT('当前卖持状况%.0f',KCSS);
DEBUGOUT的结果 买持一直为1,卖持一直为0
1.
TBUYHOLDINGEX('','IC00',2); 参数2的时候是包含未成交平仓单的。建议输出下当时实际的可用持仓。
2.开仓条件里面的 KD1 OR KD2 这2个变量 最好也输出以下。
目前你提供的信息暂时还无法进一步判断,只能提供上面的2个建议。或者你提供完整代码和程序化的设置。我们本地运行测试。
[此贴子已经被作者于2020/2/26 16:12:37编辑过]
TSELLHOLDINGEX 是空头持仓。返回是0,说明你本地没有空头仓位。和你前面的代码没什么关系。
另外你4楼中,是想知道为什么没有下单操作。你输出的应该是开平条件,或者开平条件组成的因子项。而不是只输出持仓数量。
JIZHUN为根据中证500计算出的当天基准买入值
ZHISUN为根据中证500计算出的当天止损卖出值
MODELBUY 为是否符合尾盘买入条件
后面成交部分完整的代码如下,帮看下问题出在哪:
MINDIFFIC0:=0.2;
KD1:= CURRENTTIME<145700 AND C>=(JIZHUN-MINDIFFIC0); //开多条件1
KD2:= CURRENTTIME>=145945 AND MODELBUY; //开多条件2
PD1: = CURRENTTIME<145700 AND C<=(ZHISUN+MINDIFFIC0); //平多条件
PK:= TSELLHOLDINGEX('','IC00',2)>0 AND TBUYHOLDINGEX('','IC00',2)=0 AND (KD1 OR KD2); //平空信号
KD:= TSELLHOLDINGEX('','IC00',2)>=0 AND TBUYHOLDINGEX('','IC00',2)=0 AND (KD1 OR KD2); //开多信号
PD:= TSELLHOLDINGEX('','IC00',2)=0 AND TBUYHOLDINGEX('','IC00',2)>0 AND PD1; //平多信号
KK:= TSELLHOLDINGEX('','IC00',2)=0 AND TBUYHOLDINGEX('','IC00',2)>=0 AND PD1; //开空信号
平空:=TSELLSHORT(PK,CW,MKT,0,0,'','IC00'),ALLOWREPEAT; //平空信号
开多:= TBUY(KD,CW,MKT,0,0,'','IC00'),ALLOWREPEAT; //开多信号
平多:= TSELL(PD,CW,MKT,0,0,'','IC00'),ALLOWREPEAT; //平多信号
开空:= TBUYSHORT(KK,CW,MKT,0,0,'','IC00'),ALLOWREPEAT; //开空信号
CWSS:=TBUYHOLDINGEX('','IC00',2); //持仓手数
KCSS:=TSELLHOLDINGEX('','IC00',2); //持空仓手数
DEBUGOUT('当前基准值为%.1f',JIZHUN);
DEBUGOUT('当前止损值为%.1f',ZHISUN);
DEBUGOUT('昨日基准值为%.1f',JIZHUN1);
DEBUGOUT('当前买持状况%.0f',CWSS);
DEBUGOUT('当前卖持状况%.0f',KCSS);
DEBUGOUT('当前平多条件%.0f',PD);
DEBUGOUT('当前平多开仓%.0f',平多);
CW 为买入的仓位,已设定为1.
为日线操作,JIZHUN、ZHISUN 是根据昨日的数据计算出来的,日内不会变
[此贴子已经被作者于2020/2/26 17:43:27编辑过]