随笔 - 363, 文章 - 0, 评论 - 2, 阅读 - 23万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

python最新版mplfinance中文乱码解决方法

Posted on   心默默言  阅读(960)  评论(1编辑  收藏  举报

https://blog.csdn.net/Wilburzzz/article/details/109667926

复制代码
# -*- coding: utf-8 -*-
# @Time    : 2021/11/7 20:40
# @Author  : zhaozhuang


# 导入 efinance 如果没有安装则需要通过执行命令: pip install efinance 来安装
import efinance as ef
import mplfinance as mpf
import pandas as pd

# import matplotlib.pyplot as plt

pd.set_option('display.max_rows', 50000)
pd.set_option('display.max_columns', 50000)
pd.set_option('display.width', 2000)


# plt.rcParams['font.sans-serif'] = ['SimHei']
# plt.rcParams['axes.unicode_minus'] = False

# 解决mplfinance绘制输出中文乱码
# s = mpf.make_mpf_style(rc={'font.family': 'SimHei'})


def get_kchar(df: pd.DataFrame, code: str, name: str):
    date_index = df['日期']
    date_index = pd.to_datetime(date_index)
    data = df[['开盘', '最高', '最低', '收盘', '成交量']]
    data = data.rename(columns={'开盘': 'Open', '收盘': 'Close', '最高': 'High', '最低': 'Low', '成交量': 'Volume'})
    data.index = date_index

    my_color = mpf.make_marketcolors(up='red', down='green')
    my_style = mpf.make_mpf_style(marketcolors=my_color, rc={'font.family': 'SimHei'})
    add_plot = [
        mpf.make_addplot(turnover_rate, scatter=True, marker='^', color='red'),
        mpf.make_addplot(turnover_rate, color='red'),
        mpf.make_addplot(ma_turnover_rate, color='blue'),

        ]
    mpf.plot(data, type='candle', style=my_style, figscale=2, addplot=add_plot, mav=(5, 20, 30), ylabel='price',
             volume=True,
             title=f'\n\n\n {code} {name}  K_line')
    # mpf.plot(data, type='candle', style=my_style, figscale=2, addplot=add_plot, mav=(5, 20, 30), volume=True,
    #          title=f'\n\n\n {code} {name}  K_line')


paras = {
    'stock_code': '002626',
    'begin': '20210130',
    'end': '20251105',
    'freq': 101
    }

stock_code = paras['stock_code']
beg = paras['begin']
end = paras['end']
freq = paras['freq']

# 获取最新一个交易日的分钟级别股票行情数据
df = ef.stock.get_quote_history(stock_codes=stock_code, beg=beg, end=end, klt=freq)
# 将数据存储到 csv 文件中
# df.to_excel(f'{stock_code}_{freq}.xlsx', encoding='utf-8-sig', index=None)
print(f'股票: {stock_code} 的行情数据已存储到文件: {stock_code}_{freq}.xlsx 中!')
# 获取一支股票的量比
name = df['股票名称'].values[0]
vol_ma = df['成交量'].rolling(window=5).mean().values
vol_raito = df['成交量'].values / df['成交量'].rolling(window=5).mean().values
turnover_rate = df['换手率'].values
ma_turnover_rate = df['换手率'].rolling(window=21).mean().values
# print(vol_ma)
# print(vol_raito)
get_kchar(df, paras['stock_code'], name)
复制代码

 

编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
历史上的今天:
2019-11-21 旅游网项目1
点击右上角即可分享
微信分享提示