Overview
This strategy models low-volume node behavior by identifying low-participation price zones and monitoring how price reacts when revisiting them.
Low-volume nodes often behave as areas where price either:
- rejects sharply due to lack of acceptance, or
- moves quickly through if accepted The script attempts to capture both reactions using a simplified rolling-volume imbalance model.
Strategy Logic
LVN Approximation
Since Pine Script has limited native volume-profile access in strategy scripts, this model approximates low-volume nodes using:
- rolling average price
- ATR-based zone width
- relative low-volume detection
Rejection Setup
- Price enters the LVN zone
- Fails to remain there
- Closes back outside the zone
Acceptance Setup
- Price enters LVN
- Holds beyond zone boundary
- Signals continuation potential
Risk Management
- ATR-based stop-loss
- Fixed risk-to-reward targets
- Adaptive to volatility conditions
Intended Use
This strategy is designed for:
- testing auction-market concepts
- studying imbalance zones
- experimenting with value/acceptance behavior
Results vary by symbol and timeframe.
Pine Script v6 Strategy Code
//@version=6
strategy("LVN Rejection / Acceptance Strategy", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=5)
// ───── INPUTS ─────
zoneLen = input.int(40, "LVN Detection Length")
atrLen = input.int(14, "ATR Length")
zoneWidth = input.float(0.8, "LVN Width ATR")
stopMult = input.float(1.5, "Stop ATR Multiplier")
rr = input.float(2.0, "Risk Reward")
// ───── LVN APPROXIMATION ─────
basis = ta.sma(close, zoneLen)
atrVal = ta.atr(atrLen)
lvnUpper = basis + atrVal * zoneWidth
lvnLower = basis - atrVal * zoneWidth
// Relative volume check
avgVol = ta.sma(volume, zoneLen)
lowVol = volume < avgVol * 0.8
// ───── REJECTION / ACCEPTANCE LOGIC ─────
bullReject = low < lvnLower and close > lvnLower and lowVol
bearReject = high > lvnUpper and close < lvnUpper and lowVol
bullAccept = close > lvnUpper and close[1] > lvnUpper
bearAccept = close < lvnLower and close[1] < lvnLower
// ───── ENTRY CONDITIONS ─────
longCondition = bullReject or bullAccept
shortCondition = bearReject or bearAccept
if longCondition and strategy.position_size == 0
strategy.entry("Long", strategy.long)
if shortCondition and strategy.position_size == 0
strategy.entry("Short", strategy.short)
// ───── RISK MANAGEMENT ─────
longStop = strategy.position_avg_price - atrVal * stopMult
longTarget = strategy.position_avg_price + atrVal * stopMult * rr
shortStop = strategy.position_avg_price + atrVal * stopMult
shortTarget = strategy.position_avg_price - atrVal * stopMult * rr
strategy.exit("Exit Long", from_entry="Long", stop=longStop, limit=longTarget)
strategy.exit("Exit Short", from_entry="Short", stop=shortStop, limit=shortTarget)
// ───── VISUALS ─────
plot(basis, title="LVN Mid", color=color.orange)
plot(lvnUpper, title="LVN Upper", color=color.red)
plot(lvnLower, title="LVN Lower", color=color.green)
Top comments (0)