ccxt k线数据_寻找相似的历史k线

有网友提问应该用什么样的数据库/数据结构/算法来计算某支股票的相似K线? 具体的问题描述是,假设给出某股某段行情K线(单位/日),从任何其他股票历史中匹配出与之最为相似的某段历史K线,并给出相似度值(单位/%),并以此排序,获取最为相似的N个结果。

我们可以使用k线的距离以及股票日回报的相关性来衡量k线相似度,使用Tushare提供的沪深股票2008年到2017年的日线行情数据来做实验。如何把Tushare数据导入到 DolphinDB database 可以参考教程如何使用DolphinDB处理Tushare金融数据。

Tushare提供的沪深股票日线行情数据包含以下字段:

名称	        描述
ts_code	        股票代码
trade_date	交易日期
open	        开盘价
high	        最高价
low	        最低价
close	        收盘价
pre_close	昨收价
change	        涨跌额
pct_change	涨跌幅
vol	        成交量(手)
amount	        成交额(千元)

下面将以漫步者(股票代码为002351.SZ)为例,介绍如何在历史数据中,找出与漫步者2016年9月1日到2016年9月30日最为相似的10段历史k线。

首先,把漫步者2016年9月1日到2016年9月30日的日线行情数据加载到内存。

code="002351.SZ"//漫步者
edifier=select * from loadTable("dfs://daily_line","hushen_daily_line") where ts_code=code,date(trade_date) between 2016.09.01:2016.09.30

把股票数据加载到内存中。

num=exec count(*) from edifier
stock=select * from loadTable("dfs://daily_line","hushen_daily_line")

1.使用k线的距离衡量相似度

两段k线之间的距离可以用股票日回报的差的平方和来计算。距离越小表示k线的相似度越高。

def square_sum(x,y):sum2(x-y)
corrTable1=select ts_code,move(date(trade_date),num-1)as beginDate,date(trade_date) as endDate,moving(square_sum{edifier.pct_change},pct_change,num) as distance from stock context by ts_code

上面代码使用的moving是DolphinDB的模板函数,表示在大小为num,边界为beginDate和endDate的滚动窗口中计算两段k线之间的距离。square_sum{edifier.pct_change}是DolphinDB中的部分应用,用于固定函数的部分参数。

找出与漫步者2016年9月1日到2016年9月30日最为相似的10段历史k线。

mostCorrelated1=select * from corrTable1 where isValid(distance),rank(distance,true) between 0:10 order by distance
ts_code	        beginDate	endDate	        distance
300073.SZ	2016.08.02	2016.08.29	67.024
600995.SH	2017.07.06	2017.08.02	70.8713
600549.SH	2010.12.17	2011.01.14	73.514
600627.SH	2008.07.07	2008.08.07	73.59
600367.SH	2010.12.17	2011.01.14	76.447
600867.SH	2011.07.28	2011.08.24	76.5449
002253.SZ	2010.05.21	2010.06.22	79.2845
002382.SZ	2015.01.06	2015.02.02	79.5101
300266.SZ	2014.07.07	2014.09.17	80.1772
600706.SH	2017.06.05	2017.07.14	80.5079

定义一个函数getReturn,取出相似股票在beginDate和endDate之间的日回报。

def getReturn(t, row): exec pct_change/100 from t where ts_code= row.ts_code, date(trade_date) between row.beginDate : row.endDate

把每只相似股票的日回报数据保存到同一个回报矩阵中,每列表示一只股票在相应时间段中的日回报,并使用图表展示。

retMatrix1 = each(getReturn{stock}, mostCorrelated1).rename!(mostCorrelated1.ts_code)
plot(retMatrix1,,"使用最短k线距离找出相似历史k线") 

上面的代码通过each模板函数取出最相似的10只股票的日回报,并以股票代码来命名每一列。

08de4ef6f78f85fbf286995f48a957c1.png

使用最短k线距离计算出来的股票包含当升科技(30073.SZ)、文山电力(600995.SH)、厦门钨业(600549.SH)、上电股份(600627.SH)、红星发展(600367.SH)、通化东宝(600867.SH)、川大智胜(002253.SZ)、蓝帆医疗(002382.SZ)、兴源环境(300266.SZ)和曲江文旅(600706.SH)。

2.使用股票日回报相关性衡量相似度

股票日回报的相关性是衡量k线相似度很好的指标。

corrTable2=select ts_code,move(date(trade_date),num-1)as beginDate,date(trade_date) as endDate,moving(corr{edifier.pct_change},pct_change,num) as corr from stock context by ts_code

找出与漫步者2016年9月1日到2016年9月30日最为相似的10段历史k线。

mostCorrelated2=select * from corrTable2 where rank(corr,false) between 0:10 order by corr desc
ts_code	        beginDate	endDate	        corr
600367.SH	2010.12.17	2011.01.14	0.8824
600549.SH	2010.12.17	2011.01.14	0.8806
300073.SZ	2016.08.02	2016.08.29	0.8749
002294.SZ	2014.02.26	2014.03.25	0.8729
600995.SH	2017.07.06	2017.08.02	0.8723
600486.SH	2010.12.17	2011.01.14	0.8721
002382.SZ	2015.01.06	2015.02.02	0.8718
002253.SZ	2010.05.21	2010.06.22	0.8708
000939.SZ	2008.03.21	2008.04.18	0.8706
600627.SH	2008.07.07	2008.08.07	0.8692

同样地,把相似股票的日回报数据保存到回报矩阵中。

retMatrix2 = each(getReturn{stock}, mostCorrelated2).rename!(mostCorrelated2.ts_code)
plot(retMatrix,,"使用股票日回报相关性找出相似历史k线") 

87079df5a4664c3f5b64999841c301e6.png

使用股票日回报相关性计算出来的股票包含红星发展(600367.SH)、厦门钨业(600549.SH)、当升科技(300073.SZ)、信立泰(002294.SZ)、文山电力(600995.SH)、扬农化工(600486.SH)、蓝帆医疗(002382.SZ)、川大智胜(002253.SZ)、凯迪生态(000939.SZ)和上电股份(600627.SH)。

3.性能分析

我们使用的是沪深股票2008年到2017年的日线行情数据,共530万的数据。使用第一种方法仅需7秒,使用第二种方法仅需3秒,性能极佳。

欢迎访问官网下载 DolphinDB database

联系邮箱:info@dolphindb.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java引用 弱引用_了解Java弱引用

java引用 弱引用我最近没来得及关注这个博客,最重要的是,我没有为与技术界的所有人保持联系而致歉。 最近,我偶然发现了自Java 1.2起可用的java.lang.ref软件包,但具有讽刺意味的是,几天前我才知道它。 在浏览了几篇有…

【TypeScript系列教程04】编译参数

目录 编辑单个 .ts 文件 编辑多个 .ts 文件 tsc 常用编译参数 编辑单个 .ts 文件 通常我们使用 .ts 作为 TypeScript 代码文件的扩展名。 然后执行以下命令将 TypeScript 转换为 JavaScript 代码: tsc sunjiaoshou.js 编辑多个 .ts 文件 我们可以同时编译多个 ts 文件: …

传递数组到 Shader

https://chengkehan.github.io/UniformArray.html 转载于:https://www.cnblogs.com/jim-game-dev/p/5658023.html

k均值例子 数据挖掘_数据挖掘的技术有很多种,常用的数据挖掘技术就这13种...

数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的但又是潜在有用的信息和知识的过程。数据挖掘的任务是从数据集中发现模式,可以发现的模式有很多种,按功能可以分为两大类:预…

【TypeScript系列教程05】保留关键字

目录 TypeScript 保留关键字 TypeScript 保留关键字 TypeScript 保留关键字如下表所示:

Lucene组件概述

本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中,您将了解Lucene。 您将了解为什么这样的库很重要,然后了解Lucene中搜索的工作方式。 此外,您将学习如何将Lucene Search集成到您自己的应用程序中,以…

中国剩余定理 互质与非互质版本

中国剩余定理互质版 设m1,m2,m3,...,mk是两两互素的正整数,即gcd(mi,mj)1,i!j,i,j1,2,3,...,k. 则同余方程组: x a1 (mod n1) x a2 (mod n2) ... x ak (mod nk) 模[n1,n2,...nk]有…

aix 的c库为什么都是静态库_卢卡库:若梅罗、莱万都在努力突破极限,为什么我不能做到呢...

直播吧12月8日讯 北京时间周四凌晨的欧冠小组赛末轮比赛,国米将在主场迎战顿涅茨克矿工。目前,蓝黑军团依然保留着些许出线希望。在这场比赛之前,国米射手卢卡库接受了《法国足球》的采访,他谈论了和孔蒂的关系、和劳塔罗的搭档以…

【TypeScript系列教程06】基础类型

目录 TypeScript 基础类型 任意类型 (any) 变量的值会动态改变时 改写现有代码时 定义存储各种类型数据的数组时 数字类型 (number)

便携式不锈钢管道焊接机器人_304不锈钢管居然可以发黑?

大家好,我是圣联达不锈钢管材管件孙立成。今天有伙伴们问我,自己使用的304不锈钢管表面怎么发黑了。带着这个问题,今天我特意去梳理了有关304发黑的缘故及其解决方法。304不锈钢管实际上按照正常生产流程,好的304不锈钢管加工制做…

jrockit_Java堆空间– JRockit和IBM VM

jrockit本文将为您提供JRockit Java堆空间与HotSpot VM的概述。 它还将为您提供有关JRockit和HotSpot的Oracle未来计划的一些背景知识。 Oracle JRockit VM Java堆:2个不同的内存空间 -Java堆(YoungGen和OldGen) -本机内存空间(…

【TypeScript系列教程07】变量声明

目录 TypeScript 变量声明 实例 类型断言(Type Assertion) TypeScript 是怎么确定单个断言是否足够 类型推断 变量作用域 TypeScript 变量声明

【TypeScript系列教程08】运算符

目录 TypeScript 运算符 算术运算符 实例 关系运算符 逻辑运算符 短路运算符 (&& 与 ||) 位运算符

EAI的Spring集成教程

课程大纲 Spring Integration是用于企业应用程序集成的开源框架。 这是一个轻量级的框架,建立在核心Spring框架之上。 它旨在支持开发事件驱动的体系结构和以消息为中心的体系结构典型的集成解决方案。 Spring Integration扩展了Spring编程模型,以支持著…

检验例题_高考必考|化学工艺流程之物质的分离提纯及检验鉴别,轻松拿分

嗨,小器来喽!今天给大家带来的资料依旧是化学的工艺流程的相关知识,因为小器知道在这部分内容中大家是很容易丢分的,都是基础知识不扎实的原因,所以给大家的资料都是从易到难的安排还有专属高考相关例题,简…

tar命令核心应用案列及多重参数和find组合应用

tar zcvf 压缩包 文件 打包:尽量切换到打包目录的上级目录,然后用相对路径打包 tar zcvf [随意路径] /框 [相对路径] 一堆苹果 tar tf 查看内容 -z --gzip --ungzip filter the archive through gzip||调用gzip来压缩归档文件 -c --create create a ne…

三态门三个状态vhdl_温故知新,高阻态和三态门

欢迎FPGA工程师加入官方微信技术群高阻态高阻态这是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果…

【TypeScript系列教程09】条件语句的使用

目录 TypeScript 条件语句 条件语句 if 语句 语法 实例 if…else 语句 语法 实例 if…else if….else 语句

学习数据库的三大范式

学习数据库的三大范式 第一范式:确保每列的原子性 如果每列(或者每个属性)都是不可再分的最小的数据单元(也称最小的原子单元),则满足第一范式。 第二范式:在第一范式的基础上,确保每列都和主键相关 如果一个关系满足第一范式,并且除了主键以…

【TypeScript系列教程10】循环语句的使用

目录 TypeScript 循环 for 循环 语法 实例 for…in 循环 语法 实例 for…of 、forEach、every 和 some 循环