Merge branch 'dev'

This commit is contained in:
Miha Kralj
2026-03-13 13:47:10 -07:00
404 changed files with 2754 additions and 1763 deletions
+1 -3
View File
@@ -14,8 +14,6 @@
- The Accumulation/Distribution Line (ADL) is the bedrock of volume analysis.
- No configurable parameters; computation is stateless per bar.
- Output range: Unbounded.
- Requires 1 bar of warmup before first valid output (IsHot = true).
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
The Accumulation/Distribution Line (ADL) is the bedrock of volume analysis. It attempts to answer a single, vital question: "Are the big players buying or selling?"
@@ -99,4 +97,4 @@ O(1) cumulative indicator — no window, no buffer. Throughput ~4 ns/bar. Divisi
* **Gaps**: ADL ignores gaps. If a stock gaps up but closes near its low, ADL will register distribution, even if the price is higher than yesterday.
* **Scale**: The absolute value of ADL is meaningless; it depends on the start date of the data. Only the *trend* and *divergence* matter.
* **Volume Spikes**: A single bad data point with erroneous volume can permanently skew the ADL. Sanitize your data.
* **Volume Spikes**: A single bad data point with erroneous volume can permanently skew the ADL. Sanitize your data.
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [adosc.pine](adosc.pine) |
- The Chaikin Oscillator (ADOSC) is an indicator of an indicator.
- Parameterized by `fastperiod` (default 3), `slowperiod` (default 10).
- Output range: Unbounded.
- Requires `slowPeriod` bars of warmup before first valid output (IsHot = true).
- **Similar:** [CMF](../cmf/Cmf.md), [OBV](../vwad/Vwad.md) | **Complementary:** MACD for price confirmation | **Trading note:** Accumulation/Distribution Oscillator; MACD of A/D Line. Divergence with price = potential reversal.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
The Chaikin Oscillator (ADOSC) is an indicator of an indicator. It applies the MACD formula to the Accumulation/Distribution Line (ADL) instead of the price.
@@ -95,4 +93,4 @@ Validation is performed against **TA-Lib**, **Skender**, **Tulip**, and **Ooples
* **Volatility**: ADOSC is extremely volatile. It whipsaws frequently. It should never be used in isolation.
* **Trend Confirmation**: Use it to confirm a trend, not to predict it. If price is rising but ADOSC is falling (divergence), the rally is running on fumes.
* **Zero Line**: Crosses above zero indicate that short-term accumulation is overpowering long-term accumulation (Bullish). Crosses below zero indicate the opposite (Bearish).
* **Zero Line**: Crosses above zero indicate that short-term accumulation is overpowering long-term accumulation (Bullish). Crosses below zero indicate the opposite (Bearish).
+1 -3
View File
@@ -14,8 +14,6 @@
- Archer On-Balance Volume (AOBV) applies dual exponential smoothing to the classic On-Balance Volume indicator, creating a responsive yet noise-filt...
- No configurable parameters; computation is stateless per bar.
- Output range: Unbounded.
- Requires `> SlowPeriod` bars of warmup before first valid output (IsHot = true).
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Archer On-Balance Volume (AOBV) applies dual exponential smoothing to the classic On-Balance Volume indicator, creating a responsive yet noise-filtered momentum signal. The intersection of fast and slow EMAs provides actionable crossover signals while preserving OBV's core insight: volume precedes price.
@@ -187,4 +185,4 @@ AOBV is a proprietary indicator. Validation is performed against internal consis
- Granville, J. (1963). *Granville's New Key to Stock Market Profits*. Prentice-Hall.
- EverGet. "Archer On-Balance Volume (AOBV)." TradingView Script Library.
- StockCharts. "On Balance Volume (OBV)." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:on_balance_volume_obv)
- StockCharts. "On Balance Volume (OBV)." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:on_balance_volume_obv)
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [cmf.pine](cmf.pine) |
- Chaikin Money Flow (CMF) is the normalized cousin of the Accumulation/Distribution Line.
- Parameterized by `period` (default 20).
- Output range: Unbounded.
- Requires `> period` bars of warmup before first valid output (IsHot = true).
- **Similar:** [Adosc](../adosc/Adosc.md), [MFI](../mfi/Mfi.md) | **Complementary:** RSI | **Trading note:** Chaikin Money Flow; volume-weighted close location within H-L range. +/ indicates buying/selling pressure.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Chaikin Money Flow (CMF) is the normalized cousin of the Accumulation/Distribution Line. While ADL is cumulative and unbounded, CMF oscillates between -1 and +1, measuring the persistence of buying or selling pressure over a rolling window.
@@ -122,4 +120,4 @@ The MFM/MFV calculation is fully vectorizable. The rolling sum phase is inherent
## References
- Chaikin, M. (1996). "Chaikin Money Flow." *Technical Analysis of Stocks & Commodities*.
- StockCharts. "Chaikin Money Flow (CMF)." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:chaikin_money_flow_cmf)
- StockCharts. "Chaikin Money Flow (CMF)." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:chaikin_money_flow_cmf)
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [efi.pine](efi.pine) |
- Elder's Force Index (EFI) quantifies the buying and selling pressure behind price movements by multiplying price change by volume.
- Parameterized by `period` (default 13).
- Output range: Unbounded.
- Requires `> period` bars of warmup before first valid output (IsHot = true).
- **Similar:** [FI](../../oscillators/fi/Fi.md), [MFI](../mfi/Mfi.md) | **Complementary:** EMA for smoothing | **Trading note:** Elder Force Index; price change × volume. Smoothed version identifies trend changes.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Elder's Force Index (EFI) quantifies the buying and selling pressure behind price movements by multiplying price change by volume. Large positive values indicate strong buying pressure (bulls in control), while large negative values reveal strong selling pressure (bears dominant).
@@ -168,4 +166,4 @@ Note: Most libraries use standard EMA without bias correction, causing warmup di
- Elder, A. (1993). "Trading for a Living." John Wiley & Sons.
- Elder, A. (2002). "Come Into My Trading Room." John Wiley & Sons.
- StockCharts. "Force Index." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:force_index)
- Investopedia. "Force Index Definition." [Technical Analysis](https://www.investopedia.com/terms/f/force-index.asp)
- Investopedia. "Force Index Definition." [Technical Analysis](https://www.investopedia.com/terms/f/force-index.asp)
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [eom.pine](eom.pine) |
- Ease of Movement (EOM) quantifies how easily price moves relative to volume.
- Parameterized by `period` (default 14), `volumescale` (default 10000).
- Output range: Unbounded.
- Requires `period + 1` bars of warmup before first valid output (IsHot = true).
- **Similar:** [CMF](../cmf/Cmf.md), [EFI](../efi/Efi.md) | **Complementary:** ATR | **Trading note:** Ease of Movement; volume-normalized price displacement. High = price moves easily on low volume.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Ease of Movement (EOM) quantifies how easily price moves relative to volume. High positive values indicate price is advancing with little resistance (low volume relative to price range), while high negative values reveal price declining easily. Values near zero suggest price is meeting resistance, requiring substantial volume to produce movement.
@@ -187,4 +185,4 @@ Note: External library implementations vary in their handling of volume scaling
- Arms, R.W. Jr. (1994). "Trading Without Fear." John Wiley & Sons.
- StockCharts. "Ease of Movement (EMV)." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:ease_of_movement_emv)
- Investopedia. "Ease of Movement Indicator." [Technical Analysis](https://www.investopedia.com/terms/e/easeofmovement.asp)
- TradingView Wiki. "Ease of Movement." [Pine Script Reference](https://www.tradingview.com/pine-script-reference/)
- TradingView Wiki. "Ease of Movement." [Pine Script Reference](https://www.tradingview.com/pine-script-reference/)
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [evwma.pine](evwma.pine) |
- EVWMA (Elastic Volume Weighted Moving Average) is a volume-adaptive moving average that weights each bar's contribution to the average by its volum...
- Parameterized by `period` (default 20).
- Output range: Unbounded.
- Requires `> period` bars of warmup before first valid output (IsHot = true).
- **Similar:** [VWMA](../vwma/Vwma.md), [VWAP](../vwap/Vwap.md) | **Complementary:** OBV | **Trading note:** Elastic Volume-Weighted MA; adapts weighting dynamically based on volume flow.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
## Introduction
@@ -169,4 +167,4 @@ Known-value tests verify manual calculations against the recursive formula.
- Fries, C. P. "Elastic Volume Weighted Moving Average." Technical analysis research notes.
- Granville, J. "New Key to Stock Market Profits." Prentice-Hall, 1963. (Volume analysis foundations)
- Ehlers, J. F. "Cybernetic Analysis for Stocks and Futures." Wiley, 2004. (Adaptive smoothing concepts)
- Ehlers, J. F. "Cybernetic Analysis for Stocks and Futures." Wiley, 2004. (Adaptive smoothing concepts)
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [iii.pine](iii.pine) |
- The Intraday Intensity Index (III) measures buying and selling pressure by analyzing where the close price falls within the high-low range, weighte...
- Parameterized by `period` (default 14), `cumulative` (default false).
- Output range: Unbounded.
- Requires `period` bars of warmup before first valid output (IsHot = true).
- **Similar:** [CMF](../cmf/Cmf.md), [MFI](../mfi/Mfi.md) | **Complementary:** Volume | **Trading note:** Intraday Intensity Index; measures close position within H-L range relative to volume.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
The Intraday Intensity Index (III) measures buying and selling pressure by analyzing where the close price falls within the high-low range, weighted by volume. Originally developed by David Bostian, this indicator quantifies whether money is flowing into or out of a security on an intraday basis. Values range from -1 (close at low, maximum selling pressure) to +1 (close at high, maximum buying pressure), multiplied by volume for magnitude.
@@ -148,4 +146,4 @@ Validation focuses on internal consistency (streaming vs batch vs span modes).
## References
- Bostian, D. "Intraday Intensity Index." *Technical Analysis of Stocks & Commodities*.
- Arms, R. W. (1989). "The Arms Index (TRIN)." *Dow Jones-Irwin*.
- Arms, R. W. (1989). "The Arms Index (TRIN)." *Dow Jones-Irwin*.
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [kvo.pine](kvo.pine) |
- The Klinger Volume Oscillator (KVO), developed by Stephen Klinger in the 1970s, measures the long-term trend of money flow while remaining sensitiv...
- Parameterized by `fastperiod` (default 34), `slowperiod` (default 55), `signalperiod` (default 13).
- Output range: Unbounded.
- Requires `slowPeriod` bars of warmup before first valid output (IsHot = true).
- **Similar:** [CMF](../cmf/Cmf.md), [Adosc](../adosc/Adosc.md) | **Complementary:** MACD | **Trading note:** Klinger Volume Oscillator; volume-based trend indicator. Signal line crossovers for entries.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
The Klinger Volume Oscillator (KVO), developed by Stephen Klinger in the 1970s, measures the long-term trend of money flow while remaining sensitive to short-term fluctuations. Unlike simple volume indicators, KVO incorporates price direction and range into its volume analysis, creating a comprehensive measure of buying and selling pressure that can identify divergences before they appear in price action.
@@ -183,4 +181,4 @@ $$
- Klinger, S. (1977). "Summing Up Volume." *Stocks & Commodities Magazine*.
- Murphy, J. (1999). *Technical Analysis of the Financial Markets*. New York Institute of Finance.
- https://github.com/mihakralj/pinescript/blob/main/indicators/volume/kvo.md
- https://github.com/mihakralj/pinescript/blob/main/indicators/volume/kvo.md
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [mfi.pine](mfi.pine) |
- Money Flow Index is the volume-weighted cousin of RSI.
- Parameterized by `period` (default 14).
- Output range: Unbounded.
- Requires `> period` bars of warmup before first valid output (IsHot = true).
- **Similar:** [RSI](../../momentum/rsi/Rsi.md), [CMF](../cmf/Cmf.md) | **Complementary:** Volume | **Trading note:** Money Flow Index; volume-weighted RSI. 80/20 overbought/oversold. Divergence signals are powerful.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Money Flow Index is the volume-weighted cousin of RSI. While RSI measures the momentum of price changes alone, MFI incorporates volume to determine whether the price movement has conviction behind it. The result is an oscillator that can identify when strong hands are accumulating or distributing.
@@ -158,4 +156,4 @@ The TP and RMF calculations are fully vectorizable. The directional classificati
- Quong, G. & Soudack, A. (1989). "Money Flow Index." *Technical Analysis of Stocks & Commodities*.
- Investopedia. "Money Flow Index (MFI)." [Definition](https://www.investopedia.com/terms/m/mfi.asp)
- StockCharts. "Money Flow Index (MFI)." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:money_flow_index_mfi)
- StockCharts. "Money Flow Index (MFI)." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:money_flow_index_mfi)
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [nvi.pine](nvi.pine) |
- The Negative Volume Index tracks price changes exclusively on days when trading volume decreases compared to the previous day.
- Parameterized by `startvalue` (default 100.0).
- Output range: Unbounded.
- Requires `> 2` bars of warmup before first valid output (IsHot = true).
- **Similar:** [PVI](../pvi/Pvi.md), [OBV](../vwad/Vwad.md) | **Complementary:** 255-day MA of NVI | **Trading note:** Negative Volume Index; tracks price on low-volume days where smart money operates.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
The Negative Volume Index tracks price changes exclusively on days when trading volume decreases compared to the previous day. The underlying theory: institutional investors—the "smart money"—prefer to accumulate or distribute positions during quiet, low-volume periods, while retail traders drive high-volume days with more emotional, less informed decisions.
@@ -195,4 +193,4 @@ NVI and PVI provide complementary signals:
- Fosback, N. (1976). *Stock Market Logic*. Institute for Econometric Research.
- Investopedia. "Negative Volume Index (NVI)." [Definition](https://www.investopedia.com/terms/n/nvi.asp)
- StockCharts. "Negative Volume Index (NVI)." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:negative_volume_index)
- TradingView. "PineScript ta.nvi()." [Reference](https://www.tradingview.com/pine-script-reference/v5/#fun_ta{dot}nvi)
- TradingView. "PineScript ta.nvi()." [Reference](https://www.tradingview.com/pine-script-reference/v5/#fun_ta{dot}nvi)
+1 -3
View File
@@ -14,8 +14,6 @@
- On Balance Volume distills the relationship between price and volume into a single cumulative indicator.
- No configurable parameters; computation is stateless per bar.
- Output range: Unbounded.
- Requires `> 2` bars of warmup before first valid output (IsHot = true).
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
On Balance Volume distills the relationship between price and volume into a single cumulative indicator. The premise is elegantly simple: volume flows into a security when it closes higher, and flows out when it closes lower. OBV tracks this flow as a running total, creating a momentum indicator that often leads price movements.
@@ -196,4 +194,4 @@ The slope of OBV indicates buying/selling intensity:
- Murphy, J. (1999). *Technical Analysis of the Financial Markets*. New York Institute of Finance.
- Investopedia. "On-Balance Volume (OBV)." [Definition](https://www.investopedia.com/terms/o/onbalancevolume.asp)
- StockCharts. "On Balance Volume (OBV)." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:on_balance_volume_obv)
- TradingView. "PineScript ta.obv()." [Reference](https://www.tradingview.com/pine-script-reference/v5/#fun_ta{dot}obv)
- TradingView. "PineScript ta.obv()." [Reference](https://www.tradingview.com/pine-script-reference/v5/#fun_ta{dot}obv)
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [pvd.pine](pvd.pine) |
- Price Volume Divergence (PVD) quantifies the disagreement between price momentum and volume momentum.
- Parameterized by `priceperiod` (default 14), `volumeperiod` (default 14), `smoothingperiod` (default 3).
- Output range: Unbounded.
- Requires 1 bar of warmup before first valid output (IsHot = true).
- **Similar:** [PVI](../pvi/Pvi.md), [NVI](../nvi/Nvi.md) | **Complementary:** Volume | **Trading note:** Price-Volume Divergence; measures disagreement between price and volume trends.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Price Volume Divergence (PVD) quantifies the disagreement between price momentum and volume momentum. The indicator identifies situations where price movement lacks volume confirmation—a classic warning signal that the current trend may be weakening or about to reverse.
@@ -200,4 +198,4 @@ PVD is a custom indicator not found in standard technical analysis libraries. Va
- Dow, C. (1900-1902). *Wall Street Journal* editorials on price-volume relationships.
- Murphy, J. J. (1999). *Technical Analysis of the Financial Markets*. New York Institute of Finance.
- Achelis, S. B. (2001). *Technical Analysis from A to Z*. McGraw-Hill.
- Achelis, S. B. (2001). *Technical Analysis from A to Z*. McGraw-Hill.
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [pvi.pine](pvi.pine) |
- The Positive Volume Index tracks price changes exclusively on days when trading volume increases compared to the previous day.
- Parameterized by `startvalue` (default 100.0).
- Output range: Unbounded.
- Requires `> 2` bars of warmup before first valid output (IsHot = true).
- **Similar:** [NVI](../nvi/Nvi.md), [OBV](../vwad/Vwad.md) | **Complementary:** MA crossover | **Trading note:** Positive Volume Index; tracks price on high-volume days. Used with NVI for smart/uninformed money.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
The Positive Volume Index tracks price changes exclusively on days when trading volume increases compared to the previous day. The underlying theory: retail investors—the "uninformed crowd"—drive high-volume trading days, often reacting emotionally to news and price movements. Institutional investors prefer to operate during quieter periods to avoid moving markets.
@@ -194,4 +192,4 @@ The danger signal: **PVI rising while NVI falling**. Retail enthusiasm without i
- Fosback, N. (1976). *Stock Market Logic*. Institute for Econometric Research.
- Investopedia. "Positive Volume Index (PVI)." [Definition](https://www.investopedia.com/terms/p/pvi.asp)
- StockCharts. "Positive Volume Index (PVI)." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:positive_volume_index)
- TradingView. "PineScript ta.pvi()." [Reference](https://www.tradingview.com/pine-script-reference/v5/#fun_ta{dot}pvi)
- TradingView. "PineScript ta.pvi()." [Reference](https://www.tradingview.com/pine-script-reference/v5/#fun_ta{dot}pvi)
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [pvo.pine](pvo.pine) |
- The Percentage Volume Oscillator (PVO) measures the difference between two exponential moving averages of volume, expressed as a percentage of the ...
- Parameterized by `fastperiod` (default 12), `slowperiod` (default 26), `signalperiod` (default 9).
- Output range: Unbounded.
- Requires `slowPeriod` bars of warmup before first valid output (IsHot = true).
- **Similar:** [PPO](../../momentum/ppo/Ppo.md), [VO](../vo/Vo.md) | **Complementary:** Price oscillators | **Trading note:** Percentage Volume Oscillator; MACD concept applied to volume. Detects volume surges.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
The Percentage Volume Oscillator (PVO) measures the difference between two exponential moving averages of volume, expressed as a percentage of the slower EMA. Essentially the MACD of volume, PVO identifies whether volume is expanding (accumulation) or contracting (distribution) relative to its recent history. This percentage normalization makes it comparable across instruments with vastly different volume profiles.
@@ -212,4 +210,4 @@ PVO's recursive EMA structure limits SIMD parallelization. The span-based `Calcu
- Murphy, J. (1999). *Technical Analysis of the Financial Markets*. New York Institute of Finance.
- Achelis, S. (2001). *Technical Analysis from A to Z*. McGraw-Hill.
- https://school.stockcharts.com/doku.php?id=technical_indicators:percentage_volume_oscillator_pvo
- https://github.com/mihakralj/pinescript/blob/main/indicators/volume/pvo.md
- https://github.com/mihakralj/pinescript/blob/main/indicators/volume/pvo.md
+1 -3
View File
@@ -14,8 +14,6 @@
- Price Volume Rank distills the price-volume relationship into a simple categorical indicator.
- No configurable parameters; computation is stateless per bar.
- Output range: Unbounded.
- Requires 1 bar of warmup before first valid output (IsHot = true).
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Price Volume Rank distills the price-volume relationship into a simple categorical indicator. Rather than producing a continuous value, PVR returns one of five discrete states (0-4) that classify the current bar's price and volume behavior relative to the previous bar. This creates an instant "market condition" snapshot.
@@ -203,4 +201,4 @@ Track PVR distribution over rolling windows:
- Arms, R. (1989). *Volume Cycles in the Stock Market*. Equis International.
- Blau, W. (1995). *Momentum, Direction, and Divergence*. Wiley.
- Elder, A. (1993). *Trading for a Living*. Wiley.
- Murphy, J. (1999). *Technical Analysis of the Financial Markets*. New York Institute of Finance.
- Murphy, J. (1999). *Technical Analysis of the Financial Markets*. New York Institute of Finance.
+1 -3
View File
@@ -14,8 +14,6 @@
- Price Volume Trend refines the OBV concept by weighting volume according to the percentage price change rather than using an all-or-nothing approach.
- No configurable parameters; computation is stateless per bar.
- Output range: Unbounded.
- Requires `> 2` bars of warmup before first valid output (IsHot = true).
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Price Volume Trend refines the OBV concept by weighting volume according to the percentage price change rather than using an all-or-nothing approach. Where OBV assigns the entire bar's volume to either buyers or sellers, PVT scales the volume contribution by the relative price movement—a 1% move adds only 1% of volume to the running total.
@@ -216,4 +214,4 @@ The default signal period is typically 14-21 bars.
- Murphy, J. (1999). *Technical Analysis of the Financial Markets*. New York Institute of Finance.
- Investopedia. "Price Volume Trend (PVT)." [Definition](https://www.investopedia.com/terms/p/pricevolumetrend.asp)
- StockCharts. "Price Volume Trend." [Technical Indicators](https://school.stockcharts.com/doku.php?id=technical_indicators:price_volume_trend_pvt)
- TradingView. "Volume Indicators." [Reference](https://www.tradingview.com/scripts/volume/)
- TradingView. "Volume Indicators." [Reference](https://www.tradingview.com/scripts/volume/)
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [tvi.pine](tvi.pine) |
- Trade Volume Index refines the relationship between price and volume by introducing a threshold filter.
- Parameterized by `mintick` (default 0.125).
- Output range: Unbounded.
- Requires `> 2` bars of warmup before first valid output (IsHot = true).
- **Similar:** [OBV](../vwad/Vwad.md), [CMF](../cmf/Cmf.md) | **Complementary:** Price trend | **Trading note:** Trade Volume Index; tick-based volume accumulation. Directional volume flow.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Trade Volume Index refines the relationship between price and volume by introducing a threshold filter. Unlike OBV which responds to any price change, TVI only changes direction when price movement exceeds a minimum tick threshold. This "sticky direction" behavior filters out noise from insignificant price fluctuations, allowing the indicator to better capture genuine accumulation and distribution.
@@ -231,4 +229,4 @@ The minTick should generally match or exceed the instrument's minimum price incr
- Blau, W. (1995). *Momentum, Direction, and Divergence*. Wiley.
- Blau, W. (1993). "The Trade Volume Index." *Technical Analysis of Stocks & Commodities*.
- Achelis, S. (2001). *Technical Analysis from A to Z*. McGraw-Hill.
- TradingView. "PineScript TVI Implementation." Community Scripts.
- TradingView. "PineScript TVI Implementation." Community Scripts.
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [twap.pine](twap.pine) |
- Time Weighted Average Price (TWAP) calculates the average price over a period by giving equal weight to each price point, regardless of volume.
- Parameterized by `period` (default defaultperiod).
- Output range: Unbounded.
- Requires `> 1` bars of warmup before first valid output (IsHot = true).
- **Similar:** [VWAP](../vwap/Vwap.md) | **Complementary:** Volume | **Trading note:** Time-Weighted Average Price; equal time weighting vs volume weighting. Algorithmic execution benchmark.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Time Weighted Average Price (TWAP) calculates the average price over a period by giving equal weight to each price point, regardless of volume. Unlike VWAP which emphasizes high-volume periods, TWAP treats every moment as equally important. This makes it a pure temporal benchmark—ideal for evaluating execution quality when volume patterns could bias the analysis.
@@ -271,4 +269,4 @@ Target: Minimize absolute slippage to achieve the unbiased average price.
- Almgren, R., & Chriss, N. (2001). "Optimal Execution of Portfolio Transactions." *Journal of Risk*.
- Berkowitz, S., Logue, D., & Noser, E. (1988). "The Total Cost of Transactions on the NYSE." *Journal of Finance*.
- Kissell, R., & Glantz, M. (2003). *Optimal Trading Strategies*. AMACOM.
- TradingView. "PineScript TWAP Implementation." Community Scripts.
- TradingView. "PineScript TWAP Implementation." Community Scripts.
+1 -3
View File
@@ -14,8 +14,6 @@
- Volume Accumulation (VA) measures the cumulative flow of volume weighted by where price closes relative to the bar's midpoint.
- No configurable parameters; computation is stateless per bar.
- Output range: Unbounded.
- Requires `> 1` bars of warmup before first valid output (IsHot = true).
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Volume Accumulation (VA) measures the cumulative flow of volume weighted by where price closes relative to the bar's midpoint. When price closes above the midpoint, volume is considered buying pressure; when below, selling pressure. The cumulative sum reveals the net directional conviction of market participants over time.
@@ -246,4 +244,4 @@ var smoothedVa = new Ema(5); // 5-period smoothing
- Williams, L. (1979). "How I Made One Million Dollars Last Year Trading Commodities." Windsor Books.
- Granville, J. (1976). "Granville's New Strategy of Daily Stock Market Timing." Prentice-Hall.
- Achelis, S. (2000). "Technical Analysis from A to Z." McGraw-Hill.
- TradingView. "PineScript Volume Accumulation." Community Reference.
- TradingView. "PineScript Volume Accumulation." Community Reference.
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [vf.pine](vf.pine) |
- Volume Force (VF) quantifies the strength of volume behind price movements by multiplying price change by volume and applying EMA smoothing with wa...
- Parameterized by `period` (default 14).
- Output range: Unbounded.
- Requires `> period` bars of warmup before first valid output (IsHot = true).
- **Similar:** [MFI](../mfi/Mfi.md), [CMF](../cmf/Cmf.md) | **Complementary:** RSI | **Trading note:** Volume Force; measures directional volume pressure. Positive = buyers dominant.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Volume Force (VF) quantifies the strength of volume behind price movements by multiplying price change by volume and applying EMA smoothing with warmup compensation. The result is a momentum-style oscillator that distinguishes between genuine volume-backed moves and hollow price action.
@@ -296,4 +294,4 @@ VF occupies a middle ground: more responsive than OBV/CMF (not cumulative), smoo
- Elder, A. (1993). "Trading for a Living." John Wiley & Sons.
- Ehlers, J. (2001). "Rocket Science for Traders." John Wiley & Sons.
- Murphy, J. (1999). "Technical Analysis of the Financial Markets." New York Institute of Finance.
- TradingView. "PineScript Volume Force." Community Reference.
- TradingView. "PineScript Volume Force." Community Reference.
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [vo.pine](vo.pine) |
- The Volume Oscillator (VO) measures the difference between two moving averages of volume, expressed as a percentage.
- Parameterized by `shortperiod` (default 5), `longperiod` (default 10), `signalperiod` (default 10).
- Output range: Unbounded.
- Requires 1 bar of warmup before first valid output (IsHot = true).
- **Similar:** [PVO](../pvo/Pvo.md), [VROC](../vroc/Vroc.md) | **Complementary:** Price confirmation | **Trading note:** Volume Oscillator; difference of two volume MAs. Confirms price moves with volume expansion.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
The Volume Oscillator (VO) measures the difference between two moving averages of volume, expressed as a percentage. It helps identify changes in volume trends and potential momentum shifts by comparing short-term volume activity against longer-term volume norms.
@@ -183,4 +181,4 @@ With defaults (5, 10, 10): ~328 bytes per instance.
- Murphy, J. J. (1999). *Technical Analysis of the Financial Markets*. New York Institute of Finance.
- Achelis, S. B. (2001). *Technical Analysis from A to Z*. McGraw-Hill.
- PineScript Reference: vo.pine
- PineScript Reference: vo.pine
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [vroc.pine](vroc.pine) |
- VROC (Volume Rate of Change) measures the percentage or absolute change in volume over a specified lookback period.
- Parameterized by `period` (default 12), `usepercent` (default true).
- Output range: Unbounded.
- Requires `> period + 1` bars of warmup before first valid output (IsHot = true).
- **Similar:** [VO](../vo/Vo.md), [PVO](../pvo/Pvo.md) | **Complementary:** Price ROC | **Trading note:** Volume Rate of Change; percentage change in volume. Spikes indicate potential breakouts.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
VROC (Volume Rate of Change) measures the percentage or absolute change in volume over a specified lookback period. Unlike moving average-based volume indicators that smooth data, VROC provides a direct comparison between current volume and historical volume, making it particularly useful for detecting sudden volume surges or contractions that may signal significant market events.
@@ -145,4 +143,4 @@ Per instance: `8 bytes × (period + 1)` for the ring buffer plus ~32 bytes for s
- Appel, G., & Hitschler, F. (1979). *Stock Market Trading Systems*. Dow Jones-Irwin.
- Murphy, J. J. (1999). *Technical Analysis of the Financial Markets*. New York Institute of Finance.
- Achelis, S. B. (2001). *Technical Analysis from A to Z*. McGraw-Hill.
- Achelis, S. B. (2001). *Technical Analysis from A to Z*. McGraw-Hill.
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [vwad.pine](vwad.pine) |
- Volume Weighted Accumulation/Distribution (VWAD) takes the classic ADL concept and asks a sharper question: not just "where did the close fall in t...
- Parameterized by `period` (default 20).
- Output range: Unbounded.
- Requires `> period` bars of warmup before first valid output (IsHot = true).
- **Similar:** [CMF](../cmf/Cmf.md), [OBV](../vwad/Vwad.md) | **Complementary:** MACD | **Trading note:** Volume-Weighted A/D; running sum of volume-weighted price position. Classic accumulation/distribution.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Volume Weighted Accumulation/Distribution (VWAD) takes the classic ADL concept and asks a sharper question: not just "where did the close fall in the range?" but "how significant was this bar's volume compared to recent activity?"
@@ -192,4 +190,4 @@ VWAD is a proprietary indicator. Validation is performed against the PineScript
## References
- Chaikin, M. (1996). "Accumulation/Distribution Line." *Technical Analysis of Stocks & Commodities*.
- QuanTAlib. "Volume Weighted Accumulation/Distribution." [PineScript Reference](https://github.com/mihakralj/pinescript/blob/main/indicators/volume/vwad.md)
- QuanTAlib. "Volume Weighted Accumulation/Distribution." [PineScript Reference](https://github.com/mihakralj/pinescript/blob/main/indicators/volume/vwad.md)
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [vwap.pine](vwap.pine) |
- VWAP (Volume Weighted Average Price) calculates the cumulative average price weighted by trading volume, typically reset at session boundaries.
- Parameterized by `period` (default 0).
- Output range: Unbounded.
- Requires `> 1` bars of warmup before first valid output (IsHot = true).
- **Similar:** [TWAP](../twap/Twap.md), [EVWMA](../evwma/Evwma.md) | **Complementary:** VWAP bands | **Trading note:** Volume-Weighted Average Price; institutional benchmark. Above VWAP = favorable fill for buyers.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
VWAP (Volume Weighted Average Price) calculates the cumulative average price weighted by trading volume, typically reset at session boundaries. It represents the true average price at which a security has traded throughout the period, giving more weight to prices where higher volume occurred. This implementation supports flexible period-based resets rather than traditional session-based anchoring.
@@ -183,4 +181,4 @@ VWAP implementations vary primarily in reset behavior. This implementation uses
- Berkowitz, S., Logue, D., & Noser, E. (1988). "The Total Cost of Transactions on the NYSE." *Journal of Finance*.
- Madhavan, A. (2002). "VWAP Strategies." *Trading*, Spring 2002.
- Kissell, R. (2006). "The Science of Algorithmic Trading and Portfolio Management." *Academic Press*.
- Kissell, R. (2006). "The Science of Algorithmic Trading and Portfolio Management." *Academic Press*.
+2 -4
View File
@@ -13,9 +13,7 @@
| **PineScript** | [vwma.pine](vwma.pine) |
- VWMA (Volume Weighted Moving Average) calculates a moving average where each price is weighted by its corresponding volume over a specified lookbac...
- Parameterized by `period` (default 20).
- Output range: Unbounded.
- Requires `> period` bars of warmup before first valid output (IsHot = true).
- **Similar:** [EVWMA](../evwma/Evwma.md), [SMA](../../trends_FIR/sma/Sma.md) | **Complementary:** OBV | **Trading note:** Volume-Weighted MA; weights price by volume. More responsive during high-volume bars.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
VWMA (Volume Weighted Moving Average) calculates a moving average where each price is weighted by its corresponding volume over a specified lookback period. Unlike VWAP which accumulates from a reset point, VWMA uses a sliding window that continuously drops old values, making it a true moving average. Bars with higher volume contribute more to the average, surfacing price levels where institutional activity concentrated.
@@ -181,4 +179,4 @@ For batch calculation from scratch, SIMD can parallelize:
- Arms, R. (1989). "Volume Cycles in the Stock Market." Equis International.
- Achelis, S. (2000). "Technical Analysis from A to Z." McGraw-Hill.
- TradingView. "Pine Script VWMA Reference." [tradingview.com](https://www.tradingview.com/pine-script-reference/v5/#fun_ta.vwma)
- TradingView. "Pine Script VWMA Reference." [tradingview.com](https://www.tradingview.com/pine-script-reference/v5/#fun_ta.vwma)
+1 -3
View File
@@ -14,8 +14,6 @@
- Williams Accumulation/Distribution (WAD) is Larry Williams' contribution to the volume analysis toolkit.
- No configurable parameters; computation is stateless per bar.
- Output range: Unbounded.
- Requires 1 bar of warmup before first valid output (IsHot = true).
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Williams Accumulation/Distribution (WAD) is Larry Williams' contribution to the volume analysis toolkit. Unlike the standard Accumulation/Distribution Line that uses the close's position within the day's range, WAD incorporates **True Range** concepts. This gives it a different perspective on buying and selling pressure.
@@ -140,4 +138,4 @@ O(1) cumulative. No window, no smoothing. The conditional branch (up day vs down
## References
- Williams, L. (1979). "How I Made One Million Dollars... Last Year... Trading Commodities." Windsor Books.
- https://school.stockcharts.com/doku.php?id=technical_indicators:williams_ad
- https://school.stockcharts.com/doku.php?id=technical_indicators:williams_ad