股票K线图原来可以用Python画,收藏起来!

news2024/9/28 19:21:16

之前在一篇文章中提到Matplotlib可视化,甚至可以用来画股票K线图,许多同学也在问代码,这次来发个文回应下。

Python用matplotlib绘制K线图,需要配合talib、numpy、mpl_finance等第三方库来使用,具体展示如下:

股市及期货市场中的K线图的画法包含四个数据,即开盘价、最高价、最低价、收盘价。

所有的k线都是围绕这四个数据展开,反映大势的状况和价格信息。

如果把每日的K线图放在一张纸上,就能得到日K线图,同样也可画出周K线图、月K线图。


第一步:导入相关库

import talib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import datetime
import mpl_finance as mpf
import warnings
import akshare as ak

warnings.filterwarnings('ignore')
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False

第二步:获取股票数据
这里从akshare库接口自动获取数据

def getdata(stock_symbol):
    global data_all
    # 所有股票实时数据
    data_all = ak.stock_zh_a_spot()

    # 单个股票历史行情数据
    global data
    data = ak.stock_zh_a_daily(symbol=stock_symbol, adjust="hfq")

    # 生成股票code和name
    global stock_code
    stock_code = data_all[data_all['symbol'] == stock_symbol].values[0, 1]
    global stock_name
    stock_name = data_all[data_all['symbol'] == stock_symbol].values[0, 2]
    
    print("数据加载完成")

getdata('sh600006')


第三步:绘制k线图

def kline(start_time,end_time):    
    # 处理数据
    global data
    data = data[start_time:end_time]
    # 10天均线
    sma_10 = talib.SMA(np.array(data['close']), 10)
    # 30天均线
    sma_30 = talib.SMA(np.array(data['close']), 30)
    # 添加图表
    global fig
    fig = plt.figure(figsize=(8, 4),dpi=200)
    ax = fig.add_axes([0,0.2,1,0.5])
    ax2 = fig.add_axes([0,0,1,0.2])
    # 绘制K线图
    mpf.candlestick2_ochl(ax, data['open'], data['close'], data['high'], data['low'],
                     width=0.5, colorup='r', colordown='g', alpha=0.6)
    ax.set_xticks(range(0, len(data.index), 10))
    ax.plot(sma_10, label='10 日均线')
    ax.plot(sma_30, label='30 日均线')
    global stock_name
    ax.set_title("{0}K线图".format(stock_name))
    ax.legend(loc='upper left')
    ax.grid(True)
    # 绘制成交量柱状图
    mpf.volume_overlay(ax2, data['open'], data['close'], data['volume'], colorup='r', colordown='g', width=0.5, alpha=0.8)
    ax2.set_xticks(range(0, len(data.index), 10))
    ax2.set_xticklabels(data.index[::10].strftime('%Y-%m-%d'), rotation=30)
    plt.show()

start_time = '2021-06-01'
end_time = '2021-09-30'
kline(start_time,end_time)

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

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

相关文章

宏基因组|使用CheckM2评估分箱质量

简介 CheckM2使用机器学习快速评估基因组bin质量 与CheckM1不同,CheckM2采用通用训练的机器学习模型,无论分类学谱系如何,均可用于预测基因组bin的完整性和污染情况。这使得它能够在训练集中纳入许多仅具有少数(甚至只有一个&am…

Proxyman Premium for Mac:网络调试利器,开发者首选!

Proxyman Premium for Mac是一款功能强大的网络调试和分析工具,专为开发者和测试人员打造。这款软件以其出色的性能和丰富的功能,帮助用户在网络开发和调试过程中更有效地分析和拦截网络请求,进行必要的修改和重发,从而进行更深度…

局域网屏幕桌面监控哪个软件比较好

在企业、教育机构或其他组织中,出于提高工作效率、保障数据安全、规范员工行为等目的,对局域网内电脑屏幕进行实时监控的需求日益凸显。 面对市场上众多屏幕监控软件,选择一款功能全面、稳定可靠且符合法规要求的产品至关重要。 在局域网屏幕…

python 如何表示大写字母

upper() 方法将字符串中的小写字母转为大写字母。 语法 upper()方法语法: str.upper() 参数 NA。 返回值 返回小写字母转为大写字母的字符串。 实例 以下实例展示了 upper()函数的使用方法: #!/usr/bin/python str "this is string example…

【看不懂命令行、.yaml?】Hydra 库极速入门

Hydra 是一个开源的 Python 框架,可以简化研究和其他复杂应用程序的开发。其核心功能是通过组合动态创建层次化的配置,并可以通过配置文件和命令行进行覆盖。Hydra 的名字来源于它能够运行多个类似的作业 - 就像一个多头的水怪一样。 主要特性: 从多个…

LLM学习之自然语言处理简单叙述

自然语言处理基础 自然语言处理:让计算机读懂人所写好的这些文本,能够像人一样进行交互。 自然语言处理的任务和应用 任务: 词性标注 part of speech tagging 动词,名词,形容词? 命名实体的识别 name…

深度学习与神经网络入门

前言 人工智能(AI)与机器学习(ML)与深度学习(DL)的关系: DL包含于ML,ML包含于AI。 即深度学习是机器学习一部分,机器学习又是人工智能的一个分支。 那么深度学习到底有…

用Python自动化操作PPT,看完这篇文章就够了!

1.PPT自动化能干什么?有什么优势? 它可以代替你自动制作PPT它可以减少你调整用于调整PPT格式的时间它可以让数据报告风格一致总之就是:它能提高你的工作效率!让你有更多时间去做其他事情! 2.使用win32com操作ppt 官…

GDC 笔记

1 Title Diffusion Improves Graph Learning(Johannes Gasteiger, Stefan Weienberger, Stephan Gnnemann)【NeurIPS 2019】 2 Conclusion This study removes the restriction of using only the direct neighbors by introducing a powerful, yet spa…

【软件测试】Selenium实战技巧-多页面和Windows控件处理

01 多页面处理 做UI自动化的时候常常会遇到浏览器弹出新的Tab页,或者需要在多个网页服务之间来回取数据的情况。 比如在首页点击文章“Jmeter使用?”的链接,浏览器会弹出一个新的页面显示“Jmeter使用?”这篇文章的详情。此时如…

PySide6应用实践 | 在PyCharm配置和使用PySide6 QtDesinger

PySide6应用实践 | 在PyCharm配置和使用PySide6 QtDesinger 一、前言二、在PyCharm External Tools中配置PySide61.PyCharm External Tools的用途2.在Pycharm External Tools中配置PySide6 QtDesinger3.在Pycharm中使用PySide6 QtDesinger 一、前言 程序员缓解工作压力的小窍门…

JS -关于对象相关介绍

在JS中,除去基本的数据类型,还有包含对象这种复合数据类型,他可以储存多个键值对,并且每个键都是唯一的,并且在对象中可以包含各种数据类型的值,包括其他对象,数组,函数等。对象是Ja…

Android studio添加aidl文件时,添加按钮为黑色不可点击添加解决办法

在android studio添加aidl文件时出现下面这个情况只需要在模块的build.gradle.kts文件中的android中添加以下代码即可添加aidl android {// 设置 AIDL 支持buildFeatures {aidl true} }

pyenv-win管理windows上多个版本python

pyenv是一款管理多个python版本的工具,可以便捷的切换使用的python版本,但是不支持windows环境,在windows环境需要使用pyenv-win pyenv-win安装 官方介绍的安装方式比较多,在此主要记录一下我习惯的安装方式 下载pyenv-win,可以…

虚良SEO怎么有效的对百度蜘蛛权重优化?

人们交换链接通常首先要问的是你BR值是多少?国内搜索引擎来说以百度马首是瞻,无论seo还是竞价都看重的是百度,那么针对百度权重的优化就特别重要了。其实,百度权重是民间的一种说法,百度官方并没有认同这个数值&#x…

DenseDiffusion:Dense Text-to-Image Generation with Attention Modulation

1 研究目的 该文献的研究目的主要是: 探讨一种更为广泛的调制方法,通过设计多个正则化项来优化图像合成过程中的空间控制。论文的大致思想是,在现有的基于数据驱动的图像合成系统基础上,通过引入更复杂的调制策略,实现…

操作系统——进程

进程定义 是计算机中已经运行的程序是系统进行资源分配和调度的一个独立单位。 进程的特性 独立性:进程在内存中可以独立寻址,每个进程都有一个独立的堆栈空间。动态性:进程在执行过程中可以申请资源、使用资源、释放资源。并发性&#xf…

埃夫特机器人更换编码器电池

一、编码器电池位置 埃夫特机器人编码器电池位置,在机器人基座底部位置,将编码器电池包拆卸下来,并按线标将新的编码器电池连接上去。 二、消除各轴编码器报警 点开监控选项中的驱动器页面,输入密码1975,开打权限管理…

将CSV转换为LDIF以便导入到ldap中?

将CSV转换为LDIF以便导入到ldap中? 目标格式: dn: uidzhangsan,ouusers,dcbaimeidashu,dccom objectClass: posixAccount objectClass: top objectClass: inetOrgPerson gidNumber: 0 givenName: zhangsan sn: 1 displayName:张三 uid: zhangsan homeDi…

node.js-包

包的概念 包:将模块,代码,其他资料聚合成的一个文件夹 包分类: 1.项目包:主要用于编写项目和业务逻辑的文件夹 2.软件包:封装工具和方法供开发者使用(一般使用npm管理) 1&#…