苹果学习——Python新知道(一)

mplfinance金融方面使用方法

1. 安装与数据准备

pip install mplfinance yfinance pandas
  • mplfinance:画图的核心库
  • yfinance:下载股票数据
  • pandas:处理数据表格

数据格式要求

  • 必须为 pandas DataFrame,索引为时间序列(DatetimeIndex)。
  • 列名必须包含 OpenHighLowClose,可选 Volume

示例数据获取(使用 yfinance

用 yfinance 下载苹果公司(AAPL)的股票数据:

import yfinance as yf
import mplfinance as mpf

# 下载苹果公司股票数据(日线)
data = yf.download("AAPL", start="2023-01-01", end="2023-12-31")

# 查看数据格式(确保有 Open, High, Low, Close, Volume 这几列)
print(data.head())

2. 基本图表绘制

绘制 K 线图(Candlestick)

mpf.plot(data, type='candle', volume=True, style='charles', title='AAPL 2023 K 线图')

参数说明

  • type:图表类型(candleohlclinerenkoheikinashi),画K线图(默认就是蜡烛图,不写也行)。
  • volume:是否显示成交量(True/False)显示成交量(柱子图)。
  • style:预设样式('charles''binance''nightclouds')。
  • title:图表标题。

OHLC 条形图

用竖线表示价格区间。

mpf.plot(data, type='ohlc')    # 适合简化分析

折线图

仅用收盘价连线。

mpf.plot(data, type='line')    # 简洁趋势图

Renko 图(砖形图)

需手动生成数据(见下文)。

3. 高级图表类型

Heikin-Ashi 图

mpf.plot(data, type='heikinashi', volume=True, style='binance', title='Heikin-Ashi Chart')

Renko 图(需预处理数据)

def generate_renko(data, brick_size=2):
    prices = data['Close']
    renko_prices = []
    last_price = prices.iloc[0]
    for price in prices:
        delta = price - last_price
        steps = int(abs(delta) // brick_size)
        if steps == 0:
            continue
        direction = 1 if delta > 0 else -1
        for _ in range(steps):
            last_price += direction * brick_size
            renko_prices.append(last_price)
    return pd.Series(renko_prices, index=data.index[:len(renko_prices)], name='Close')

renko_data = generate_renko(data, brick_size=3)
mpf.plot(renko_data, type='candle', title='Renko Chart', volume=False)

4. 添加技术指标

内置移动平均线(MA)

mpf.plot(data, type='candle', mav=(5, 20, 50), volume=True, style='binance', title='AAPL with MAs')
  • mav:移动平均线(如 mav=(5, 20, 50) 显示5日、20日、50日均线)(均线显示在K线上)

自定义指标(MACD、RSI、布林带)

MACD是常见的技术指标,分三步添加:

步骤1:计算MACD数据(直接复制代码)

# 计算MACD(不需要理解公式)
exp12 = data['Close'].ewm(span=12, adjust=False).mean()  # 12日指数均线
exp26 = data['Close'].ewm(span=26, adjust=False).mean()  # 26日指数均线
macd = exp12 - exp26               # MACD线
signal = macd.ewm(span=9, adjust=False).mean()  # 信号线

步骤2:创建子图对象

# 创建MACD子图
ap = [
    mpf.make_addplot(macd, panel=1, color='blue', ylabel='MACD'),  # 第2个面板
    mpf.make_addplot(signal, panel=1, color='red')                 # 信号线
]

步骤3:画图

mpf.plot(data, type='candle', 
         volume=True, 
         addplot=ap,              # 添加子图
         style='binance', 
         title='苹果股票带MACD')

效果:主图是K线,下方会多出一个MACD图表,蓝线是MACD,红线是信号线。

5. 样式自定义

 自定义颜色方案

# 自定义颜色方案
custom_style = mpf.make_mpf_style(
    base_mpf_style='binance',  # 基于币安主题改
    marketcolors=mpf.make_marketcolors(
        up='red',    # 上涨为红色
        down='green',# 下跌为绿色
        wick={'up':'red', 'down':'green'},  # 影线颜色
        volume='blue'  # 成交量柱子颜色
    )
)

# 应用自定义样式
mpf.plot(data, type='candle', volume=True, style=custom_style, title='红涨绿跌')

调整图表布局

mpf.plot(data, type='candle', volume=True, 
         figratio=(12, 6),  # 图表宽高比
         tight_layout=True, # 紧凑布局
         datetime_format='%Y-%m', # 日期格式
         ylabel='Price (USD)',
         ylabel_lower='Volume')

6. 多时间周期数据处理

日内数据(分钟级)

# 获取比特币分钟级数据
btc_data = yf.download("BTC-USD", start="2023-12-01", end="2023-12-31", interval="15m")

# 绘制紧凑型图表(隐藏非交易时间)
mpf.plot(btc_data, type='candle', volume=True, style='binance', 
         show_nontrading=False,  # 隐藏非交易时间
         title='BTC-USD 15分钟线')

周线图

weekly_data = data.resample('W').agg({
    'Open': 'first',
    'High': 'max',
    'Low': 'min',
    'Close': 'last',
    'Volume': 'sum'
})

mpf.plot(weekly_data, type='candle', volume=True, style='charles', title='AAPL 周线图')

7. 保存与导出图表

# 保存为 PNG 文件
mpf.plot(data, type='candle', volume=True, savefig='aapl_chart.png')

# 保存为 SVG 矢量图
mpf.plot(data, type='candle', volume=True, savefig=dict(fname='aapl_chart.svg', dpi=300))

图片会保存在你代码所在的文件夹,名字是 apple_chart.png  或aapl_chart.svg

8. 完整示例:综合图表

# 0. 导入库
import yfinance as yf
import mplfinance as mpf

# 1. 下载数据
data = yf.download("AAPL", start="2023-01-01", end="2023-12-31")

# 2. 计算MACD
exp12 = data['Close'].ewm(span=12, adjust=False).mean()
exp26 = data['Close'].ewm(span=26, adjust=False).mean()
macd = exp12 - exp26
signal = macd.ewm(span=9, adjust=False).mean()

# 3. 设置子图
ap = [mpf.make_addplot(macd, panel=1, color='blue', ylabel='MACD'),
      mpf.make_addplot(signal, panel=1, color='red')]

# 4. 画图并保存
mpf.plot(data, type='candle', 
         volume=True, 
         addplot=ap, 
         style='binance',
         title='苹果股票2023',
         savefig='apple.png')

9.总结

安装库 → 2. 下载数据 → 3. 画图

  • 核心功能:K线图、成交量、技术指标叠加、多子图布局、样式自定义。

  • 高级技巧

    • 使用 make_addplot() 添加自定义指标。

    • 通过 make_mpf_style() 完全控制颜色和字体。

    • 处理不同时间周期(分钟、日、周线)。


今天就到这里,byb~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值