同样的代码,只有螺纹钢上面在14点55的k线上不执行(信号实时不显示,夜盘开始后才显示),其他品种正常。
截图如下:




想请问,是设置的原因吗?(不记得对几个品种的设置有什么不同)。是代码的原因吗?按理说不应该,否则就不会事后信号还是出现。但值得注意的是,信号肯定没有实时出现,这个情况在国庆假期前就出现了,当时还以为是系统要留仓(当时看k线上没信号),可放假后开盘再看就发现9月30号的14点55分k线上面是有信号的。
信号滞后出现可能是引用了未来数据,但收盘这块是用的时间判断,按理说不该出现引用未来数据导致信号与时间不匹配。还有什么可能出现这种事后才出现信号的情况吗?还请解惑。
请问有人遇到过这种情况吗?如何解决?谢谢!
你不会是写在onbarclose事件域里的吧
还有你这个return实在是太扎眼....你确定模型逻辑顺序没问题?
return会直接停止本次驱动。
return只在14点55分这块有,其他模块并没有,就是担心在此模块后继续执行后面的语句,才用的return,应该和在这根k线上信号出不出现没有关系。
这个模块是写在onbar事件域的。
诚心请教,还望帮助解决,否则没法上实盘。
在没有引入未来数据的情况下,信号不在k线bar当时出现,而是在bar过去后才出现。这种情况目前只在螺纹钢一个品种上看到,是因为上期的品种平仓区分平今与平昨吗?还是有别的什么原因?其他时间的平仓目前看都正常执行,只有14点55分这个基于时间的平仓没有执行(而且每次都发生)。
这种代码典型的回溯、测试场景
即使问题解决了
能上实盘?
1、time和K线切割方式有关系
怎么着也得用tradingBeginDateTime这种不受干扰的函数吧,而且==是不是改成>=?
2、MK模式基于单向持仓,本质上是一种对冲机制;如果是单向,信号和账户应该处理机制不一样吧(我没测试过),如果是双向交易,MK就不准确
3、buy/sell映射发单,你应该用的映射,粗暴的扔到账户,然后靠监控同步?
简而言之
纯粹的虚拟回溯的编码方式……
为什么不能上实盘?
1.看上面图片,已经明示了是5分钟图。关于用==而不是>=是因为我记得time函数是精确到小数点后4位,如果用>=反而可能不一定合适,因为还需要框定到收盘时间,否则会错乱影响夜盘交易。
2.没看懂,MK模式指的是?
3.个人觉得映射模式挺好的,以前用这一模式帮人账户实现过几天暴利的操作,没发现有什么不合适的。
4.如果可以的话,希望能够提供些有用的解决方案,如上面说到的tradingbegindatetime,我会去试是否好使。诚心请教,上面说的也不是争论,只是个人感受。
谢谢!
TradingBeginDatetime >= TrueDate(0) + 0.1455
试试就试试
或者
TradingBeginDatetime > TrueDate(0) + 0.145
你这个问题必须直接调试代码才能处理
这两天一直在出差,下个交易日试试这个代码。谢谢!
谢谢!我准备如果代码找不出问题,重装下TB试试。
能行?
补充一句,这种情况在螺纹钢上面基本是每天出现,只有有仓要收盘平就出现。盘中开平信号与实际是匹配的。