如何在Plotly蜡烛图的X轴添加特定条件的指标点
在Plotly蜡烛图上添加条件标记点的实现方法
你可以通过以下步骤实现需求:
1. 为DataFrame添加条件布尔列
先根据你的特定判断逻辑,在DataFrame中新增布尔值列,用来标记每根K线是否满足条件。示例中以「收盘价高于开盘价」作为条件,你可以替换成自己的业务逻辑:
# 自定义条件示例:标记阳线K线 df['meets_condition'] = df['Close'] > df['Open']
2. 添加散点图标记点
使用go.Scatter在蜡烛图的X轴对应位置绘制标记点,通过布尔列的值来区分颜色,同时将点放在K线最低价下方靠近X轴的位置,避免遮挡K线:
fig.append_trace( go.Scatter( x=df.index, # 将点设置在K线最低价的99%位置,贴近X轴 y=df['Low'] * 0.99, mode='markers', # 根据布尔值设置颜色:满足条件用黄色,不满足用紫色 marker=dict( color=['yellow' if cond else 'purple' for cond in df['meets_condition']], size=8, symbol='circle' ), # 隐藏图例,避免干扰蜡烛图展示 showlegend=False ), row=1, col=1 )
3. 调整Y轴范围(可选)
为了确保标记点不会被图表边界截断,可以手动调整Y轴的范围:
fig.update_yaxes(range=[df['Low'].min() * 0.98, df['High'].max() * 1.02])
完整代码
import yfinance as yf import pandas as pd import plotly.graph_objects as go from plotly.subplots import make_subplots djia = yf.Ticker("DJIA") df = djia.history(start="2022-01-01", end="2022-12-31", interval="1d") # 新增条件布尔列,替换成你的自定义判断逻辑 df['meets_condition'] = df['Close'] > df['Open'] fig = make_subplots(rows=1, cols=1) # 添加蜡烛图 fig.append_trace( go.Candlestick( x=df.index, open=df["Open"], high=df["High"], low=df["Low"], close=df["Close"] ), row=1, col=1 ) # 添加条件标记点 fig.append_trace( go.Scatter( x=df.index, y=df['Low'] * 0.99, mode='markers', marker=dict( color=['yellow' if cond else 'purple' for cond in df['meets_condition']], size=8 ), showlegend=False ), row=1, col=1 ) # 隐藏周末空白 fig.update_xaxes(rangebreaks=[dict(bounds=["sat", "mon"])]) # 调整Y轴范围,确保标记点显示完整 fig.update_yaxes(range=[df['Low'].min() * 0.98, df['High'].max() * 1.02]) fig.show()
说明
- 你可以完全自定义
meets_condition列的生成逻辑,比如基于成交量、RSI、MACD等技术指标的判断; - 如果需要区分多种条件,可以新增多个布尔列,或者用数值列(如0、1、2)来对应不同颜色,修改
color参数的生成逻辑即可; - 标记点的位置可以通过调整
y参数来改变,比如放在K线最高价上方,或者固定在Y轴某个位置。
内容的提问来源于stack exchange,提问作者Kalleni
相关产品推荐
相关产品推荐

