如何为交易策略多头、空头实际入场分别创建独立告警规则
问题根因
你现有逻辑的问题在于仅判断了多空方向切换的边界,没有区分持仓变化是入场导致还是平仓操作导致,同时如果没有限制告警触发频率,会在同根K线满足条件时重复触发,或是在持仓维持方向的周期内误触发。
解决方案
方案1:与开仓逻辑直接绑定(最精准,推荐)
直接将alert()调用和你的开仓指令放在同一代码块,只要开仓指令实际被执行(会自动适配pyramiding、资金、仓位限制等所有策略内置规则),就会触发告警,完全符合需求:
// 多头开仓逻辑 if long_enter_condition strategy.entry("多单入场", strategy.long) alert("went long", alert.freq_once_per_bar) // 空头开仓逻辑 if short_enter_condition strategy.entry("空单入场", strategy.short) alert("went short", alert.freq_once_per_bar)
其中alert.freq_once_per_bar参数会保证每根K线对应条件最多触发一次告警,避免同根K线内重复推送。
方案2:通过持仓变化判断(无需修改原有开仓逻辑)
如果不想改动现有开仓代码,可以通过计算持仓变化精准识别入场动作:
// 计算当前K线相对上一根K线的持仓变化量 position_delta = strategy.position_size - strategy.position_size[1] // 多头入场判定:持仓正向变化,且当前为多仓,排除平空操作的持仓变化 is_long_entry = position_delta > 0 and strategy.position_size > 0 // 空头入场判定:持仓负向变化,且当前为空仓,排除平多操作的持仓变化 is_short_entry = position_delta < 0 and strategy.position_size < 0 if is_long_entry alert("went long", alert.freq_once_per_bar) if is_short_entry alert("went short", alert.freq_once_per_bar)
该方案也会自动适配pyramiding加仓规则,每次实际加仓时都会触发对应告警。
内容的提问来源于stack exchange,提问作者Drewdavid
相关产品推荐
相关产品推荐

