OPEN-SOURCE SCRIPT
Pivot Length Percentiles Oscillator

# Pivot Length Percentiles Oscillator: Technical Mechanics Explained
## Introduction
The Pivot Length Percentiles Oscillator is a statistical approach to identifying potential market reversals by analyzing the distribution of price movements relative to pivot points. This publication explains the technical mechanics behind the indicator.
## Core Mechanics
### 1. Pivot Point Detection
The indicator begins by identifying significant pivot highs and lows using a user-defined lookback period:
- `lft`: Number of bars to the left of potential pivot point
- `rht`: Number of bars to the right of potential pivot point
These parameters determine how "significant" a pivot needs to be to qualify for analysis.
### 2. Distance Measurement & Historical Database
For each new pivot point identified, the indicator:
- Calculates the absolute price distance from the previous pivot of the same type
- Records the number of candles between consecutive pivots
- Stores these measurements in dynamic arrays that build a historical database
### 3. Statistical Distribution Analysis
Rather than using fixed values, the oscillator analyzes the complete distribution of historical pivot distances and calculates key percentile values:
- `lw` (Low Percentile): Lower boundary for statistical significance
- `md` (Mid Percentile): Median statistical boundary
- `hi` (High Percentile): Upper boundary for statistical extremes
### 4. Oscillator Construction
Two primary oscillator lines are calculated:
- Green line (`osc1`): Measures current price's fall below recent highs with `low - ta.highest(high, lft)`
- Red line (`osc2`): Measures current price's rise above recent lows with `high - ta.lowest(low, lft)`
### 5. Threshold Generation
The percentile values from the historical distribution create dynamic threshold lines:
- For downside movements: Scaled versions of the low percentile (`lw_distance_low`) and high percentile (`hi_distance_low`)
- For upside movements: Scaled versions of the low percentile (`lw_distance_high`) and high percentile (`hi_distance_high`)
### 6. Signal Logic
Entry signals are generated when:
- **Bullish Signal**: The downside oscillator crosses below a statistical threshold while price continues showing downward momentum (close < previous close AND close < previous open)
- **Bearish Signal**: The upside oscillator crosses above a statistical threshold while price continues showing upward momentum (close > previous close AND close > previous open)
### 7. Visualization Options
Users can toggle between:
- Standard view: Shows the oscillator and threshold lines
- Percentile view: Displays the current movement's percentile rank within the historical distribution
## Implementation Notes
- The indicator scales threshold values by 0.9 to create a slight buffer that reduces false signals
- The movement's continuation is confirmed by checking both close-to-close and close-to-open relationships
- Arrays dynamically update throughout the chart's history, making the indicator increasingly accurate as more data is processed
## Mathematical Framework
The core statistical function calculates percentiles using linear interpolation between values when needed:
```
calculate_percentile(array, percentile) =
sortedValue[floor(index)] +
fraction * (sortedValue[ceil(index)] - sortedValue[floor(index)])
```
where `index = (array.size - 1) * percentile / 100`
This mathematical approach ensures the thresholds adapt dynamically to changing market conditions rather than relying on fixed values.
## Introduction
The Pivot Length Percentiles Oscillator is a statistical approach to identifying potential market reversals by analyzing the distribution of price movements relative to pivot points. This publication explains the technical mechanics behind the indicator.
## Core Mechanics
### 1. Pivot Point Detection
The indicator begins by identifying significant pivot highs and lows using a user-defined lookback period:
- `lft`: Number of bars to the left of potential pivot point
- `rht`: Number of bars to the right of potential pivot point
These parameters determine how "significant" a pivot needs to be to qualify for analysis.
### 2. Distance Measurement & Historical Database
For each new pivot point identified, the indicator:
- Calculates the absolute price distance from the previous pivot of the same type
- Records the number of candles between consecutive pivots
- Stores these measurements in dynamic arrays that build a historical database
### 3. Statistical Distribution Analysis
Rather than using fixed values, the oscillator analyzes the complete distribution of historical pivot distances and calculates key percentile values:
- `lw` (Low Percentile): Lower boundary for statistical significance
- `md` (Mid Percentile): Median statistical boundary
- `hi` (High Percentile): Upper boundary for statistical extremes
### 4. Oscillator Construction
Two primary oscillator lines are calculated:
- Green line (`osc1`): Measures current price's fall below recent highs with `low - ta.highest(high, lft)`
- Red line (`osc2`): Measures current price's rise above recent lows with `high - ta.lowest(low, lft)`
### 5. Threshold Generation
The percentile values from the historical distribution create dynamic threshold lines:
- For downside movements: Scaled versions of the low percentile (`lw_distance_low`) and high percentile (`hi_distance_low`)
- For upside movements: Scaled versions of the low percentile (`lw_distance_high`) and high percentile (`hi_distance_high`)
### 6. Signal Logic
Entry signals are generated when:
- **Bullish Signal**: The downside oscillator crosses below a statistical threshold while price continues showing downward momentum (close < previous close AND close < previous open)
- **Bearish Signal**: The upside oscillator crosses above a statistical threshold while price continues showing upward momentum (close > previous close AND close > previous open)
### 7. Visualization Options
Users can toggle between:
- Standard view: Shows the oscillator and threshold lines
- Percentile view: Displays the current movement's percentile rank within the historical distribution
## Implementation Notes
- The indicator scales threshold values by 0.9 to create a slight buffer that reduces false signals
- The movement's continuation is confirmed by checking both close-to-close and close-to-open relationships
- Arrays dynamically update throughout the chart's history, making the indicator increasingly accurate as more data is processed
## Mathematical Framework
The core statistical function calculates percentiles using linear interpolation between values when needed:
```
calculate_percentile(array, percentile) =
sortedValue[floor(index)] +
fraction * (sortedValue[ceil(index)] - sortedValue[floor(index)])
```
where `index = (array.size - 1) * percentile / 100`
This mathematical approach ensures the thresholds adapt dynamically to changing market conditions rather than relying on fixed values.
오픈 소스 스크립트
진정한 트레이딩뷰 정신에 따라 이 스크립트 작성자는 트레이더가 기능을 검토하고 검증할 수 있도록 오픈소스로 공개했습니다. 작성자에게 찬사를 보냅니다! 무료로 사용할 수 있지만 코드를 다시 게시할 경우 하우스 룰이 적용된다는 점을 기억하세요.
면책사항
이 정보와 게시물은 TradingView에서 제공하거나 보증하는 금융, 투자, 거래 또는 기타 유형의 조언이나 권고 사항을 의미하거나 구성하지 않습니다. 자세한 내용은 이용 약관을 참고하세요.
오픈 소스 스크립트
진정한 트레이딩뷰 정신에 따라 이 스크립트 작성자는 트레이더가 기능을 검토하고 검증할 수 있도록 오픈소스로 공개했습니다. 작성자에게 찬사를 보냅니다! 무료로 사용할 수 있지만 코드를 다시 게시할 경우 하우스 룰이 적용된다는 점을 기억하세요.
면책사항
이 정보와 게시물은 TradingView에서 제공하거나 보증하는 금융, 투자, 거래 또는 기타 유형의 조언이나 권고 사항을 의미하거나 구성하지 않습니다. 자세한 내용은 이용 약관을 참고하세요.