如何使Long_signal中的变量支持可选启用/禁用?
实现条件单独开关的最优方案
核心思路
给每个判断条件添加独立的布尔开关,通过开关变量 ? 原条件 : true的逻辑实现启用/禁用控制——开关开启时使用原条件过滤,关闭时该条件自动返回true,不影响整体的逻辑与(and)判断。
具体实现步骤
- 定义开关输入:用
input.bool()为每个条件创建可交互的开关,默认设为true(即默认启用所有条件)。 - 重构信号逻辑:在组合
Long_signal时,将每个条件与对应的开关绑定。
完整代码示例
//@version=5 indicator("Long Signal with Toggleable Conditions", overlay=true) // 原条件定义 Green = Bar_Color == color.new(#04E819, 0) MA_Long = MA_Entry == 'Aggressive' ? l_C <= SMA_Out : c_C <= SMA_Out Stoch_Long = Stoch_MTF_6H <= Stoch_Lower Hour_Filter = true // 假设原变量已定义 Day_Filter = true // 假设原变量已定义 Volume_Signal = true // 假设原变量已定义 // 定义各条件的开关(可在指标设置中勾选/取消) enable_Green = input.bool(true, title="启用K线颜色条件") enable_MA_Long = input.bool(true, title="启用均线多单条件") enable_Stoch_Long = input.bool(true, title="启用6小时随机指标多单条件") enable_Hour_Filter = input.bool(true, title="启用小时时间过滤") enable_Day_Filter = input.bool(true, title="启用日期时间过滤") enable_Volume_Signal = input.bool(true, title="启用成交量信号过滤") // 重构后的多单信号 Long_signal = (enable_Green ? Green : true) and (enable_MA_Long ? MA_Long : true) and (enable_Stoch_Long ? Stoch_Long : true) and (enable_Hour_Filter ? Hour_Filter : true) and (enable_Day_Filter ? Day_Filter : true) and (enable_Volume_Signal ? Volume_Signal : true)
逻辑说明
- 当某个开关设为
false时,对应的开关变量 ? 条件 : true会返回true,在and逻辑中相当于忽略该条件,不参与信号过滤。 - 所有开关默认开启,保留原逻辑的同时,提供了灵活的单独控制能力。
- 开关通过
input.bool()实现,用户可以直接在TradingView的指标设置面板中可视化调整,无需修改代码。
内容的提问来源于stack exchange,提问作者Olivia Moore
相关产品推荐
相关产品推荐

