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

如何在Pine Script中实现有限Fisher Transform的完整多时间框架代码?

多时间框架适配Limited Fisher Transform的实现方案

核心思路是利用Pine Script的request.security()函数,在指定的更高时间框架上完整计算Fisher Transform的所有输出(y、t、f),再将这些值对齐到当前时间框架,后续的计算、绘图和信号标记全部基于这些多时间框架的结果。

步骤1:封装Fisher核心函数

先把你的f_fisher()函数封装成可返回多值的结构,确保内部逻辑包含y、t、f的完整计算:

f_fisher(src, length) =>
    // 这里替换成你已实现的Limited Fisher计算逻辑
    highest_high = ta.highest(src, length)
    lowest_low = ta.lowest(src, length)
    y = 0.66 * ((src - lowest_low) / (highest_high - lowest_low) - 0.5) + 0.67 * nz(y[1])
    y = ta.clamp(y, -0.999, 0.999)
    f = 0.5 * math.log((1 + y) / (1 - y)) + 0.5 * nz(f[1])
    t = ta.sma(f, 9)
    [y, t, f]  // 返回三个核心计算值

步骤2:获取多时间框架的Fisher结果

通过request.security()在目标时间框架上执行函数,拿到对齐到当前K线的多时间框架数据:

//@version=5
indicator("MTF Limited Fisher Transform", overlay=false)

// 可配置参数
fisher_length = input.int(10, "Fisher计算周期")
higher_tf = input.timeframe("D", "多时间框架选择")

// 获取当前时间框架的Fisher值(可选,用于对比)
[current_y, current_t, current_f] = f_fisher(close, fisher_length)

// 关键:获取多时间框架的y、t、f
[mtf_y, mtf_t, mtf_f] = request.security(syminfo.tickerid, higher_tf, f_fisher(close, fisher_length))

步骤3:适配后续计算逻辑

所有原来基于当前时间框架y、t、f的判断,直接替换为多时间框架的变量即可:

// 示例:基于多时间框架的交叉信号判断
bullish_signal = mtf_f crossabove mtf_t
bearish_signal = mtf_f crossunder mtf_t

// 示例:基于mtf_y的阈值过滤(如果原逻辑有)
filtered_bullish = bullish_signal and mtf_y > -0.8

步骤4:绘图与信号标记

直接使用多时间框架的变量完成绘图和信号标记,信号会自动对齐到当前时间框架的K线:

// 绘图:区分当前和多时间框架的Fisher线
plot(current_f, color=color.gray, title="当前时间框架Fisher", linewidth=1)
plot(mtf_f, color=color.blue, title="多时间框架Fisher", linewidth=2)
plot(mtf_t, color=color.red, title="多时间框架触发线", linewidth=2, style=plot.style_dashed)

// 买卖信号标记
plotshape(filtered_bullish, title="多时间框架买入信号", 
          location=location.belowbar, color=color.green, 
          style=shape.triangleup, size=size.small)

plotshape(bearish_signal, title="多时间框架卖出信号", 
          location=location.abovebar, color=color.red, 
          style=shape.triangledown, size=size.small)

关键注意点

  • request.security()会自动处理多时间框架内的历史依赖(比如函数里的nz(y[1])),不需要修改函数内部逻辑。
  • 如果需要在主图叠加信号,把indicator()的overlay参数设为true即可。
  • 若原逻辑有动态周期或其他参数,只需把参数传入request.security()内的f_fisher()调用即可。

内容的提问来源于stack exchange,提问作者Demented

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:38:16