Pine Script策略开发:非橙色K线且ta.cross(high,upper3)时做空
该需求完全可实现,以下是修正方案
原代码存在的问题
- 错误使用
barcolor()函数作为条件判断:barcolor()是用于设置K线颜色的绘图函数,无法返回布尔值用于逻辑判断 - 开仓条件逻辑与需求不符:需求要求K线不为橙色时才能触发开仓,原代码写的是K线为橙色时判断交叉信号
修正后的完整代码
//@version=5 strategy("空头开仓策略", overlay=true) // 定义布林带参数(可根据实际需求调整周期和标准差倍数) length = 20 src = close mult1 = 2.0 // upper2_oben对应的标准差倍数 mult2 = 3.0 // upper3对应的标准差倍数 // 计算布林带指标 basis = ta.sma(src, length) dev1 = mult1 * ta.stdev(src, length) dev2 = mult2 * ta.stdev(src, length) upper2_oben = basis + dev1 lower2_unten = basis - dev1 upper3 = basis + dev2 // 判断当前K线是否为橙色 isOrangeBar = (close > upper2_oben[1]) or (close < lower2_unten[1]) // 设置K线颜色 barcolor(isOrangeBar ? color.orange : na) // 空头开仓条件:K线不为橙色 且 价格上穿upper3 if not isOrangeBar and ta.cross(high, upper3) strategy.entry("Short", strategy.short)
代码说明
- 补全了布林带指标的计算逻辑(原代码未包含该部分,必须定义才能使用
upper2_oben、lower2_unten、upper3变量) - 用
isOrangeBar变量统一标记K线是否为橙色,避免重复判断逻辑 - 开仓条件严格遵循需求:仅当K线不是橙色,且出现
high上穿upper3的交叉信号时,才建立空头仓位
内容的提问来源于stack exchange,提问作者infality
相关产品推荐
相关产品推荐

