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

PineScript技术问询:如何将FVG箱体延伸至当前K线

解决多时间框架FVG箱体延伸至当前K线的PineScript方案

核心逻辑

多时间框架下FVG箱体无法自动延伸的本质是:FVG生成于非当前图表的时间框架,其box对象的右边界默认停留在生成它的K线末端。要实现延伸,需在当前图表的每一根K线周期内,动态更新所有未被填充的FVG箱体的右边界至当前K线位置。

具体实现步骤

1. 存储活跃FVG箱体实例

用数组记录两个时间框架下的未填充FVG箱体,避免实例丢失或重复创建:

// 初始化数组分别存储两个时间框架的FVG箱体
var box[] fvgBoxes_TF1 = array.new_box()
var box[] fvgBoxes_TF2 = array.new_box()

2. 动态更新箱体右边界

在当前图表每根K线的最后状态下,遍历所有活跃箱体,调用box.set_right()将右边界同步到当前K线索引:

// 更新第一个时间框架的FVG箱体至当前K线
if barstate.islast
    for i = 0 to array.size(fvgBoxes_TF1) - 1
        currentBox = array.get(fvgBoxes_TF1, i)
        box.set_right(currentBox, bar_index)

// 更新第二个时间框架的FVG箱体至当前K线
if barstate.islast
    for i = 0 to array.size(fvgBoxes_TF2) - 1
        currentBox = array.get(fvgBoxes_TF2, i)
        box.set_right(currentBox, bar_index)

3. 清理已填充的FVG箱体

当价格填充FVG后,从数组中移除对应箱体并销毁,避免无效更新:

// 清理第一个时间框架已填充的FVG
for i = array.size(fvgBoxes_TF1) - 1 to 0 by -1
    currentBox = array.get(fvgBoxes_TF1, i)
    fvgHigh = box.get_top(currentBox)
    fvgLow = box.get_bottom(currentBox)
    if close > fvgHigh or close < fvgLow
        box.delete(currentBox)
        array.remove(fvgBoxes_TF1, i)

// 清理第二个时间框架已填充的FVG
for i = array.size(fvgBoxes_TF2) - 1 to 0 by -1
    currentBox = array.get(fvgBoxes_TF2, i)
    fvgHigh = box.get_top(currentBox)
    fvgLow = box.get_bottom(currentBox)
    if close > fvgHigh or close < fvgLow
        box.delete(currentBox)
        array.remove(fvgBoxes_TF2, i)

4. 多时间框架FVG生成的正确姿势

用request.security()获取对应时间框架的K线数据,确保FVG的位置映射准确:

// 示例:获取第一个时间框架(日线)的OHLC数据
tf1_ohlc = request.security(syminfo.tickerid, "D", [open, high, low, close])
// 判断并生成TF1的FVG
tf1_fvgExists = tf1_ohlc[1].high < tf1_ohlc[2].low
if tf1_fvgExists
    newBox = box.new(left=bar_index[2], top=tf1_ohlc[2].low, right=bar_index[1], bottom=tf1_ohlc[1].high, color=color.new(color.blue, 80))
    array.push(fvgBoxes_TF1, newBox)

// 第二个时间框架的FVG生成逻辑同理,替换时间周期参数即可

关键细节提示

  • 用barstate.islast仅在最后一根K线执行更新,减少冗余计算,提升脚本性能。
  • 遍历数组时从后往前(to 0 by -1),避免移除元素导致的索引错乱。
  • 若需要延伸时的动态样式(如靠近当前K线时变色),可在更新边界时同步调用box.set_color()等方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:20:52