将pyecharts官方提供的数据源,替换成已经存在mysql中的数据。画出专业的k线图(k线+ma移动均线+交易额柱状图(单位是千))

参考:

【python量化交易学习】pandas获取tushare股票交易数据,写入mysql数据库中。

pyecharts 配置项

pyecharts专业K线图代码示例

**

主要修改获取数据这一块的函数。

**

def get_data(input_share_code):# 建立mysql数据库的连接conn = create_engine('mysql+pymysql://root:123456@localhost:3306/qtrade', encoding='utf8')# "SELECT  * FROM dailytrade WHERE ts_code = '000001.SZ' "mysql = "SELECT  * FROM dailytrade WHERE ts_code = '" + input_share_code + "' order by trade_date"# 读取交易数据df = pd.read_sql(mysql, conn)# df[['a','b']]#取a、b列trade_values = df[['trade_date', 'open', 'close', 'low', 'high', 'amount', 'pre_close']]# 将格式转化成pyechart使用的格式trade_values_tolist = [trade_values.iloc[i].tolist() for i in range(len(trade_values))]# 解析数据return split_data(data=trade_values_tolist, share_code=input_share_code)def split_data(data, share_code):# 日期category_data = []# 日期,交易4个价格,交易量values = []# 序号,收盘价,涨跌序号,涨为1,跌为-1volumes = []for i, tick in enumerate(data):category_data.append(tick[0])values.append(tick)volumes.append([i, tick[5], 1 if tick[6] > tick[2] else -1])return {"categoryData": category_data, "values": values, "volumes": volumes, "share_code": share_code}# 计算移动均线。移动平均线(MA)计算方法就是求连续若干天的收盘价的算术平均
def calculate_ma(day_count: int, data):result: List[Union[float, str]] = []for i in range(len(data["values"])):if i < day_count:result.append("-")continuesum_total = 0.0for j in range(day_count):sum_total += float(data["values"][i - j][2])result.append(abs(float("%.3f" % (sum_total / day_count))))return result

完整代码:

from typing import List, Union
from pyecharts.charts import Line, Bar, Grid, Page
import pandas as pd
from sqlalchemy import create_engine
from pyecharts import options as opts
from pyecharts.charts import Klinedef get_data(input_share_code):# 建立mysql数据库的连接conn = create_engine('mysql+pymysql://root:123456@localhost:3306/qtrade', encoding='utf8')# "SELECT  * FROM dailytrade WHERE ts_code = '000001.SZ' "mysql = "SELECT  * FROM dailytrade WHERE ts_code = '" + input_share_code + "' order by trade_date"# 读取交易数据df = pd.read_sql(mysql, conn)# df[['a','b']]#取a、b列trade_values = df[['trade_date', 'open', 'close', 'low', 'high', 'amount', 'pre_close']]# 将格式转化成pyechart使用的格式trade_values_tolist = [trade_values.iloc[i].tolist() for i in range(len(trade_values))]# 解析数据return split_data(data=trade_values_tolist, share_code=input_share_code)def split_data(data, share_code):# 日期category_data = []# 日期,交易4个价格,交易量values = []# 序号,收盘价,涨跌序号,涨为1,跌为-1volumes = []for i, tick in enumerate(data):category_data.append(tick[0])values.append(tick)volumes.append([i, tick[5], 1 if tick[6] > tick[2] else -1])return {"categoryData": category_data, "values": values, "volumes": volumes, "share_code": share_code}# 计算移动均线。移动平均线(MA)计算方法就是求连续若干天的收盘价的算术平均
def calculate_ma(day_count: int, data):result: List[Union[float, str]] = []for i in range(len(data["values"])):if i < day_count:result.append("-")continuesum_total = 0.0for j in range(day_count):sum_total += float(data["values"][i - j][2])result.append(abs(float("%.3f" % (sum_total / day_count))))return result# 开始画图
def draw_charts():share_code = chart_data["share_code"]# 获得数据kline_data = [data[1:-1] for data in chart_data["values"]]# 画K线kline = (Kline()# 加载x轴数据.add_xaxis(xaxis_data=chart_data["categoryData"])# 加载y轴数据.add_yaxis(# K线名称series_name=share_code,# 加载y轴数据y_axis=kline_data,# 设置y轴数据的颜色itemstyle_opts=opts.ItemStyleOpts(color="#ec0000", color0="#00da3c"),)# 设置全局变量.set_global_opts(# 图例配置项,隐藏图例legend_opts=opts.LegendOpts(is_show=False, pos_bottom=10, pos_left="center"),# DataZoomOpts:区域缩放配置项。type_: str = "slider",组件类型,可选 "slider", "inside"。# is_show: bool = True, 是否显示 组件。如果设置为 false,不会显示,但是数据过滤的功能还存在。datazoom_opts=[opts.DataZoomOpts(is_show=False,type_="inside",xaxis_index=[0, 1],range_start=98,range_end=100,),opts.DataZoomOpts(is_show=True,xaxis_index=[0, 1],type_="slider",pos_top="85%",range_start=98,range_end=100,),],yaxis_opts=opts.AxisOpts(is_scale=True,splitarea_opts=opts.SplitAreaOpts(is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)),),tooltip_opts=opts.TooltipOpts(trigger="axis",axis_pointer_type="cross",background_color="rgba(245, 245, 245, 0.8)",border_width=1,border_color="#ccc",textstyle_opts=opts.TextStyleOpts(color="#000"),),visualmap_opts=opts.VisualMapOpts(is_show=False,dimension=2,series_index=5,is_piecewise=True,pieces=[{"value": 1, "color": "#00da3c"},{"value": -1, "color": "#ec0000"},],),axispointer_opts=opts.AxisPointerOpts(is_show=True,link=[{"xAxisIndex": "all"}],label=opts.LabelOpts(background_color="#777"),),brush_opts=opts.BrushOpts(x_axis_index="all",brush_link="all",out_of_brush={"colorAlpha": 0.1},brush_type="lineX",),title_opts=opts.TitleOpts(title = chart_data["share_code"])))# 画 MA 移动均线图line = (Line().add_xaxis(xaxis_data=chart_data["categoryData"]).add_yaxis(series_name="MA5",y_axis=calculate_ma(day_count=5, data=chart_data),is_smooth=True,is_hover_animation=False,linestyle_opts=opts.LineStyleOpts(width=3, opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="MA10",y_axis=calculate_ma(day_count=10, data=chart_data),is_smooth=True,is_hover_animation=False,linestyle_opts=opts.LineStyleOpts(width=3, opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="MA20",y_axis=calculate_ma(day_count=20, data=chart_data),is_smooth=True,is_hover_animation=False,linestyle_opts=opts.LineStyleOpts(width=3, opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).add_yaxis(series_name="MA30",y_axis=calculate_ma(day_count=30, data=chart_data),is_smooth=True,is_hover_animation=False,linestyle_opts=opts.LineStyleOpts(width=3, opacity=0.5),label_opts=opts.LabelOpts(is_show=False),).set_global_opts(xaxis_opts=opts.AxisOpts(type_="category")))# 画交易量柱状图bar = (Bar().add_xaxis(xaxis_data=chart_data["categoryData"]).add_yaxis(series_name="Volume",y_axis=chart_data["volumes"],xaxis_index=1,yaxis_index=1,label_opts=opts.LabelOpts(is_show=False),).set_global_opts(xaxis_opts=opts.AxisOpts(type_="category",is_scale=True,grid_index=1,boundary_gap=False,axisline_opts=opts.AxisLineOpts(is_on_zero=False),axistick_opts=opts.AxisTickOpts(is_show=False),splitline_opts=opts.SplitLineOpts(is_show=False),axislabel_opts=opts.LabelOpts(is_show=False),split_number=20,min_="dataMin",max_="dataMax",),yaxis_opts=opts.AxisOpts(grid_index=1,is_scale=True,split_number=2,axislabel_opts=opts.LabelOpts(is_show=False),axisline_opts=opts.AxisLineOpts(is_show=False),axistick_opts=opts.AxisTickOpts(is_show=False),splitline_opts=opts.SplitLineOpts(is_show=False),),legend_opts=opts.LegendOpts(is_show=False),))# Kline And Lineoverlap_kline_line = kline.overlap(line)# Grid Overlap + Bargrid_chart = Grid(init_opts=opts.InitOpts(width="1000px",height="800px",animation_opts=opts.AnimationOpts(animation=False),))grid_chart.add(overlap_kline_line,grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%", height="50%"),)grid_chart.add(bar,grid_opts=opts.GridOpts(pos_left="10%", pos_right="8%", pos_top="63%", height="16%"),)grid_chart.render("1111111.html")if __name__ == "__main__":chart_data = get_data('000004.SZ')draw_charts()

查询不同代码数据,进行检验。和实际符合。
股票代码000001

股票代码000004

【python量化交易学习】pandas获取mysql数据,使用pyecharts画K线图,ma移动均线。相关推荐

  1. python画k线图_python自动获取行情数据,并画k线图

    1.概述 本例子为画k线图,同时画出5日,10日,30日均线,且鼠标移动到上面会显示当前交易日,开盘价,收盘价,最高价,最低价. 移动平均线:Moving Average,简称MA,MA是用统计分析的 ...

  2. tushare获取数据用pyecharts画k线图

    tushare ID:505405 import pyecharts.options as opts from pyecharts.charts import Kline import tushare ...

  3. Python量化交易实战:获取股票数据并做分析处理

    量化交易(也称自动化交易)是一种应用数学模型帮助投资者进行判断,并且根据计算机程序发送的指令进行交易的投资方式,它极大地减少了投资者情绪波动的影响.量化交易的主要优势如下: 快速检测 客观.理性 自动 ...

  4. Python获取股票数据并绘制相应K线图,看这个就够了!

    Python对股票的K线可视化 前言 说明 注意 数据获取 Tushare获取股票数据 获取医疗器械板块数据(代码部分) 获取股票数据(代码部分) 数据预处理 变量中文化(代码部分) K线绘制 代码部 ...

  5. 利用python的tushare库获取在线数据,绘制股票k线图

    可视化是python的一个强大功能,也是金融数据分析中重要的工具.本文给出的python代码可以用于绘制贵州茅台(600519)在2019年1月1日到2019年12月31日的周k线图. 注意:本文使用 ...

  6. 通达信导出个股某段时间的数据以及在 Excel 中画 K 线图

    打开通达信软件 以中盐化工这支股票为例,输入股票首字母拼音即可找到相应股票 双击进入该支股票 盘后数据下载 点击左上角的 ' 系统 ' ,下拉菜单中选择 ' 盘后数据下载 ' 勾选 ' 日线和实时行情 ...

  7. 【python量化交易学习】从tushare获取股票交易数据,存入后再从mysql或excel读取数据,筛选股票,用pyecharts画出K线图。

    选定日期,筛选涨幅达到10%的股票,并画出K线图.观察涨停后股票走势. 由于创业板涨停板为20%,科创板20%,北交所30%.因此筛选出的涨停股票不完全准确.考虑到目前市场打板主要集中在10%的主板股 ...

  8. Python量化交易学习笔记(1)

    Python量化交易学习笔记(1) http://zwpython.com/ http://www.topquant.vip/?p=2275 [更多参见] <zwPython,目前最好的py开发 ...

  9. python 获取股市数据 baostock + 画K线图 mpl_finance

    python 获取股市数据 baostock + 画K线图 mpl_finance 获取股票数据 安装baostock库 baostock库的特性 获取A股K线数据 核心代码如下 完整代码如下 画K线 ...

最新文章

  1. 人月神话阅读笔记之一
  2. 交叉熵损失函数分类_交叉熵损失函数
  3. aic bic mdl
  4. 【小白学习C++ 教程】四、C++逻辑运算符、While循环和For 循环
  5. 深入剖析C++多态、VPTR指针、虚函数表
  6. 硬编码 and 软编码
  7. jQuery实现数据映入form表单
  8. codeforces Gargari and Permutations(DAG+BFS)
  9. [转载] 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis
  10. 「轻松转换」专业的PDF转换Excel软件:PDF to Excel Converter for Mac
  11. Adsutil.vbs 在脚本攻击中的妙用
  12. java代理模式与装饰者模式
  13. 百度08年网页搜索份额73.2% 创历史新高
  14. 股票数据下载-如何下载股票历史行情数据?
  15. 计算机多媒体制作三级证书,多媒体作品制作员(师)国家职业标准
  16. 最新搜狗微信文章数据采集方法(无需代理)
  17. 独立IP、特产浏览量(PV)、访问次数(VV)、独立访客(UV)
  18. PYTHON使用chinese_calendar判断日期是否为节假日
  19. 第一届中国数字藏品大会顺利召开
  20. 【论文阅读】Detecting concurrency memory corruption vulnerabilities

热门文章

  1. 电子电路笔记----基本放大电路--半导体三极管
  2. 心流体验:专注的快乐--读书笔记
  3. 推荐一款好用的固定资产管理系统
  4. java关注微信公众号登录
  5. 【UWB 定位】测距TOA 和 TDOA详解
  6. C1认证学习笔记2--计算机通识
  7. Navicat for MySQL 安装以及初始创建连接,新建数据表
  8. es java api 进行聚合+桶聚合查询
  9. MIT多变量微积分--3.矩阵,逆矩阵
  10. 【错解】【附正解】“科林明伦杯”哈尔滨理工大学第十届程序设计竞赛 - E 赛马