以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  金字塔软件问题提交  (http://222.73.7.161/bbs/list.asp?boardid=2)
----  多品种数据引用时候的软件bug  (http://222.73.7.161/bbs/dispbbs.asp?boardid=2&id=31214)

--  作者:kkingswd
--  发布时间:2012/12/6 9:53:54
--  多品种数据引用时候的软件bug

     

      在多品种数据引用时,金字塔软件的内部机制会出现一些处理错误。举例来说:

      在一个算法中,同时使用上证指数的5分钟K线和股指期货的5分钟K线,主图为股指期货,则在固定轮询高频刷新模式下,上证指数每6秒1个tick,而股指期货每1秒2个tick,则会存在一种情况是,股指期货产生了一个新的5分钟K线时,上证指数还没有产生新的K线,那么在这么一个很短的时间,算法就会出现错误。

 

      举例说明一个很简单的公式,当上证指数当前K线的最低点,低于上证指数前1根k线开盘价和收盘价之和的一半时,在股指期货上开空。则回测时完全没有问题,但是在实盘中,问题就来了:

       会出现每个股指期货K线一开始就开始做空。因为这时候,股指刚产生新的K线,而上证还没有产生新的K线,此时引用的最低点,是上证指数对应着股指期货来说,上1周期的最低点,而上一个周期最低点肯定小于开盘价和收盘价之和的一半。

       代码表示即

       lowy:=callstock(\'sh000001\',vtlow,-1,0);

       则在股指期货的新K线产生而上证的新K线未产生的一瞬间,出现lowy=ref(lowy,1);的错误。

     

       其核心原因就是:多品种引用时,由于股票和期货的tikc频率不同,在K线切分上,会引起上证和股指期货的K线不一致。

 

       建议在下一个版本中,增加一个多品种K线同步的判断,只在多品种的K线同步时,刷新公式。

 

      


--  作者:jinzhe
--  发布时间:2012/12/6 10:04:20
--  
感谢提交的建议!,我们会上交给开发人员
--  作者:admin
--  发布时间:2012/12/6 10:13:19
--  

感谢您的建议。

从帖子来看,您用的是固定时间间隔吧。

暂时的方法,你可以把固定时间间隔改成6秒就同步啦。


--  作者:fly
--  发布时间:2012/12/6 10:16:29
--  

股票的数据少,如果引用来做开平仓条件的话,是会有上面说的现象.

 

推荐,暂时用,固定时间间隔:6秒刷新一次,看能不能解决以上问题.


--  作者:kkingswd
--  发布时间:2012/12/14 11:23:40
--  
有时候需要引用股指数据,简单地6秒一刷新还不能满足需求。我想确认的是,在这个空档,上证的lowy是否和ref(lowy,1)对等?如果是的,可以加入lowy<>lowy1来解决,不知道你们这里面机制如何?
--  作者:kkingswd
--  发布时间:2012/12/14 11:27:49
--  
有时候一个算法中需要同时使用股指和上证进行计算,简单的6秒一刷新不能满足需求。其实只需要在股指产生新K线而上证未出现新K线的一瞬间,增加一个确认K线对齐的条件即可。我想了解,在这一瞬间,上证的lowy和ref(lowy,1)是否对等,如果是一样的,则可用lowy<>ref(lowy,1)的限制条件解决。但是不知道你们这里面的机制如何?
--  作者:jinzhe
--  发布时间:2012/12/14 14:37:24
--  
不对等,还没出现新k线,l是上根k线的l,ref(l,1)是上根k线的ref(l,1)