使用Python绘制股票CCI指标曲线
创始人
2024-05-25 22:52:48
0

本文使用Python语言绘制一只股票的CCI(Commodity channel index)曲线,论文参考《Commodity channel index: Tool for trading cyclic trends》,该指标可以用来测量股价、外汇或者贵金属交易是否已超出常态分布范围,​ 波动于正无穷大和负无穷大之间 。

参考招商证券软件对CCI指标的应用:

参考百度对CCI公式的定义:

* CCI(n) = (TP- MA) ÷MD ÷0.015

* TP = (最高价 + 最低价 + 收盘价) ÷ 3

* MA = 最近n日(TP)价的累计和÷n

* MD = 最近n日 (TP-MA )的绝对值的累计和 ÷ n

* 系统默认n为14

 根据公式,需要获得一只股票每天的盘口数据,可以使用AKShare库获取:

import akshare as ak
import datetimedate = datetime.datetime.now().strftime("%Y%m%d")
stock_zh_a_spot_em_df = ak.stock_zh_a_spot_em()
stock_zh_a_spot_em_df.to_csv('E:\\股票盘口信息\\{}.csv'.format(date), encoding='utf_8_sig')

这样我们就获得了每一天的盘口数据,CSV格式,文件内容如下:

采用下面的代码,绘制CCI曲线,股票选择平安银行,代码“000001”,csv格式的文件中“代码”列是数值,所以前面五个0会去掉,故下面代码中stock_num为1,又如上图“代码”列中的758,表示“000758”中色股份。

import math
import os.path
import matplotlib.pyplot as plt
import pandas as pddate = []
zg = []
zd = []
zxj = []
TP = []
MA = []
MD = []
CCI = []
n = 14plt.figure(figsize=(10, 5))stock_num = 1path = 'E:\\股票盘口信息'
name_list = os.listdir(path)
for name in name_list:filename = 'E:\\股票盘口信息\\' + namedata = pd.read_csv(filename, encoding='utf_8_sig')for i in range(0, len(data.get('代码'))):if data.get('代码')[i] == stock_num:zg.append(data.get('最高')[i])zd.append(data.get('最低')[i])zxj.append(data.get('最新价')[i])TP.append((data.get('最高')[i] + data.get('最低')[i] + data.get('最新价')[i]) / 3)date.append(name)breakfor i in range(0, len(date)):if i >= (n - 1):count = 0for j in range(0, n):count += TP[i - j]MA.append(count/n)else:MA.append(0)for i in range(0, len(date)):if i >= (n - 1):count = 0for j in range(0, n):count += math.fabs(TP[i - j] - MA[i - j])MD.append(count/n)else:MD.append(0)for i in range(0, len(date)):CCI.append((TP[i] - MA[i])/(MD[i]*0.015))plt.plot(date, CCI, 'b')
plt.grid()
plt.show()

 程序运行结果如下:

 拿证券软件的曲线对应:

 可能是中间有几天数据缺失的原因,形状有些不一样,如果是代码问题是留言指正。

==============================

抱怨几句)去年11月12月项目比较忙,加上☀了一个星期,年底部门会议又多,停更了几个月。说实话,年纪确实大了,以前在实验室,从早上9点整到晚上22点,还能开开心心吃个宵夜再回家,现在每天7点下班回家后就躺在沙发上起不来,感觉消耗特别大,借迪迪哥一句“哎~人生啊”。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...