Yit's Risk CalculatorIntroducing a risk a bulletproof risk calculator.
I'm tired of sitting on my brokerage, messing with my shares to buy while price action leaves me in the dust.
For my breakout strategy execution is everything i dont have time to stop and think.
within the Indicator settings you have free reign to change account size and risk%
*the stop loss is glued to the low of the day*
Motif-Motif Chart
1小时区域背景颜色// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) creativecommons.org
// © LuxAlgo
//@version=5
indicator("Sessions ", "LuxAlgo - Sessions", overlay = true, max_bars_back = 500, max_lines_count = 500, max_boxes_count = 500, max_labels_count = 500)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
//Session A
show_sesa = input(true, '', inline = 'sesa', group = 'Session A')
sesa_txt = input('New York', '', inline = 'sesa', group = 'Session A')
sesa_ses = input.session('1300-2200', '', inline = 'sesa', group = 'Session A')
sesa_css = input.color(#ff5d00, '', inline = 'sesa', group = 'Session A')
sesa_range = input(true, 'Range', inline = 'sesa_overlays', group = 'Session A')
sesa_tl = input(false, 'Trendline', inline = 'sesa_overlays', group = 'Session A')
sesa_avg = input(false, 'Mean', inline = 'sesa_overlays', group = 'Session A')
sesa_vwap = input(false, 'VWAP', inline = 'sesa_overlays', group = 'Session A')
sesa_maxmin = input(false, 'Max/Min', inline = 'sesa_overlays', group = 'Session A')
//Session B
show_sesb = input(true, '', inline = 'sesb', group = 'Session B')
sesb_txt = input('London', '', inline = 'sesb', group = 'Session B')
sesb_ses = input.session('0700-1600', '', inline = 'sesb', group = 'Session B')
sesb_css = input.color(#2157f3, '', inline = 'sesb', group = 'Session B')
sesb_range = input(true, 'Range', inline = 'sesb_overlays', group = 'Session B')
sesb_tl = input(false, 'Trendline', inline = 'sesb_overlays', group = 'Session B')
sesb_avg = input(false, 'Mean', inline = 'sesb_overlays', group = 'Session B')
sesb_vwap = input(false, 'VWAP', inline = 'sesb_overlays', group = 'Session B')
sesb_maxmin = input(false, 'Max/Min', inline = 'sesb_overlays', group = 'Session B')
//Session C
show_sesc = input(true, '', inline = 'sesc', group = 'Session C')
sesc_txt = input('Tokyo', '', inline = 'sesc', group = 'Session C')
sesc_ses = input.session('0000-0900', '', inline = 'sesc', group = 'Session C')
sesc_css = input.color(#e91e63, '', inline = 'sesc', group = 'Session C')
sesc_range = input(true, 'Range', inline = 'sesc_overlays', group = 'Session C')
sesc_tl = input(false, 'Trendline', inline = 'sesc_overlays', group = 'Session C')
sesc_avg = input(false, 'Mean', inline = 'sesc_overlays', group = 'Session C')
sesc_vwap = input(false, 'VWAP', inline = 'sesc_overlays', group = 'Session C')
sesc_maxmin = input(false, 'Max/Min', inline = 'sesc_overlays', group = 'Session C')
//Session D
show_sesd = input(true, '', inline = 'sesd', group = 'Session D')
sesd_txt = input('Sydney', '', inline = 'sesd', group = 'Session D')
sesd_ses = input.session('2100-0600', '', inline = 'sesd', group = 'Session D')
sesd_css = input.color(#ffeb3b, '', inline = 'sesd', group = 'Session D')
sesd_range = input(true, 'Range', inline = 'sesd_overlays', group = 'Session D')
sesd_tl = input(false, 'Trendline', inline = 'sesd_overlays', group = 'Session D')
sesd_avg = input(false, 'Mean', inline = 'sesd_overlays', group = 'Session D')
sesd_vwap = input(false, 'VWAP', inline = 'sesd_overlays', group = 'Session D')
sesd_maxmin = input(false, 'Max/Min', inline = 'sesd_overlays', group = 'Session D')
//Timezones
tz_incr = input.int(0, 'UTC (+/-)', group = 'Timezone')
use_exchange = input(false, 'Use Exchange Timezone', group = 'Timezone')
//Ranges Options
bg_transp = input.float(90, 'Range Area Transparency', group = 'Ranges Settings')
show_outline = input(true, 'Range Outline', group = 'Ranges Settings')
show_txt = input(true, 'Range Label', group = 'Ranges Settings')
CHPY vs Semiconductor Sector Comparison//@version=5
indicator("CHPY vs Semiconductor Sector Comparison", overlay=false, timeframe="W")
// CHPY
chpy = request.security("CHPY", "W", close)
plot((chpy/chpy -1)*100, color=color.new(color.blue,0), title="CHPY")
// SOXX (Semiconductor Index ETF)
soxx = request.security("SOXX", "W", close)
plot((soxx/soxx -1)*100, color=color.new(color.red,0), title="SOXX")
// SMH (Semiconductor ETF)
smh = request.security("SMH", "W", close)
plot((smh/smh -1)*100, color=color.new(color.green,0), title="SMH")
// NVDA
nvda = request.security("NVDA", "W", close)
plot((nvda/nvda -1)*100, color=color.new(color.orange,0), title="NVDA")
// AVGO
avgo = request.security("AVGO", "W", close)
plot((avgo/avgo -1)*100, color=color.new(color.purple,0), title="AVGO")
TradingBee Money FlowTradingBee Money Flow
Most traders make the mistake of relying on a single indicator. RSI only looks at price. OBV only looks at volume. If you only look at one, you are missing half the picture.
TradingBee Money Flow solves this by calculating a weighted consensus of 10 different technical metrics combined into a single "Flow Score." It answers the most important question in trading: "Is the money actually backing up the price move?"
If Price goes UP, but this indicator goes DOWN, it’s a trap.
How It Works: The 3-Tier Logic
This script does not just average numbers; it weights them based on importance to creating a true "Composite Score" (-100 to +100).
Tier 1: Primary Volume Flow (50% Weight) The engine of the indicator. It measures raw capital entering/exiting.
MFI (Money Flow Index)
OBV Momentum (On-Balance Volume)
Chaikin Money Flow (CMF)
Tier 2: Secondary Momentum (35% Weight) Validates if the volume is actually moving price efficiently.
VWAP Oscillation
Accumulation/Distribution (A/D) Momentum
Klinger Oscillator
Elders Force Index
Tier 3: Confirmation & Volatility (15% Weight) Filters out fake-outs using volatility metrics.
RSI
ADX (Trend Strength)
Bollinger Band Width
The "Clean Divergence" Engine (Unique Feature)
Standard divergence indicators are "noisy"—they print signals on every small pivot. The TradingBee Money Flow uses a custom Clean Wave Filter to only identify high-probability reversals.
It requires two conditions to trigger a Divergence Signal:
The "Gap" Rule (Zero Cross): The indicator must cross the Zero Line in between two peaks. This ensures we are comparing two distinct waves of buying/selling, rather than just jagged noise in a single trend.
The "Shrinkage" Rule: The second wave must be significantly smaller (by a user-defined ratio) than the first. This confirms a true collapse in momentum.
How to Use This Indicator
1. The Histogram (Trend Following)
Bright Green: Buying pressure is accelerating. Strong Trend.
Dark Green: Buying is continuing, but momentum is slowing. Warning sign.
Bright Red: Selling pressure is accelerating.
Zero Line Cross: The definitive signal of a trend change.
2. The Lines (Reversal Trading)
🔴 Red Line (Bearish Divergence): Price made a Higher High, but Money Flow made a Lower High (with a gap in between). Smart money is selling into the rally. Look for Shorts.
🟢 Green Line (Bullish Divergence): Price made a Lower Low, but Money Flow made a Higher Low. Sellers are exhausted. Look for Longs.
Settings
Lookback Period: Adjusts the sensitivity of the composite score.
Pivot Lookback: Increases or decreases the strictness of the pivot detection.
Require Zero Cross: Keep checked for "Clean" signals. Uncheck to see standard divergences.
Wave Size Ratio: Defines how much smaller the second wave must be to trigger a signal.
Disclaimer: This tool provides market analysis but does not guarantee future results. Always manage your risk.
First day of NIFTY Monthly ExpiryAutomatically identifies and marks the first Wednesday that occurs after the last Tuesday of each calendar month on your charts. Designed specifically for NSE traders using Indian timezone (GMT+5:30). Automatically adjusts for market holidays by marking the next available trading day. Handles cases where the Wednesday falls in the following month (e.g., Sept 30 → Oct 1).
Dynamic Support & Resistance ZonesDynamic Support & Resistance Zones
Overview
This indicator automatically detects and visualizes dynamic support and resistance zones based on pivot point analysis. Unlike simple horizontal lines, these zones adapt to market volatility using ATR and track how many times price has respected each level—giving you a real-time strength score for every zone.
How It Works
The indicator identifies swing highs and lows using pivot detection, then creates zones around these price levels. Each zone is continuously monitored for:
Touches: Every time price enters the zone and reverses, the touch count increases
Strength: A 0-100% score based on touch count and recency (zones fade over time if untested)
Breaks: When price closes beyond the zone for consecutive bars, it's marked as broken and removed
Nearby zones of the same type automatically merge to reduce clutter, and only the strongest zones are displayed based on your settings.
Features
🎯 Smart Zone Detection
Pivot-based identification of key price levels
ATR-adaptive zone width (adjusts to volatility)
Automatic merging of overlapping zones
📊 Strength Scoring System
Each zone rated 0-100% based on touches + time decay
Stronger zones appear more opaque
Weak/old zones automatically removed
🔔 Built-in Alerts
Alert when price approaches a zone
Alert when price breaks through a zone
📋 Info Panel
Shows count of active resistance/support zones
Displays nearest S/R levels above and below current price
Settings
Detection Settings
Pivot Lookback Length - Higher values find stronger but fewer levels (default: 10)
Zone Width (%) - Width of each zone as % of price (default: 0.5%)
Max Zones to Display - Limits visual clutter (default: 8)
Merge Distance (%) - Zones within this % are combined (default: 1.0%)
Zone Strength
Min Touches for Valid Zone - Zones need this many touches to display (default: 2)
Strength Decay (bars) - How quickly zones lose strength over time (default: 100)
Break Confirmation Bars - Consecutive closes needed to confirm a break (default: 2)
Visual Settings
Customize resistance/support colors
Toggle labels and strength display
Option to extend zones into the future
How to Use
For Entries:
Look for confluence when price approaches a high-strength zone (70%+)
Zones with 3+ touches have historically acted as strong reversal points
Use the "approaching zone" alert to get notified before price reaches key levels
For Exits/Targets:
Set profit targets at the nearest resistance (for longs) or support (for shorts)
The info panel shows these levels in real-time
For Breakout Trading:
Watch for breaks of high-touch zones—these often lead to momentum moves
Use the "broke zone" alert to catch breakouts as they happen
Best Practices
On higher timeframes (4H, Daily): Use higher pivot lookback (15-20) for major levels
On lower timeframes (5m, 15m): Use lower pivot lookback (5-8) for scalping levels
For volatile assets: Increase zone width to 1-2%
For ranging markets: Lower min touches to 1 to see more potential levels
Notes
Zones are drawn from the time they were created, extending right
The indicator uses timestamps (not bar indices) so it works on any history length
Broken zones are automatically cleaned up to keep your chart clear
Tip: Combine with volume analysis or momentum indicators for confirmation before trading S/R levels.
If you find this indicator useful, please leave a comment with your feedback or suggestions for improvements!
Psychological Price Level GBPJPY (.250 / .750)This indicator is designed for GBPJPY traders who work with precision and smart-money-based analysis. It automatically plots psychological price levels at .250 and .750, which are known institutional reference points that often influence market structure, price reactions, and liquidity behavior. Unlike typical round-number indicators, this tool focuses specifically on quarter levels, which are frequently used by algorithms, banks, and experienced institutional traders.
Fixed and Reliable Levels
As price evolves, the levels update automatically and remain fixed on the chart without shifting when you scroll. This ensures that the levels always stay anchored to relevant market structure, making them reliable reference points for planning entries, targets, or stop placements.
Customization
The indicator allows full customization. You can freely adjust the line color, line thickness, and line style to match your personal trading chart layout. You can also choose whether lines extend left, right, or both directions, making the tool flexible enough to fit minimalist or highly marked-up workspaces.
Why These Levels Matter
In smart money trading approaches, the .250 and .750 levels often act as magnetic zones. Price frequently gravitates toward them to test liquidity or engineer traps before continuing its move. These levels may serve as rejection points, breakout confirmation zones, or take-profit areas depending on the broader context. Because they frequently align with order blocks, fair value gaps, and market structure shifts, they can add meaningful confluence to directional bias and trade timing.
Who Can Benefit
This tool is particularly useful for scalpers, day traders, and swing traders who base decisions on liquidity behavior and institutional logic. It works well on any timeframe and complements concepts such as premium and discount models, inefficiencies, fair value gaps, and volume imbalances. Many traders find that these price levels help them identify reactions earlier, refine entries, and improve confidence when executing trades.
Final Note
If this indicator supports your trading workflow, feel free to leave a comment or mark it as a favorite + give it a BOOST . Your feedback helps guide future improvements and ensures the tool continues evolving for serious GBPJPY traders.
Happy trading — and stay precise. 🚀📊
Momentum Day Trading ToolkitMomentum Day Trading Toolkit
Complete User Guide
Table of Contents
Overview
Quick Start
The Dashboard
Module 1: 5 Pillars Screener
Module 2: Gap & Go
Module 3: Bull Flag / Flat Top
Module 4: Float Rotation
Module 5: R2G / G2R
Module 6: Micro Pullback
Signal Reference
Quality Score
Settings Guide
Alerts Setup
Trading Workflows
Troubleshooting
Overview
The Momentum Day Trading Toolkit combines 6 powerful indicators into one unified system for day trading momentum stocks.
ModulePurpose① 5 PillarsConfirms stock is "in play"② Gap & GoPre-market levels & gap analysis③ Bull Flag / Flat TopClassic breakout patterns④ Float RotationMeasures true interest level⑤ R2G / G2RTracks prior close crosses⑥ Micro PullbackPrecision continuation entries
All modules work together - the dashboard shows you everything at a glance, and you can enable/disable any module you don't need.
Quick Start
Step 1: Add to Chart
Add the indicator to any stock chart
Recommended timeframes: 1-minute, 5-minute, or 15-minute
Step 2: Check the Dashboard (Top Right)
Look for:
Status = Current state (Scanning, Entry Signal, etc.)
Quality Score = Setup rating out of 10
Green checkmarks (✓) = Criteria passing
Step 3: Watch for Entry Signals
Triangles, circles, diamonds below bars = Entry signals
Arrows = R2G/G2R crosses
Step 4: Set Alerts
Right-click chart → Add Alert
Select "Momentum Day Trading Toolkit"
Choose your alert condition
The Dashboard
The dashboard in the top-right corner gives you instant analysis:
┌─────────────────────────────┐
│ MOMENTUM TOOLKIT │
├─────────────────────────────┤
│ Status │ 🎯 ENTRY SIGNAL │
│ Day │ 🟢 GREEN │
│ Gap │ +8.5% 🔥 │
│ RVol │ 3.2x ✓ │
│ Rotation │ 1.45x 🔥 │
│ Float │ 5.2M 🔥 │
│ Change │ +12.3% ✓ │
│ Pattern │ BULL FLAG! │
│ EMA 9/20 │ Above Both ✓ │
│ VWAP │ Above ✓ │
│ Prior Cl │ 5.91 │
│ PM High │ 9.11 ✓ │
│ Price │ 9.46 ✓ │
└─────────────────────────────┘
Dashboard Row Reference
RowWhat It ShowsGood ValuesStatusCurrent state🎯 ENTRY SIGNALDayGreen/Red vs prior close🟢 GREENGapGap % from prior close🔥 (5%+) or 🔥🔥 (10%+)RVolRelative volume✓ (2x+) or ✓✓ (5x+)RotationFloat rotation🔥 (1x) or 🔥🔥 (2x+)FloatFloat in millions🔥 (<5M) or Low (<10M)ChangeDaily % change✓ (meets minimum)PatternPattern statusBREAKOUT!EMA 9/20Trend positionAbove Both ✓VWAPVWAP positionAbove ✓Prior CloseKey R2G levelReference pricePM HighPre-market high✓ = Above itPriceCurrent price✓ = In range
Status Messages
StatusMeaningActionScanning...Looking for setupsWait✅ ALL PILLARSStock qualifiesWatch for pattern⏳ PATTERN FORMINGSetup developingGet ready🎯 ENTRY SIGNALSignal triggeredExecute trade
Module 1: 5 Pillars Screener
What It Does
Confirms the stock meets basic criteria to be worth trading.
The 5 Pillars
PillarDefaultWhy It MattersRelative Volume2x+ (5x for "strong")Confirms unusual interestDaily Change5%+Stock is movingPrice Range$1-$20Sweet spot for momentumFloat Size<20M sharesLower float = bigger moves
Visual Indicator
Green background appears when ALL pillars pass
Dashboard Shows
Individual pillar status with ✓ checkmarks
Quality score includes pillar factors
Settings
SettingDefaultDescriptionMin RVol2.0xMinimum relative volumeStrong RVol5.0xVolume for full qualificationMin Change5%Minimum daily moveMin Price$1Minimum stock priceMax Price$20Maximum stock priceMax Float20MMaximum float size
Module 2: Gap & Go
What It Does
Analyzes pre-market gaps and displays key price levels.
Key Levels Displayed
LevelColorDescriptionPrior CloseOrangeYesterday's close - THE key levelPM HighGreenPre-market high - breakout levelPM LowRedPre-market low - support
Gap Classification
Gap SizeRatingMeaning5-9.9%🔥 QualifyingWorth watching10%+🔥🔥 StrongHigh priority
Entry Signal
Small green triangle = PM High Breakout
How to Trade
Stock gaps up in pre-market
Wait for market open
Look for break above PM High
Enter on breakout with stop below PM Low
Settings
SettingDefaultDescriptionMin Gap %5%Qualifying gap thresholdStrong Gap %10%Strong gap thresholdShow PM LevelsONDisplay PM high/low lines
Module 3: Bull Flag / Flat Top
What It Does
Detects classic continuation patterns and signals breakouts.
Bull Flag Pattern
▲ BREAKOUT (Entry Signal)
│
┌────┴────┐
│ Pullback │ ← 2-5 red candles
│ (flag) │ Max 50% retrace
└─────────┘
│
┌────┴────┐
│ Pole │ ← 3+ green candles
│ (move) │ Strong momentum
└─────────┘
Flat Top Pattern
═══════════════ Resistance (2+ touches)
│
▲ BREAKOUT above resistance
Entry Signals
SignalShapeColorPatternBull Flag Breakout▲ TriangleLimeFlag breaks upFlat Top Breakout◆ DiamondAquaResistance breaks
How to Trade Bull Flag
See 3+ green candles (the pole)
Price pulls back 2-5 red candles
Pullback stays above 50% of move
Enter on break above pullback high
Stop below pullback low
Settings
SettingDefaultDescriptionMin Pole Candles3Green candles neededMax Pullback5Max red candles allowedMax Retrace50%Max pullback depthFT Touches2Resistance touches neededFT Lookback10Bars to check for resistance
Module 4: Float Rotation
What It Does
Tracks how many times the entire float has traded hands today.
The Formula
Rotation = Cumulative Day Volume ÷ Float
Rotation Levels
RotationEmojiMeaning0.5x—Half float traded1.0x🔥FULL rotation - significant!2.0x🔥🔥Double rotation - extreme3.0x+🔥🔥🔥Triple rotation - rare event
Why It Matters
High rotation = Extreme interest
Everyone who owns shares has likely traded
Often precedes explosive moves
Shows "real" demand beyond just volume
Dashboard Shows
Current rotation level
Fire emojis for milestones
Settings
SettingDefaultDescriptionFloat SourceAutoAuto-detect or manualManual Float10MIf auto fails, use thisAlert Level1.0xAlert when rotation hits this
Module 5: R2G / G2R
What It Does
Tracks when price crosses the prior day's close - a key psychological level.
Red to Green (R2G) 🟢
Prior Close ─────────────────
↗ CROSS TO GREEN
↗
(opened red)
Stock opened below prior close (red)
Crosses above prior close (green)
BULLISH signal
Green to Red (G2R) 🔴
(opened green)
↘
↘ CROSS TO RED
Prior Close ─────────────────
Stock opened above prior close (green)
Crosses below prior close (red)
BEARISH signal
Entry Signals
SignalShapeColorMeaningR2G↑ ArrowLimeCrossed to greenG2R↓ ArrowRedCrossed to red
Why R2G Matters
Bears who shorted get squeezed
Creates FOMO buying
Prior close becomes support
Momentum often continues
Dashboard Shows
Current day status (🟢 GREEN / 🔴 RED)
Whether R2G or G2R occurred (R2G ✓ or G2R ✓)
Settings
SettingDefaultDescriptionRequire Opposite OpenONR2G needs red openShow Prior CloseONDisplay the line
Module 6: Micro Pullback
What It Does
Finds precision entries on brief 1-3 candle pullbacks after strong moves.
The Pattern
▲ ENTRY (break pullback high)
│
┌──┴───┐
│ 1-3 │ ← Micro pullback (brief!)
│ red │ Stop = low of this
└──────┘
│
┌──┴───┐
│ 3+ │ ← Strong move
│green │ Momentum building
└──────┘
Why Micro Pullbacks Work
Tight stop = Pullback low is close
Momentum intact = Only paused briefly
Early entry = Catch continuation early
Clear trigger = Break of pullback high
Entry Signal
SignalShapeColorMicro Pullback Entry● CircleYellow
How to Trade
See 3+ green candles (strong move)
1-3 red candles (brief pause)
Pullback stays above 50% retrace
Enter when green candle breaks pullback high
Stop at pullback low
Settings
SettingDefaultDescriptionMin Green Candles3Candles before pullbackMax Pullback3Max red candlesMax Retrace50%Max pullback depth
Signal Reference
All Entry Signals (Below Bar)
ShapeColorSignalModule▲ Large TriangleLimeBull Flag BreakoutPatterns◆ DiamondAquaFlat Top BreakoutPatterns● CircleYellowMicro Pullback EntryMicro PB▲ Small TriangleGreenPM High BreakoutGap & Go↑ ArrowLimeRed to GreenR2G/G2R
Warning Signals (Above Bar)
ShapeColorSignalModule↓ ArrowRedGreen to RedR2G/G2R
Optional Forming Signals (Disabled by Default)
ShapeColorSignal🚩 FlagFaded LimeBull Flag Forming● CircleFaded YellowMicro PB Forming
Enable "Show 'Forming' Markers" in settings to see these
Quality Score
The quality score (0-10) rates the overall setup strength.
Scoring Breakdown
FactorPointsRVol 5x++2RVol 2x++1Daily change 5%++1Low float (<20M)+1Strong gap (10%+)+2Qualifying gap (5%+)+1Rotation 1x++2Rotation 0.5x++1Above EMA 20+1
Score Interpretation
ScoreGradeAction8-10A+Best setups - full position6-7AGood setups - standard size4-5BAverage - reduced size0-3CWeak - skip or paper trade
Settings Guide
Module Toggles
Turn each module ON/OFF:
SettingDefaultDescription① 5 Pillars ScreenerONStock qualification② Gap & Go AnalysisONGap & level analysis③ Bull Flag / Flat TopONPattern detection④ Float RotationONRotation tracking⑤ R2G / G2R TrackerONPrior close crosses⑥ Micro PullbackONPullback entries
Visual Settings
SettingDefaultDescriptionShow DashboardONDisplay info tableTable SizeNormalSmall/Normal/LargeShow Entry SignalsONDisplay entry shapesShow 'Forming' MarkersOFFShow pattern formingShow Key LevelsONPrior close, PM levelsShow EMA 9/20ONTrend EMAsShow VWAPONVWAP line
Recommended Presets
Minimal (Clean Chart)
Show Dashboard: ON
Show Entry Signals: ON
Show 'Forming' Markers: OFF
Show Key Levels: OFF
Show EMA: OFF
Show VWAP: OFF
Standard (Balanced)
All defaults
Full Analysis
All settings ON
Alerts Setup
Available Alerts
AlertTriggerAny Bullish EntryAny entry signal firesBull Flag BreakoutBull flag breaks outFlat Top BreakoutFlat top breaks outMicro Pullback EntryMicro PB triggersPM High BreakoutBreaks above PM highRed to GreenR2G crossGreen to RedG2R crossFloat RotationHits rotation level5 Pillars PassAll pillars qualifyPattern FormingPattern starts formingHigh Quality EntryEntry with score 7+/10
How to Set Alerts
Right-click on chart
Select "Add Alert"
Condition: "Momentum Day Trading Toolkit"
Select alert type from dropdown
Set expiration and notifications
Click "Create"
Recommended Alerts
For Active Trading:
Any Bullish Entry
High Quality Entry
For Watchlist Monitoring:
5 Pillars Pass
Float Rotation
Trading Workflows
Workflow 1: Full Qualification
Step 1: 5 PILLARS
└─→ Wait for "✅ ALL PILLARS" status
Step 2: CHECK SETUP
└─→ Quality score 6+?
└─→ Above EMA and VWAP?
Step 3: WAIT FOR ENTRY
└─→ Bull Flag, Flat Top, or Micro PB signal
Step 4: EXECUTE
└─→ Enter on signal
└─→ Stop below pattern low
└─→ Target 2:1 minimum
Workflow 2: Gap & Go
Step 1: PRE-MARKET
└─→ Stock gaps 5%+ (shows in Gap row)
Step 2: MARKET OPEN
└─→ Note PM High level (green line)
Step 3: WAIT FOR BREAK
└─→ PM High Breakout signal (small triangle)
Step 4: CONFIRM
└─→ R2G if opened red (double confirmation)
└─→ RVol 2x+
Step 5: EXECUTE
└─→ Enter on PM High break
└─→ Stop below PM Low
Workflow 3: Micro Pullback Scalp
Step 1: FIND MOMENTUM
└─→ Stock moving, 3+ green candles
Step 2: WAIT FOR PAUSE
└─→ 1-3 red candles (brief pullback)
Step 3: ENTRY
└─→ Yellow circle signal appears
Step 4: QUICK TRADE
└─→ Enter at signal
└─→ Tight stop at pullback low
└─→ Quick target (1:1 to 2:1)
Troubleshooting
Q: Lines are moving/jumping on real-time chart?
A: This was fixed in latest version. Make sure you have the newest code. Lines now lock in place at market open.
Q: Too many signals, chart is cluttered?
A:
Turn off "Show 'Forming' Markers"
Disable modules you don't need
Use "Minimal" visual preset
Q: No signals appearing?
A:
Check if "Show Entry Signals" is ON
Make sure relevant module is enabled
Stock may not meet pattern criteria
Q: Dashboard shows wrong float?
A:
TradingView float data isn't available for all stocks
Switch Float Source to "Manual"
Enter correct float in millions
Q: PM High/Low not showing?
A:
Only appears during market hours
Needs pre-market data to calculate
Check if "Show Key Levels" is ON
Q: Quality score seems wrong?
A:
Score updates in real-time
Check individual factors in dashboard
RVol and rotation change throughout day
Q: Alert not triggering?
A:
Make sure alert is set on correct symbol
Check alert hasn't expired
Verify condition is set correctly
Quick Reference Card
Entry Signals
▲ Lime Triangle = Bull Flag Breakout
◆ Aqua Diamond = Flat Top Breakout
● Yellow Circle = Micro Pullback
▲ Green Triangle = PM High Break
↑ Lime Arrow = R2G (bullish)
↓ Red Arrow = G2R (bearish)
Dashboard Quick Read
🎯 = Entry signal active
✅ = All pillars pass
🟢 = Day is green
🔥 = Strong (gap/rotation)
✓ = Criteria met
✗ = Criteria failed
Quality Score
8-10 = A+ (Best)
6-7 = A (Good)
4-5 = B (Average)
0-3 = C (Weak)
Key Levels
Orange Line = Prior Close (R2G level)
Green Line = PM High (breakout level)
Red Line = PM Low (support)
Purple Line = VWAP
Yellow/Orange = EMA 9/20
Happy Trading! 🎯📈
For questions or issues, use TradingView's comment section on the indicator page.
Pivot Reversal Signals - Multi ConfirmationPivot Reversal Signals - Multi-Confirmation System
Overview
A comprehensive reversal detection indicator designed for daytraders that combines six independent technical signals to identify high-probability pivot points. The indicator uses a scoring system to classify signal strength as Weak, Medium, or Strong based on the number of confirmations present.
How It Works
The indicator monitors six key reversal signals simultaneously:
1. RSI Divergence - Detects when price makes new highs/lows but RSI shows weakening momentum
2. MACD Divergence - Identifies divergence between price action and MACD histogram
3. Key Level Touch - Confirms price is at significant support/resistance (previous day high/low, premarket high/low, VWAP, 50 SMA)
4. Reversal Candlestick Patterns - Recognizes bullish/bearish engulfing, hammers, and shooting stars
5. Moving Average Confluence - Validates bounces/rejections at stacked moving averages (9/20/50)
6. Volume Spike - Confirms increased participation (default: 1.5x average volume)
Signal Strength Classification
• Weak (3/6 confirmations) - Small circles for situational awareness only
• Medium (4/6 confirmations) - Regular triangles, viable entry signals
• Strong (5-6/6 confirmations) - Large triangles with background highlight, highest probability setups
Visual Features
• Entry Signals: Green triangles (up) for long entries, red triangles (down) for short entries
• Exit Warnings: Orange X markers when opposing signals appear
• Signal Labels: Show confirmation score (e.g., "5/6") and strength level
• Key Levels Displayed:
o Previous Day High/Low - Solid green/red lines (uses actual daily data)
o Premarket High/Low - Blue/orange circles (4:00 AM - 9:30 AM EST)
o VWAP - Purple line
o Moving Averages - 9 EMA (blue), 20 EMA (orange), 50 SMA (red)
• Background Tinting: Subtle color on strongest reversal zones
Key Level Detection
The indicator uses request.security() to accurately fetch previous day's high/low from daily timeframe data, ensuring precise level placement. Premarket high/low levels are dynamically tracked during premarket sessions (4:00 AM - 9:30 AM EST) and plotted throughout the trading day, providing critical support/resistance zones that often influence price action during regular hours.
Customizable Parameters
• Signal strength thresholds (adjust required confirmations)
• RSI settings (length, overbought/oversold levels)
• MACD parameters (fast/slow/signal lengths)
• Moving average periods
• Volume spike multiplier
• Toggle individual display elements (levels, MAs, labels)
Best Practices
• Use on 5-minute charts for entries, confirm on 15-minute for direction
• Focus on Medium and Strong signals; Weak signals provide context only
• Strong signals (5-6 confirmations) have the highest win rate
• Pay special attention to reversals at premarket high/low - these levels frequently hold
• Previous day high/low often acts as major support/resistance
• Always use proper risk management and stop losses
• Works best in moderately trending markets
Alert Capabilities
Set custom alerts for:
• Strong long/short signals
• All entry signals (medium + strong)
• Exit warnings for open positions
Ideal For
• Daytraders and scalpers (especially SPY, QQQ, and liquid equities)
• Swing traders seeking precise entries
• Traders who prefer confirmation-based systems
• Anyone looking to reduce false signals with multi-factor validation
• Traders who utilize premarket levels in their strategy
Technical Notes
• Uses Pine Script v6
• Premarket hours: 4:00 AM - 9:30 AM EST
• Previous day levels pulled from daily timeframe for accuracy
• Maximum 500 labels to maintain chart performance
• All key levels update dynamically in real-time
________________________________________
Note: This indicator provides signal analysis only and should be used as part of a complete trading strategy. Past performance does not guarantee future results. Always practice proper risk management.
SKDJ Bottom-Top Reversal IndicatorSKDJ Bottom-Top Reversal Indicator — Introduction (English Version)
The SKDJ Bottom-Top Reversal Indicator is an enhanced version of the classic Stochastic (K/D) oscillator.
It is designed to identify high-probability reversal zones, highlight momentum shifts, and help traders capture oversold bounces and overbought pullbacks with greater clarity.
This indicator smooths the standard RSV calculation with double EMA/MMA layers, producing a more stable K/D structure while maintaining sensitivity to short-term price swings. It plots dynamic green/red lines for visual clarity and provides automatic buy/sell markers based on extreme-zone crossovers.
🔍 Core Logic
1. RSV Calculation
RSV measures the close price relative to the highest and lowest prices within a lookback window:RSV=EMA((Close−Lowest(N))/(Highest(N)−Lowest(N))×100,M)
This normalizes the price position into a 0–100 range and applies smoothing to reduce noise.
2. K & D Lines
K Line = EMA of RSV
D Line = SMA of K
The combination produces a fast and slow stochastic pair that tracks short-term momentum shifts.
3. Reversal Signals
The indicator automatically highlights:
Buy Signal (Bottom Reversal):
When K < 25 and K crosses above D → potential oversold rebound.
Sell Signal (Top Reversal):
When K > 75 and D crosses above K → potential overbought correction.
These signals combine extreme price positioning + momentum crossover, giving higher-quality reversal points.
🎨 Visual Features
Green K-line for upward momentum
Red D-line for trend strength
Overbought (80) & Oversold (20) horizontal guides
Automatic triangle markers for buy/sell signals
Optional background color shading
This clean visual design allows traders to read momentum more intuitively and react quicker to turning points.
🧩 Use Cases
The SKDJ indicator is ideal for:
Identifying short-term mean-reversion opportunities
Spotting early momentum reversal before large swings
Filtering entries inside range-bound markets
Confirming signals from other systems (MA, trendlines, volume)
It works on all timeframes and across stocks, crypto, forex, commodities.
📈 Why It Works
This indicator combines:
Price location (overbought/oversold range)
Momentum direction (K/D crossover)
Smoothed oscillation (less noise, cleaner signals)
The convergence of these three factors often precedes short-term market turning points.
Micro Pullback Entry SystemMicro Pullback Entry System - Quick Reference
The Pattern
▲ ENTRY (first green to break high)
│
┌──┴───┐
│ 1-3 │ ← PULLBACK (red candles)
│ red │ Stop = Low of this zone
└──────┘
│
┌──┴───┐
│ 3+ │ ← THE MOVE (green candles)
│green │ Strong momentum
└──────┘
Pattern Checklist
Requirement: Why It Matters
3+ green candlesConfirms momentum
1-3 red pullback Brief = momentum intact< 50% retracementShallow = buyers in controlVolume on entryConfirms breakout Above EMA Trend support
Status Flow
Scanning... → 📈 TRENDING → 👀 WATCHING → ⏳ FORMING → 🎯 ENTRY!
StatusMeaningActionScanningLooking for setupWait📈 TRENDINGGreen streak buildingMonitor👀 WATCHINGPullback startedPrepare⏳ FORMINGValid pullback readyGet ready!🎯 ENTRY!Signal triggeredExecute
Entry/Stop/Target
LevelLine ColorHow to SetEntryLime solidClose of signal candleStopRed dashedLow of pullbackTarget 1Aqua dottedEntry + (2 × Risk)Target 2Yellow dottedEntry + (3 × Risk)
Example
Entry: $5.00
Stop: $4.80
Risk: $0.20
Target 1 (2R): $5.00 + $0.40 = $5.40
Target 2 (3R): $5.00 + $0.60 = $5.60
Quality Grades
GradeScoreActionA+5/5 ✓Best setup - full sizeA4/5 ✓Good setup - standard sizeB3/5 ✓Average - reduced sizeC2/5 ✓Weak - skip or tiny size
Scoring Factors
✓ Green streak met minimum
✓ Pullback length valid (1-3)
✓ Retracement shallow (<50%)
✓ Volume confirmed
✓ Above EMA
Trade Execution
Entry
Wait for "⏳ FORMING" status
Watch for green candle forming
Entry triggers when green candle closes above pullback high
Enter at market or small limit above current price
Stop Loss
Set at pullback low (red dashed line)
Non-negotiable - this is your max risk
Trade Management
If no immediate follow-through → exit early
Take 50% off at Target 1 (aqua line)
Move stop to breakeven
Let remainder run to Target 2
Settings Guide
Default (Recommended)
Min Green Candles: 3
Min Pullback: 1
Max Pullback: 3
Max Retracement: 50%
Volume Multiplier: 1.2x
EMA Filter: ON (20)
Conservative (Fewer, Better)
Min Green Candles: 4
Min Pullback: 2
Max Pullback: 3
Max Retracement: 40%
Volume Multiplier: 1.5x
EMA Filter: ON (20)
Aggressive (More Signals)
Min Green Candles: 2
Min Pullback: 1
Max Pullback: 4
Max Retracement: 60%
Volume Multiplier: 1.0x
EMA Filter: OFF
Common Mistakes
❌ Entering before signal
Wait for green triangle
"FORMING" ≠ "ENTRY"
❌ Wide stop
Stop must be at pullback low
If too wide, skip the trade
❌ Ignoring volume
Low volume entries fail more often
Look for ✓ in volume row
❌ Fighting trend
Check EMA status
Should show "Above ✓"
❌ Chasing after entry
If you miss entry by 3+ candles, wait for next setup
Don't chase extended moves
Best Setups
A+ Quality Setup ✓
4-5 green candles (strong move)
2 candle pullback (brief)
25-35% retracement (shallow)
2x+ volume on entry
Well above EMA
Stock already up 5%+ on day
Avoid These ✗
Only 2 green candles
4+ candle pullback (losing momentum)
50%+ retracement (too deep)
Below average volume
Below or at EMA
Against market direction
Timeframe Guide
TFSignalsQualityBest For1mMostLowerScalping5mBalancedGoodDay trading15mFewestHigherSwing entries
Quick Decision Tree
1. Status showing "FORMING"?
NO → Wait
YES → Continue
2. Quality grade A or better?
NO → Skip or small size
YES → Continue
3. Volume confirmed (✓)?
NO → Caution, reduce size
YES → Continue
4. Above EMA (✓)?
NO → Skip
YES → Continue
5. Risk acceptable? (Stop not too wide)
NO → Skip
YES → TAKE THE TRADE
Alert Setup
Essential Alert
"Micro Pullback Entry" - Main signal
How to Set
Right-click chart → Add Alert
Condition: Micro Pullback Entry System
Select "Micro Pullback Entry"
Set notification preferences
Combining with Other Indicators
IndicatorHow to Use5 PillarsFind stocks meeting criteria firstGap & GoLook for micro pullbacks after gap breakoutsR2G TrackerConfirm stock is green before enteringFloat RotationHigh rotation + micro pullback = best setupsBull FlagMicro pullback is a "mini" bull flag
Example Trade
Stock: XYZ
Pre-market: Gapped up 15%
9:35 - 9:38: 4 green candles (move from $4.50 to $5.00)
9:39 - 9:40: 2 red candles (pullback to $4.85)
9:41: Green candle breaks $4.90 (pullback high)
ENTRY: $4.92
STOP: $4.82 (pullback low)
RISK: $0.10
TARGET 1: $5.12 (+$0.20 = 2R)
TARGET 2: $5.22 (+$0.30 = 3R)
Result: Hit Target 2 by 9:55 → +$0.30 per share
Key Takeaways
Micro = 1-3 candles - Brief pullback
Entry = First green to break high - Specific trigger
Stop = Pullback low - Tight risk
Quality matters - Focus on A/A+ setups
Breakout or bailout - Exit if no follow-through
S1 - Trend Pullback DEBUG v5 (ATR SL/TP, S1 – Trend Pullback is a momentum-based pullback strategy designed primarily for index markets such as NASDAQ (NQ / NAS100).
The core idea:
Market enters a confirmed uptrend (EMA20 > EMA50 for two consecutive bars)
Price pulls back below EMA20
The next bar closes back above EMA20 (entry trigger)
Stop loss is derived from ATR (volatility-adaptive)
Take profit is RR-based
A maximum bar-in-trade condition handles stuck positions
Long-only design (optimized for indices with long-term upward bias)
Smart Money Decoded [GOLD]Title: Smart Money Decoded
Description:
Introduction
Smart Money Decoded is a comprehensive, institutional-grade visualization suite designed to simplify the complex world of Smart Money Concepts (SMC). While many indicators flood the chart with noise, this tool focuses on clarity, precision, and high-probability structure.
This script is built for traders who follow the "Inner Circle Trader" (ICT) methodologies but struggle to identify valid Zones, Displacement, and Liquidity Sweeps in real-time.
💎 Key Features & Logic
1. Refined Market Structure (BOS & CHoCH)
Instead of marking every minor pivot, this script uses a filtered Swing High/Low detection system.
HH/LL/LH/HL Labels: Only significant structure points are mapped.
BOS (Break of Structure): Marks trend continuations in the direction of the bias.
CHoCH (Change of Character): Marks potential trend reversals.
2. Advanced Order Blocks (with "Strict Mode")
Not all down-candles before an up-move are Order Blocks. This script separates the weak from the strong.
Standard OBs: Visualized with standard transparency.
⚡ SWEEP OBs (High Probability): Order Blocks that explicitly swept liquidity (Stop Hunt) before the reversal are highlighted with a thicker border, brighter color, and a ⚡ symbol. These are your high-probability "Turtle Soup" entries.
Strict Mode Toggle: In the settings, you can choose to hide all weak OBs and only see the ones that swept liquidity.
3. Dynamic Breaker Blocks
A true ICT Breaker is a failed Order Block that trapped liquidity.
This script automatically detects when a valid OB is mitigated (broken through) and projects it forward as a Breaker Block.
This ensures you are trading off valid flipped zones (Support becomes Resistance, Resistance becomes Support).
4. Fair Value Gaps (FVG)
Automatically detects Imbalances (Imbalance/Inefficiency).
Includes an ATR Filter to ignore tiny, insignificant gaps, keeping your chart clean.
Option to show the Consequent Encroachment (50% CE) level for precision entries.
5. Liquidity Zones (BSL / SSL)
Automatically plots Buy Side Liquidity (BSL) and Sell Side Liquidity (SSL) at key swing points.
Once price sweeps these levels, the zone is removed or marked as "Swept," helping you identify when the draw on liquidity has been met.
6. Institutional Data Panel
A dashboard in the top right corner displays:
Market Bias: Bullish/Bearish/Neutral based on structure.
Premium/Discount: Tells you if price is in the expensive (Premium) or cheap (Discount) part of the current dealing range.
Active Zones: Counts of current open arrays.
⚙️ How To Use This Indicator
Identify Bias: Look at the Structure Labels (HH/LL) and the Panel. Are we making Higher Highs?
Wait for the Trap: Look for a Liquidity Sweep (BSL/SSL taken) or a ⚡ Sweep OB.
Entry Confirmation: Watch for a return to a Fair Value Gap (FVG) or a retest of a Breaker Block (BRK).
Manage Risk: Use the visuals to place stops above/below invalidation points.
Customization:
Go to the settings to toggle "Strict Mode" for Order Blocks, change colors to match your theme, or adjust the lookback periods to fit your specific asset (Forex, Crypto, or Indices).
📚 Credits & Acknowledgments
This script is an educational tool based on the public teachings of Michael J. Huddleston (The Inner Circle Trader - ICT).
Concepts used: Order Blocks, Breakers, FVGs, Market Structure, Liquidity Pools.
Credit is fully given to ICT for originating these concepts and sharing them with the world.
⚠️ Disclaimer
This script is NOT affiliated with, endorsed by, or connected to Michael J. Huddleston (ICT) in any way. It is an independent coding project intended for educational purposes and visual assistance.
Trading involves substantial risk. This indicator does not guarantee profits. Always use proper risk management. Trust your analysis first, and use indicators as confluence.
#Smart Money Concepts, #SMC, #ICT,#Liquidity, #Market Structure, #Trend, #Price Action.
Red to Green / Green to Red Tracker# Red to Green / Green to Red Tracker - Quick Reference
## Core Concept
```
PRIOR CLOSE = Yesterday's closing price = The "zero line" for today
Above Prior Close = 🟢 GREEN (profitable for yesterday's buyers)
Below Prior Close = 🔴 RED (losing for yesterday's buyers)
```
---
## The Two Key Moves
### 🟢 Red to Green (R2G)
```
OPEN: Below prior close (RED)
↓
CROSS: Price moves above prior close
↓
RESULT: Now GREEN - Bullish signal
```
**Why it matters:**
- Bears who shorted get squeezed
- Creates FOMO buying
- Momentum often continues
---
### 🔴 Green to Red (G2R)
```
OPEN: Above prior close (GREEN)
↓
CROSS: Price moves below prior close
↓
RESULT: Now RED - Bearish signal
```
**Why it matters:**
- Longs who bought get trapped
- Triggers stop losses
- Panic selling follows
---
## Signals Explained
| Signal | Shape | Location | Meaning |
|--------|-------|----------|---------|
| R2G | ▲ Green Triangle | Below bar | Crossed to green |
| G2R | ▼ Red Triangle | Above bar | Crossed to red |
---
## Level Lines
| Line | Color | Style | What It Is |
|------|-------|-------|------------|
| Prior Close | Orange | Solid | KEY R2G/G2R level |
| Prior High | Green | Dashed | Yesterday's high |
| Prior Low | Red | Dashed | Yesterday's low |
| Today Open | White | Dotted | Gap reference |
---
## Info Table Reference
| Field | What It Shows |
|-------|---------------|
| Status | 🟢 GREEN / 🔴 RED / ⚪ FLAT |
| Day Change | % change from prior close |
| Prior Close | The key level price |
| Distance | How far from prior close |
| Opened | Did today open green or red |
| R2G | R2G status + price if triggered |
| G2R | G2R status + price if triggered |
| Rel Vol | Current relative volume |
| Prior High | Yesterday's high + distance |
| Prior Low | Yesterday's low + distance |
---
## Trading R2G (Long Setup)
### Entry Checklist
- Stock opened RED (below prior close)
- R2G cross signal triggered (green triangle)
- Volume confirmation (1.5x+ preferred, 2x+ ideal)
- Price holding above prior close
- Overall market not tanking
### Entry Method
1. **Aggressive:** Enter immediately on R2G cross
2. **Conservative:** Wait for pullback to prior close (now support)
### Stop Loss
- Below the R2G cross candle low
- OR below prior close (tighter)
### Target
- Prior day high (first target)
- 2:1 risk-reward minimum
---
## Trading G2R (Short Setup)
### Entry Checklist
- Stock opened GREEN (above prior close)
- G2R cross signal triggered (red triangle)
- Volume confirmation
- Price staying below prior close
- Overall market not ripping
### Entry Method
1. **Aggressive:** Enter immediately on G2R cross
2. **Conservative:** Wait for bounce to prior close (now resistance)
### Stop Loss
- Above the G2R cross candle high
- OR above prior close (tighter)
### Target
- Prior day low (first target)
- Gap fill (if gapped up)
---
## Signal Quality
### High Quality R2G ✓
- Opened significantly red (-2% or more)
- Strong volume on cross (2x+)
- First R2G of the day
- Market trending up
- News catalyst present
### Low Quality R2G ✗
- Opened barely red (-0.5%)
- Low volume cross
- Multiple R2G/G2R already today (choppy)
- Fighting market direction
- No clear catalyst
---
## Common Patterns
### Clean R2G (Best)
```
Open red → Steady climb → Cross prior close → Continue higher
```
### Failed R2G (Avoid/Exit)
```
Open red → Cross to green → Immediately fail back to red
```
### Choppy R2G/G2R (Avoid)
```
Multiple crosses back and forth = Indecision, no clear direction
```
---
## First Cross Rule
**The FIRST R2G or G2R of the day is usually the most significant.**
Why?
- Catches traders off guard
- Largest reaction from market
- Sets tone for rest of day
If you miss the first cross, be more selective on subsequent crosses.
---
## Volume Guide
| Rel Volume | Quality | Action |
|------------|---------|--------|
| < 1.0x | Weak | Skip or small size |
| 1.0-1.5x | Average | Standard position |
| 1.5-2.0x | Good | Full position |
| 2.0x+ | Strong | High conviction |
---
## Settings Recommendations
### Default (Balanced)
```
Require Opposite Open: ON
Require Volume: ON (1.5x)
Candle Close Confirm: OFF
Min Cross %: 0
```
### Conservative (Fewer, Better Signals)
```
Require Opposite Open: ON
Require Volume: ON (2.0x)
Candle Close Confirm: ON
Min Cross %: 0.5
```
### Aggressive (More Signals)
```
Require Opposite Open: OFF
Require Volume: OFF
Candle Close Confirm: OFF
Min Cross %: 0
```
---
## Alert Setup
### Essential Alerts
1. **First R2G of Day** - Highest value alert
2. **R2G with Strong Volume** - High conviction
### How to Set
1. Right-click chart → Add Alert
2. Condition: R2G/G2R Tracker
3. Select alert type
4. Set notification method
---
## Combining with Other Indicators
| Indicator | How to Use |
|-----------|------------|
| **Gap & Go** | R2G on gap-down stock = strong reversal |
| **Bull Flag** | Look for bull flag after R2G confirmation |
| **Float Rotation** | R2G + high rotation = explosive potential |
| **VWAP** | R2G above VWAP = strongest setup |
---
## Common Mistakes
❌ **Chasing late R2G**
- If price is already 3-5% green, you missed the move
- Wait for pullback or next setup
❌ **Ignoring volume**
- Low volume R2G often fails
- Always check relative volume
❌ **Fighting the market**
- R2G in a tanking market often fails
- G2R in a ripping market often fails
❌ **No stop loss**
- Failed R2G can reverse hard
- Always have a defined stop
❌ **Overtrading choppy stocks**
- Multiple R2G/G2R = no clear direction
- Skip stocks that keep crossing back and forth
---
## Quick Decision Framework
```
1. Did it open opposite color? (Red for R2G, Green for G2R)
- NO → Lower probability, be cautious
- YES → Continue
2. Is volume confirming? (1.5x+ relative volume)
- NO → Skip or small size
- YES → Continue
3. Is this the first cross of the day?
- YES → Higher probability
- NO → Be more selective
4. Is market direction supportive?
- NO → Skip
- YES → Take the trade
5. Can you define risk? (Clear stop level)
- NO → Skip
- YES → Execute
```
---
## Key Takeaways
1. **Prior close is THE key level** - everyone watches it
2. **First cross matters most** - sets daily tone
3. **Volume confirms** - low volume crosses often fail
4. **Failed crosses reverse hard** - always use stops
5. **Don't overtrade choppy action** - multiple crosses = stay out
---
Happy Trading! 🟢🔴
Bull Flag & Flat Top Breakout DetectorBull Flag & Flat Top Detector - Quick Reference Guide
Pattern Overview
🚩 Bull Flag
╱╲
╱ ╲ ← Pullback (2-5 red candles)
╱ ╲
╱ ╲____
╱ ╲
│ │
│ THE POLE │ ← Strong upward move (3+ green candles)
│ │
└──────────────┘
What to look for:
Strong initial move (the "pole") - 3+ green candles, 3%+ move
Brief pullback - 2-5 candles, less than 50% retracement
Pullback should "drift" lower, not crash
Entry on first candle to make new high after pullback
📊 Flat Top Breakout
════════════════ ← Resistance (multiple touches)
↑ ↑ ↑
╱╲ ╱╲ ╱╲
╱ ╲╱ ╲╱ ╲ ← Consolidation
╱ ╲
╱ ╲
What to look for:
Multiple touches of same resistance level (2+)
Tight consolidation range
Each failed breakout builds pressure
Entry on convincing break above resistance with volume
Signal Types
SignalShapeColorMeaningBull Flag Breakout▲ TriangleLimeEntry signal - go longFlat Top Breakout◆ DiamondAquaEntry signal - go longBear Flag Breakout▼ TriangleRedShort entry (if enabled)Pattern Forming🚩 FlagFaded GreenBull flag developingPattern Forming■ SquareFaded BlueFlat top developing
Level Lines Explained
LineColorStyleMeaningEntryLimeSolidBreakout trigger priceStop LossRedDashedExit if price falls hereTarget 1AquaDottedFirst profit target (2R)Target 2YellowDottedSecond profit target (3R)
Info Table Reference
FieldWhat It ShowsBull FlagScanning / Forming 🚩 / Breakout ✓Flat TopScanning / Forming 📊 / Breakout ✓PullbackCandle count + retracement %Rel VolumeCurrent bar vs averageEMA 20Above ✓ or Below ✗VWAPAbove ✓ or Below ✗Green StreakConsecutive green candles (pole)ResistanceTouch count for flat top
Trading Checklist
Before Entry ✅
Pattern status shows "FORMING" or "BREAKOUT"
Price above EMA (table shows ✓)
Price above VWAP (table shows ✓)
Relative volume 1.5x+ (ideally 2x+)
Stock is in play (up 5%+ on day, has catalyst)
Market direction supportive (not fighting trend)
Entry Execution
Wait for breakout candle to form
Confirm volume spike on breakout
Enter as close to entry line as possible
Set stop loss at red dashed line
Know your target levels
Trade Management
If no immediate follow-through → consider exit ("breakout or bailout")
Take 50% off at Target 1
Move stop to breakeven
Let remainder run toward Target 2
Exit fully if price returns below entry
Bull Flag Quality Checklist
Pole Quality:
FactorIdealAcceptableAvoidGreen candles5+3-4Less than 3Move size10%+3-10%Less than 3%VolumeIncreasingSteadyDecliningCandle bodiesLargeMediumSmall/doji
Pullback Quality:
FactorIdealAcceptableAvoidCandle count2-34-56+RetracementUnder 38%38-50%Over 50%VolumeDecliningSteadyIncreasingCharacterOrderly driftChoppySharp drop
Flat Top Quality Checklist
FactorGood SetupWeak SetupTouches3+ at same levelOnly 2, widely spacedToleranceVery tight (0.2%)Loose (1%+)Duration5-15 barsToo short or too longVolumeDrying upErraticPrior trendUpSideways/down
Common Mistakes to Avoid
❌ Entering too early
Wait for actual breakout, not anticipation
"Forming" ≠ "Breakout"
❌ Ignoring volume
No volume = likely false breakout
Require 1.5x+ relative volume minimum
❌ Fighting the trend
Check EMA and VWAP status
Both should be ✓ for high probability
❌ Wide stops
Stop should be below pullback low
If stop is too wide, skip the trade
❌ Holding losers
"Breakout or bailout" - if it doesn't work, exit
Failed breakouts often reverse hard
❌ Chasing extended moves
If you missed entry, wait for next pattern
Don't chase 5+ candles after breakout
Risk Management Rules
Position Sizing
Risk Amount = Account × Risk % (typically 1-2%)
Position Size = Risk Amount ÷ (Entry - Stop)
Example:
Account: $25,000
Risk: 1% = $250
Entry: $5.00
Stop: $4.70
Risk per share: $0.30
Position Size: $250 ÷ $0.30 = 833 shares
Risk-Reward Targets
TargetR MultipleExample (risk $0.30)Target 12:1+$0.60 ($5.60)Target 23:1+$0.90 ($5.90)
Timeframe Guide
TimeframeProsConsBest For1-minMore patterns, precise entryNoisy, false signalsScalping5-minGood balance, cleaner patternsFewer signalsDay trading15-minHigh quality patternsMiss fast movesSwing entries
Settings Quick Reference
Default Settings (Balanced)
Pole: 3 candles, 3% move
Pullback: 2-5 candles, 50% max retrace
Volume: 1.5x required
Filters: EMA + VWAP ON
Aggressive Settings
Pole: 2 candles, 2% move
Pullback: 2-6 candles, 60% max retrace
Volume: 1.2x required
Filters: VWAP OFF
Conservative Settings
Pole: 4 candles, 5% move
Pullback: 2-4 candles, 40% max retrace
Volume: 2.0x required
Filters: Both ON
Alert Setup
Recommended Alerts
"Bull Flag Forming"
Get early warning as pattern develops
Prepare your position size and levels
"Bull Flag Breakout"
Primary entry alert
React quickly when triggered
"Any Bullish Breakout"
Catch both bull flags and flat tops
Good for watchlist scanning
Alert Setup Steps
Right-click chart → Add Alert
Condition: Select "Bull Flag & Flat Top Breakout Detector"
Choose alert type from dropdown
Set expiration and notification method
Troubleshooting
Q: Patterns not detecting?
Lower the Min Pole Move % setting
Reduce Min Pole Candles requirement
Check that price is in acceptable range
Q: Too many false signals?
Increase volume multiplier to 2.0x
Enable both EMA and VWAP filters
Increase Min Pole Move %
Q: Levels not showing?
Enable "Show Entry Line", "Show Stop Loss", "Show Targets"
Check "Max Patterns to Display" setting
Q: Info table not visible?
Enable "Show Info Table" in settings
Try different table position
Pattern Combinations
Best Setups (A+ Quality)
Bull flag on a gap day (Gap & Go → Bull Flag)
Flat top at pre-market high resistance
Pattern forming above VWAP with 5x+ volume
Avoid These
Bull flag below VWAP
Flat top in downtrending stock
Low volume patterns
Patterns late in the day (after 2pm)
Daily Routine
Pre-Market (7-9am)
Build watchlist of gappers (5%+, high volume)
Apply indicator to top 3-5 candidates
Note pre-market levels
Market Open (9:30-10:30am)
Watch for "FORMING" status on watchlist
Prepare entries as patterns develop
Execute on breakout signals
Manage trades according to plan
Midday (10:30am-2pm)
Look for second-wave patterns
Be more selective (less momentum)
Consider tighter stops
Close (2-4pm)
Generally avoid new patterns
Manage existing positions
Review day's trades
Gap & Go Day Trading Tool - Key Levels, Alerts & Setup GradingVisualizes Gap & Go setups with automatic gap detection, pre-market levels, and breakout signals. Shows: ✅ Gap % with quality rating (5%/10%/20%+) ✅ Pre-market high/low ✅ First candle range ✅ 50% gap fill target ✅ VWAP ✅ Relative volume. Includes setup grading system (A+ to C), entry signals on PM high breakouts, and 6 customizable alerts. Perfect for momentum day traders focusing on gapping stocks.
Full Description
█ OVERVIEW
The Gap & Go indicator automatically identifies and visualizes gap trading setups - one of the most popular momentum day trading strategies. When a stock gaps up significantly from the prior close, it often signals strong buying interest and potential for continuation moves.
This indicator displays all the key levels you need to trade gaps effectively, grades setup quality, and alerts you to breakout opportunities.
█ HOW IT WORKS
The indicator calculates the gap percentage between yesterday's close and today's open, then displays critical support/resistance levels that gap traders watch:
Gap Zone → The price range between prior close and gap open
Pre-Market High/Low → Key breakout and support levels from extended hours
First Candle Range → Opening range that often defines intraday direction
50% Gap Fill → Common retracement target and support level
VWAP → Institutional reference point
█ GAP CLASSIFICATION
Gaps are automatically classified by magnitude:
🔥 Qualifying Gap (5%+) → Meets minimum threshold for gap trading
🔥🔥 Strong Gap (10%+) → Ideal gap size for momentum plays
🔥🔥🔥 Monster Gap (20%+) → Exceptional move requiring extra attention
Background color changes based on gap quality for instant visual identification.
█ SETUP GRADING SYSTEM
The indicator grades each setup from A+ to C based on multiple factors:
- Gap magnitude (qualifying vs strong)
- Relative volume (2x+ vs 5x+ average)
- Price position relative to VWAP
A+ Setup (4-5 points) → High probability
A Setup (3 points) → Good setup
B Setup (2 points) → Moderate
C Setup (0-1 points) → Weak/avoid
█ ENTRY SIGNALS
Triangle signals appear when price breaks above key levels:
▲ Lime Triangle → Breaking above Pre-Market High
▲ Aqua Triangle → Breaking above First Candle High
Signals require volume confirmation by default (configurable).
█ KEY LEVELS DISPLAYED
- Prior Close (Orange) → Gap reference point
- Pre-Market High (Lime) → Primary breakout level
- Pre-Market Low (Red) → Support if gap fails
- First Candle Range (Aqua box) → Opening range breakout levels
- 50% Gap Fill (Yellow dotted) → Common support/target
- VWAP (Purple) → Institutional pivot
█ INFO TABLE
Real-time dashboard showing:
- Gap % with quality emoji
- Relative Volume with status
- All key price levels
- Breakout status (✓ if broken)
- Distance from PM High
- Setup Grade
█ ALERTS INCLUDED
6 customizable alerts:
1. Qualifying Gap Detected (5%+)
2. Strong Gap Detected (10%+)
3. Monster Gap Detected (20%+)
4. Pre-Market High Breakout
5. First Candle High Breakout
6. 50% Gap Fill Test
7. Full Gap Fill (setup invalidated)
█ SETTINGS
Gap Settings
- Minimum gap % threshold
- Strong gap % threshold
- Monster gap % threshold
Volume Settings
- Enable/disable relative volume filter
- Minimum RVol requirement
- Strong RVol threshold
- RVol calculation period
Level Settings
- Toggle each level type on/off
- Show/hide gap zone
- Show/hide VWAP
Signal Settings
- Breakout signal type (PM High, First Candle, Both)
- Volume confirmation requirement
Visual Settings
- Info table position
- Color customization for all levels
█ HOW TO USE
1. Scan for gapping stocks pre-market (use a scanner or watchlist)
2. Apply this indicator to candidates
3. Check the Setup Grade in the info table
4. Wait for price to consolidate near pre-market high
5. Enter on breakout above PM High with volume confirmation
6. Use 50% gap fill or PM Low as stop loss reference
7. Monitor VWAP - staying above is bullish
█ BEST PRACTICES
✓ Focus on A and A+ setups
✓ Require strong relative volume (5x+)
✓ Trade in the direction of the gap (long for gap ups)
✓ Watch for gap fill as potential support
✓ Be cautious if price falls below VWAP
✓ First 30-60 minutes typically have best momentum
█ TIMEFRAME RECOMMENDATIONS
- 1-minute: Scalping, precise entries
- 5-minute: Most common for gap trading (recommended)
- 15-minute: Swing entries, less noise
█ NOTES
- Pre-market levels require extended hours data enabled
- First candle range is based on the first regular market candle
- Works on stocks, ETFs, and futures
- Gaps down are detected but focus is on gap-up setups
█ DISCLAIMER
This indicator is for educational purposes only. Gap trading involves significant risk. Past performance does not guarantee future results. Always use proper risk management and never risk more than you can afford to lose.
RSI Swing Indicator (with HL + LL Alerts — FIXED v5)This indicator identifies swing highs and lows based on RSI extremes (overbought and oversold zones). It automatically labels:
So you can easily spot hidden bullish divergences.
It also draws swing lines connecting these points for visual trend analysis. Alerts are triggered specifically on HL & LL formations, which often signal potential bullish continuation.
HH (Higher High) – price moves higher than the previous swing high
LH (Lower High) – price forms a lower high
HL (Higher Low) – price forms a higher low
LL (Lower Low) – price forms a lower low
Orderbook Table1. Indicator Name
Orderbook Table
This is an order book style trading volume map
that upgraded the price from my first script to label
2. One-line Introduction
A visual heatmap-style orderbook simulator that displays volume and delta clustering across price levels.
3. Overall Description
Orderbook Table is a powerful visual tool designed to replicate an on-chart approximation of a traditional order book.
It scans historical candles within a specified lookback window and accumulates traded volume into price "bins" or levels.
Each level is color-coded based on total volume and directional bias (delta), offering a layered view of where market interest was concentrated.
The indicator approximates order flow by analyzing each candle's directional volume, separating bullish and bearish volume.
With adjustable parameters such as level depth, price bin density, delta sensitivity, and opacity, it provides a highly customizable visualization.
Displayed directly on the chart, each level shows the volume at that price zone, along with a price label, offset to the right of the current bar.
Traders can use this tool to detect high liquidity zones, support/resistance clusters, and volume imbalances that may precede future price movements.
4. Key Benefits (Title + Description)
✅ On-Chart Volume Heatmap
Shows volume distribution across price levels in real-time directly on the price chart, creating a live “orderbook” view.
✅ Delta-Based Bias Coloring
Color changes based on net buying/selling pressure (delta), making aggressive demand/supply zones easy to spot.
✅ High Customizability
Users can adjust lookback bars, price bins, opacity levels, and delta usage to fit any market condition or asset class.
✅ Lightweight Simulation
Approximates orderbook depth using candle data without needing L2 feed access—works on all assets and timeframes.
✅ Clear Visual Anchoring
Volume quantities and price levels are offset to the right for easy viewing without cluttering the active chart area.
✅ Fast Market Context Recognition
Quickly identify price levels where volume concentrated historically, improving decision-making for entries/exits.
5. Indicator User Guide
📌 Basic Concept
Orderbook Table analyzes a configurable number of past bars and distributes traded volume into price "bins."
Each bin shows how much volume occurred around that price level, optionally adjusted for bullish/bearish candle direction.
⚙️ Settings Overview
Lookback Bars: Number of candles to scan for volume history
Levels (Total): Number of price levels to display around the current price
Price Bins: Granularity of price segmentation for volume distribution
Shift Right: How far to offset labels to the right of the current bar
Max/Min Opacity: Controls visual strength of volume coloring
Use Candle Delta Approx.: If enabled, colors the volume based on candle direction (green for up, red for down)
📈 Example Timing
Look for green clusters (bullish bias) below current price → possible strong demand zones
Price enters a high-volume level with previously aggressive buyers (green), suggesting support
📉 Example Timing
Red clusters (bearish bias) above current price can act as resistance or supply zones
Price stalling at a red-heavy volume band may indicate exhaustion or reversal opportunity
🧪 Recommended Use
Use as a support/resistance mapping tool in ranging and trending markets
Pair with candlestick analysis or momentum indicators for refined entry/exit points
Combine with VWAP or volume profile for multi-dimensional volume insight
🔒 Cautions
This is an approximation, not a true L2 orderbook—volume is based on historical candles, not actual limit order data
In low-volume markets or higher timeframes, bin granularity may be too coarse—adjust "Price Bins" accordingly
Delta calculation is based on open-close direction and does not reflect true buy/sell volume splits
Avoid overinterpreting low-opacity (light color) zones—they may indicate low interest rather than true resistance/support
+++
Filter Volume1. Indicator Name
Filter Volume
2. One-line Introduction
A regression-based trend filter that quantifies and visualizes market direction and strength using price behavior.
3. Overall Description
Filter Volume+ is a trend-detection indicator that uses linear regression to evaluate the dominant direction of price movement over a given period.
It compares historical regression values to determine whether the market is in a bullish, bearish, or neutral state.
The indicator applies a percentage threshold to filter out weak or indecisive trends, highlighting only significant movements.
Each trend state is visualized through distinct colors: bullish (greenish), bearish (reddish), and neutral (gray), with intensity reflecting trend strength.
To reduce noise and create smooth visual signals, a three-step smoothing process is applied to the raw trend intensity.
Users can customize the regression source, lookback period, and sensitivity, allowing the indicator to adapt to various assets and timeframes.
This tool is especially useful in filtering entry signals based on clear directional bias, making it suitable for trend-following or confirmation strategies.
4. Key Benefits (Title + Description)
✅ Quantified Trend Strength
Only displays trend signals when a statistically significant direction is detected using linear regression comparisons.
✅ Visual Clarity with Color Coding
Each market state (bullish, bearish, neutral) is represented with distinct colors and transparency, enabling fast interpretation.
✅ Custom Regression Source
Users can define the data input (e.g., close, open, indicator output) for regression calculation, increasing strategic flexibility.
✅ Multi-Level Smoothing
Applies three layers of smoothing (via moving averages) to eliminate noise and produce a stable, flowing trend curve.
✅ Area Fill Visualization
Plots a colored band between the trend value and zero-line, helping users quickly gauge the market's dominant force.
✅ Adjustable Sensitivity Settings
Includes tolerance and lookback controls, allowing traders to fine-tune how reactive or conservative the trend detection should be.
5. Indicator User Guide
📌 Basic Concept
Filter Volume+ assesses the direction of price by comparing regression values over a selected period.
If the percentage of upward comparisons exceeds a threshold, a bullish state is shown; if downward comparisons dominate, it shows a bearish state.
⚙️ Settings Overview
Lookback Period (n): The number of bars to compare for trend analysis
Range Tolerance (%): Minimum threshold for declaring a strong trend
Regression Source: The data used for regression (e.g., close, open)
Linear Regression Length: Number of bars used to compute each regression value
Bull/Bear Color: Custom colors for bullish and bearish trends
📈 Example Timing
When the trend line stays above zero and the green color intensity increases → trend gaining strength
After a neutral phase (gray), the color shifts quickly to greenish → early trend reversal
📉 Example Timing
When the trend line stays below zero with deepening red color → strong bearish continuation
Sudden change from bullish to bearish color with rising intensity
🧪 Recommended Use
Use as a trend confirmation filter alongside entry/exit strategies
Ideal for swing or position trades in trending markets
Combine with oscillators like RSI or MACD for improved signal validation
🔒 Cautions
In ranging (sideways) markets, the color may change frequently – avoid relying solely on this indicator in those zones.
Low-intensity colors (faded) suggest weak trends – better to stay on the sidelines.
A short lookback period may cause over-sensitivity and false signals.
When using non-price regression sources, expect the indicator to behave differently – test before deploying.
+++
Directional Positional Option Selling Modelif you want to go dictional selling use it on 1 day or 4 hr chart
Dynamic Equity Allocation Model//@version=6
indicator('Dynamic Equity Allocation Model', shorttitle = 'DEAM', overlay = false, precision = 1, scale = scale.right, max_bars_back = 500)
// DYNAMIC EQUITY ALLOCATION MODEL
// Quantitative framework for dynamic portfolio allocation between stocks and cash.
// Analyzes five dimensions: market regime, risk metrics, valuation, sentiment,
// and macro conditions to generate allocation recommendations (0-100% equity).
//
// Uses real-time data from TradingView including fundamentals (P/E, ROE, ERP),
// volatility indicators (VIX), credit spreads, yield curves, and market structure.
// INPUT PARAMETERS
group1 = 'Model Configuration'
model_type = input.string('Adaptive', 'Allocation Model Type', options = , group = group1, tooltip = 'Conservative: Slower to increase equity, Aggressive: Faster allocation changes, Adaptive: Dynamic based on regime')
use_crisis_detection = input.bool(true, 'Enable Crisis Detection System', group = group1, tooltip = 'Automatic detection and response to crisis conditions')
use_regime_model = input.bool(true, 'Use Market Regime Detection', group = group1, tooltip = 'Identify Bull/Bear/Crisis regimes for dynamic allocation')
group2 = 'Portfolio Risk Management'
target_portfolio_volatility = input.float(12.0, 'Target Portfolio Volatility (%)', minval = 3, maxval = 20, step = 0.5, group = group2, tooltip = 'Target portfolio volatility (Cash reduces volatility: 50% Equity = ~10% vol, 100% Equity = ~20% vol)')
max_portfolio_drawdown = input.float(15.0, 'Maximum Portfolio Drawdown (%)', minval = 5, maxval = 35, step = 2.5, group = group2, tooltip = 'Maximum acceptable PORTFOLIO drawdown (not market drawdown - portfolio with cash has lower drawdown)')
enable_portfolio_risk_scaling = input.bool(true, 'Enable Portfolio Risk Scaling', group = group2, tooltip = 'Scale allocation based on actual portfolio risk characteristics (recommended)')
risk_lookback = input.int(252, 'Risk Calculation Period (Days)', minval = 60, maxval = 504, group = group2, tooltip = 'Period for calculating volatility and risk metrics')
group3 = 'Component Weights (Total = 100%)'
w_regime = input.float(35.0, 'Market Regime Weight (%)', minval = 0, maxval = 100, step = 5, group = group3)
w_risk = input.float(25.0, 'Risk Metrics Weight (%)', minval = 0, maxval = 100, step = 5, group = group3)
w_valuation = input.float(20.0, 'Valuation Weight (%)', minval = 0, maxval = 100, step = 5, group = group3)
w_sentiment = input.float(15.0, 'Sentiment Weight (%)', minval = 0, maxval = 100, step = 5, group = group3)
w_macro = input.float(5.0, 'Macro Weight (%)', minval = 0, maxval = 100, step = 5, group = group3)
group4 = 'Crisis Detection Thresholds'
crisis_vix_threshold = input.float(40, 'Crisis VIX Level', minval = 30, maxval = 80, group = group4, tooltip = 'VIX level indicating crisis conditions (COVID peaked at 82)')
crisis_drawdown_threshold = input.float(15, 'Crisis Drawdown Threshold (%)', minval = 10, maxval = 30, group = group4, tooltip = 'Market drawdown indicating crisis conditions')
crisis_credit_spread = input.float(500, 'Crisis Credit Spread (bps)', minval = 300, maxval = 1000, group = group4, tooltip = 'High yield spread indicating crisis conditions')
group5 = 'Display Settings'
show_components = input.bool(false, 'Show Component Breakdown', group = group5, tooltip = 'Display individual component analysis lines')
show_regime_background = input.bool(true, 'Show Dynamic Background', group = group5, tooltip = 'Color background based on allocation signals')
show_reference_lines = input.bool(false, 'Show Reference Lines', group = group5, tooltip = 'Display allocation percentage reference lines')
show_dashboard = input.bool(true, 'Show Analytics Dashboard', group = group5, tooltip = 'Display comprehensive analytics table')
show_confidence_bands = input.bool(false, 'Show Confidence Bands', group = group5, tooltip = 'Display uncertainty quantification bands')
smoothing_period = input.int(3, 'Smoothing Period', minval = 1, maxval = 10, group = group5, tooltip = 'Smoothing to reduce allocation noise')
background_intensity = input.int(95, 'Background Intensity (%)', minval = 90, maxval = 99, group = group5, tooltip = 'Higher values = more transparent background')
// Styling Options
color_scheme = input.string('EdgeTools', 'Color Theme', options = , group = 'Appearance', tooltip = 'Professional color themes')
use_dark_mode = input.bool(true, 'Optimize for Dark Theme', group = 'Appearance')
main_line_width = input.int(3, 'Main Line Width', minval = 1, maxval = 5, group = 'Appearance')
// DATA RETRIEVAL
// Market Data
sp500 = request.security('SPY', timeframe.period, close)
sp500_high = request.security('SPY', timeframe.period, high)
sp500_low = request.security('SPY', timeframe.period, low)
sp500_volume = request.security('SPY', timeframe.period, volume)
// Volatility Indicators
vix = request.security('VIX', timeframe.period, close)
vix9d = request.security('VIX9D', timeframe.period, close)
vxn = request.security('VXN', timeframe.period, close)
// Fixed Income and Credit
us2y = request.security('US02Y', timeframe.period, close)
us10y = request.security('US10Y', timeframe.period, close)
us3m = request.security('US03MY', timeframe.period, close)
hyg = request.security('HYG', timeframe.period, close)
lqd = request.security('LQD', timeframe.period, close)
tlt = request.security('TLT', timeframe.period, close)
// Safe Haven Assets
gold = request.security('GLD', timeframe.period, close)
usd = request.security('DXY', timeframe.period, close)
yen = request.security('JPYUSD', timeframe.period, close)
// Financial data with fallback values
get_financial_data(symbol, fin_id, period, fallback) =>
data = request.financial(symbol, fin_id, period, ignore_invalid_symbol = true)
na(data) ? fallback : data
// SPY fundamental metrics
spy_earnings_per_share = get_financial_data('AMEX:SPY', 'EARNINGS_PER_SHARE_BASIC', 'TTM', 20.0)
spy_operating_earnings_yield = get_financial_data('AMEX:SPY', 'OPERATING_EARNINGS_YIELD', 'FY', 4.5)
spy_dividend_yield = get_financial_data('AMEX:SPY', 'DIVIDENDS_YIELD', 'FY', 1.8)
spy_buyback_yield = get_financial_data('AMEX:SPY', 'BUYBACK_YIELD', 'FY', 2.0)
spy_net_margin = get_financial_data('AMEX:SPY', 'NET_MARGIN', 'TTM', 12.0)
spy_debt_to_equity = get_financial_data('AMEX:SPY', 'DEBT_TO_EQUITY', 'FY', 0.5)
spy_return_on_equity = get_financial_data('AMEX:SPY', 'RETURN_ON_EQUITY', 'FY', 15.0)
spy_free_cash_flow = get_financial_data('AMEX:SPY', 'FREE_CASH_FLOW', 'TTM', 100000000)
spy_ebitda = get_financial_data('AMEX:SPY', 'EBITDA', 'TTM', 200000000)
spy_pe_forward = get_financial_data('AMEX:SPY', 'PRICE_EARNINGS_FORWARD', 'FY', 18.0)
spy_total_debt = get_financial_data('AMEX:SPY', 'TOTAL_DEBT', 'FY', 500000000)
spy_total_equity = get_financial_data('AMEX:SPY', 'TOTAL_EQUITY', 'FY', 1000000000)
spy_enterprise_value = get_financial_data('AMEX:SPY', 'ENTERPRISE_VALUE', 'FY', 30000000000)
spy_revenue_growth = get_financial_data('AMEX:SPY', 'REVENUE_ONE_YEAR_GROWTH', 'TTM', 5.0)
// Market Breadth Indicators
nya = request.security('NYA', timeframe.period, close)
rut = request.security('IWM', timeframe.period, close)
// Sector Performance
xlk = request.security('XLK', timeframe.period, close)
xlu = request.security('XLU', timeframe.period, close)
xlf = request.security('XLF', timeframe.period, close)
// MARKET REGIME DETECTION
// Calculate Market Trend
sma_20 = ta.sma(sp500, 20)
sma_50 = ta.sma(sp500, 50)
sma_200 = ta.sma(sp500, 200)
ema_10 = ta.ema(sp500, 10)
// Market Structure Score
trend_strength = 0.0
trend_strength := trend_strength + (sp500 > sma_20 ? 1 : -1)
trend_strength := trend_strength + (sp500 > sma_50 ? 1 : -1)
trend_strength := trend_strength + (sp500 > sma_200 ? 2 : -2)
trend_strength := trend_strength + (sma_50 > sma_200 ? 2 : -2)
// Volatility Regime
returns = math.log(sp500 / sp500 )
realized_vol_20d = ta.stdev(returns, 20) * math.sqrt(252) * 100
realized_vol_60d = ta.stdev(returns, 60) * math.sqrt(252) * 100
ewma_vol = ta.ema(math.pow(returns, 2), 20)
realized_vol = math.sqrt(ewma_vol * 252) * 100
vol_premium = vix - realized_vol
// Drawdown Calculation
running_max = ta.highest(sp500, risk_lookback)
current_drawdown = (running_max - sp500) / running_max * 100
// Regime Score
regime_score = 0.0
// Trend Component (40%)
if trend_strength >= 4
regime_score := regime_score + 40
regime_score
else if trend_strength >= 2
regime_score := regime_score + 30
regime_score
else if trend_strength >= 0
regime_score := regime_score + 20
regime_score
else if trend_strength >= -2
regime_score := regime_score + 10
regime_score
else
regime_score := regime_score + 0
regime_score
// Volatility Component (30%)
if vix < 15
regime_score := regime_score + 30
regime_score
else if vix < 20
regime_score := regime_score + 25
regime_score
else if vix < 25
regime_score := regime_score + 15
regime_score
else if vix < 35
regime_score := regime_score + 5
regime_score
else
regime_score := regime_score + 0
regime_score
// Drawdown Component (30%)
if current_drawdown < 3
regime_score := regime_score + 30
regime_score
else if current_drawdown < 7
regime_score := regime_score + 20
regime_score
else if current_drawdown < 12
regime_score := regime_score + 10
regime_score
else if current_drawdown < 20
regime_score := regime_score + 5
regime_score
else
regime_score := regime_score + 0
regime_score
// Classify Regime
market_regime = regime_score >= 80 ? 'Strong Bull' : regime_score >= 60 ? 'Bull Market' : regime_score >= 40 ? 'Neutral' : regime_score >= 20 ? 'Correction' : regime_score >= 10 ? 'Bear Market' : 'Crisis'
// RISK-BASED ALLOCATION
// Calculate Market Risk
parkinson_hl = math.log(sp500_high / sp500_low)
parkinson_vol = parkinson_hl / (2 * math.sqrt(math.log(2))) * math.sqrt(252) * 100
garman_klass_vol = math.sqrt((0.5 * math.pow(math.log(sp500_high / sp500_low), 2) - (2 * math.log(2) - 1) * math.pow(math.log(sp500 / sp500 ), 2)) * 252) * 100
market_volatility_20d = math.max(ta.stdev(returns, 20) * math.sqrt(252) * 100, parkinson_vol)
market_volatility_60d = ta.stdev(returns, 60) * math.sqrt(252) * 100
market_drawdown = current_drawdown
// Initialize risk allocation
risk_allocation = 50.0
if enable_portfolio_risk_scaling
// Volatility-based allocation
vol_based_allocation = target_portfolio_volatility / math.max(market_volatility_20d, 5.0) * 100
vol_based_allocation := math.max(0, math.min(100, vol_based_allocation))
// Drawdown-based allocation
dd_based_allocation = 100.0
if market_drawdown > 1.0
dd_based_allocation := max_portfolio_drawdown / market_drawdown * 100
dd_based_allocation := math.max(0, math.min(100, dd_based_allocation))
dd_based_allocation
// Combine (conservative)
risk_allocation := math.min(vol_based_allocation, dd_based_allocation)
// Dynamic adjustment
current_equity_estimate = 50.0
estimated_portfolio_vol = current_equity_estimate / 100 * market_volatility_20d
estimated_portfolio_dd = current_equity_estimate / 100 * market_drawdown
vol_utilization = estimated_portfolio_vol / target_portfolio_volatility
dd_utilization = estimated_portfolio_dd / max_portfolio_drawdown
risk_utilization = math.max(vol_utilization, dd_utilization)
risk_adjustment_factor = 1.0
if risk_utilization > 1.0
risk_adjustment_factor := math.exp(-0.5 * (risk_utilization - 1.0))
risk_adjustment_factor := math.max(0.5, risk_adjustment_factor)
risk_adjustment_factor
else if risk_utilization < 0.9
risk_adjustment_factor := 1.0 + 0.2 * math.log(1.0 / risk_utilization)
risk_adjustment_factor := math.min(1.3, risk_adjustment_factor)
risk_adjustment_factor
risk_allocation := risk_allocation * risk_adjustment_factor
risk_allocation
else
vol_scalar = target_portfolio_volatility / math.max(market_volatility_20d, 10)
vol_scalar := math.min(1.5, math.max(0.2, vol_scalar))
drawdown_penalty = 0.0
if current_drawdown > max_portfolio_drawdown
drawdown_penalty := (current_drawdown - max_portfolio_drawdown) / max_portfolio_drawdown
drawdown_penalty := math.min(1.0, drawdown_penalty)
drawdown_penalty
risk_allocation := 100 * vol_scalar * (1 - drawdown_penalty)
risk_allocation
risk_allocation := math.max(0, math.min(100, risk_allocation))
// VALUATION ANALYSIS
// Valuation Metrics
actual_pe_ratio = spy_earnings_per_share > 0 ? sp500 / spy_earnings_per_share : spy_pe_forward
actual_earnings_yield = nz(spy_operating_earnings_yield, 0) > 0 ? spy_operating_earnings_yield : 100 / actual_pe_ratio
total_shareholder_yield = spy_dividend_yield + spy_buyback_yield
// Equity Risk Premium (multi-method calculation)
method1_erp = actual_earnings_yield - us10y
method2_erp = actual_earnings_yield + spy_buyback_yield - us10y
payout_ratio = spy_dividend_yield > 0 and actual_earnings_yield > 0 ? spy_dividend_yield / actual_earnings_yield : 0.4
sustainable_growth = spy_return_on_equity * (1 - payout_ratio) / 100
method3_erp = spy_dividend_yield + sustainable_growth * 100 - us10y
implied_growth = spy_revenue_growth * 0.7
method4_erp = total_shareholder_yield + implied_growth - us10y
equity_risk_premium = method1_erp * 0.35 + method2_erp * 0.30 + method3_erp * 0.20 + method4_erp * 0.15
ev_ebitda_ratio = spy_enterprise_value > 0 and spy_ebitda > 0 ? spy_enterprise_value / spy_ebitda : 15.0
debt_equity_health = spy_debt_to_equity < 1.0 ? 1.2 : spy_debt_to_equity < 2.0 ? 1.0 : 0.8
// Valuation Score
base_valuation_score = 50.0
if equity_risk_premium > 4
base_valuation_score := 95
base_valuation_score
else if equity_risk_premium > 3
base_valuation_score := 85
base_valuation_score
else if equity_risk_premium > 2
base_valuation_score := 70
base_valuation_score
else if equity_risk_premium > 1
base_valuation_score := 55
base_valuation_score
else if equity_risk_premium > 0
base_valuation_score := 40
base_valuation_score
else if equity_risk_premium > -1
base_valuation_score := 25
base_valuation_score
else
base_valuation_score := 10
base_valuation_score
growth_adjustment = spy_revenue_growth > 10 ? 10 : spy_revenue_growth > 5 ? 5 : 0
margin_adjustment = spy_net_margin > 15 ? 5 : spy_net_margin < 8 ? -5 : 0
roe_adjustment = spy_return_on_equity > 20 ? 5 : spy_return_on_equity < 10 ? -5 : 0
valuation_score = base_valuation_score + growth_adjustment + margin_adjustment + roe_adjustment
valuation_score := math.max(0, math.min(100, valuation_score * debt_equity_health))
// SENTIMENT ANALYSIS
// VIX Term Structure
vix_term_structure = vix9d > 0 ? vix / vix9d : 1
backwardation = vix_term_structure > 1.05
steep_backwardation = vix_term_structure > 1.15
// Safe Haven Flows
gold_momentum = ta.roc(gold, 20)
dollar_momentum = ta.roc(usd, 20)
yen_momentum = ta.roc(yen, 20)
treasury_momentum = ta.roc(tlt, 20)
safe_haven_flow = gold_momentum * 0.3 + treasury_momentum * 0.3 + dollar_momentum * 0.25 + yen_momentum * 0.15
// Advanced Sentiment Analysis
vix_percentile = ta.percentrank(vix, 252)
vix_zscore = (vix - ta.sma(vix, 252)) / ta.stdev(vix, 252)
vix_momentum = ta.roc(vix, 5)
vvix_proxy = ta.stdev(vix_momentum, 20) * math.sqrt(252)
risk_reversal_proxy = (vix - realized_vol) / realized_vol
// Sentiment Score
base_sentiment = 50.0
vix_adjustment = 0.0
if vix_zscore < -1.5
vix_adjustment := 40
vix_adjustment
else if vix_zscore < -0.5
vix_adjustment := 20
vix_adjustment
else if vix_zscore < 0.5
vix_adjustment := 0
vix_adjustment
else if vix_zscore < 1.5
vix_adjustment := -20
vix_adjustment
else
vix_adjustment := -40
vix_adjustment
term_structure_adjustment = backwardation ? -15 : steep_backwardation ? -30 : 5
vvix_adjustment = vvix_proxy > 2.0 ? -10 : vvix_proxy < 1.0 ? 10 : 0
sentiment_score = base_sentiment + vix_adjustment + term_structure_adjustment + vvix_adjustment
sentiment_score := math.max(0, math.min(100, sentiment_score))
// MACRO ANALYSIS
// Yield Curve
yield_spread_2_10 = us10y - us2y
yield_spread_3m_10 = us10y - us3m
// Credit Conditions
hyg_return = ta.roc(hyg, 20)
lqd_return = ta.roc(lqd, 20)
tlt_return = ta.roc(tlt, 20)
hyg_duration = 4.0
lqd_duration = 8.0
tlt_duration = 17.0
hyg_log_returns = math.log(hyg / hyg )
lqd_log_returns = math.log(lqd / lqd )
hyg_volatility = ta.stdev(hyg_log_returns, 20) * math.sqrt(252)
lqd_volatility = ta.stdev(lqd_log_returns, 20) * math.sqrt(252)
hyg_yield_proxy = -math.log(hyg / hyg ) * 100
lqd_yield_proxy = -math.log(lqd / lqd ) * 100
tlt_yield = us10y
hyg_spread = (hyg_yield_proxy - tlt_yield) * 100
lqd_spread = (lqd_yield_proxy - tlt_yield) * 100
hyg_distance = (hyg - ta.lowest(hyg, 252)) / (ta.highest(hyg, 252) - ta.lowest(hyg, 252))
lqd_distance = (lqd - ta.lowest(lqd, 252)) / (ta.highest(lqd, 252) - ta.lowest(lqd, 252))
default_risk_proxy = 2.0 - (hyg_distance + lqd_distance)
credit_spread = hyg_spread * 0.5 + (hyg_volatility - lqd_volatility) * 1000 * 0.3 + default_risk_proxy * 200 * 0.2
credit_spread := math.max(50, credit_spread)
credit_market_health = hyg_return > lqd_return ? 1 : -1
flight_to_quality = tlt_return > (hyg_return + lqd_return) / 2
// Macro Score
macro_score = 50.0
yield_curve_score = 0
if yield_spread_2_10 > 1.5 and yield_spread_3m_10 > 2
yield_curve_score := 40
yield_curve_score
else if yield_spread_2_10 > 0.5 and yield_spread_3m_10 > 1
yield_curve_score := 30
yield_curve_score
else if yield_spread_2_10 > 0 and yield_spread_3m_10 > 0
yield_curve_score := 20
yield_curve_score
else if yield_spread_2_10 < 0 or yield_spread_3m_10 < 0
yield_curve_score := 10
yield_curve_score
else
yield_curve_score := 5
yield_curve_score
credit_conditions_score = 0
if credit_spread < 200 and not flight_to_quality
credit_conditions_score := 30
credit_conditions_score
else if credit_spread < 400 and credit_market_health > 0
credit_conditions_score := 20
credit_conditions_score
else if credit_spread < 600
credit_conditions_score := 15
credit_conditions_score
else if credit_spread < 1000
credit_conditions_score := 10
credit_conditions_score
else
credit_conditions_score := 0
credit_conditions_score
financial_stability_score = 0
if spy_debt_to_equity < 0.5 and spy_return_on_equity > 15
financial_stability_score := 20
financial_stability_score
else if spy_debt_to_equity < 1.0 and spy_return_on_equity > 10
financial_stability_score := 15
financial_stability_score
else if spy_debt_to_equity < 1.5
financial_stability_score := 10
financial_stability_score
else
financial_stability_score := 5
financial_stability_score
macro_score := yield_curve_score + credit_conditions_score + financial_stability_score
macro_score := math.max(0, math.min(100, macro_score))
// CRISIS DETECTION
crisis_indicators = 0
if vix > crisis_vix_threshold
crisis_indicators := crisis_indicators + 1
crisis_indicators
if vix > 60
crisis_indicators := crisis_indicators + 2
crisis_indicators
if current_drawdown > crisis_drawdown_threshold
crisis_indicators := crisis_indicators + 1
crisis_indicators
if current_drawdown > 25
crisis_indicators := crisis_indicators + 1
crisis_indicators
if credit_spread > crisis_credit_spread
crisis_indicators := crisis_indicators + 1
crisis_indicators
sp500_roc_5 = ta.roc(sp500, 5)
tlt_roc_5 = ta.roc(tlt, 5)
if sp500_roc_5 < -10 and tlt_roc_5 < -5
crisis_indicators := crisis_indicators + 2
crisis_indicators
volume_spike = sp500_volume > ta.sma(sp500_volume, 20) * 2
sp500_roc_1 = ta.roc(sp500, 1)
if volume_spike and sp500_roc_1 < -3
crisis_indicators := crisis_indicators + 1
crisis_indicators
is_crisis = crisis_indicators >= 3
is_severe_crisis = crisis_indicators >= 5
// FINAL ALLOCATION CALCULATION
// Convert regime to base allocation
regime_allocation = market_regime == 'Strong Bull' ? 100 : market_regime == 'Bull Market' ? 80 : market_regime == 'Neutral' ? 60 : market_regime == 'Correction' ? 40 : market_regime == 'Bear Market' ? 20 : 0
// Normalize weights
total_weight = w_regime + w_risk + w_valuation + w_sentiment + w_macro
w_regime_norm = w_regime / total_weight
w_risk_norm = w_risk / total_weight
w_valuation_norm = w_valuation / total_weight
w_sentiment_norm = w_sentiment / total_weight
w_macro_norm = w_macro / total_weight
// Calculate Weighted Allocation
weighted_allocation = regime_allocation * w_regime_norm + risk_allocation * w_risk_norm + valuation_score * w_valuation_norm + sentiment_score * w_sentiment_norm + macro_score * w_macro_norm
// Apply Crisis Override
if use_crisis_detection
if is_severe_crisis
weighted_allocation := math.min(weighted_allocation, 10)
weighted_allocation
else if is_crisis
weighted_allocation := math.min(weighted_allocation, 25)
weighted_allocation
// Model Type Adjustment
model_adjustment = 0.0
if model_type == 'Conservative'
model_adjustment := -10
model_adjustment
else if model_type == 'Aggressive'
model_adjustment := 10
model_adjustment
else if model_type == 'Adaptive'
recent_return = (sp500 - sp500 ) / sp500 * 100
if recent_return > 5
model_adjustment := 5
model_adjustment
else if recent_return < -5
model_adjustment := -5
model_adjustment
// Apply adjustment and bounds
final_allocation = weighted_allocation + model_adjustment
final_allocation := math.max(0, math.min(100, final_allocation))
// Smooth allocation
smoothed_allocation = ta.sma(final_allocation, smoothing_period)
// Calculate portfolio risk metrics (only for internal alerts)
actual_portfolio_volatility = smoothed_allocation / 100 * market_volatility_20d
actual_portfolio_drawdown = smoothed_allocation / 100 * current_drawdown
// VISUALIZATION
// Color definitions
var color primary_color = #2196F3
var color bullish_color = #4CAF50
var color bearish_color = #FF5252
var color neutral_color = #808080
var color text_color = color.white
var color bg_color = #000000
var color table_bg_color = #1E1E1E
var color header_bg_color = #2D2D2D
switch color_scheme // Apply color scheme
'Gold' =>
primary_color := use_dark_mode ? #FFD700 : #DAA520
bullish_color := use_dark_mode ? #FFA500 : #FF8C00
bearish_color := use_dark_mode ? #FF5252 : #D32F2F
neutral_color := use_dark_mode ? #C0C0C0 : #808080
text_color := use_dark_mode ? color.white : color.black
bg_color := use_dark_mode ? #000000 : #FFFFFF
table_bg_color := use_dark_mode ? #1A1A00 : #FFFEF0
header_bg_color := use_dark_mode ? #2D2600 : #F5F5DC
header_bg_color
'EdgeTools' =>
primary_color := use_dark_mode ? #4682B4 : #1E90FF
bullish_color := use_dark_mode ? #4CAF50 : #388E3C
bearish_color := use_dark_mode ? #FF5252 : #D32F2F
neutral_color := use_dark_mode ? #708090 : #696969
text_color := use_dark_mode ? color.white : color.black
bg_color := use_dark_mode ? #000000 : #FFFFFF
table_bg_color := use_dark_mode ? #0F1419 : #F0F8FF
header_bg_color := use_dark_mode ? #1E2A3A : #E6F3FF
header_bg_color
'Behavioral' =>
primary_color := #808080
bullish_color := #00FF00
bearish_color := #8B0000
neutral_color := #FFBF00
text_color := use_dark_mode ? color.white : color.black
bg_color := use_dark_mode ? #000000 : #FFFFFF
table_bg_color := use_dark_mode ? #1A1A1A : #F8F8F8
header_bg_color := use_dark_mode ? #2D2D2D : #E8E8E8
header_bg_color
'Quant' =>
primary_color := #808080
bullish_color := #FFA500
bearish_color := #8B0000
neutral_color := #4682B4
text_color := use_dark_mode ? color.white : color.black
bg_color := use_dark_mode ? #000000 : #FFFFFF
table_bg_color := use_dark_mode ? #0D0D0D : #FAFAFA
header_bg_color := use_dark_mode ? #1A1A1A : #F0F0F0
header_bg_color
'Ocean' =>
primary_color := use_dark_mode ? #20B2AA : #008B8B
bullish_color := use_dark_mode ? #00CED1 : #4682B4
bearish_color := use_dark_mode ? #FF4500 : #B22222
neutral_color := use_dark_mode ? #87CEEB : #2F4F4F
text_color := use_dark_mode ? #F0F8FF : #191970
bg_color := use_dark_mode ? #001F3F : #F0F8FF
table_bg_color := use_dark_mode ? #001A2E : #E6F7FF
header_bg_color := use_dark_mode ? #002A47 : #CCF2FF
header_bg_color
'Fire' =>
primary_color := use_dark_mode ? #FF6347 : #DC143C
bullish_color := use_dark_mode ? #FFD700 : #FF8C00
bearish_color := use_dark_mode ? #8B0000 : #800000
neutral_color := use_dark_mode ? #FFA500 : #CD853F
text_color := use_dark_mode ? #FFFAF0 : #2F1B14
bg_color := use_dark_mode ? #2F1B14 : #FFFAF0
table_bg_color := use_dark_mode ? #261611 : #FFF8F0
header_bg_color := use_dark_mode ? #3D241A : #FFE4CC
header_bg_color
'Matrix' =>
primary_color := use_dark_mode ? #00FF41 : #006400
bullish_color := use_dark_mode ? #39FF14 : #228B22
bearish_color := use_dark_mode ? #FF073A : #8B0000
neutral_color := use_dark_mode ? #00FFFF : #008B8B
text_color := use_dark_mode ? #C0FF8C : #003300
bg_color := use_dark_mode ? #0D1B0D : #F0FFF0
table_bg_color := use_dark_mode ? #0A1A0A : #E8FFF0
header_bg_color := use_dark_mode ? #112B11 : #CCFFCC
header_bg_color
'Arctic' =>
primary_color := use_dark_mode ? #87CEFA : #4169E1
bullish_color := use_dark_mode ? #00BFFF : #0000CD
bearish_color := use_dark_mode ? #FF1493 : #8B008B
neutral_color := use_dark_mode ? #B0E0E6 : #483D8B
text_color := use_dark_mode ? #F8F8FF : #191970
bg_color := use_dark_mode ? #191970 : #F8F8FF
table_bg_color := use_dark_mode ? #141B47 : #F0F8FF
header_bg_color := use_dark_mode ? #1E2A5C : #E0F0FF
header_bg_color
// Transparency settings
bg_transparency = use_dark_mode ? 85 : 92
zone_transparency = use_dark_mode ? 90 : 95
band_transparency = use_dark_mode ? 70 : 85
table_transparency = use_dark_mode ? 80 : 15
// Allocation color
alloc_color = smoothed_allocation >= 80 ? bullish_color : smoothed_allocation >= 60 ? color.new(bullish_color, 30) : smoothed_allocation >= 40 ? primary_color : smoothed_allocation >= 20 ? color.new(bearish_color, 30) : bearish_color
// Dynamic background
var color dynamic_bg_color = na
if show_regime_background
if smoothed_allocation >= 70
dynamic_bg_color := color.new(bullish_color, background_intensity)
dynamic_bg_color
else if smoothed_allocation <= 30
dynamic_bg_color := color.new(bearish_color, background_intensity)
dynamic_bg_color
else if smoothed_allocation > 60 or smoothed_allocation < 40
dynamic_bg_color := color.new(primary_color, math.min(99, background_intensity + 2))
dynamic_bg_color
bgcolor(dynamic_bg_color, title = 'Allocation Signal Background')
// Plot main allocation line
plot(smoothed_allocation, 'Equity Allocation %', color = alloc_color, linewidth = math.max(1, main_line_width))
// Reference lines (static colors for hline)
hline_bullish_color = color_scheme == 'Gold' ? use_dark_mode ? #FFA500 : #FF8C00 : color_scheme == 'EdgeTools' ? use_dark_mode ? #4CAF50 : #388E3C : color_scheme == 'Behavioral' ? #00FF00 : color_scheme == 'Quant' ? #FFA500 : color_scheme == 'Ocean' ? use_dark_mode ? #00CED1 : #4682B4 : color_scheme == 'Fire' ? use_dark_mode ? #FFD700 : #FF8C00 : color_scheme == 'Matrix' ? use_dark_mode ? #39FF14 : #228B22 : color_scheme == 'Arctic' ? use_dark_mode ? #00BFFF : #0000CD : #4CAF50
hline_bearish_color = color_scheme == 'Gold' ? use_dark_mode ? #FF5252 : #D32F2F : color_scheme == 'EdgeTools' ? use_dark_mode ? #FF5252 : #D32F2F : color_scheme == 'Behavioral' ? #8B0000 : color_scheme == 'Quant' ? #8B0000 : color_scheme == 'Ocean' ? use_dark_mode ? #FF4500 : #B22222 : color_scheme == 'Fire' ? use_dark_mode ? #8B0000 : #800000 : color_scheme == 'Matrix' ? use_dark_mode ? #FF073A : #8B0000 : color_scheme == 'Arctic' ? use_dark_mode ? #FF1493 : #8B008B : #FF5252
hline_primary_color = color_scheme == 'Gold' ? use_dark_mode ? #FFD700 : #DAA520 : color_scheme == 'EdgeTools' ? use_dark_mode ? #4682B4 : #1E90FF : color_scheme == 'Behavioral' ? #808080 : color_scheme == 'Quant' ? #808080 : color_scheme == 'Ocean' ? use_dark_mode ? #20B2AA : #008B8B : color_scheme == 'Fire' ? use_dark_mode ? #FF6347 : #DC143C : color_scheme == 'Matrix' ? use_dark_mode ? #00FF41 : #006400 : color_scheme == 'Arctic' ? use_dark_mode ? #87CEFA : #4169E1 : #2196F3
hline(show_reference_lines ? 100 : na, '100% Equity', color = color.new(hline_bullish_color, 70), linestyle = hline.style_dotted, linewidth = 1)
hline(show_reference_lines ? 80 : na, '80% Equity', color = color.new(hline_bullish_color, 40), linestyle = hline.style_dashed, linewidth = 1)
hline(show_reference_lines ? 60 : na, '60% Equity', color = color.new(hline_bullish_color, 60), linestyle = hline.style_dotted, linewidth = 1)
hline(50, '50% Balanced', color = color.new(hline_primary_color, 50), linestyle = hline.style_solid, linewidth = 2)
hline(show_reference_lines ? 40 : na, '40% Equity', color = color.new(hline_bearish_color, 60), linestyle = hline.style_dotted, linewidth = 1)
hline(show_reference_lines ? 20 : na, '20% Equity', color = color.new(hline_bearish_color, 40), linestyle = hline.style_dashed, linewidth = 1)
hline(show_reference_lines ? 0 : na, '0% Equity', color = color.new(hline_bearish_color, 70), linestyle = hline.style_dotted, linewidth = 1)
// Component plots
plot(show_components ? regime_allocation : na, 'Regime', color = color.new(#4ECDC4, 70), linewidth = 1)
plot(show_components ? risk_allocation : na, 'Risk', color = color.new(#FF6B6B, 70), linewidth = 1)
plot(show_components ? valuation_score : na, 'Valuation', color = color.new(#45B7D1, 70), linewidth = 1)
plot(show_components ? sentiment_score : na, 'Sentiment', color = color.new(#FFD93D, 70), linewidth = 1)
plot(show_components ? macro_score : na, 'Macro', color = color.new(#6BCF7F, 70), linewidth = 1)
// Confidence bands
upper_band = plot(show_confidence_bands ? math.min(100, smoothed_allocation + ta.stdev(smoothed_allocation, 20)) : na, color = color.new(neutral_color, band_transparency), display = display.none, title = 'Upper Band')
lower_band = plot(show_confidence_bands ? math.max(0, smoothed_allocation - ta.stdev(smoothed_allocation, 20)) : na, color = color.new(neutral_color, band_transparency), display = display.none, title = 'Lower Band')
fill(upper_band, lower_band, color = show_confidence_bands ? color.new(neutral_color, zone_transparency) : na, title = 'Uncertainty')
// DASHBOARD
if show_dashboard and barstate.islast
var table dashboard = table.new(position.top_right, 2, 20, border_width = 1, bgcolor = color.new(table_bg_color, table_transparency))
table.clear(dashboard, 0, 0, 1, 19)
// Header
header_color = color.new(header_bg_color, 20)
dashboard_text_color = text_color
table.cell(dashboard, 0, 0, 'DEAM', text_color = dashboard_text_color, bgcolor = header_color, text_size = size.normal)
table.cell(dashboard, 1, 0, model_type, text_color = dashboard_text_color, bgcolor = header_color, text_size = size.normal)
// Core metrics
table.cell(dashboard, 0, 1, 'Equity Allocation', text_color = dashboard_text_color, text_size = size.small)
table.cell(dashboard, 1, 1, str.tostring(smoothed_allocation, '##.#') + '%', text_color = alloc_color, text_size = size.small)
table.cell(dashboard, 0, 2, 'Cash Allocation', text_color = dashboard_text_color, text_size = size.small)
cash_color = 100 - smoothed_allocation > 70 ? bearish_color : primary_color
table.cell(dashboard, 1, 2, str.tostring(100 - smoothed_allocation, '##.#') + '%', text_color = cash_color, text_size = size.small)
// Signal
signal_text = 'NEUTRAL'
signal_color = primary_color
if smoothed_allocation >= 70
signal_text := 'BULLISH'
signal_color := bullish_color
signal_color
else if smoothed_allocation <= 30
signal_text := 'BEARISH'
signal_color := bearish_color
signal_color
table.cell(dashboard, 0, 3, 'Signal', text_color = dashboard_text_color, text_size = size.small)
table.cell(dashboard, 1, 3, signal_text, text_color = signal_color, text_size = size.small)
// Market Regime
table.cell(dashboard, 0, 4, 'Regime', text_color = dashboard_text_color, text_size = size.small)
regime_color_display = market_regime == 'Strong Bull' or market_regime == 'Bull Market' ? bullish_color : market_regime == 'Neutral' ? primary_color : market_regime == 'Crisis' ? bearish_color : bearish_color
table.cell(dashboard, 1, 4, market_regime, text_color = regime_color_display, text_size = size.small)
// VIX
table.cell(dashboard, 0, 5, 'VIX Level', text_color = dashboard_text_color, text_size = size.small)
vix_color_display = vix < 20 ? bullish_color : vix < 30 ? primary_color : bearish_color
table.cell(dashboard, 1, 5, str.tostring(vix, '##.##'), text_color = vix_color_display, text_size = size.small)
// Market Drawdown
table.cell(dashboard, 0, 6, 'Market DD', text_color = dashboard_text_color, text_size = size.small)
market_dd_color = current_drawdown < 5 ? bullish_color : current_drawdown < 10 ? primary_color : bearish_color
table.cell(dashboard, 1, 6, '-' + str.tostring(current_drawdown, '##.#') + '%', text_color = market_dd_color, text_size = size.small)
// Crisis Detection
table.cell(dashboard, 0, 7, 'Crisis Detection', text_color = dashboard_text_color, text_size = size.small)
crisis_text = is_severe_crisis ? 'SEVERE' : is_crisis ? 'CRISIS' : 'Normal'
crisis_display_color = is_severe_crisis or is_crisis ? bearish_color : bullish_color
table.cell(dashboard, 1, 7, crisis_text, text_color = crisis_display_color, text_size = size.small)
// Real Data Section
financial_bg = color.new(primary_color, 85)
table.cell(dashboard, 0, 8, 'REAL DATA', text_color = dashboard_text_color, bgcolor = financial_bg, text_size = size.small)
table.cell(dashboard, 1, 8, 'Live Metrics', text_color = dashboard_text_color, bgcolor = financial_bg, text_size = size.small)
// P/E Ratio
table.cell(dashboard, 0, 9, 'P/E Ratio', text_color = dashboard_text_color, text_size = size.small)
pe_color = actual_pe_ratio < 18 ? bullish_color : actual_pe_ratio < 25 ? primary_color : bearish_color
table.cell(dashboard, 1, 9, str.tostring(actual_pe_ratio, '##.#'), text_color = pe_color, text_size = size.small)
// ERP
table.cell(dashboard, 0, 10, 'ERP', text_color = dashboard_text_color, text_size = size.small)
erp_color = equity_risk_premium > 2 ? bullish_color : equity_risk_premium > 0 ? primary_color : bearish_color
table.cell(dashboard, 1, 10, str.tostring(equity_risk_premium, '##.##') + '%', text_color = erp_color, text_size = size.small)
// ROE
table.cell(dashboard, 0, 11, 'ROE', text_color = dashboard_text_color, text_size = size.small)
roe_color = spy_return_on_equity > 20 ? bullish_color : spy_return_on_equity > 10 ? primary_color : bearish_color
table.cell(dashboard, 1, 11, str.tostring(spy_return_on_equity, '##.#') + '%', text_color = roe_color, text_size = size.small)
// D/E Ratio
table.cell(dashboard, 0, 12, 'D/E Ratio', text_color = dashboard_text_color, text_size = size.small)
de_color = spy_debt_to_equity < 0.5 ? bullish_color : spy_debt_to_equity < 1.0 ? primary_color : bearish_color
table.cell(dashboard, 1, 12, str.tostring(spy_debt_to_equity, '##.##'), text_color = de_color, text_size = size.small)
// Shareholder Yield
table.cell(dashboard, 0, 13, 'Dividend+Buyback', text_color = dashboard_text_color, text_size = size.small)
yield_color = total_shareholder_yield > 4 ? bullish_color : total_shareholder_yield > 2 ? primary_color : bearish_color
table.cell(dashboard, 1, 13, str.tostring(total_shareholder_yield, '##.#') + '%', text_color = yield_color, text_size = size.small)
// Component Scores
component_bg = color.new(neutral_color, 80)
table.cell(dashboard, 0, 14, 'Components', text_color = dashboard_text_color, bgcolor = component_bg, text_size = size.small)
table.cell(dashboard, 1, 14, 'Scores', text_color = dashboard_text_color, bgcolor = component_bg, text_size = size.small)
table.cell(dashboard, 0, 15, 'Regime', text_color = dashboard_text_color, text_size = size.small)
regime_score_color = regime_allocation > 60 ? bullish_color : regime_allocation < 40 ? bearish_color : primary_color
table.cell(dashboard, 1, 15, str.tostring(regime_allocation, '##'), text_color = regime_score_color, text_size = size.small)
table.cell(dashboard, 0, 16, 'Risk', text_color = dashboard_text_color, text_size = size.small)
risk_score_color = risk_allocation > 60 ? bullish_color : risk_allocation < 40 ? bearish_color : primary_color
table.cell(dashboard, 1, 16, str.tostring(risk_allocation, '##'), text_color = risk_score_color, text_size = size.small)
table.cell(dashboard, 0, 17, 'Valuation', text_color = dashboard_text_color, text_size = size.small)
val_score_color = valuation_score > 60 ? bullish_color : valuation_score < 40 ? bearish_color : primary_color
table.cell(dashboard, 1, 17, str.tostring(valuation_score, '##'), text_color = val_score_color, text_size = size.small)
table.cell(dashboard, 0, 18, 'Sentiment', text_color = dashboard_text_color, text_size = size.small)
sent_score_color = sentiment_score > 60 ? bullish_color : sentiment_score < 40 ? bearish_color : primary_color
table.cell(dashboard, 1, 18, str.tostring(sentiment_score, '##'), text_color = sent_score_color, text_size = size.small)
table.cell(dashboard, 0, 19, 'Macro', text_color = dashboard_text_color, text_size = size.small)
macro_score_color = macro_score > 60 ? bullish_color : macro_score < 40 ? bearish_color : primary_color
table.cell(dashboard, 1, 19, str.tostring(macro_score, '##'), text_color = macro_score_color, text_size = size.small)
// ALERTS
// Major allocation changes
alertcondition(smoothed_allocation >= 80 and smoothed_allocation < 80, 'High Equity Allocation', 'Equity allocation reached 80% - Bull market conditions')
alertcondition(smoothed_allocation <= 20 and smoothed_allocation > 20, 'Low Equity Allocation', 'Equity allocation dropped to 20% - Defensive positioning')
// Crisis alerts
alertcondition(is_crisis and not is_crisis , 'CRISIS DETECTED', 'Crisis conditions detected - Reducing equity allocation')
alertcondition(is_severe_crisis and not is_severe_crisis , 'SEVERE CRISIS', 'Severe crisis detected - Maximum defensive positioning')
// Regime changes
regime_changed = market_regime != market_regime
alertcondition(regime_changed, 'Regime Change', 'Market regime has changed')
// Risk management alerts
risk_breach = enable_portfolio_risk_scaling and (actual_portfolio_volatility > target_portfolio_volatility * 1.2 or actual_portfolio_drawdown > max_portfolio_drawdown * 1.2)
alertcondition(risk_breach, 'Risk Breach', 'Portfolio risk exceeds target parameters')
// USAGE
// The indicator displays a recommended equity allocation percentage (0-100%).
// Example: 75% allocation = 75% stocks, 25% cash/bonds.
//
// The model combines market regime analysis (trend, volatility, drawdowns),
// risk management (portfolio-level targeting), valuation metrics (P/E, ERP),
// sentiment indicators (VIX term structure), and macro factors (yield curve,
// credit spreads) into a single allocation signal.
//
// Crisis detection automatically reduces exposure when multiple warning signals
// converge. Alerts available for major allocation shifts and regime changes.
//
// Designed for SPY/S&P 500 portfolio allocation. Adjust component weights and
// risk parameters in settings to match your risk tolerance.
View in Pine
UT Bot + Smart Money Concepts [LuxAlgo]UT Bot + Smart Money Concepts , BUY SELL INDICATOR and support and resistance






















