升级后只能支持1-9秒,这个限制太大了。
强烈建议恢复到之前多老版本,N可以设置为120,比如。
如果为了支持tick级回测,建议增加一个选项,选项为1时,支持tick级回测,这是N的取值可以小一点。 选项为0时,还是按原来的老版本执行,回测时采用收盘价即可,本来使用这个函数,很大部分人都是收盘价模型。
收盘价执行多模型,可以使用CHECKSIG吗?
现在模型加载不了了,要改参数到1-9,我之前是60秒,用了几年了,哎。
问题是,9秒啊,太短了,有的品种流动性差点的,收盘前9秒成交不了,有可能。
您使用CHECKSIG/CHECKSIG_MIN这样的指令价函数,就支持设置提前更久时间走完。
遗憾的是,用指令价函数后,模型绩效变化很大,还是希望用收盘价作为回测依据。
主要是9秒时间太短了,哪怕是20秒,都能好很多。我查了下实盘的日志,模型里是之前老版本CloseKLine,参数N为60秒,由于模组数量为41个,实际发单往往是收盘前51秒才开始发。这种情况下,如果N最大只能设置为9秒的话,模组里好多都还没有来得及发出单子,就收盘结束了。这咋办?
您使用CHECKSIG/CHECKSIG_MIN这样的指令价函数,就支持设置提前更久时间走完。
考虑到模组数量比如有100个模组的情况下,即使模型里是CloseKLine, N为9秒,但是实际上,文华软件的运行速度,能保证这100个模组,在9秒内都能及时发出单子吗? 从日志来看,做不到啊。
您使用CHECKSIG/CHECKSIG_MIN这样的指令价函数,就支持设置提前更久时间走完。
都是文华的收费老用户了,其之所以使用CLOSEKLINE只是想提前几秒下单而已,并不需要tick级别回测精度,能够提前下单即可。
现在升级后,提前下单成问题了。 如果用CHECKSIG,则不能和trade_other搭配使用;如果用CHECKSIG_MIN,似乎可以使用trade_other,但是测试绩效和之前变化太大了。
CLOSEKLINE(1,9);
SETALLSIGPRICETYPE(TRACING_ORDER);
SETMOVEOPIPRICE(TRACING_ORDER);
TRADE_OTHER('AUTO');
现在修改后的版本:
CHECKSIG_MIN(BK,'B',1,'D',0);
CHECKSIG_MIN(SK,'B',1,'D',0);
CHECKSIG_MIN(BP,'B',1,'D',0);
CHECKSIG_MIN(SP,'B',1,'D',0);
CHECKSIG_MIN(BPK,'B',1,'D',0);
CHECKSIG_MIN(SPK,'B',1,'D',0);
CHECKSIG_MIN(CLOSEOUT,'B',1,'D',0);
SETALLSIGPRICETYPE(TRACING_ORDER);
SETMOVEOPIPRICE(TRACING_ORDER);
TRADE_OTHER('AUTO');
都加载比如螺纹指数上,来回测,麻烦大了。 之前版本明显盈利的回测,修改为指令价的版本后,模型测试结果直接是亏损很大,这怎么敢实盘啊。 之前的版本,一直实盘使用,一直赚钱的啊。
请文华公司郑重考虑下,是否提供一个兼容之前老版本的CloseKLine的方案,否则,之前一直实盘的模型,只能停止使用,自动量化运行的好好的,只能歇菜了。
谢谢了!
最核心的问题,N最大为9秒,那么,9秒内,如果有100个模组都有信号,需要在收盘前提前执行,从现实的实际看,9秒这100个模组都发出信号,是几乎做不到的。从我这边的实盘日志看,才41个模组,就已经做不到了。 所以,这个9秒的限制,实际上,导致在模组超过一定数量的情况下,失去实际意义了。 这几年来,我这边实盘使用的参数N至少都是25秒,后来发现个别流动性差的品种,要提前35秒都很困难。 再后来,干脆设置为提前60秒,才完全解决了模组数量多的情况下,都能提前执行成功,而且不影响实盘绩效。
如图,这是老版本CloseKLine,N=60秒的运行情况,14:59开始来运行“提前下单”,实际是59分09秒才下单。
如果N为9秒的话,14:59:51秒开始来运行“提前下单“,估计是来不及发单和成交了。

