如何在Plotly蜡烛图中仅绘制满足条件的True信号标记
解决Plotly蜡烛图仅显示指定条件标记的问题
当前代码给所有K线都加了标记,导致无关信号也显示出来,要实现只保留满足(df['spread']>60) & (df['volume']>df['Ma_mult_high'])条件的标记,直接按下面的方式修改代码:
核心思路
- 先筛选出符合条件的行,只给这些行绘制标记,避免无效信号干扰
- 不用给全表标记颜色,直接针对筛选后的数据设置标记样式
修改后的完整代码
import numpy as np import plotly.graph_objects as go import pandas as pd # 先定义筛选条件,仅保留符合要求的信号行 condition = (df['spread'] > 60) & (df['volume'] > df['Ma_mult_high']) signal_df = df[condition].copy() fig = go.Figure() # 蜡烛图轨迹 fig.add_trace(go.Candlestick(x=df.index, open=df['open'], high=df['high'], low=df['low'], close=df['close'], showlegend=False)) # 5日均线轨迹 fig.add_trace(go.Scatter(x=df.index, y=df['ma'], opacity=0.7, line=dict(color='blue', width=2), name='MA 5')) # 只绘制符合条件的标记 if not signal_df.empty: fig.add_trace(go.Scatter( x=signal_df.index, y=signal_df['close'], # 也可以换成你数据里的Marker列作为标记位置 mode='markers', marker=dict( color='green', symbol=signal_df['Symbol'], # 用已有Symbol列设置标记形状 size=10 ), name='有效信号' )) fig.update_layout(xaxis_rangeslider_visible=False) fig.show()
关键说明
- 筛选逻辑:通过
condition把符合要求的行单独提取出来,只有这些行才会生成标记,彻底避免无效信号 - 空值判断:加了
if not signal_df.empty,防止没有符合条件的数据时出现报错 - 样式优化:直接给有效标记统一设为绿色,同时利用你数据里的
Symbol列,让标记显示对应的三角形形状,更直观
注意:你提供的样本数据里Ma_mult_high全是NaN,所以当前条件会返回空,看不到标记。等你有有效Ma_mult_high数据后,符合条件的行就会正常显示绿色标记。
内容的提问来源于stack exchange,提问作者mtfr8 me
相关产品推荐
相关产品推荐

