TradingView两份同源脚本警报异常:pair1脚本误发pair2参数求助
TradingView同源策略脚本警报参数混淆解决方案
问题根因
TradingView 会基于 Pine 脚本的内容哈希生成内部唯一标识,仅修改脚本名称、策略名称不会改变内容哈希值,两份高度相似的同源脚本会被平台判定为同一实例,触发缓存复用逻辑,最终导致警报绑定的消息参数混淆。
可行解决方案
- 为每个脚本添加无逻辑影响的唯一标识参数,打破内容哈希一致性
分别给pair1、pair2对应的脚本添加1行自定义输入参数,参数取值保证唯一即可,不会影响原有开平仓逻辑:
该修改会让平台识别为两份完全独立的脚本,不再出现缓存复用问题。// pair1专属脚本添加 SCRIPT_UNIQUE_TAG = input.string("pair1_strategy_202401", title="脚本唯一标签", group="内部配置", tooltip="请勿修改,用于区分同源脚本") // pair2专属脚本添加 SCRIPT_UNIQUE_TAG = input.string("pair2_strategy_202401", title="脚本唯一标签", group="内部配置", tooltip="请勿修改,用于区分同源脚本") - 替换硬编码交易对参数为动态变量,从根源规避同源脚本冲突
不要将pair1/pair2直接写死在警报消息中,改为调用输入参数或平台内置变量:
后续新增其他交易对的策略时,无需复制整份脚本,仅修改该输入参数即可,不会再出现同源脚本冲突。// 新增交易对配置项,不同交易对脚本仅需修改该参数取值即可 TARGET_PAIR = input.string("pair1", title="警报交易对", group="警报配置") // 开平仓逻辑里直接调用变量生成警报消息 strategy.entry(id='long', direction=strategy.long, when=buy_signals, alert_message = str.format('{{"pair":"{0}"}}', TARGET_PAIR)) strategy.close(id='long', when=sell_signals, alert_message = str.format('{{"pair":"{0}"}}', TARGET_PAIR)) - 重建所有关联警报
完成脚本修改后,删除原有pair1、pair2绑定的所有旧警报,重新在对应脚本实例上创建新警报,不要直接修改旧警报的绑定配置。 - 清除浏览器缓存(可选,适用于修改后仍异常的场景)
退出TradingView账号,清除浏览器的本地缓存、Cookie后重新登录,再添加脚本创建警报即可。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

