首页 > 其他分享 >CTP tick数据合成K线的问题

CTP tick数据合成K线的问题

时间:2023-08-20 09:33:25浏览次数:28  
标签:00 推送 59 14 合成 15 CTP tick

各个交易所的tick数据

上海期货交易所(SHFE):以rb2310为例

日盘收盘15:00:00的tick是有效数据,今收盘ClosePrice和结算价SettlementPrice也在15:00:00推送。中间休息前的收盘10:15:00是有效数据,夜盘收盘23:00:00是有效数据。这些时间的整点不属于新K线,而是上1分钟的K线。

怎么知道是有效数据?观察成交量和持仓量,然后跟文华财经的数据去对比就知道了。比如10:15只有1笔,不能算作新K线,而是合并到10:14:00到10:14:59的K线,10:30是新的K线。

注意:今收盘ClosePrice和结算价SettlementPrice,只在15:00:00推送,其他时间都是无效值,CTP统一用1.7976931348623157e+308,即double的上限值表示。郑交所无效值,用0表示。

中间的休息时间10:15到10:30,11:30到13:30 没有推送数据,正常。15点之后,18点之后,都有无效数据推送。23点到次日8:59休息时间,没有推送数据,正常。其中日盘8:59和夜盘20:59是集合竞价数据,正常。

上海能源交易所(INE):以sc2309为例

夜盘到次日凌晨2:30:00,也是有效数据,合成K线最后1分钟记得加进去。其他规则同上。

价格有时会收到很多小数位,比如sc2309在2023-08-18 09:04:00,合成1分钟K线后开盘价是656.6999999999999,文化财经显示656.6。所以不能用四舍五入,要先知道该品种的单位是:元角分的哪个,然后进行截断。

大连商品交易所(DCE):以jd2309为例

14:59:59结束 ,15:00:00推送今收盘ClosePrice,15:01后推送结算价SettlementPrice

中间的休息时间10:15到10:30,11:30到13:30 没有推送数据,正常。18点后有无效数据。

郑州商品交易所(CZCE):以SF310为例

14:59:59结束 ,今收盘ClosePrice和结算价SettlementPrice也在14:59:59推送。中间休息前的收盘到10:14:59结束,下个tick10:30:00开始,,中午收盘11:29:59结束,下个tick13:30:00开始。

19点后有无效数据。早上8:55:00到8:59之前(不含8:59)推送无效数据。

注意:测试发现 `ActionDay`字段有时收到乱码,是只有SF310这样,还是郑州商品交易所都这样,尚未测试。安全起见,要用实际日期就自己用datetime组建。

有效数据的测试

rb2310 23-8-11 

tick 持仓量

  • 14:57:59 持仓量 1820357
  • 14:58:59 持仓量 1818801
  • 14:59:59 持仓量 1813686
  • 15:00 持仓量 1813650 注意,15点有2个tick,第2个tick显示今收盘和本次结算价

文化财经 持仓量

  • 14:57-14:58 持仓量 1820357
  • 14:58-14:59 持仓量 1818801
  • 14:59-15:00 持仓量 1813650

这里14:57:59持仓量正好是文华财经14:58的持仓量,而14:58:01的持仓量就不同了,所以不能用新的1秒作为新K线。

按照新K线的规则,15点属于新的1分钟,这里的数据就没算进去,显然是有问题的。所以需要把这2个K线合并。

sc2309,23-8-11

14:59:59和15:00:00,获取到的最新价不同,15:00:00的最新价就是当日收盘价,所以最后那1笔肯定是有效数据。

K线合成要面临的问题

判断是不是一个新K线,最常用的方法是:判断 K线的分钟线是否等于 tick的分钟线,等于就在在同1分钟,不等于就是新的1分钟。

行情连续时没问题,比如1分钟K线 14:57-14:58, tick从14:57:00 到 14:57:59,出现14:58:00是新的K线。

碰到收盘时间有问题,比如:rb2310,14:59:59并不是行情的结束,15点就判断为新K线显然不合理,要把15点那比tick加入到14:59-15:00这个K线里。同样的10:15:00和23:00:00都是这种情况。

郑交所:SF310 23-8-18,当日最后1笔tick是14:59:59,后面就没数据了,就是说没有新K线出现,那这1分钟属于未完成的K线,就不会把14:59:00到14:59:59这1分钟K线推送出去。

同样的上午休盘10:14:59,上午收盘11:29:29,这些其实都是完成了的1分钟K线,应该推送出去。

方案1:

首先否定59秒作为K线结束,因为你不知道该秒推送了几笔tick。

对于休盘整点的情况,可以把tick的更新时间修改成上1分钟,这样15:00推送来的tick,就是14:59,相当于原先K线没走完,自然把15:00推送的数据算进去了。

时间修改后,K线的收盘时间跟郑交所一样,最后1分钟的K线就是14:59,现在问题是没有新的tick推送,如何确定这个14:59已经走完?这里用到今收盘ClosePrice字段,只要不是无效值,说明当天行情结束了,应该推送K线。

方案2:

自己写一个死循环,根据服务器时间来判断是否是新的K线,然后排除掉非交易时间段。

这样做的好处是计算K线非常省事,出现新的1分钟建立空列表,上个K线就从上个列表组建,列表第1个元素就是开盘,最后1个元素就是收盘,列表中的最高和最低就是K线高低点。不过1分钟里tick都在list里,合约一多,比较占内存。

文华财经等软件的K线问题

sc2309,1分钟K线 23-8-18 14:57~14:58,文化的开盘价657.3。

而CTP推送的tick,开盘价应该是657.4,下面是该时间段连续的3笔。

14:56:54 657.4
14:57:05 657.4
14:57:05 657.3

猜测文华财经并不是按tick推送过来时间来计算新的1分钟,而是根据自身服务器的时间来计算。

这样就能解释,为什么大多数时候,文化财经和通达信的数据都是相同的,但偶尔也会出现K线形态不一样的情况。

标签:00,推送,59,14,合成,15,CTP,tick
From: https://www.cnblogs.com/yuyanc/p/17643607.html

相关文章

  • await this.$nextTick()和this.$nextTick(callback)有什么区别?记一次bug调试
    背景需要实现一个需求,一个小区业务详情页面,在左侧菜单栏切换了小区后,详情页跟着切换。这个详情页面是根据url上的/:id来确定小区id的,所以切换了小区后,应该切换路由。于是这样实现:watch:{//监听小区号变化neighNo(newVal){if(newVal){//切换路......
  • some ticks in Matplotlib
    It'simportmatplotlib.pyplotasplt rantherthanimportmatplotlibasplt.Weoftencodeplt.subplot(121),plt.imshow(img),plt.title('Input'),plt.xticks([]),plt.yticks([])plt.subplot(rows,columns,index) plt.subplot(121)means column......
  • Android P 图形显示系统(一)硬件合成HWC2
    一、简介1.我们来看看SurfaceFlinger的类定义://frameworks/native/services/surfaceflinger/SurfaceFlinger.hclassSurfaceFlinger:publicBnSurfaceComposer,publicPriorityDumper,privateIBinder::DeathRecipient,......
  • 前端合成海报并保存到本地
    近期给AI产品增加了推广返佣的能力,涉及到推广就会有分享裂变,个人的专属分享链接及海报。本次文章主要记录前端合成海报并下载到本地的流程,因为产品运行的平台主要是在小程序和PC浏览器,所以主要也是实现这两个平台的图片下载,接下来开始正文。浏览器端实现在实现下载之前首先要将海......
  • (二十)MIT公开课雷达系统工程之合成孔径雷达(SAR)
    0写在前面没有想保护的人,枪就成了无用的玩具~1基本介绍WhySyntheticApertureRadar(SAR)?:雷达图像:成像需要大的孔径。SyntheticApertureRadar(SAR):Cross-RangeResolutionwithSAR:SARDataGatheringModes:ADTSRadar:35GHzSARImageofGolfCourse:高的距离和方位分辨率......
  • 合成嵌套
    当元素过于多的时候,为了方便管理和制作,需要用到一个多层的方法图层-预合成一般来说,建议勾选一下可以做到一个一起调整的效果可以对大的合成进行调整,小的也会调整在没有合成嵌套之前,有很多的中心点,我们要去调整旋转的时候,就会很烦,预合成之后,就会方便很多如果一些东西的一......
  • 期货量化 tick数据合成K线
    是否是新K线的判断基本上都用K线的分钟线是否等于tick的分钟线,等于就在在同1分钟,不等于就是新的1分钟。问题,23-8-12做的rb2310的测试,14:59:59并不是行情的结束,15:00:00又推送2笔tick,对照了文华财经的持仓量,就是最后1笔15:00:00的持仓量。按照新K线的规则,15点属于新的1分钟,这......
  • 合成数据平台:释放结构化数据的生成式 AI 的力量
    推荐:使用NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景创建机器学习或深度学习模型非常简单。如今,有不同的工具和平台不仅可以自动化创建模型的整个过程,甚至可以帮助您为特定数据集选择最佳模型。通过创建模型解决问题所需的基本内容之一是包含描述您尝试解决的问题的所有......
  • typeScript学习-TS类型-合成类型
    typeScript学习合成类型:联合类型,交叉类型联合类型:letstr:srting|number="abc"str=3交叉类型:typeObj1={username:string}typeObj2={age:number}letobj:Obj1={username:'zhangsan'}letobj2:Obj2={age:23}letobj3:Obj1&Obj2={username:&#......
  • NUKE14 mac版电影后期特效合成软件功能强大、速度快
    NUKE14是一款电影后期特效合成软件,功能强大、速度快,拥有非常专业的后期效果。NUKE14Mac版是一款功能强大的电影后期特效合成软件,提供多种强大的电影后期处理效果,包括电影、动画、漫画、建筑等。可以将多个独立的视频文件合并成一个文件;或者将单个文件组合到一起;或者把两个或......