k线生成模块
1、支持任意周期K线。
2、支持K线偏移。
3、支持指数、主力。
4、支持文华商品指数。
默认支持的是:5秒、1分钟、3分钟、5分钟、日线。
时间:2010年到现在。
数据如下:
5秒线,大宗商品指数(文华商品7186)

5秒线,工业品

1分钟,螺纹钢指数

5分钟前偏移60秒,大宗商品指数,时间去除了‘:’。

代码比较复杂,贴上导出的库:
/*
libkline特性
1、支持任意周期K线。K线周期以秒为单位,大于总交易时间的都认为是日线。整个交易日期间不会因为
暂时停盘截断K线,例如:rb的交易时间是晚上21:00:00-23:00:00,白天9:00:00-10:15:00...
如果周期是7分钟(即420秒),对应的K线是21:07:00、21:14:00、...22:59:00、9:06:00、..
22:59:00-23:00:00的数据算到9:06:00那根K线上。
2、支持K线偏移。偏移量以秒为单位,支持正负值。同样以rb合约,7分钟周期为例。假如希望K线滞后
1分钟(即60秒),则偏移量为正数60,对应的K线是21:08:00、21:15:00、...23:00:00、
9:07:00、...。假如希望K线提前1分钟(即60秒),则偏移量为负数-60,对应K线是21:06:00、
21:13:00、...22:58:00、9:05:00、...。K线提前可能导致K线增多一根(最后)的情况。
3、K线自动补全。同样以rb合约,1分钟周期为例。如果第一个tick是21:01:01(该tick
应该是21:02:00这根K线),则按最新价补上21:01:00这根K线。如果相邻两个tick时间分别是
21:03:18和21:06:02,则会以21:03:18的数据补上21:05:00、21:06:00两根K线。
4、集合竞价凑入下个区间。例如:20:59:00的数据认为是21:00:00,8:59:00的数据认为是
9:00:00,只有夜盘和白盘开始前5分钟的数据才认为是集合竞价数据。
*/ #ifndef LIB_KLINE_H
#define LIB_KLINE_H #ifdef LIBKLINE_EXPORTS
#define LIBKLINE_API __declspec(dllexport)
#else
#define LIBKLINE_API
#endif #include "ThostFtdcUserApiStruct.h"
#include "user_define_struct.h"
#include <functional>
#include <string>
#include <vector>
#include <list> #define COMMODITY_EXCHANGE "DZSPZS" //类别:大宗商品指数 typedef std::function<void(const SoffsetKline&,std::list<Skline>*)> lpGetKline;
typedef std::function<void(const char*,CThostFtdcDepthMarketDataField*)> lpGetIndex;
typedef std::function<void(const CThostFtdcDepthMarketDataField*)> lpGetShot;
typedef std::function<void(const SoffsetKline&, std::list<Skline>*)> lpTrig;
typedef std::function<void(const char*, std::list<CThostFtdcDepthMarketDataField>*)> lpGetIndexTick;
typedef std::function<void(const char*, double, CThostFtdcDepthMarketDataField*)> lpCommodityInfo;
typedef std::function<void(const char*)> lpErrMsg; class LIBKLINE_API libkline
{
public:
libkline();
~libkline(); //重置内部数据
void Reset(lpErrMsg lp = nullptr);
//错误信息回调
void SetErrMsg(lpErrMsg lp = nullptr); ///共有属性及回调
//设置交易日
void SetTradingDay(const char* pTradingDay, const char* pPreTradingDay); //设置K线周期
void SetCycle(std::vector<int> vecCycle); //启用K线偏移
//bHold:是否独占周期 true则该品种SetCycle置入的周期不起作用
void SetOffsetCycle(const SoffsetKline& ok, bool bHold); //K线更新触发
void SetUpdateTrig(const SoffsetKline& ok, lpTrig p); //K线生成触发
void SetNewTrig(const SoffsetKline& ok, lpTrig p); //设置K线,覆盖式
void SetKline(const SoffsetKline& ok, std::list<Skline>& listKline); //处理历史数据
//大宗商品指数需要依赖基本指数,一旦启用则缓存排序后再处理
void SetDealHistoryData(bool b); //是否处理完前tick
bool IsDealPreTick(); //是否在运行
bool IsRunning(); ///多商品指数
//需要订阅组成品种的所有可交易合约
void SetCommodity(const char* name, const char* abbreviation, int nMultiply, std::vector<SinstrumentProperty>& vec); //设置初始价格
void SetOriginalPrice(const char* abbreviation, const char* pCode, CThostFtdcDepthMarketDataField& last_data, double dPrice); //获取商品指数的乘数 0:代表未找到该品种
int GetCommodityMultiply(const char* abbreviation); //获取新增的指数的初始价格
void GetCommodityInfo(lpCommodityInfo lp); ///单商品
//添加合约属性
void AddVariety(const SinstrumentProperty* p); //设置指数表
bool SetIndexTable(const char* pProductID, CThostFtdcDepthMarketDataField& field); //设置主力
bool SetMainCode(const char* pProductID, const char* pMainCode); //压入实时tick数据
void PushTick(CThostFtdcDepthMarketDataField* pData); //运行
void Run(); //强行停止,缓存的数据都不处理了,立刻退出
void ForceStop(); //安全停止,将缓存的数据都处理完毕,在退出
void SafeStop(); //释放资源
void Release(); //获取K线
//bAll:是否请求所有,如果true,则pInstrumentID和nCycle失效
void GetKline(lpGetKline lp, SoffsetKline* p, bool bAll = false); //获取指数表
//pProductID:rb 空则返回所有
void GetIndex(lpGetIndex lp, const char* pProductID = nullptr); //获取快照
//pExchangeID:SHFE 空则返回所有
void GetShot(lpGetShot lp, const char* pExchangeID = nullptr); //获取指数tick
void GetIndexTick(lpGetIndexTick lp, const char* pInstrumentID = nullptr); //收缩偏移K线
void ShrinkOffsetKline(const SoffsetKline& ok, std::list<Skline>& targetKline,
int nThisCycle, std::list<Skline>& thisKline); //校验偏移k线的最后日期时间
void VerifyOffsetKline(const SoffsetKline& ok, Skline& lastKline); protected:
void* pObj;
}; #endif//LIB_KLINE_H
x64下载链接(debug|release及各版本vs通用):https://files.cnblogs.com/files/rmdmn/libkline.rar
k线生成模块的更多相关文章
- 使用Python的pandas模块、mplfinance模块、matplotlib模块绘制K线图
目录 pandas模块.mplfinance模块和matplotlib模块介绍 pandas模块 mplfinance模块和matplotlib模块 安装mplfinance模块.pandas模块和m ...
- Highstock生成股票K线图
在线演示 本地下载 使用HightStock生成股票K线图例子.
- PHP使用HighChart生成股票K线图详解
本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群: 281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...
- k线、指标绘制
我接触的绘制有两种:gdi+和qt绘图.可以灵活的绘制任何想要的东西. 先上效果图吧. 如下:基于gdi+的股指和股票的绘制.上面是沪深成分股实时生成的股票指数走势,下面是IF主力走势和开平仓位置. ...
- IDEA Plugin,写一个看股票指数和K线的插件
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 没招了,不写点刺激的,你总是不好好看! 以前,我不懂.写的技术就是技术内容,写的场景 ...
- C#下如何用NPlot绘制期货股票K线图(3):设计要显示的股票价格图表窗口并定义相应类的成员及函数
[内容简介] 上一篇介绍了要显示K线图所需要的数据结构,及要动态显示K线图,需要动态读取数据文件必需的几个功能函数.本篇介绍要显示蜡烛图所用到的窗口界面设计及对应类定义.下面分述如下: [窗口界面] ...
- 利用JFreeChart绘制股票K线图完整解决方案
http://blog.sina.com.cn/s/blog_4ad042e50100q7d9.html 利用JFreeChart绘制股票K线图完整解决方案 (2011-04-30 13:27:17) ...
- c#版 K线控件(Stock)
K线起源于日本米市交易,它的基本用途就是为了寻找"买卖点".股市及期货市场中的K线图的画法包含四个数据,即开盘价.最高价.最低价.收盘价,所有的k线都是围绕这四个数据展开,反映大势 ...
- 金融量化分析【day111】:Matplotib-绘制K线图
一.绘制k线图 1.使用金融包出错解决 1.错误代码 ImportError: No module named finance 2.解决办法 https://github.com/matplotlib ...
随机推荐
- 疑问:Iterator 遍历器和数据集合各种遍历方法的区别
https://es6.ruanyifeng.com/#docs/iterator Iterator(遍历器)的概念 Iterator 接口主要供for...of消费 Iterator 的遍历过程是: ...
- C语言二级选择题考点汇总-数据结构与算法-【考点一】 什么是算法
1.算法及其基本特征 算法是指对方案的准确描述,是解决问题的执行步骤. 算法不等于数学上的计算方法,也不等于程序.程序是算法的载体. 算法的基本特征如下: (1)可行性:步骤可实现,执行结果可达到 ...
- SP7258 SUBLEX - Lexicographical Substring Search - 后缀自动机,dp
给定一个字符串,求本质不同排名第k小的子串 Solution 后缀自动机上每条路径对应一个本质不同的子串 按照 TRANS 图的拓扑序,DP 计算出每个点发出多少条路径 (注意区别 TRANS 图的拓 ...
- 怎么在IDEA中给方法添加分割线?
方法中间分割不清晰 怎么在IDEA中给方法添加分割线呢? 效果如图 方法上有一条分割线,比较明了 按照下列顺序点击修改设置即可 File→Settings→Editor→General→Appeara ...
- TTradmin v2.1 【2019年12月12日更新】简单好用的临时远程协助软件
TTradmin 是一款免端口映射可直接穿透任何内网,基于VNC核心的即时远程协助软件.在使用的时候只需要保证“协助端”和“被协助端”使用同一个验证码即可实现安全便捷的远程控制,不需要进入路由 ...
- 轻量级RPC设计与实现第四版
在本版本中引入了SPI机制,关于Java的SPI机制与Dubbo的SPI机制在以前的文章中介绍过. 传送门:Dubbo的SPI机制与JDK机制的不同及原理分析 因为设计的RPC框架是基于Spring的 ...
- gulp常用插件之gulp-inject使用
更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-inject这个插件的作用与wiredep类似,不同的是可以自己任意指定需要插入文件的列表.它同样是利用注释来寻找插入的位置.获取源文件 ...
- 小白月赛22 G : 仓库地址
G : 仓库地址 考察点: 二维中位数 坑点 : 做就 OK 析题得侃: 我们发现 x 和 y 是相互独立的,也就是说先移动 x 或者先移动 y 都是可以到达一个点的,所以我们可以先找到 横坐标的 中 ...
- MySQL 8 通用二进制发行版安装
安装前的一些说明: 检查平台兼容性: https://www.mysql.com/support/supportedplatforms/database.html 如果是在RedHat7版本安装的话, ...
- [POI2015]PUS [线段树优化建图]
problem 线段树优化建图,拓扑,没了. #include <bits/stdc++.h> #define ls(x) ch[x][0] #define rs(x) ch[x][1] ...