时序数据研究之篇《三》股指参数指标的计算Python篇

时序数据研究之篇《二》中所讲述的都是理论计算,无论学什么,都得有理论基础的支撑嘛!若给出csv表格,再结合Excel表格的计算公式进行计算,不是不行,光是敲公式估计已经够繁琐了吧。现在我就用Python来实现这些参数的计算!

 

上代码前先给你们安利一个技术指标库TA_Lib,关于如何下载车轮和安装,参考:https://blog.csdn.net/feixuedongji/article/details/82796381

关于TA_Lib库的文档可以去官网看,或者参考中文文档:https://blog.csdn.net/luoganttcc/article/details/84028334

 

对了,还有一个很重要的提醒:时序数据研究之篇《一》的hs_300.csv 文件最好放在你创建代码所在的projec下,避免不必要的error!!

废话不多说,上代码:

import pandas as pd
import numpy as np
import talib
import os

# 导入数据 - 注意:这里请填写数据文件在您电脑中的路径
df= pd.read_csv('hs_300.csv')

# 获取标签列‘close’的list(注:计算MA的值时只需要一列数据close收盘价)
close = [float(x) for x in df['close']]
# 获取最高价和最低价
high = [float(x) for x in df['high']]
low = [float(x) for x in df['low']]
# 获取开盘价和成交金额
open = [float(x) for x in df['open']]
money = [float(x) for x in df['money']]

# 调用TA_Lib库计算移动均线
df['MA5'] = talib.MA(np.array(close), timeperiod=5)
df['MA10'] = talib.MA(np.array(close), timeperiod=10)

# 调用talib计算指数移动平均线的值
df['EMA12'] = talib.EMA(np.array(close), timeperiod=6)
df['EMA20'] = talib.EMA(np.array(close), timeperiod=20)
df['EMA26'] = talib.EMA(np.array(close), timeperiod=12)

# 调用talib计算MACD指标
df['DIFF'],df['DEA'],df['MACD'] = talib.MACD(np.array(close),
                            fastperiod=6, slowperiod=12, signalperiod=9)

# 调用talib计算CCI指标
df['CCI'] = talib.CCI(np.array(high), np.array(low),
                      np.array(close), timeperiod=14)

#调用talib计算ATR指标
df['ATR'] = talib.ATR(np.array(high), np.array(low),
                      np.array(close), timeperiod=14)

# 定义MTM指标函数
def cal_MTM(x):
    if x == 6:
        MTM_6 = []
        for i in range(len(close)):
            if i < 5:
                continue
            else:
                MTM = close[i]-close[i-5]
                MTM_6.append(MTM)
        df['MTM6'] = pd.Series(MTM_6, index=((j+5) for j in range(len(close)-5)))
    elif x == 12:
        MTM_12 = []
        for i in range(len(close)):
            if i < 11:
                continue
            else:
                MTM_num = close[i] - close[i - 11]
                MTM_12.append(MTM_num)
        df['MTM12'] = pd.Series(MTM_12, index=((j + 11) for j in range(len(close) - 11)))
    else:
        print("目前支持求6和12的MTM指标")

# 调用MTM指标函数
cal_MTM(6)
cal_MTM(12)

# 调用talib计算BOLL指标
df['BOLL_up'], df['middle'], df['BOLL_low'] = talib.BBANDS(
                np.array(close), timeperiod=20,
                # number of non-biased standard deviations from the mean
                nbdevup=2, nbdevdn=2,
                # Moving average type: simple moving average here
                matype=0)

# 调用talib计算ROC指标
df['ROC'] = talib.ROC(np.array(close), timeperiod=10)

# 定义SMI指标计算方式函数
def cul_SMI():
    pass

# 定义WVAD指标计算方式函数
def cul_WVAD(x):
    try:
        if x !='':
            wvad = 0
            WVAD = []
            for i in range(len(close)):
                if i < x-1:
                    continue
                else:
                    A = close[i-x+1] - open[i-x+1]
                    B = high[i-x+1] - low[i-x+1]
                    V = money[i-x+1]
                    if B != 0:
                        wvad = wvad+(A/B*V)
                        WVAD.append(wvad)
                    else:
                        wvad = 0
                        WVAD.append(wvad)
            df['WVAD'] = pd.Series(WVAD, index=((j + x-1) for j in range(len(close) - x+1)))
    except Exception as e:
        raise e  # 异常抛出

# 调用WVAD函数计算WVAD指标
cul_WVAD(6)

# 删除多余的列,看根据自己的需求
df.drop('EMA12', axis=1, inplace=True)
df.drop('EMA26', axis=1, inplace=True)
df.drop('DIFF', axis=1, inplace=True)
df.drop('DEA', axis=1, inplace=True)
df.drop('middle', axis=1, inplace=True)

# 若文件存在则删除
if os.path.exists('hs_300_args.csv'):
    os.remove('hs_300_args.csv')

# 暂时生成csv文件,后期需要可以把DataFrame直接传到MySQL中
df.to_csv('hs_300_args.csv', index=False)

里面大部分参数指标的计算都是调用talib技术指标库,像MTM和WVAD参数指标是个人按照对应的公式自行编写函数完成的!同时MTM亦可以像WVAD那样编写类似的函数不会显得那么死板!!!

结果显示图:

 各类指标可以进行往后的工作!

 

个人原创,如有疑问可以咨询我;若有不对的地方,欢迎指正!!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目介绍】 基于Python实现股票时序数据的预测源码(含数据集+超详细注释).zip基于Python实现股票时序数据的预测源码(含数据集+超详细注释).zip基于Python实现股票时序数据的预测源码(含数据集+超详细注释).zip基于Python实现股票时序数据的预测源码(含数据集+超详细注释).zip基于Python实现股票时序数据的预测源码(含数据集+超详细注释).zip基于Python实现股票时序数据的预测源码(含数据集+超详细注释).zip 基于Python实现股票时序数据的预测源码(含数据集+超详细注释).zip基于Python实现股票时序数据的预测源码(含数据集+超详细注释).zip 基于Python实现股票时序数据的预测源码(含数据集+超详细注释).zip 基于Python实现股票时序数据的预测源码(含数据集+超详细注释).zip 基于Python实现股票时序数据的预测源码(含数据集+超详细注释).zip 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载食用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值