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
Grafik Desenleri
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
3B / 3S System + 99 EMA + Camarilla Pivots3B / 3S System + 99 EMA + Camarilla Pivots, EMA5 above 2 candles buy or SELL
RSI5vsRSI14_v2//@version=5
indicator("RSI5vsRSI14_v2", shorttitle="RSI5vsRSI14_v2", overlay=false)
plot(ta.rsi(close, 14), title="RSI14", color=color.red)
plot(ta.rsi(close, 5), title="RSI5", color=color.green)
RSI Rate of Change (ROC of RSI)The RSI Rate of Change (ROC of RSI) indicator measures the speed and momentum of changes in the RSI, helping traders identify early trend shifts, strength of price moves, and potential reversals before they appear on the standard RSI.
While RSI shows overbought and oversold conditions, the ROC of RSI reveals how fast RSI itself is rising or falling, offering a deeper view of market momentum.
How the Indicator Works
1. RSI Calculation
The indicator first calculates the classic Relative Strength Index (RSI) using the selected length (default 14). This measures the strength of recent price movements.
2. Rate of Change (ROC) of RSI
Next, it computes the Rate of Change (ROC) of the RSI over a user-defined period.
This shows:
Positive ROC → RSI increasing quickly → strong bullish momentum
Negative ROC → RSI decreasing quickly → strong bearish momentum
ROC crossing above/below 0 → potential early trend shift
What You See on the Chart
Blue Line: RSI
Red Line: ROC of RSI
Grey dotted Zero Line: Momentum reference
Why Traders Use It
The RSI ROC helps you:
Detect momentum reversals early
Spot bullish and bearish accelerations not visible on RSI alone
Identify exhaustion points before RSI reaches extremes
Improve entry/exit precision in trend and swing trading
Validate price breakouts or breakdowns with momentum confirmation
Best For
Swing traders
Momentum traders
Reversal traders
Trend-following systems needing early confirmation signals
EMV// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
//@version=5
indicator("EMV", overlay=false)
N = input.int(14, "N")
M = input.int(9, "M")
// ==== VOLUME ====
maVol = ta.sma(volume, N)
VOLUME = maVol / volume
// ==== MID ====
hl = high + low
MID = 100 * (hl - hl ) / hl
// ==== HL_RANGE ====
HL_RANGE = ta.sma(high - low, N)
// ==== EMV ====
EMV_raw = MID * VOLUME * (high - low) / HL_RANGE
EMV = ta.sma(EMV_raw, N)
// ==== MAEMV ====
MAEMV = ta.sma(EMV, M)
plot(EMV, color=color.blue, title="EMV")
plot(MAEMV, color=color.orange, title="MAEMV")
EDU PRO LITE – Divergence + Fake Breakout + CandleThis indicator is created for educational purposes only. It displays EMA, RSI, and the previous day’s high/low to help users understand market trends and price movement. This script does not provide any trading signals, buy/sell recommendations, or entry indications. All trading decisions are entirely outside the scope of this indicator.”
Hardwaybets' Protected Highs / Protected Lows TradingProtected Highs & Lows – Multi-Condition Structural Marker
This indicator identifies specific candle formations where price breaks a previous candle’s high or low, fails to maintain that break, and confirms the rejection with an additional condition involving prior candles. These marked locations offer a visual reference for areas where price attempted directional expansion but did not sustain it. All levels remain visible until later invalidated by price movement.
Protected High – Detection Logic
A Protected High is marked only when all three of the following conditions occur:
1. Break of Previous High
The current candle trades above the prior candle’s high.
2. Close Back Inside Range
The current candle closes within the high-to-low range of the previous candle, indicating the upward expansion was not sustained.
3. Reversal Through Prior Bullish Structure
After forming the high, price closes below the opening price of one or more bullish candles that were part of the upward movement into that high.
This reflects a shift away from the prior upward structure.
When all three conditions are met, the high of the candle that created the event is marked on the chart.
Protected Low – Detection Logic
A Protected Low is marked only when all three of the following conditions occur:
1. Break of Previous Low
The current candle trades below the prior candle’s low.
2. Close Back Inside Range
The current candle closes within the high-to-low range of the previous candle, indicating the downward expansion was not sustained.
3. Reversal Through Prior Bearish Structure
After forming the low, price closes above the opening price of one or more bearish candles that were part of the downward movement into that low.
This reflects a shift away from the prior downward structure.
When all three conditions are met, the low of the candle that created the event is marked on the chart.
Level Management
* Marked highs and lows remain active as long as price does not trade beyond them.
* If price moves past a marked level, that level is removed.
* Only active, unviolated structural reference points remain displayed.
Market Structure Context (Strictly Non-Signaling)
Protected highs and lows can help traders observe areas where:
* Price briefly exceeded a previous high or low
* That expansion was not maintained
* Price then moved back through recent candles associated with the prior direction
These observations can be used by traders to understand how price interacts with nearby structural reference points.
The indicator itself does not provide trade entries, exits, or directional guidance.
Customization Options
The indicator provides adjustable settings for:
* Marker style (labels or shapes)
* Shape type (circle, square, diamond, etc.)
* Colors for highs and lows
* Vertical spacing between markers and candles
These options help maintain clarity on different chart types and timeframes.
Intended Use
The indicator does not generate forecasts or trading signals.
Its purpose is to visually highlight multi-condition candle formations where price briefly exceeded a prior high or low, failed to sustain that expansion, and later reversed through nearby structural points.
Compatibility
Suitable for all assets and timeframes.
MACD No Consecutive Signals alfanetZecusdt 2min
Macd crossing signal with histogram try it and you don't regret
SE PRO — Clean ProfessionalSE PRO — Clean Professional is an advanced Smart Money Concepts (SMC) indicator designed for traders who want clean, accurate market structure, BOS/CHoCH detection, HTF trend filtering, liquidity identification, order block zones, and candlestick confirmation patterns — all in one optimized tool.
RSI5vsRSI14indicator("RSI5vsRSI14")
plot(ta.rsi(close, 14), color=color.red)
plot(ta.rsi(close, 5), color=color.green)
// plot(ta.rsi(close, 2), color=color.blue)






















