Pine Script如何获取MACD金叉触发价位解决不同类型比较报错
Pine Script 不同类型比较报错解决方法
报错根因
crossover()函数返回值为布尔类型序列,金叉触发时为true,其余时段为falselowest()函数返回值为浮点型价格序列- 两类数据类型不匹配,无法直接传入
max()函数进行计算,因此触发类型错误提示
具体实现方案
首先用ta.valuewhen()函数提取MACD金叉触发时的对应价格,你可以根据需求选择收盘价、开盘价、最低价等维度,示例取收盘价:
// 定义MACD金叉信号 macd_cross = ta.crossover(macd_line, signal_line) // 提取最近一次MACD金叉触发时的收盘价 cross_trigger_price = ta.valuewhen(macd_cross, close, 0) // 计算13周期最低价格 lowest_13 = ta.lowest(low, 13)
场景1:将两个价格的较高值作为动态止损位
此时两个参数均为浮点型,可正常调用max()计算:
stop_long = math.max(cross_trigger_price, lowest_13) if strategy.position_size > 0 strategy.exit("Sl_Buy", "Buy", stop=stop_long)
场景2:金叉事件触发时直接平仓,与跌破13天最低价为平多的两个并行触发条件
不需要合并两个值,直接用逻辑或判断即可:
if strategy.position_size > 0 if macd_cross or low <= lowest_13 strategy.close("Buy")
内容的提问来源于stack exchange,提问作者Andrey A
相关产品推荐
相关产品推荐

