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

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

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线”实现形态选股?

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/719011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存