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

如何修正Pine Script多时间框架(MTF)中4小时MACD的计算起始时间?

解决Pine Script多时间框架MACD标准时段计算问题

问题核心是默认request.security会返回滚动240分钟的窗口数据,而非交易所定义的标准4小时时段(如0/4/8/12点起始)的K线数据。要实现基于标准4小时时段的MACD计算,需调整request.security的参数并修正代码语法错误,具体方案如下:

关键调整点

  • 使用barmerge.lookahead_off禁用未来函数,确保仅获取已完全闭合的标准4小时K线数据
  • 使用barmerge.gaps_on保留时段间隙,避免非标准时段的拼接数据
  • 修正原代码中的语法错误(如拼写错误、括号位置错误)

修正后的完整代码

//@version=5
indicator("标准时段4小时MACD", overlay=false)

// 定义颜色变量(原代码未声明,需补充)
col_grow_above = color.new(color.green, 0)
col_fall_above = color.new(color.red, 0)
col_grow_below = color.new(color.green, 0)
col_fall_below = color.new(color.red, 0)

// 获取标准4小时K线的收盘价,禁用未来函数、保留时段间隙
h4_close = request.security(syminfo.tickerid, "4H", close, barmerge.gaps_on, barmerge.lookahead_off)

// 计算MACD(基于标准4小时收盘价)
[macd, signal, hist] = ta.macd(h4_close, 12, 26, 9)

// 绘图部分
hline(0, "Zero Line", color=color.new(#787B86, 50))
plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))
plot(macd, title="MACD", color=color.red)
plot(signal, title="Signal", color=color.blue)

代码说明

  1. request.security参数:

    • "4H"明确指定标准4小时时段,而非用分钟数240(避免滚动窗口歧义)
    • barmerge.lookahead_off:确保不会提前获取未闭合的4小时K线数据,完全符合真实行情时序
    • barmerge.gaps_on:保留不同4小时时段之间的间隙,避免非标准时段的数据被错误拼接
  2. 语法修正:

    • 补充原代码未声明的颜色变量col_grow_above等
    • 修正plot.sytle_columns的拼写错误为plot.style_columns
    • 调整plot函数的括号位置,修复语法错误
  3. 效果验证:
    在5分钟图表上,MACD值将严格基于标准4小时K线(如08:00-12:00、12:00-16:00)的收盘价计算,而非滚动240分钟的窗口数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:56:08