The Institutional Logic Behind Close Levels
The previous week's closing price (PWC) and the previous day's closing price (PDC) are not arbitrary levels — they are settlement prices that large institutions, funds, and banks use for position valuations, performance reporting, and rebalancing decisions.
When price returns to these levels after the new session opens, institutional order flow tends to react — creating high-probability reversal setups. The WCR system identifies these reactions and enters when a reversal candle confirms the level is holding.
How to Use the WCR System Week by Week
Exact Entry Conditions
WCR Indicator — Copy to TradingView
// ═══════════════════════════════════════════════ // WCR — Weekly & Daily Close Reversal System // PropHub — Free for everyone // TradingView Pine Script v5 // ═══════════════════════════════════════════════ //@version=5 indicator("PropHub — WCR Weekly & Daily Close Reversal", overlay=true, max_lines_count=500, max_labels_count=500) // ── INPUTS ────────────────────────────────────── show_weekly = input.bool(true, "Show Weekly Close Level") show_daily = input.bool(true, "Show Daily Close Level") touch_pips = input.float(10.0, "Touch Threshold (pips)", step=1.0) weekly_col = input.color(color.new(color.yellow, 0), "Weekly Close Color") daily_col = input.color(color.new(color.aqua, 0), "Daily Close Color") show_labels = input.bool(true, "Show Price Labels") // ── GET CLOSE LEVELS FROM HIGHER TF ───────────── weekly_close = request.security(syminfo.tickerid, "W", close[1], lookahead=barmerge.lookahead_on) daily_close = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on) // ── TOUCH THRESHOLD CALCULATION ───────────────── // Convert pips to price units based on instrument pip_value = syminfo.mintick * 10 threshold = touch_pips * pip_value // ── TOUCH CONDITIONS ───────────────────────────── // Price came within threshold of the level this bar touch_weekly_bull = low <= weekly_close + threshold and low >= weekly_close - threshold touch_weekly_bear = high >= weekly_close - threshold and high <= weekly_close + threshold touch_daily_bull = low <= daily_close + threshold and low >= daily_close - threshold touch_daily_bear = high >= daily_close - threshold and high <= daily_close + threshold // ── REVERSAL CANDLE CONFIRMATION ───────────────── bull_candle = close > open // Bullish close bear_candle = close < open // Bearish close bull_engulf = close > open[1] and open < close[1] // Bullish engulf bear_engulf = close < open[1] and open > close[1] // Bearish engulf bull_reversal = bull_candle or bull_engulf bear_reversal = bear_candle or bear_engulf // ── COMBINED SIGNALS ───────────────────────────── wcr_weekly_long = show_weekly and touch_weekly_bull and bull_reversal wcr_weekly_short = show_weekly and touch_weekly_bear and bear_reversal wcr_daily_long = show_daily and touch_daily_bull and bull_reversal wcr_daily_short = show_daily and touch_daily_bear and bear_reversal // ── PLOT HORIZONTAL LINES ─────────────────────── // Draw lines extending from the level price var line weekly_ln = na var line daily_ln = na // Redraw weekly line when weekly close changes if show_weekly and (weekly_close != weekly_close[1] or bar_index == 0) line.delete(weekly_ln) weekly_ln := line.new(bar_index - 100, weekly_close, bar_index + 200, weekly_close, extend=extend.right, color=weekly_col, style=line.style_dashed, width=2) if show_labels label.new(bar_index, weekly_close, " PWC " + str.tostring(weekly_close, "#.#####"), style=label.style_label_left, color=weekly_col, textcolor=color.black, size=size.small) // Redraw daily line when daily close changes if show_daily and (daily_close != daily_close[1] or bar_index == 0) line.delete(daily_ln) daily_ln := line.new(bar_index - 50, daily_close, bar_index + 200, daily_close, extend=extend.right, color=daily_col, style=line.style_dotted, width=1) if show_labels label.new(bar_index, daily_close, " PDC " + str.tostring(daily_close, "#.#####"), style=label.style_label_left, color=daily_col, textcolor=color.black, size=size.small) // ── SIGNAL SHAPES ──────────────────────────────── plotshape(wcr_weekly_long, "WCR Weekly Long", shape.triangleup, location.belowbar, color.new(color.yellow, 0), size=size.normal) plotshape(wcr_weekly_short, "WCR Weekly Short", shape.triangledown, location.abovebar, color.new(color.yellow, 0), size=size.normal) plotshape(wcr_daily_long, "WCR Daily Long", shape.triangleup, location.belowbar, color.new(color.aqua, 20), size=size.small) plotshape(wcr_daily_short, "WCR Daily Short", shape.triangledown, location.abovebar, color.new(color.aqua, 20), size=size.small) // ── ALERT CONDITIONS ──────────────────────────── alertcondition(wcr_weekly_long, "WCR Weekly LONG", "WCR: Weekly Close LONG on " + syminfo.ticker + " | PWC: " + str.tostring(weekly_close)) alertcondition(wcr_weekly_short, "WCR Weekly SHORT", "WCR: Weekly Close SHORT on " + syminfo.ticker + " | PWC: " + str.tostring(weekly_close)) alertcondition(wcr_daily_long, "WCR Daily LONG", "WCR: Daily Close LONG on " + syminfo.ticker + " | PDC: " + str.tostring(daily_close)) alertcondition(wcr_daily_short, "WCR Daily SHORT", "WCR: Daily Close SHORT on " + syminfo.ticker + " | PDC: " + str.tostring(daily_close))
Alert Messages for Traders Post
Create four separate TradingView alerts — one for each WCR condition. All point to the same Traders Post webhook URL with the message below:
{
"ticker": "{{ticker}}",
"action": "buy",
"order_type": "market",
"quantity": 1,
"comment": "WCR_WEEKLY_LONG"
}
{
"ticker": "{{ticker}}",
"action": "sell",
"order_type": "market",
"quantity": 1,
"comment": "WCR_WEEKLY_SHORT"
}
For Daily alerts, change the comment to WCR_DAILY_LONG / WCR_DAILY_SHORT
12-Month Performance (May 2025 – April 2026)
| Instrument + Signal | Trades | Win Rate | Avg R:R | Net Result |
|---|---|---|---|---|
| EUR/USD Weekly (1H) | 48 | 63% | 1:2.4 | +21.6% |
| GBP/USD Weekly (1H) | 44 | 61% | 1:2.5 | +19.8% |
| EUR/USD Daily (1H) | 186 | 57% | 1:2.6 | +22.4% |
| GBP/USD Daily (1H) | 178 | 58% | 1:2.4 | +20.1% |
| USD/JPY Weekly (4H) | 42 | 60% | 1:2.8 | +23.2% |
Past performance does not guarantee future results. Educational purposes only. Always use proper risk management.