Python --相似K线匹配--实现股票走势预测 Tushare

Python --相似K线匹配–实现股票走势预测 Tushare


前言

同花顺和东方财富都提供了一个免费的功能可以查找相似走势的K线,提供参考。差不多,东方财富可以选择分析的周期,同花顺是固定120日的分析周期。我们可以通过tushare的数据源获取历史交易数据自己实现一个类似功能。
在这里插入图片描述
得到的K线匹配效果如下:
在这里插入图片描述

一、获取历史交易数据

1.引入库,读取历史交易数据

Tushare是一个免费、开源的python财经数据接口包。注册用户后到个人中心改一下名字获取积分,基本的功能都可以用了。大家可以用我的邀请码注册
①首先要安装tushare库
pip install tushare --upgrade
注册Tushare大数据社区的账号,在个人中心获取你的token
③Tushare官网接口使用手册,可以查看如何调用各个接口。

import tushare as ts
# 个人账号tushareToken
ts.set_token('dce74e113985d5da2a8dffe05cccdba7c72aa1e0c34601dbb8d2cbc0')
pro = ts.pro_api()
#调用000001.sz的的历史日线数据
df = pro.daily(ts_code='000001.SZ', start_date='20180701', end_date='20180718')
print(df)

至此我们实现了某只股票的交易数据获取。

接下来,我们需要获取当前所有正常上市交易的股票列表,然后获取他们的的历史走势与我们选取的对象做比较。

import tushare as ts
# 个人账号tushareToken
ts.set_token('dce74e113985d5da2a8dffe05cccdba7c72aa1e0c34601dbb8d2cbc0')
pro = ts.pro_api()
#  获取当前所有正常上市交易的股票列表
stock_all = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')

for eachCode in stock_all.iterrows():  
#   获取历史交易数据
    stock_history=ts.get_hist_data(eachCode[1]['symbol'])
#     打印调试
    print(eachCode[1]['symbol'],eachCode[1]['name'])
    print(stock_history)
    

2.认识K线,如何分析走势

当我们描述股票的一根K线组成,会用开盘价open、收盘价close、最高价high、最低价low,因为周期不同,会使得K线表现形式产生差异,因此我们往往在讲K线时,在K线前指明周期,比如:日级K线、60分钟K线、15分钟K线等等。
在这里插入图片描述
均线指标是反映价格运行趋势的重要指标,其运行趋势一旦形成,将在一段时间内继续保持。五日均线指的是近5天内收盘价的加权平均价,是均线系统中的短期均线,反映股价或指数的短期运行趋势。如图所示,黑色的是5日均线,黄色为10日均线,粉色为20日均线。
在这里插入图片描述
那么我们如何定义一根K线相似,对于单根K线其开盘价、收盘价、最高价、最低价越相似那么它就越相似。同理我们如何定义短期趋势的相似,计算Ma5的相关系数。

在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数,是用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。我们可以利用numpy.corrcoef()函数,来计算两个矩阵之间的相关性。那么我们定义两段K线的相似度K=(开盘价相关系数+收盘价相关系数+最低价相关系数+最高价相关系数+5日均线的相似度)/5。

 stock_compare=ts.get_hist_data(code)[0:day_range] #获取选取范围的分析对象的交易数据
        
    compare_open=stock_compare['open']
    compare_close=stock_compare['close']
    compare_high=stock_compare['high']
    compare_low=stock_compare['low']
    compare_ma5=stock_compare['ma5']
stock_all = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
    stock_all = stock_all[0:100]
#    逐一获取A股上市股票的历史走势做比较
    for eachCode in stock_all.iterrows():  
        
        stock_history=ts.get_hist_data(eachCode[1]['symbol']) # 旧接口获取历史数据,因为就接口直接提供ma5数据
        trade_days = len(stock_history) #获取的历史交易数据长度

        k_list=[]
        x_list=[]
#         /**截取30_days的长度,滑动窗口为5*/
        for i in range(5,trade_days, 5):
            # 截取判空,滑动数据不满足range后跳出            
            if(i+day_range>=trade_days):
                break
            stock_offer=stock_history[i:i+day_range] #截取后的数据
                       
            open_o     =stock_offer['open']
            close_o    =stock_offer['close']
            high_o     =stock_offer['high']
            low_o      =stock_offer['low']
            ma5_o       =stock_offer['ma5']

            open_k =np.corrcoef(compare_open,open_o)[0][1]
            #/**-------------计算相关系数-------------------*/
            close_k=np.corrcoef(compare_close,close_o)[0][1]
            high_k =np.corrcoef(compare_high,high_o)[0][1]
            low_k =np.corrcoef(compare_low,low_o)[0][1]
            ma5_k =np.corrcoef(compare_ma5,ma5_o)[0][1]
            ave_k = (open_k+close_k+high_k+low_k+ma5_k)/5

在这里插入图片描述
在这里插入图片描述


总结

例如:
本文仅仅简单介绍了如何通过tushare数据源获取A股的历史交易数据,通过皮尔逊相关系数实现一种查找相似K线的算法。
资本市场没有新鲜事,历史总是重演但不是简单重复,该方法提供一种实现方法,并不构成投资建议。

enjoy🥰!

本文参考了以下博主的文章
如何用Python量化“相似K线”实现形态选股?

  • 8
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值