You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在mplfinance绘制的蜡烛图(K线图)上添加自定义交易信号标记

完全可以在mplfinance绘制的蜡烛图上添加信号标记,核心是使用mplfinance内置的mpf.make_addplot()方法定义标记层,再传入mpf.plot()的addplot参数即可。

实现注意事项

  • 你原代码中的buy信号定义缺少右括号,先修正语法问题
  • 信号标记要调整到不遮挡K线的位置:买入信号可放在当日最低价下方,卖出信号放在当日最高价上方
  • 无信号的位置设为np.nan就不会被渲染,避免出现多余的空白标记

完整可运行代码

!pip install yfinance
!pip install mplfinance
import yfinance as yf
import mplfinance as mpf
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt

# 下载行情数据
df = yf.download('BTC-USD', start='2008-01-04', end='2021-06-3', interval='1d')

# 修正买入信号定义,补全括号
buy_signal = np.where((df['Close'] > df['Open']) & (df['Close'].shift(1) < df['Open'].shift(1)), 1, 0)
# 生成买入标记坐标:有信号时取当日最低价的98%(显示在K线下方),无信号设为nan
df['buy_marker'] = np.where(buy_signal == 1, df['Low'] * 0.98, np.nan)

# 定义标记层:设置标记样式、大小、颜色
signal_plots = [
    mpf.make_addplot(df['buy_marker'], type='scatter', markersize=100, marker='^', color='g')
]

# 绘制蜡烛图时传入标记层参数
mpf.plot(df, figsize=(20,12), type='candle', volume=True, addplot=signal_plots)

拓展:添加卖出信号

如果需要新增卖出信号,逻辑完全一致,示例如下:

# 自定义卖出信号判断条件:当日收阴、前一日收阳
sell_signal = np.where((df['Close'] < df['Open']) & (df['Close'].shift(1) > df['Open'].shift(1)), 1, 0)
# 卖出标记放在当日最高价的1.02倍位置(显示在K线上方)
df['sell_marker'] = np.where(sell_signal == 1, df['High'] * 1.02, np.nan)

# 把卖出标记也加入标记层即可
signal_plots = [
    mpf.make_addplot(df['buy_marker'], type='scatter', markersize=100, marker='^', color='g'),
    mpf.make_addplot(df['sell_marker'], type='scatter', markersize=100, marker='v', color='r')
]

内容的提问来源于stack exchange,提问作者Jocelyn AL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 12:15:01