通过tushare的股票数据绘制股票各曲线图——KDJ指标曲线
import tushare as ts
import numpy as np
import pandas as pd
import datetime as dt
import matplotlib.pyplot as mp
import matplotlib.dates as md
#引入自己的api,把股票数据引入放到df里面
pro = ts.pro_api('ee5e027680ee512ab9783ae3e78d766ada5b959b441f4b2bba7db241')
df = pro.daily(ts_code='000001.SZ', start_date='20210401', end_date='20210601')
#print(df)#记录第一步预处理的数据,计算9日内的最大最小值
KdjData = {"trade_date":[],"max_value":[],"min_value":[],"close":[]}
#Rsv数据
RsvData = {"trade_date":[],"Rsv_value":[]}
#K值数据
KData = {"trade_date":[],"K_value":[]}
#D值数据
DData = {"trade_date":[],"D_value":[]}
#J值数据
JData = {"trade_date":[],"J_value":[]}#初步整理数据 其中 N=9 不包含当日 即包含当日的话有10天
for i in (range(0,df.trade_date.size - 9)):KdjData.setdefault("max_value",[]).append(df.pre_close[i]) #设置初始值为前一天的close值KdjData.setdefault("min_value",[]).append(df.pre_close[i])KdjData.setdefault("close",[]).append(df.close[i])KdjData.setdefault("trade_date",[]).append(df.trade_date[i])for j in (range(i + 1,i + 10)):if df.close[j] > KdjData["max_value"][i]: #找出前九天内的最大最小值KdjData["max_value"][i] = df.close[j]if df.close[j] < KdjData["min_value"][i]:KdjData["min_value"][i] = df.close[j]
myKdjData = pd.DataFrame(KdjData)
#print(myKdjData)#计算RSV值
for i in (range(0,myKdjData.trade_date.size)):RsvData.setdefault("trade_date",[]).append(myKdjData.trade_date[i])rsv = (myKdjData.close[i] - myKdjData.min_value[i])/(myKdjData.max_value[i] - myKdjData.min_value[i])*100RsvData.setdefault("Rsv_value",[]).append(rsv)
MyRsvData = pd.DataFrame(RsvData)
#print(MyRsvData)#定义计算K值的函数
def Compute1(i,data):if i == data.trade_date.size - 1:return 50else:return 2/3*Compute1(i + 1,data) + 1/3*data.Rsv_value[i]
#print(Compute1(2,MyRsvData))#定义计算D值的函数
def Compute2(i,data):if i == data.trade_date.size - 1:return 50else:return 2/3*Compute2(i + 1,data) + 1/3*data.K_value[i]#计算K值
for i in (range(0,MyRsvData.trade_date.size)):KData.setdefault("trade_date",[]).append(MyRsvData.trade_date[i])KData.setdefault("K_value",[]).append(Compute1(i,MyRsvData))
MyKData = pd.DataFrame(KData)
#print(MyKData)#计算D值
for i in (range(0,MyKData.trade_date.size)):DData.setdefault("trade_date",[]).append(MyKData.trade_date[i])DData.setdefault("D_value",[]).append(Compute2(i,MyKData))
MyDData = pd.DataFrame(DData)
#print(MyDData)#计算J值
for i in(range(0,MyKData.trade_date.size)):JData.setdefault("trade_date",[]).append(MyKData.trade_date[i])JData.setdefault("J_value",[]).append(3*MyKData.K_value[i] - 2*MyDData.D_value[i])
MyJData = pd.DataFrame(JData)#创建图形实例,设置xy轴
mp.figure("KDJ Line", figsize=(15, 5),facecolor="lightgray")
mp.title("KDJ Line", fontsize=18)
mp.xlabel("Date", fontsize=15)
mp.ylabel("KDJ", fontsize=15)mp.tick_params(labelsize=5) #设置刻度标签的字体大小
mp.grid(linestyle=":") #显示网格#绘制K线
mp.plot(MyKData.trade_date,MyKData.K_value, color="blue", linestyle="-",linewidth=2, label="KValue", alpha=0.3)#绘制D线
mp.plot(MyDData.trade_date,MyDData.D_value,color="green",linestyle= "-",linewidth=2, label="DValue", alpha=0.3)#绘制J线
mp.plot(MyJData.trade_date,MyJData.J_value,color="purple",linestyle= "-",linewidth=2, label="JValue", alpha=0.3)#最终展示
mp.legend() #图例
mp.gcf().autofmt_xdate() #使X轴坐标斜着显示
mp.show()
结果展示:
通过tushare的股票数据绘制股票各曲线图——KDJ指标曲线相关推荐
- 通过tushare的股票数据绘制股票各曲线图——日K线
import tushare as ts import numpy as np import datetime as dt import matplotlib.pyplot as mp import ...
- 通过tushare的股票数据绘制股票各曲线图——周K线
#给每天打上标记,标记为第几周 Mark_Data = {"date":[],"value":[]} #中间数据 Temp_Data = {"trad ...
- plotly基于dataframe数据绘制股票OHLC图
plotly基于dataframe数据绘制股票OHLC图 # plotly绘制ohlc曲线 import plotly as py # 导入plotly库并命名为py import plotly.gr ...
- plotly基于dataframe数据绘制股票K线图并过滤非交易时间
plotly基于dataframe数据绘制股票K线图并过滤非交易时间 #ohlc过滤非交易时间: import plotly as py # 导入plotly库并命名为py import plotly ...
- cufflinks基于dataframe数据绘制股票数据:直方图、时序图
cufflinks基于dataframe数据绘制股票数据:直方图.时序图 # 直方图: import cufflinks as cf from chart_studio import plotly a ...
- plotly基于dataframe数据绘制股票自定义K线图
plotly基于dataframe数据绘制股票自定义K线图 # 绘制蜡烛图并自定义可视化形式: import plotly as py import plotly.graph_objs as go ...
- plotly基于dataframe数据绘制股票蜡烛图(Candlestick)
plotly基于dataframe数据绘制股票蜡烛图(Candlestick) # 股票蜡烛图(Candlestick) import plotly as py # 导入plotly库并命名为py i ...
- android开发股票数据接口,股票数据接口-股票数据接口api
原标题:股票数据接口-股票数据接口api 量亿数据专注金融领域API数据接口,其中包括期货.股票.期权.外汇等,只需要注册即可申请使用. 免费申请网址:http://www.liangyee.com/ ...
- 股票数据:股票数据查询网站
股票数据:股票数据查询网站可以查询股票历史数据,从股票上市日到最近一个交易日所有的交易数据,当然能查询也就能下载啦,也可以下载股票历史数据Excel,皆免费 只要两步就能下载: 填股票代码.邮箱 5分 ...
- 获取深户股市列表api_利用Tushare获取沪深股票数据与股票数据分析
1. 简介 近期因为新型肺炎疫情的缘故, 呆在家里想着学习一点Python数据采集与分析相关的内容,于是决定从股票数据入手,做一些简单的数据采集与分析的实战工作.在网上看了一点资料,决定使用Tusha ...
最新文章
- 如何防止博客文章被窃取
- JS验证框架的使用方法
- Re:CMM和RUP、XP的关系是什么?
- ateq测漏仪f620中文说明书_Yaman雅萌美容仪详细介绍及2019年韩国免税店最新报价...
- 2018最火机器学习项目盘点—CV项目领冠榜单
- ROS笔记(20) Kinect仿真
- 稳坐开发领域霸主之位,揭秘C语言无可取代的几大原因!
- pandas使用字典格式修改columns列名
- Opencv中的图像深、浅拷贝
- Spark 广播变量BroadCast
- Hibernate 中Property中的formula属性的使用
- AAtitit 项目管理 提升开发效率的项目流程方法模型 哑铃型 橄榄型 直板型titi
- mysql 0000-00-00无效_mysql0000-00-00日期异常及解决方法
- linux下RRDTool安装方法
- visio 2007使用实例图文教程【转】
- kodi奈飞固件_在Ubuntu,Debian和Kodi上,如何安装Netflix
- 算法之迪杰斯特拉算法
- 阿里云盾(云安全)是什么?有什么作用?
- 用easynetty进行服务端回签同步确认
- 运算器设计(Logisim实现)