聚宽量化——股票时间序列函数

import matplotlib.pyplot as plt
import pandas as pd
from mpl_finance import candlestick2_ochl
import mplfinance as mpf
from unittest import TestCaseclass TestPandasKline(TestCase):#读取股票数据,画出K线图def testKLineChart(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]fig = plt.figure()axes = fig.add_subplot(111)candlestick2_ochl(ax=axes,opens=df["open"].values,closes=df["close"].values,highs=df["high"].values,lows=df["low"].values,width=0.75,colorup='red',colordown='green')plt.xticks(range(len(df.index.values)),df.index.values,rotation=30)axes.grid(True)plt.title("K-Line")plt.show()#K线图带交易量def testKLineByVolume(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]df = df[["date","close","open","high","low","volume"]]df["date"] = pd.to_datetime(df["date"])df = df.set_index('date')my_color = mpf.make_marketcolors(up = 'red',down = 'green',wick = 'i',volume = {'up':'red','down':'green'},ohlc = 'i')my_style  = mpf.make_mpf_style(marketcolors = my_color,gridaxis = 'both',gridstyle = '-.',rc = {'font.family':'STSong'})mpf.plot(df,type = 'candle',title = 'K-LineByVolume',ylabel = 'price',style = my_style,show_nontrading = False,volume = True,ylabel_lower = 'volume',datetime_format = '%Y-%m-%d',xrotation = 45,linecolor = '#00ff00',tight_layout = False)# K线图带交易量及均线def testKLineByMA(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]df = df[["date","close","open","high","low","volume"]]df["date"] = pd.to_datetime(df["date"])df = df.set_index('date')my_color = mpf.make_marketcolors(up = 'red',down = 'green',wick = 'i',volume = {'up':'red','down':'green'},ohlc = 'i')my_style  = mpf.make_mpf_style(marketcolors = my_color,gridaxis = 'both',gridstyle = '-.',rc = {'font.family':'STSong'})mpf.plot(df,type = 'candle',mav = [5,10],title='K-LineByVolume',ylabel='price',style=my_style,show_nontrading=False,volume=True,ylabel_lower='volume',datetime_format='%Y-%m-%d',xrotation=45,linecolor='#00ff00',tight_layout=False)

  • 该视频主要讲述了股票时间序列的实战应用及pandas库中相关函数的使用。首先介绍了时间序列在金融领域的重要性,包括趋势分析和相关性分析。接着,详细阐述了pandas中处理时间序列的常用函数,如datetime、loc等,以及如何使用它们进行数据筛选和分组。最后,通过实战案例,展示了如何使用pandas读取股票数据,并对数据进行基本的描述性统计分析,包括非空值、数据类型以及每列的基本统计量等。

  • 分段总结

    折叠

    00:01股票时间序列分析介绍

    1.股票时间序列是金融领域最重要的数据类型,包括股价、汇率等。 2.时间序列数据按年月季度周日甚至小时分钟tick(毫秒级)进行记录。 3.时间序列分析主要包括趋势分析和相关性分析。

    02:19pandas在时间序列分析中的常见函数

    1.datetime是pandas中表示时间的数据结构,方便进行各种时间运算。 2.loc函数用于筛选时间或列数据。 3.groupby函数用于按时间或股票ID对数据进行分组。

    03:48股票时间序列实战环节

    1.读取数据函数df.read_csv()等,与单派使用方式相似。 2.describe函数用于描述dataframe的基本信息,如count、mean、std、min、max等。 3.处理时间列,将其转换为datetime类型,并进行年、月、日的提取。 4.计算最低收盘价、最小值索引等。

    11:27每月平均收盘价与开盘价计算

    1.先计算月份,然后按月分组计算平均开盘价和收盘价。 2.使用groupby和mean函数进行计算。

    14:34涨跌幅计算

    1.涨跌幅为今日收盘价减去昨日收盘价。 2.使用diff函数计算涨跌幅。

    17:46本章小结

    1.股票时间序列是金融数据最重要的数据结构。 2.时间序列分析包括趋势分析和相关性分析。 3.pandas在时间序列分析中的常见函数包括datetime、loc和groupby。

  • k线图的正常实现

  • 代码

  • import matplotlib.pyplot as plt
    import pandas as pd
    from mpl_finance import candlestick2_ochl
    import mplfinance as mpf
    from unittest import TestCase
    #pip install mplfinance -i https://pypi.tuna.tsinghua.edu.cn/simpleclass TestPandasKline(TestCase):#读取股票数据,画出K线图def testKLineChart(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]fig = plt.figure()axes = fig.add_subplot(111)candlestick2_ochl(ax=axes,opens=df["open"].values,closes=df["close"].values,highs=df["high"].values,lows=df["low"].values,width=0.75,colorup='red',colordown='green')plt.xticks(range(len(df.index.values)),df.index.values,rotation=30)axes.grid(True)plt.title("K-Line")plt.show()#K线图带交易量def testKLineByVolume(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]df = df[["date","close","open","high","low","volume"]]df["date"] = pd.to_datetime(df["date"])df = df.set_index('date')my_color = mpf.make_marketcolors(up = 'red',down = 'green',wick = 'i',volume = {'up':'red','down':'green'},ohlc = 'i')my_style  = mpf.make_mpf_style(marketcolors = my_color,gridaxis = 'both',gridstyle = '-.',rc = {'font.family':'STSong'})mpf.plot(df,type = 'candle',title = 'K-LineByVolume',ylabel = 'price',style = my_style,show_nontrading = False,volume = True,ylabel_lower = 'volume',datetime_format = '%Y-%m-%d',xrotation = 45,linecolor = '#00ff00',tight_layout = False)# K线图带交易量及均线def testKLineByMA(self):file_name = "./demo.csv"df = pd.read_csv(file_name)df.columns = ["stock_id","date","close","open","high","low","volume"]df = df[["date","close","open","high","low","volume"]]df["date"] = pd.to_datetime(df["date"])df = df.set_index('date')my_color = mpf.make_marketcolors(up = 'red',down = 'green',wick = 'i',volume = {'up':'red','down':'green'},ohlc = 'i')my_style  = mpf.make_mpf_style(marketcolors = my_color,gridaxis = 'both',gridstyle = '-.',rc = {'font.family':'STSong'})mpf.plot(df,type = 'candle',mav = [5,10],title='K-LineByVolume',ylabel='price',style=my_style,show_nontrading=False,volume=True,ylabel_lower='volume',datetime_format='%Y-%m-%d',xrotation=45,linecolor='#00ff00',tight_layout=False)
    

    这段代码是一个用于 绘制股票K线图(蜡烛图) 的Python单元测试类,使用了 matplotlibpandas 和 mplfinance 库。它包含三个测试方法,分别演示了不同的K线图绘制方式:

  • import matplotlib.pyplot as plt  # 基础绘图库
    import pandas as pd  # 数据处理
    from mpl_finance import candlestick2_ochl  # 旧版K线图绘制(已弃用,推荐用mplfinance)
    import mplfinance as mpf  # 新版专业金融图表库
    from unittest import TestCase  # 单元测试
  • mplfinance 是专门用于金融数据可视化的库,比 mpl_finance 更强大且维护更好。

  • pandas 用于读取和处理股票数据(CSV格式)。

  • unittest 用于组织测试用例。

2. 三个测试方法

(1) testKLineChart:基础K线图

python

复制

下载

def testKLineChart(self):df = pd.read_csv("./demo.csv")  # 读取数据df.columns = ["stock_id", "date", "close", "open", "high", "low", "volume"]  # 设置列名# 使用 matplotlib + mpl_finance 绘制K线fig = plt.figure()axes = fig.add_subplot(111)candlestick2_ochl(ax=axes,opens=df["open"].values,  # 开盘价closes=df["close"].values,  # 收盘价highs=df["high"].values,  # 最高价lows=df["low"].values,  # 最低价width=0.75,  # 蜡烛宽度colorup='red',  # 上涨颜色(红)colordown='green'  # 下跌颜色(绿))plt.xticks(range(len(df.index.values)), df.index.values, rotation=30)  # X轴标签旋转30度axes.grid(True)  # 显示网格plt.title("K-Line")  # 标题plt.show()  # 显示图表

功能

  • 使用 matplotlib + mpl_finance(旧版)绘制 基本K线图

  • 红色表示上涨(收盘价 > 开盘价),绿色表示下跌(收盘价 < 开盘价)。

  • 显示网格、调整X轴标签角度。

(2) testKLineByVolume:K线图 + 成交量

python

复制

下载

def testKLineByVolume(self):df = pd.read_csv("./demo.csv")df.columns = ["stock_id", "date", "close", "open", "high", "low", "volume"]df = df[["date", "close", "open", "high", "low", "volume"]]  # 选择需要的列df["date"] = pd.to_datetime(df["date"])  # 转为日期格式df = df.set_index('date')  # 设置日期为索引(mplfinance要求)# 自定义颜色风格my_color = mpf.make_marketcolors(up='red',  # 上涨颜色down='green',  # 下跌颜色wick='i',  # 影线颜色(i表示继承up/down颜色)volume={'up': 'red', 'down': 'green'},  # 成交量颜色ohlc='i'  # K线主体颜色继承)my_style = mpf.make_mpf_style(marketcolors=my_color,  # 应用颜色gridaxis='both',  # 显示网格gridstyle='-.',  # 网格线样式(虚线)rc={'font.family': 'STSong'}  # 字体(宋体))# 使用 mplfinance 绘制K线 + 成交量mpf.plot(df,type='candle',  # 蜡烛图类型title='K-LineByVolume',  # 标题ylabel='price',  # Y轴标签style=my_style,  # 应用自定义样式show_nontrading=False,  # 不显示非交易日volume=True,  # 显示成交量ylabel_lower='volume',  # 成交量Y轴标签datetime_format='%Y-%m-%d',  # 日期格式xrotation=45,  # X轴标签旋转45度linecolor='#00ff00',  # 辅助线颜色tight_layout=False  # 不自动调整布局)

功能

  • 使用 mplfinance 绘制 K线图 + 成交量

  • 自定义颜色(红涨绿跌)。

  • 成交量柱状图也用红/绿区分涨跌。

  • 支持中文显示(STSong 宋体)。

(3) testKLineByMA:K线图 + 成交量 + 均线

python

复制

下载

def testKLineByMA(self):# 数据预处理(同上)df = pd.read_csv("./demo.csv")df.columns = ["stock_id", "date", "close", "open", "high", "low", "volume"]df = df[["date", "close", "open", "high", "low", "volume"]]df["date"] = pd.to_datetime(df["date"])df = df.set_index('date')# 颜色和样式设置(同上)my_color = mpf.make_marketcolors(up='red', down='green', wick='i', volume={'up':'red','down':'green'}, ohlc='i')my_style = mpf.make_mpf_style(marketcolors=my_color, gridaxis='both', gridstyle='-.', rc={'font.family':'STSong'})# 使用 mplfinance 绘制K线 + 成交量 + 均线mpf.plot(df,type='candle',mav=[5, 10],  # 5日均线和10日均线title='K-LineByVolume',ylabel='price',style=my_style,show_nontrading=False,volume=True,ylabel_lower='volume',datetime_format='%Y-%m-%d',xrotation=45,linecolor='#00ff00',tight_layout=False)

功能

  • 在 testKLineByVolume 基础上,增加 移动平均线(MA)

  • mav=[5, 10] 表示计算 5日均线 和 10日均线,并叠加在K线图上

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(一)代码随想录 - 数组

代码随想录 一. 数组的理论基础 概念&#xff1a;数组是存放在连续内存空间上的相同类型数据的集合 特点&#xff1a;&#xff08;1&#xff09;数组可以通过下标进行访问对应的数据并且下标是从0开始的 -> 随机访问&#xff1b;&#xff08;2&#xff09;数组内存空间的地…

Netty内存池核心PoolArena源码解析

PoolArena 是 Netty 内存池化机制的核心组件之一&#xff0c;它负责管理一整块或多块内存&#xff08;PoolChunk&#xff09;&#xff0c;并将这些内存分配给应用程序。每个 PoolArena 实例都与一个特定的线程相关联&#xff08;通过 PoolThreadCache&#xff09;&#xff0c;或…

echarts-for-react 日历热力图渲染导致白屏 踩坑记录

先说结果&#xff0c;补上了一行tooltip.trigger后能正常渲染了。 报错情况&#xff1a; 在页面中添加了一个日历热力图后&#xff0c;一渲染它就白屏&#xff0c;控制台报错如下&#xff1a; echarts-for-react版本是当前最新的3.0.2&#xff0c;尝试debug但没看懂源码这里是…

SpringBoot项目启动时自动加载数据到Redis的完整实现方案,用于存储字典,定时任务,登录用户等

一、基础配置 ‌在pom.xml中添加必要依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency><groupId>com.baomi…

python:使用 OpenAI CLIP 模型进行图像与文本的语义匹配,并用彩虹色带可视化 CLIP 模型的相似度矩阵

作者&#xff1a;CSDN _养乐多_ 本文将介绍如何使用 OpenAI 的 CLIP 模型来实现图像与文本之间的语义匹配。代码使用 Python 语言&#xff0c;加载多个图像与类别文本&#xff0c;并通过计算余弦相似度判断每张图片最匹配的文本标签。 结果如下图所示&#xff0c; 文章目录 …

微服务链路追踪在生产环境问题定位中的实战经验

微服务链路追踪在生产环境问题定位中的实战经验 在当今复杂的系统架构中&#xff0c;微服务之间相互调用形成的链路往往变得极其复杂。一旦出现问题&#xff0c;仅凭日志和监控信息常常难以迅速定位根因。链路追踪技术因此成为生产环境中不可或缺的工具&#xff0c;能够帮助我…

正点原子——直流无刷电机-霍尔传感基本实现流程

直流无刷电机-霍尔传感实现流程 初始化TIM以及IO 霍尔状态读取函数 uint32_t hallsersor(void) {uint32_t state 0;if(HAL_GPIO_ReadPin(HALL1_TIM_CH1_GPIO,HALL_TIM_CH1_PIN)!RESET){state |0x01;}if(HAL_GPIO_ReadPin(HALL1_TIM_CH2_GPIO,HALL_TIM_CH2_PIN)!RESET){stat…

小白的进阶之路系列之十七----人工智能从初步到精通pytorch综合运用的讲解第十部分

NLP 从零开始:使用字符级 RNN 生成姓名 这是我们“NLP 从零开始”系列三部分教程中的第二部分。在第一个教程中,我们使用了 RNN 将姓名分类到其语言来源。这次我们将反过来,从语言生成姓名。 > python sample.py Russian RUS Rovakov Uantov Shavakov> python sampl…

思辨场域丨AR技术如何重塑未来学术会议体验?

毫无疑问&#xff0c;增强现实&#xff08;AR&#xff09;已成为科技浪潮中最澎湃的浪花之一。当Pokemon Go点燃全球热情&#xff0c;我们首次大规模体验到数字精灵与现实街景的奇妙交融。这不仅是游戏革命&#xff0c;更是一个强烈的信号&#xff1a;虚实共生的交互时代已轰然…

医学数据分析实战:冠心病发病因素可视化

一、数据加载与基本信息检查 #例9.5 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings#引入第三方库plt.rcParams[font.sans-serif]=[SimHei] #用来正常显示中文标签 warnings.filterwarnings(ignore) #防止…

Proteus8.0 打开前期版本的操作方法

1.打开Proteus8.0 2. 打开菜单File->Import legacy Project 3.在Import Legacy Project 点击Browse按钮 4.选择要打开的例子目录 5.打开*.dsn文件 6.点击Import 7.导入成功 点击运行即可

【innovus基础】- 对某根线单独route

在某些特殊需求场景&#xff0c;我们可能需要对某些net进行单独的route&#xff0c;方法如下&#xff1a; 1、打开design browser&#xff0c;选择对应net&#xff1a;&#xff08;或者使用selectNet命令&#xff09; 2、Route → nano Route → 勾选selectNet only 可以看到…

【Linux】network网络配置

目录 1、介绍2、网络配置【1】查看【2】说明 3、工作流程【1】启动以太网接口【2】关闭接口时反向执行 4、现代替换方案 1、介绍 linux中network网络服务的核心配置位于/etc/sysconfig/network-scripts/目录下。它们共同构成了网络接口的管理框架&#xff0c;负责处理网络接口…

深入解析 Taro 项目结构:从入门到精通

在现代前端开发中&#xff0c;跨平台开发框架变得越来越重要。Taro 作为一款由京东凹凸实验室推出的多端统一开发框架&#xff0c;支持编译到微信小程序、支付宝小程序、百度小程序、H5、React Native 等多个平台&#xff0c;极大地提高了开发效率。然而&#xff0c;要充分发挥…

零基础开始的网工之路第二十一天------系统安全基线和系统加固

目录 一、系统安全基线 1、账户与认证安全 2、文件与目录权限 3、SSH服务安全 4、网络与服务配置 5、日志与审计 6、内核参数加固 7、更新与补丁 8、安全模块配置 9、SUID/SGID文件检查 10、默认权限控制&#xff08;umask&#xff09; 二、系统安全加固 1、账户与…

Log4j 和 Log4j2的比较

以下是 Log4j&#xff08;通常指 Log4j 1.x&#xff09;与 Log4j2 的核心对比分析&#xff0c;结合架构、性能、功能及适用场景&#xff0c;帮助开发者做出合理选择&#xff1a; &#x1f4ca; 一、架构与设计 特性Log4j 1.xLog4j2分析架构模型单模块设计&#xff0c;耦合度高…

说说 Springboot 的启动流程?

Spring Boot 的启动流程是一个相对复杂但有序的过程&#xff0c;它涉及多个组件和步骤的协同工作。以下是 Spring Boot 启动流程的详细解析&#xff1a; 一、初始化阶段 启动入口 Spring Boot 应用的启动入口通常是一个包含 main 方法的类&#xff0c;该类上标注了 SpringBoot…

从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页

如果php.ini已经加入了如下的内容还是报错 &#xff1a; upload_max_filesize 1024M post_max_size 1024M 那就是因为阿帕奇导致&#xff1a;

10、java语法糖

编译期处理&#xff1a;语法糖&#xff08;即java编译器把。java的源码编译成。class字节码的过程中&#xff0c;自动生成和转换的一些代码&#xff0c;主要是为了减轻程序员的负担&#xff0c;算是java编译器给我们的一个额外福利-给糖吃&#xff09; 默认构造器&#xff1a;…

在Vscode中安装Sass并配置

在Vscode中安装Sass并配置 sass简介安装Sass插件配置sass插件编写sass使用Sass sass简介 Sass&#xff08;Syntactically Awesome Style Sheets,英文官方文档 &#xff09;是一种CSS预处理器&#xff0c;扩展了CSS的功能并提供了更高效的样式表编写方式。它兼容所有CSS版本&am…