如何在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
相关产品推荐
相关产品推荐

