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

如何修改TradingView CPR脚本实现每日凌晨4点绘制枢轴区间

问题原因

原脚本存在两处逻辑问题,导致无法在凌晨4点提前绘制CPR:

  • 直接调用交易所预设的日K周期数据源,默认日切时间和要求的凌晨4点计算规则不匹配
  • 跨周期调用函数默认开启数据对齐校验,必须等当日第一根K线完全走完才会返回前一交易日的枢轴计算值,即便前一交易日的高低收数据在收盘时已经完全固化。
修改思路
  • 自定义日K切分规则,将每日K线的重置时间设为凌晨4点,对齐预期的计算时间节点
  • 调整跨周期函数的参数,关闭不必要的延迟,在凌晨4点日切完成的第一时间,就拉取已收盘的前一交易日数据计算CPR,不需要等当日开盘K线走出
  • 完全保留原脚本的CPR计算公式、绘制样式,不引入未来函数,不会出现数值漂移
修改后完整代码
study(title="Central Pivot Range", shorttitle="CPR", overlay=true) 
sd = input(true, title="Show Daily Pivots?")

//Pivot Range Calculations - Mark Fisher
pivot = (high + low + close ) / 3.0 
bc = (high + low ) / 2.0 
tc = (pivot - bc) + pivot

// 自定义日切规则:每日凌晨4点重置日K,无延迟拉取上一交易日CPR值
// 如需调整计算时间,修改下方"0400-0400"即可,格式为24小时制的"开始时间-结束时间"
daily_cutoff = "0400-0400"
custom_daily_ticker = ticker.new(syminfo.prefix, syminfo.ticker, daily_cutoff, "D")
dtime_pivot = request.security(custom_daily_ticker, "D", pivot[1], gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off) 
dtime_bc = request.security(custom_daily_ticker, "D", bc[1], gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off) 
dtime_tc = request.security(custom_daily_ticker, "D", tc[1], gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off) 

plot(sd and dtime_pivot ? dtime_pivot : na, title="Daily Pivot",style=circles, color=fuchsia,linewidth=3) 
plot(sd and dtime_bc ? dtime_bc : na, title="Daily BC",style=circles, color=blue,linewidth=3)
plot(sd and dtime_tc ? dtime_tc : na, title="Daily TC",style=circles, color=blue,linewidth=3)
使用注意事项
  • 加载脚本前请将图表时区设置为交易对应的时区,保证凌晨4点的日切时间计算准确
  • 如果需要调整每日枢轴的计算时间,直接修改代码中daily_cutoff的时间值即可,比如要改为凌晨5点计算就替换为"0500-0500"
  • 所有CPR数值均基于已收盘的前一交易日行情数据计算,不存在未来函数,盘中不会出现数值偏移

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:45:52