TradingView策略:如何为trigger_buy添加无ta.crossover(bull, bear)限制?
实现方法
要让trigger_buy仅在bull上穿signal且未发生bull上穿bear时触发,分两种场景处理:
场景1:排除同一K线同时触发两个交叉的情况
直接在原trigger_buy条件中添加**非ta.crossover(bull, bear)**的判断,确保两个交叉不同时发生时才触发:
// 自定义ADX阈值(按需调整) adx_threshold1 = input(25, title="ADX 阈值1") // 原强买入信号条件 adx_strongbuy = ta.crossover(bull, bear) and ta.crossover(bull, signal) // 调整后的普通买入触发条件 trigger_buy = adx > adx_threshold1 and ta.crossover(bull, signal) and not ta.crossover(bull, bear)
这段代码会过滤掉同一根K线上同时出现bull上穿bear和bull上穿signal的情况,保证trigger_buy只在bull单独上穿signal且ADX达标时触发。
场景2:排除强买入信号触发后的一段时间内的所有普通信号
如果你的需求是在adx_strongbuy触发后的一段冷却期内,完全不触发trigger_buy,可以通过状态变量记录强信号触发状态,再加入冷却期判断:
// 自定义参数 adx_threshold1 = input(25, title="ADX 阈值1") cooloff_period = input(5, title="强信号冷却期(K线数量)") // 原强买入信号条件 adx_strongbuy = ta.crossover(bull, bear) and ta.crossover(bull, signal) // 记录强信号触发状态及冷却期 var bool strongbuy_active = false strongbuy_active := adx_strongbuy ? true : (ta.barssince(adx_strongbuy) >= cooloff_period ? false : strongbuy_active) // 调整后的普通买入触发条件 trigger_buy = adx > adx_threshold1 and ta.crossover(bull, signal) and not strongbuy_active and not ta.crossover(bull, bear)
这段代码会在adx_strongbuy触发后,保持strongbuy_active为true直到冷却期结束,期间trigger_buy不会被触发。
内容的提问来源于stack exchange,提问作者ashyala
相关产品推荐
相关产品推荐

