为Pine Script交易入场规则添加分形指标判定条件(结合肯特纳通道)
以下是要实现的效果示意图:
问题原因
你代码中使用的topfractals和botfractals是存储最近一次顶/底分形对应价格的浮点变量,只要历史上出现过分形,这两个值就始终不为0,因此if (topfractals)这类判断会在每根K线都被触发,无法实现“分形信号生成时才入场”的逻辑。
修复方案
将代码最后4行的入场判定逻辑替换为以下内容即可:
// 价格跌破肯特纳通道下轨且出现顶分形时开多 if (topfractal and close < Lower) strategy.entry("long", strategy.long, 100) // 价格突破肯特纳通道上轨且出现底分形时开空 if (botfractal and close > Upper) strategy.entry("short", strategy.short, 100)
修改说明
- 替换判定变量:将浮点型的
topfractals/botfractals替换为布尔型的topfractal/botfractal,这两个变量仅在分形信号确认的当前K线返回true,其余时间为false,符合信号触发要求 - 简化逻辑:删除了冗余的
when参数,直接把通道突破条件写入if判断,逻辑更直观 - 保留原策略的方向匹配规则:顶分形对应跌破下轨开多、底分形对应突破上轨开空的规则和原需求一致
可选优化(按需使用)
如果需要允许分形信号出现后N根K线内突破通道也可触发入场,可添加信号有效期判断,例如下方代码设置信号3根K线内有效:
// 顶分形信号3根K线内有效 topfractal_valid = ta.barssince(topfractal) < 3 // 底分形信号3根K线内有效 botfractal_valid = ta.barssince(botfractal) < 3 if (topfractal_valid and close < Lower) strategy.entry("long", strategy.long, 100) if (botfractal_valid and close > Upper) strategy.entry("short", strategy.short, 100)
内容的提问来源于stack exchange,提问作者User4536124
相关产品推荐
相关产品推荐

