PINE LIBRARY
Aggiornato

OHLCVRangeX

27
The OHLCVRange library provides modular range-building utilities for Pine Script v6 based on custom conditions like time, price, volatility, volume, and pattern detection. Each function updates a persistent range (OHLCVRange) passed in from the calling script, based on live streaming candles.

This library is designed to support dynamic windowing over incoming OHLCV bars, with all persistent state handled externally (in the indicator or strategy). The library merely acts as a filter and updater, appending or clearing candles according to custom logic.

📦
export type OHLCVRange
OHLCV.OHLCV[] candles // Sliding window of candles
The OHLCVRange is a simple container holding an array of OHLCV.OHLCV structures.

This structure should be declared in the indicator using var to ensure persistence across candles.

🧩 Range Updater Functions
Each function follows this pattern:

export updateXxxRange(OHLCVRange r, OHLCV.OHLCV current, ...)
r is the range to update.

current is the latest OHLCV candle (typically from your indicator).

Additional parameters control the behavior of the range filter.

🔁 Function List
1. Fixed Lookback Range

export updateFixedRange(OHLCVRange r, OHLCV.OHLCV current, int barsBack)
Keeps only the last barsBack candles.

Sliding window based purely on number of bars.

2. Session Time Range

export updateSessionRange(OHLCVRange r, OHLCV.OHLCV current, int minuteStart, int minuteEnd)
Keeps candles within the [minuteStart, minuteEnd) intraday session.

Clears the range once out of session bounds.

3. Price Zone Range

export updatePriceZoneRange(OHLCVRange r, OHLCV.OHLCV current, float minP, float maxP)
Retains candles within the vertical price zone [minP, maxP].

Clears when a candle exits the zone.

4. Consolidation Range

export updateConsolidationRange(OHLCVRange r, OHLCV.OHLCV current, float thresh)
Stores candles as long as the candle range (high - low) is less than or equal to thresh.

Clears on volatility breakout.

5. Volume Spike Range

export updateVolumeSpikeRange(OHLCVRange r, OHLCV.OHLCV current, float avgVol, float mult, int surround)
Triggers a new range when a volume spike ≥ avgVol * mult occurs.

Adds candles around the spike (total surround * 2 + 1).

Can be used to zoom in around anomalies.

6. Engulfing Pattern Range

export updateEngulfingRange(OHLCVRange r, OHLCV.OHLCV current, int windowAround)
Detects bullish or bearish engulfing candles.

Stores 2 * windowAround + 1 candles centered around the pattern.

Clears if no valid engulfing pattern is found.

7. HTF-Aligned Range

export updateHTFAlignedRange(OHLCVRange r, OHLCV.OHLCV current, OHLCV.OHLCV prevHtf)
Used when aligning lower timeframe candles to higher timeframe bars.

Clears and restarts the range on HTF bar transition (compare prevHtf.bar_index with current).

Requires external management of HTF candle state.

💡 Usage Notes
All OHLCVRange instances should be declared as var in the indicator to preserve state:

var OHLCVRange sessionRange = OHLCVRange.new()
sessionRange := OHLCVRange.updateSessionRange(sessionRange, current, 540, 900)
All OHLCV data should come from the OHLCVData library (v15 or later):

import userId/OHLCVData/15 as OHLCV
OHLCV.OHLCV current = OHLCV.getCurrentChartOHLCV()
This library does not use var internally to enforce clean separation of logic and persistence.

📅 Planned Enhancements
Fib zone ranges: capture candles within custom Fibonacci levels.

Custom event ranges: combine multiple filters (e.g., pattern + volume spike).

Trend-based ranges: windowing based on moving average or trend breaks.
Note di rilascio
v2

Added:
fastClear(r)
  Parameters:
    r (OHLCVRange)

getRangeHigh(r)
  Parameters:
    r (OHLCVRange)

getRangeLow(r)
  Parameters:
    r (OHLCVRange)

getRangeVolume(r)
  Parameters:
    r (OHLCVRange)

getRangeAvg(r)
  Parameters:
    r (OHLCVRange)

mergeRanges(r1, r2)
  Parameters:
    r1 (OHLCVRange)
    r2 (OHLCVRange)

Updated:
updatePriceZoneRange(r, current, minP, maxP, bufferPct)
  Parameters:
    r (OHLCVRange)
    current (OHLCV type from viorel8/OHLCVData/15)
    minP (float)
    maxP (float)
    bufferPct (float)

updateVolumeSpikeRange(r, current, avgVol, mult, surround, confirmBars)
  Parameters:
    r (OHLCVRange)
    current (OHLCV type from viorel8/OHLCVData/15)
    avgVol (float)
    mult (float)
    surround (int)
    confirmBars (int)

updateHTFAlignedRange(r, current, tf, prevHtf)
  Parameters:
    r (OHLCVRange)
    current (OHLCV type from viorel8/OHLCVData/15)
    tf (string)
    prevHtf (OHLCV type from viorel8/OHLCVData/15)

OHLCVRange
  Fields:
    id (series string)
    start_bar_index (series int)
    end_bar_index (series int)
    start_time (series int)
    end_time (series int)
    candles (array<OHLCV> type from viorel8/OHLCVData/15)
    duration (series int)
    isValid (series bool)

Declinazione di responsabilità

Le informazioni ed i contenuti pubblicati non costituiscono in alcun modo una sollecitazione ad investire o ad operare nei mercati finanziari. Non sono inoltre fornite o supportate da TradingView. Maggiori dettagli nelle Condizioni d'uso.