mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-13 08:08:05 +00:00
feat(dynamics): add PlusDI, MinusDI, PlusDM, MinusDM indicators
Complete thin Dx-composition wrapper indicators with full test coverage: - PlusDi/MinusDi: Directional Indicator wrappers (DiPlus/DiMinus from Dx) - PlusDm/MinusDm: Directional Movement wrappers (DmPlus/DmMinus from Dx) - Individual validation tests per indicator directory (TALib, Skender, bounds) - Combined unit tests (DiDm.Tests.cs) and validation tests (DiDm.Validation.Tests.cs) - Quantower wrappers + tests for all 4 indicators - PineScript v6 implementations with compensated RMA - Normalized .md documentation for all indicators and categories - 182 tests passing, 0 failures
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
# Volume
|
||||
|
||||
> "It takes volume to make prices move." — Charles Dow
|
||||
|
||||
Volume is market fuel. Price tells what happened; volume tells how hard the market worked to make it happen. In a world of algorithmic trading and dark pools, volume analysis reveals where money actually flows.
|
||||
|
||||
| Indicator | Full Name | Description |
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# ADL: Accumulation/Distribution Line
|
||||
|
||||
> *Volume precedes price.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires 1 bar of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Volume precedes price." — Old Wall Street Adage
|
||||
|
||||
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?"
|
||||
|
||||
Unlike On-Balance Volume (OBV), which treats every up-day as 100% buying, ADL is nuanced. It looks at *where* the price closed within the day's range. A close near the high on massive volume screams "Accumulation." A close near the low on massive volume screams "Distribution."
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# ADOSC: Chaikin A/D Oscillator
|
||||
|
||||
> *Momentum precedes price. Volume momentum precedes price momentum.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `slowPeriod` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Momentum precedes price. Volume momentum precedes price momentum."
|
||||
|
||||
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.
|
||||
|
||||
While the ADL is great for spotting long-term flow, it can be sluggish. ADOSC acts as a turbocharger, measuring the *momentum* of that flow. It anticipates changes in the ADL, often signaling a reversal before the ADL itself turns.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# AOBV: Archer On-Balance Volume
|
||||
|
||||
> *OBV told me what was happening. AOBV told me when to act.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> SlowPeriod` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "OBV told me what was happening. AOBV told me when to act." — Adapted trader wisdom
|
||||
|
||||
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.
|
||||
|
||||
Developed by EverGet (known as "Archer" in the TradingView community), AOBV addresses OBV's fundamental weakness—its sensitivity to single high-volume bars that can distort the cumulative reading. By smoothing with EMAs of period 4 (fast) and 14 (slow), AOBV filters noise while maintaining responsiveness to genuine accumulation/distribution shifts.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# CMF: Chaikin Money Flow
|
||||
|
||||
> *Money flow tells you what the big players are doing. CMF tells you if they're winning.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> period` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Money flow tells you what the big players are doing. CMF tells you if they're winning." — Marc Chaikin
|
||||
|
||||
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.
|
||||
|
||||
The genius of CMF is that it answers not just "Are they buying?" but "Have they been buying *consistently*?" A CMF reading of +0.25 means 25% more money flow went into accumulation than distribution over the lookback period.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# EFI: Elder's Force Index
|
||||
|
||||
> *Force Index combines price movement with volume to measure the power behind every move. It's the market's polygraph test.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> period` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Force Index combines price movement with volume to measure the power behind every move. It's the market's polygraph test." — Dr. Alexander Elder
|
||||
|
||||
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).
|
||||
|
||||
The genius of EFI lies in its integration of three essential market elements: direction (price change sign), extent (price change magnitude), and conviction (volume). A $1 move on 1 million shares tells a very different story than the same move on 10,000 shares.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# EOM: Ease of Movement
|
||||
|
||||
> *Ease of Movement reveals when price advances effortlessly versus when it struggles against resistance. It's the market's accelerometer.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `period + 1` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Ease of Movement reveals when price advances effortlessly versus when it struggles against resistance. It's the market's accelerometer." — Richard W. Arms Jr.
|
||||
|
||||
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.
|
||||
|
||||
The elegance of EOM lies in its normalization: it divides price change by a "box ratio" that accounts for both volume and price range. This makes the indicator comparable across securities with different price and volume characteristics.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# EVWMA: Elastic Volume Weighted Moving Average
|
||||
|
||||
> *Volume is the one technical indicator that never lies.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> period` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Volume is the one technical indicator that never lies." — Joe Granville
|
||||
|
||||
## Introduction
|
||||
|
||||
EVWMA (Elastic Volume Weighted Moving Average) is a volume-adaptive moving average that weights each bar's contribution to the average by its volume relative to a rolling volume sum. High-volume bars shift the average more aggressively toward the current price; low-volume bars barely nudge it. The "elastic" behavior emerges from volume-proportional blending: the smoothing factor is not fixed (like EMA's alpha) but varies dynamically with each bar's volume share.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# III: Intraday Intensity Index
|
||||
|
||||
> *Where the close lands within the day's range tells you who won the battle—bulls or bears. Volume tells you how hard they fought.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `period` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Where the close lands within the day's range tells you who won the battle—bulls or bears. Volume tells you how hard they fought."
|
||||
|
||||
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.
|
||||
|
||||
## Historical Context
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# KVO: Klinger Volume Oscillator
|
||||
|
||||
> *Volume is the fuel that drives the market train.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `slowPeriod` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Volume is the fuel that drives the market train."
|
||||
|
||||
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.
|
||||
|
||||
## Historical Context
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# MFI: Money Flow Index
|
||||
|
||||
> *Volume confirms price, but money flow confirms intent.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> period` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Volume confirms price, but money flow confirms intent." — Gene Quong & Avrum Soudack
|
||||
|
||||
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.
|
||||
|
||||
The innovation of MFI is answering not just "Is price going up?" but "Is significant money pushing price up?" A stock rising on thin volume produces a different MFI reading than one rising on heavy institutional participation.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# NVI: Negative Volume Index
|
||||
|
||||
> *Low volume suggests smart money is at work; high volume days are for the crowd.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> 2` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Low volume suggests smart money is at work; high volume days are for the crowd." — Norman Fosback
|
||||
|
||||
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.
|
||||
|
||||
NVI essentially asks: "What are prices doing when the crowd isn't participating?" If NVI rises while volume falls, smart money may be quietly buying. If NVI falls on low volume, institutions might be exiting positions without attracting attention.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# OBV: On Balance Volume
|
||||
|
||||
> *Volume is the fuel that drives price.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> 2` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Volume is the fuel that drives price." — Joseph Granville
|
||||
|
||||
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.
|
||||
|
||||
Granville's insight was that volume precedes price. Institutional buying or selling shows up in volume before it manifests in price trends. When OBV rises while price remains flat, accumulation is occurring—a potential bullish signal. When OBV falls despite stable prices, distribution may be underway.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# PVD: Price Volume Divergence
|
||||
|
||||
> *When price and volume disagree, one of them is lying.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires 1 bar of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "When price and volume disagree, one of them is lying."
|
||||
|
||||
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.
|
||||
|
||||
## Historical Context
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# PVI: Positive Volume Index
|
||||
|
||||
> *High volume days reveal where retail traders swarm; smart money prefers the quiet.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> 2` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "High volume days reveal where retail traders swarm; smart money prefers the quiet." — Norman Fosback
|
||||
|
||||
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.
|
||||
|
||||
PVI essentially asks: "What are prices doing when the crowd is most active?" If PVI rises on high volume, retail enthusiasm is driving prices up. If PVI falls on high volume, retail panic may be pushing prices down. Either way, this represents the emotional, less-informed segment of the market.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# PVO: Percentage Volume Oscillator
|
||||
|
||||
> *Volume precedes price—PVO measures whether the market is inhaling or exhaling.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `slowPeriod` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Volume precedes price—PVO measures whether the market is inhaling or exhaling."
|
||||
|
||||
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.
|
||||
|
||||
## Historical Context
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# PVR: Price Volume Rank
|
||||
|
||||
> *The relationship between price and volume reveals the conviction behind market moves.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires 1 bar of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "The relationship between price and volume reveals the conviction behind market moves." — Technical Analysis Axiom
|
||||
|
||||
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.
|
||||
|
||||
The elegance of PVR lies in its simplicity: it answers two questions simultaneously—is price rising or falling, and is volume supporting that move? The four non-zero categories represent the classic volume confirmation matrix, while zero indicates price equilibrium.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# PVT: Price Volume Trend
|
||||
|
||||
> *Volume tells you about the intensity of price moves, but PVT tells you what volume is actually accomplishing.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> 2` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Volume tells you about the intensity of price moves, but PVT tells you what volume is actually accomplishing." — Unknown
|
||||
|
||||
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.
|
||||
|
||||
This proportional weighting makes PVT more sensitive to the magnitude of price changes, not just their direction. A large price move with moderate volume registers more strongly than a tiny price move with massive volume—aligning the indicator more closely with price momentum.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# TVI: Trade Volume Index
|
||||
|
||||
> *The direction of money flow matters more than the magnitude of price change.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> 2` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "The direction of money flow matters more than the magnitude of price change." — William Blau
|
||||
|
||||
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.
|
||||
|
||||
The insight behind TVI is that small price movements within the bid-ask spread or normal market noise shouldn't flip the volume attribution. Only when buyers or sellers demonstrate enough conviction to move price beyond a meaningful threshold should the volume be credited to that side.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# TWAP: Time Weighted Average Price
|
||||
|
||||
> *Equal time, equal weight—the simplest benchmark refuses to let any single moment dominate the conversation.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> 1` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Equal time, equal weight—the simplest benchmark refuses to let any single moment dominate the conversation." — Anonymous Quant
|
||||
|
||||
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.
|
||||
|
||||
The elegance of TWAP lies in its simplicity: accumulate prices, count observations, divide. No volume weighting, no complex adjustments. Just a running average that answers the question: "What was the typical price during this period?"
|
||||
|
||||
+2
-2
@@ -1,5 +1,7 @@
|
||||
# VA: Volume Accumulation
|
||||
|
||||
> *Volume tells you who's winning the argument between bulls and bears—VA keeps a running tally of the score.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> 1` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Volume tells you who's winning the argument between bulls and bears—VA keeps a running tally of the score." — Anonymous Trader
|
||||
|
||||
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.
|
||||
|
||||
Unlike the Accumulation/Distribution Line (ADL) which uses the full bar range, VA simplifies to the midpoint—a cleaner measure that's less sensitive to extreme wicks. This makes VA particularly useful in markets prone to liquidity spikes that create artificial range extensions.
|
||||
|
||||
+2
-2
@@ -1,5 +1,7 @@
|
||||
# VF: Volume Force
|
||||
|
||||
> *Price without volume is like a punch without body weight behind it—VF measures the momentum of conviction.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> period` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Price without volume is like a punch without body weight behind it—VF measures the momentum of conviction." — Anonymous Quant
|
||||
|
||||
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.
|
||||
|
||||
Unlike simple volume indicators that ignore direction, VF combines directional price change with volume intensity. Large volumes during significant price moves produce high VF readings; large volumes during flat price action contribute nothing. This selectivity makes VF particularly effective at filtering noise from signal.
|
||||
|
||||
+2
-2
@@ -1,5 +1,7 @@
|
||||
# VO: Volume Oscillator
|
||||
|
||||
> *Volume tells us the conviction behind price moves—the oscillator reveals when that conviction is accelerating or fading.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires 1 bar of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Volume tells us the conviction behind price moves—the oscillator reveals when that conviction is accelerating or fading."
|
||||
|
||||
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.
|
||||
|
||||
## Historical Context
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# VROC: Volume Rate of Change
|
||||
|
||||
> *Yesterday's volume is ancient history; what matters is how fast it's changing.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> period + 1` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Yesterday's volume is ancient history; what matters is how fast it's changing."
|
||||
|
||||
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.
|
||||
|
||||
## Historical Context
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# VWAD: Volume Weighted Accumulation/Distribution
|
||||
|
||||
> *The market's memory isn't just about price—it's about who showed up with conviction.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> period` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "The market's memory isn't just about price—it's about who showed up with conviction."
|
||||
|
||||
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?"
|
||||
|
||||
Traditional ADL treats all bars equally—a 100-share bar and a 10-million-share bar contribute the same mathematical weight if their MFM is identical. VWAD recognizes that volume concentration matters. A high-volume bar during a period of thin trading represents institutional commitment; the same MFM reading during heavy volume is just noise in the crowd.
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# VWAP: Volume Weighted Average Price
|
||||
|
||||
> *VWAP doesn't predict where price will go—it reveals where institutional money has already committed.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> 1` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "VWAP doesn't predict where price will go—it reveals where institutional money has already committed."
|
||||
|
||||
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.
|
||||
|
||||
## Historical Context
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# VWMA: Volume Weighted Moving Average
|
||||
|
||||
> *VWMA reveals where the smart money traded—not just where price went, but where conviction backed the moves.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires `> period` bars of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "VWMA reveals where the smart money traded—not just where price went, but where conviction backed the moves."
|
||||
|
||||
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.
|
||||
|
||||
## Historical Context
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# WAD: Williams Accumulation/Distribution
|
||||
|
||||
> *Volume is the fuel that drives price.*
|
||||
|
||||
| Property | Value |
|
||||
| ---------------- | -------------------------------- |
|
||||
| **Category** | Volume |
|
||||
@@ -16,8 +18,6 @@
|
||||
- Requires 1 bar of warmup before first valid output (IsHot = true).
|
||||
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
|
||||
|
||||
> "Volume is the fuel that drives price." — Larry Williams
|
||||
|
||||
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.
|
||||
|
||||
## Historical Context
|
||||
|
||||
Reference in New Issue
Block a user