TradingView Pine Script:如何检测过去X日内买入条件是否满足?
TradingView筛选器:检测过去X日内买入条件是否满足
你的代码存在两个核心问题:
- 错误判断K线颜色:你用
c == color.green来判断K线颜色,但c是收盘价,不是K线的颜色值。TradingView里判断阳/阴K线需要通过收盘价和开盘价的对比。 - 时间逻辑错误:当前代码仅判断当前K线是否在过去10天内且满足买入条件,但筛选器需要的是过去X日内是否出现过至少一次满足条件的K线,而非当前K线同时满足。
修正后的代码示例(以过去10天为例)
//@version=5 indicator("买入条件筛选器", overlay=true) // 定义X天的时间范围(毫秒) X_DAYS = 10 time_window = timenow - X_DAYS * 24 * 60 * 60 * 1000 // 正确判断K线颜色:红K=收盘价<开盘价,绿K=收盘价>开盘价 red_bar = close < open green_bar = close > open // 定义买入条件:连续两根红K后出现一根绿K buyCondition = red_bar[2] and red_bar[1] and green_bar // 检测过去X日内是否出现过买入条件 buyInLastXDays = ta.barssince(buyCondition) != bar_index and time[ta.barssince(buyCondition)] >= time_window // 筛选器输出(用于TradingView筛选器时,返回布尔值) screener() => buyInLastXDays
代码说明
- K线颜色判断:用
close < open和close > open替代颜色值对比,这是判断K线涨跌的标准方式。 - 时间范围检测:
- 计算过去X天的时间戳阈值
time_window。 - 用
ta.barssince(buyCondition)获取距离最近一次满足买入条件的K线的间隔数。 - 检查该K线的时间是否在
time_window之后,以此确认是否在过去X日内出现过买入信号。
- 计算过去X天的时间戳阈值
- 筛选器返回值:
screener()函数直接返回buyInLastXDays布尔值,用于TradingView筛选器中筛选符合条件的标的。
内容的提问来源于stack exchange,提问作者Ali Tor
相关产品推荐
相关产品推荐

