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

如何在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()

关键说明

  1. 筛选逻辑:通过condition把符合要求的行单独提取出来,只有这些行才会生成标记,彻底避免无效信号
  2. 空值判断:加了if not signal_df.empty,防止没有符合条件的数据时出现报错
  3. 样式优化:直接给有效标记统一设为绿色,同时利用你数据里的Symbol列,让标记显示对应的三角形形状,更直观

注意:你提供的样本数据里Ma_mult_high全是NaN,所以当前条件会返回空,看不到标记。等你有有效Ma_mult_high数据后,符合条件的行就会正常显示绿色标记。

内容的提问来源于stack exchange,提问作者mtfr8 me

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:25:16