mplfinancet绘制K线图

mplfinancet绘制K线图

1、安装

安装速度快
pip install mplfinance -i https://pypi.tuna.tsinghua.edu.cn/simple


C:\Users>pip install mplfinance -i https://pypi.tuna.tsinghua.edu.cn/simple
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting mplfinance
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/5c/38/6e4a35f156efef1f2b0ebb18aaa5ea69d28b6f46584ebdb9e57dc59f1cb5/mplfinance-0.12.9b7-py3-none-any.whl (73 kB)
     |████████████████████████████████| 73 kB 514 kB/s
Requirement already satisfied: pandas in c:\users\appdata\roaming\python\python38\site-packages (from mplfinance) (1.2.3)
Requirement already satisfied: matplotlib in c:\users\appdata\roaming\python\python38\site-packages (from mplfinance) (3.3.4)
Requirement already satisfied: python-dateutil>=2.1 in c:\users\appdata\roaming\python\python38\site-packages (from matplotlib->mplfinance) (2.8.1)
Requirement already satisfied: kiwisolver>=1.0.1 in c:\users\appdata\roaming\python\python38\site-packages (from matplotlib->mplfinance) (1.3.1)
Requirement already satisfied: pillow>=6.2.0 in c:\users\appdata\roaming\python\python38\site-packages (from matplotlib->mplfinance) (8.1.2)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in c:\users\appdata\roaming\python\python38\site-packages (from matplotlib->mplfinance) (2.4.7)
Requirement already satisfied: numpy>=1.15 in c:\users\appdata\roaming\python\python38\site-packages (from matplotlib->mplfinance) (1.19.5)
Requirement already satisfied: cycler>=0.10 in c:\users\appdata\roaming\python\python38\site-packages (from matplotlib->mplfinance) (0.10.0)
Requirement already satisfied: pytz>=2017.3 in c:\users\appdata\roaming\python\python38\site-packages (from pandas->mplfinance) (2021.1)
Requirement already satisfied: six in c:\users\appdata\roaming\python\python38\site-packages (from cycler>=0.10->matplotlib->mplfinance) (1.15.0)
Installing collected packages: mplfinance
Successfully installed mplfinance-0.12.9b7
C:\Users>

2、测试绘图参数

通过数据库中的股票数据进行绘图。

(1)MySQL读入数据

通过pd.read_sql读入MySQL数据,直接设置好索引列:

  • sql:sql命令字符串 con:连接sql数据库的engine,一般可以用sqlalchemy或者pymysql之类的包建立;
  • index_col:选择某一列作为index; coerce_float:将数字形式的字符串直接以float型读入;
  • parse_dates:将某一列日期型字符串转换为datetime型数据,与pd.to_datetime功能类似。可以直接提供需要转换的列名以默认的日期形式转换,也可以用字典的格式提供列名和转换的日期格式,比如{column_name:
    format string}(format string:“%Y:%m:%H:%M:%S”);
  • columns:要选取的列,一般没啥用,因为在sql命令里面一般就指定要选择的列了;
  • chunksize:如果提供了一个整数值,那么就会返回一个generator,每次输出的行数就是提供的值的大小。

(2)plot主要参数

参数 描述

  • type 绘制图线的种类
  • ylabel y轴标签
  • style 风格样式
  • title 图表标题
  • mav 均线,格式为一个元组,如(5, 10)表示绘制5日均线和10日均线
  • volume 是否绘制量柱图,默认为False,表示不绘制。
  • figratio 图像横纵比,如(5,3)表示图像长比宽为5:3。
  • ylabel_lower 表示底部图像的标签(一般是量柱图)
  • savefig 如果需要将图像保存为一个图片文件,则通过该参数指定文件路径即名字即可。不指定则默认不保存,但是图像会显示出来。如果指定了则图像不会直接显示出来。

type 描述
candle 蜡烛图
ohlc OHLC图,也称“美国线”。即用一根垂直的线段表示一天的行情,在开盘和收盘价格处划一笔刻度。
line 直线,即近绘制收盘价曲线
renko 砖形图
pnf pnf图,由圈和叉构成

style 描述
‘binance’ 币安风格
‘blueskies’ 蓝天风格
‘brasil’ 巴西风格
‘charles’ 查理风格
‘checkers’ 跳棋风格
‘classic’ 古典风格
‘default’ 默认风格
‘mike’ 迈克风格
‘nightclouds’ 夜云风格
‘sas’ SAS风格
‘starsandstripes’ 星条旗风格
‘yahoo’ 雅虎风格

(3)测试程序

通过参数type修改绘图类型,默认是ohlc,可改成type=‘candle’ 或者 type=‘line’
关键字参数 mav=(2, 5, 10),多条均线使用元组,只绘制一条均线,可以mav=10
关键字参数volume=True,显示成交量
关键字参数show_nontrading,默认是False,设置为True,就可以看到停盘的时间段

def draw_day_k_test():
    # 1、获取数据
    # 返回一个 Connection 对象
    db_conn = pymysql.connect(
        host='127.0.0.1',
        port=3306,
        user='root',
        password='TEST',
        database='test',
        charset='utf8'
    )

    # 执行sql操作
    sql = "select t.stock_date,t.open_stock,t.high_stock,t.low_stock,t.close_stock,volume_stock from tdx_daily t where t.stock_no='sh600000' and stock_date>'2023-01-01' order by t.stock_date"
    stock_data = pd.read_sql(sql, con=db_conn, index_col="stock_date")

    data = stock_data.rename(
        columns={'stock_date': 'Date', 'open_stock': 'Open', 'close_stock': 'Close', 'high_stock': 'High',
                 'low_stock': 'Low',
                 'volume_stock': 'Volume'})  # 更换列名,为后面函数变量做准备
    # data.set_index('Date', inplace=True)  # 设置date列为索引,覆盖原来索引,这个时候索引还是 object 类型,就是字符串类型。
    data.index = pd.DatetimeIndex(
        data.index)  # 将object类型转化成 DateIndex 类型,pd.DatetimeIndex 是把某一列进行转换,同时把该列的数据设置为索引 index。
    data = data.sort_index(ascending=True)

    mpf.plot(data, type='candle', title='Candle')
    mpf.plot(data, type='line', title='Line')
    mpf.plot(data, type='ohlc', mav=5, title='default type ohlc')
    mpf.plot(data, type='candle', mav=(3, 6, 9), title='3 6 9 day moving average line')
    mpf.plot(data, type='candle', mav=(3, 6, 9), volume=True, title='day moving average line and volume')
    mpf.plot(data, type='candle', mav=(5, 10, 30), volume=True, show_nontrading=True,
             title='day moving average line and volume')
    # show_nontrading=True 关键字参数show_nontrading,默认是False,设置为True,就可以看到停盘的时间段
    iday = data.loc['2023-02-01':'2023-02-28']
    # print(iday)
    # print(data)

    mpf.plot(iday, type='candle', mav=(5, 10), title='Slice Query', figratio=(5, 3),
             style='blueskies', ylabel_lower='Volume', volume=True)
    mpf.plot(data, type='renko', volume=True, mav=(5, 10), title='Slice Query pnf')

    db_conn.close()

(4)效果图

在这里插入图片描述

3、模拟股票软件

(1)代码

def draw_day_k():

    # 返回一个 Connection 对象
    db_conn = pymysql.connect(
        host='127.0.0.1',
        port=3306,
        user='root',
        password='TEST',
        database='test',
        charset='utf8'
    )

    # 执行sql操作
    sql = "select t.stock_date,t.open_stock,t.high_stock,t.low_stock,t.close_stock,volume_stock from tdx_daily t where t.stock_no='sh600000' and stock_date>'2023-01-01' order by t.stock_date"
    stock_data = pd.read_sql(sql, con=db_conn,index_col="stock_date")

    data = stock_data.rename(columns={'stock_date': 'Date', 'open_stock': 'Open', 'close_stock': 'Close', 'high_stock': 'High', 'low_stock': 'Low',
                                'volume_stock': 'Volume'})  # 更换列名,为后面函数变量做准备
    #data.set_index('Date', inplace=True)  # 设置date列为索引,覆盖原来索引,这个时候索引还是 object 类型,就是字符串类型。
    data.index = pd.DatetimeIndex(data.index)  # 将object类型转化成 DateIndex 类型,pd.DatetimeIndex 是把某一列进行转换,同时把该列的数据设置为索引 index。
    data = data.sort_index(ascending=True)
    my_color = mpf.make_marketcolors(up='green', down='red', edge='i', wick='i', volume='in')
    my_style = mpf.make_mpf_style(marketcolors=my_color, gridaxis='both', gridstyle='-.', y_on_right=False)

    #data = data.loc('2020-01-01':'2022-12-31')
    mpf.plot(data, type='candle', mav=(5, 10, 20), style=my_style, volume=True, show_nontrading=False)
    db_conn.close()

(2)效果图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/9652.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

35岁的测试工程师被公司强行辞退,感叹道:我以前就该好好努力了

曾经的高薪软件测试工程师,今年35岁了,被公司劝退了,外卖跑到凌晨,很累,但还是有一种想诉说的冲动。哪怕让大家觉得已经说得太多了,烦了,都成祥林嫂了,但是,我是真的想说…

js:手写一个promise

背景 promise 作为前端开发中常用的函数,解决了 js 处理异步时回调地狱的问题,大家应该也不陌生了,今天来学习一下 promise 的实现过程,这样可以加(面)深(试)理(要&…

第八天并发编程篇

一、简述线程、进程、程序的基本概念? 1.进程: 我们把运行中的程序叫做进程,每个进程都会占用内存与CPU资源,进程与进程之间互相独立. 2.线程: 线程就是进程中的一个执行单元,负责当前进程中程序的执行。一个进程可以包含多个线程…

Matlab在线IDE:计算定积分上限

上一篇文章:Matlab在线IDE:MATLAB Online介绍与计算定积分案例 1、案例介绍 % 定义符号变量 x syms x;% 定义函数 f(x) x f x;% 定义定积分的值 I I 2;% 计算函数 f(x) 在 [0, x] 区间的定积分,并求其反函数 F(x) F finverse(int(f, 0, …

【hello Linux】Linux软件管理器yum

目录 1.Linux软件管理器yum 1.1 关于lrzsz 1.2 使用yum时的注意事项 1.3 查看软件包:yum list 1.4 安装软件:yum install 1.5 卸载软件:yum remove 1.6 更新yum源 1.7 实战项目 Linux🌷 1.Linux软件管理器yum 在windows系统下有应…

ROS学习——艰辛的环境安装之路一Ubuntu

文章目录Ubuntu安装和下载页面设置安装Vmware Tools安装VSCODE用几个常用命令简单熟悉下UbuntuUbuntu 安装和下载 Ubuntu的安装和下载 看这个链接 Ubuntu安装和下载1 或者这个链接 Ubuntu安装和下载2 页面设置 安装Vmware Tools 看这个链接 VMware Tools的介绍和安装 安装…

超详细从入门到精通,pytest自动化测试框架实战-pytest插件的开发(八)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 pytest框架采用的是…

3年测试经验只会“点点点”,不会自动化即将面临公司淘汰?沉淀100天继续做测试

前段时间一个朋友跟我吐槽,说自己做软件测试工作已经3年了,可这三年自己的能力并没有得到提升,反而随着互联网的发展,自己只会“点点点”的技能即将被淘汰。说自己很苦恼了,想要提升一下自己,可不知道该如何…

简单的做一个学校毕业啊项目

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

每日一练——Day 13

前言: 小亭子正在努力的学习编程,接下来将开启编程题的练习~~ 分享的文章都是学习的笔记和感悟,如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话,烦请点赞关注支持一波, 感激不尽~~ 第一题 题目描述: 刷…

SpringBoot基础学习之(十二):通过spring boot框架连接MySql数据库(通过idea中的工具Database连接Mysql数据库)

Springboot这个系列实现的案例:员工后台管理系统 之前讲解的内容是前后端的交互,并没有涉及到数据库。把员工信息放置在一个数组中,实现的方法则是对数组的增删改查操作,但是从今天开始,实现的功能则是在数据库的基础上…

Qt Quick - ToolTip

Qt Quick - ToolTip使用总结一、概述二、附带的ToolTip三、延迟和超时四、自定义ToolTip五、定制化一、概述 ToolTip 其实就是ToolTip,所谓ToolTip其实就是一段简短的文本,告知用户控件的功能。它通常置于父控件之上或之下。提示文本可以是任何富文本格…

为什么程序员都喜欢开源的软件?

先来感受一下开源与闭源: 当你觉得这个软件有一个缺点影响使用的时候 如果是闭源软件,你如果不想自己模仿着写一个,就只能考虑顺着网线到开发者脖子上逼着他加 但开源软件你可以自己在他的基础上改一改,你改好了还拿回馈回去让…

动力节点王鹤SpringBoot3笔记——第七章 视图技术Thymeleaf

目录 第七章 视图技术Thymeleaf 前言 7.1 表达式 7.2 if-for 第七章 视图技术Thymeleaf 前言 Thymeleaf 是一个表现层的模板引擎, 一般被使用在 Web 环境中,它可以处理 HTML, XML、 JS 等文档,简单来说,它可以将 JSP 作…

将Mircrosoft Store下载的Ubuntu安装到指定位置方法,同时解决“你需要来自System的权限才能对此文件进行更改”问题

一、概述 最近使用到WIndows的WSL功能,需要安装ubuntu这个子系统进行仿真环境搭建,但是又不愿意使用虚拟机,不太方便。在安装过程中发现本身就岌岌可危的C盘经常突然爆满,经过检查发现是安装ubuntu位置的问题。但是在系统更改存储…

网络安全从业人员应该如何提升自身的web渗透能力?

前言 web 渗透这个东西学起来如果没有头绪和路线的话,是非常烧脑的。 理清 web 渗透学习思路,把自己的学习方案和需要学习的点全部整理,你会发现突然渗透思路就有点眉目了。 程序员之间流行一个词,叫 35 岁危机,&am…

利用多专家模型解决长尾识别任务

来源:投稿 作者:TransforMe 编辑:学姐 贡献 提出了RoutIng Diverse Experts(RIDE),不仅可以减少所有类别的variance,并且还可以减少尾部类的bias。同时提升了头部和尾部的性能。 思路 目前存…

nuxt.js 在IE浏览器||其他浏览不识别document/window 情况处理

1 第一步注册到nuxt.config.js文件 2 第二步建立js 文件 import Vue from vue (function(){ if(process.client){ console.log(process.client) }else{ console.log(process.client) } if (!!window.ActiveXObject || "ActiveXObject" i…

Stable Diffusion:一种新型的深度学习AIGC模型

潜在扩散模型 | AIGC| Diffusion Model 图片感知压缩 | GAN | Stable Diffusion 随着生成型AI技术的能力提升,越来越多的注意力放在了通过AI模型提升研发效率上。业内比较火的AI模型有很多,比如画图神器Midjourney、用途多样的Stable Diffusion&#…

国货之光!打工人必装的8个软件,你都用过没?|办公|效率|创作

给大家分享8款非常强大,但知名度不高的国产软件,每一个都堪称精品,喜欢的话记得点赞和关注哦~ 第一款是 火绒安全软件 火绒安全软件没有任何,具有推广性质的弹窗、没有捆绑打扰用户的行为;占用资源极少,&a…