一种由期货ticket实时生成k线数据方法与系统
技术领域
1.本发明涉及软件领域,具体为一种由期货ticket实时生成k线数据方法与系统。
背景技术:
2.上期所只提供c 代码,其他程序语言存在跨语言障碍,如java无法对接上期所api,如果需要对接上期所,只能内部提供接口的形式进行接口数据对接。上期所只提供ticket数据,用户无法直接拿ticket数据生成k线数据,如果需要生成k线数据,需要对接受的ticket做特殊处理,因此现在和上期所对接有一下缺陷:
3.1)项目只支持java开发语言。
4.2)底层代码还是c ,利用java实现存在跨语言开发问题,问题排查难度扩大。
5.3)c 与java使用jni调用,部分数据类型存在精度丢失的问题。。
技术实现要素:
6.(一)解决的技术问题
7.针对现有技术的不足,本发明提供了一种由期货ticket实时生成k线数据方法与系统。
8.(二)技术方案
9.为实现上述目的,本发明提供如下技术方案:一种由期货ticket实时生成k线数据方法与系统,包括以下步骤:
10.步骤1、通过swig生成对应的c 与java代码;
11.步骤2、搭建c 工程并生成jni调用的dll或so文件;
12.步骤3、系统加载dll或so文件,并连接登录上期所;
13.步骤4、订阅接受行情数据;
14.步骤5、生成k线数据,存储发送k线数据;
15.步骤6、特殊意外情况处理。
16.本发明改进有,所述步骤1具体包括:
17.步骤1-1、下载上期所提供的api包;
18.步骤1-2、编写swig生成代码的脚本;
19.步骤1-3、执行swig程序,生成java代码以及jni调用的c 代码。
20.本发明改进有,所述步骤2具体包括:
21.步骤2-1、利用visual studio搭建c 工程;
22.步骤2-1、c 工程生成dll文件,so文件在linux下生成。
23.本发明改进有,所述步骤3具体包括:
24.步骤3-1、java程序启动加载dll或so文件;
25.步骤3-2、java程序连接期货公司前置机,并登陆。
26.本发明改进有,所述步骤4具体包括:
27.步骤4-1、根据算法算出期货所有的期货合约,订阅上期所,并自动更新主力合约,主力合约变更,自动更新订阅上期所;
28.步骤4-2、实时接收上期所的ticket数据,延迟在秒级以内。并将部分ticket存储到csv文件中做备份,用于应付意外情况。
29.本发明改进有,所述步骤5具体包括:
30.步骤5-1、将接收的ticket数据按不同算法分别生成分k、日k、周k、月k等k线数据,并将ticket、分时数据、k线数据存储到clickhouse跟redis中,做分布式实时计算;
31.步骤5-2、将ticket数据,k线数据通过netty实时推送到app。
32.本发明改进有,还包括特殊情况处理步骤:
33.步骤6-1、当网络出现意外情况,没有接收到数据时,采用数据拉平算法处理,将没有接收到数据的时间段,设置成最近的那个时间点;
34.步骤6-2、当服务出现意外情况,没有处理实时数据跟k线数据时,服务将重启加载备份的ticket数据,并重新生成实时跟k线数据。
35.(三)有益效果
36.与现有技术相比,本发明提供了一种由期货ticket实时生成k线数据方法与系统,具备以下有益效果:
37.本发明将c 代码生成jni可调用的java代码,利用java代码登录到上期所,订阅期货行情信息,接收ticket数据,将ticket数据通过算法生成分、日、周、月、年等k线数据,并存储发送ticket与k线数据到客户端,利用java实现对上期所对接,处理ticket数据生成响应的k线数据,提高开发效率,降低开发成本。
附图说明
38.图1为本发明的代码加工过程图;
39.图2为本发明的认证登录时的数据流转图。
具体实施方式
40.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.请参阅图1及图2,本发明提供了一套将c 代码生成jni可调用的java代码,利用java代码登录到上期所,订阅期货行情信息,接收ticket数据,将ticket数据通过算法生成分、日、周、月、年等k线数据,并存储发送ticket与k线数据到客户端。
42.(1)通过swig生成对应的c 与java代码
43.(2)搭建c 工程并生成jni调用的dll或so文件
44.(3)系统加载dll或so文件,并连接登录上期所
45.(4)订阅接受行情数据
46.(5)生成k线数据,存储发送k线数据
47.(6)特殊意外情况处理
48.步骤1:通过swig生成对应的c 与java代码
49.(1)下载上期所提供的api包。
50.(2)编写swig生成代码的脚本。
51.(3)执行swig程序,生成java代码以及jni调用的c 代码。
52.步骤2:搭建c 工程并生成jni调用的dll或so文件
53.(1)利用visual studio搭建c 工程。
54.(2)c 工程生成dll文件,so文件在linux下生成。
55.步骤3:系统加载dll或so文件,并连接登录上期所
56.(1)java程序启动加载dll(so)文件。
57.(2)java程序连接期货公司前置机,并登陆。
58.步骤4:订阅接受行情数据
59.(1)根据算法算出期货所有的期货合约,订阅上期所,并自动更新主力合约,主力合约变更,自动更新订阅上期所。
60.(2)实时接收上期所的ticket数据,延迟在秒级以内。并将部分ticket存储到csv文件中做备份,用于应付意外情况。
61.步骤5:生成分时图跟k线数据,存储发送k线数据
62.(1)将接收的ticket数据按不同算法分别生成分k、日k、周k、月k等k线数据,并将ticket、分时数据、k线数据存储到clickhouse跟redis中,做分布式实时计算。
63.(2)将ticket数据,k线数据通过netty实时推送到app。
64.步骤6:特殊意外情况处理
65.(1)当网络出现意外情况,没有接收到数据时,采用数据拉平算法处理,将没有接收到数据的时间段,设置成最近的那个时间点。
66.(2)当服务出现意外情况,没有处理实时数据跟k线数据时,服务
67.将重启加载备份的ticket数据,并重新生成实时跟k线数据。
68.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
转载请注明原文地址:https://tc.8miu.com/read-3352.html