You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:36:04