Candle Intelligence🔹 Candle Intelligence (IM-CI)
Candle Intelligence (IM-CI) is a context-only intraday market behavior indicator designed to help traders understand how price is behaving, not where to buy or sell.
This tool classifies individual candles, detects short-term behavioral patterns, and displays a non-blocking market state to improve decision awareness during live trading.
⚠️ IM-CI does NOT generate buy/sell signals.It is strictly intended for market context, confirmation, and study.
🔍 What This Indicator Does
🧠 Candle Intelligence Layer
Each candle is classified based on volatility-adjusted behavior using ATR:
Strong expansion candles
Normal directional candles
Weak / neutral candles
These classifications are shown as compact candle codes (optional) to quickly read price behavior without clutter.
📐 Pattern Recognition (Context Only)
IM-CI detects short, non-predictive behavioral patterns, such as:
Compression
Absorption
Momentum bursts
Distribution
These patterns are displayed as soft zones, not signals, helping traders visually study how price reacts around key moments.
Cooldown logic is used to prevent repetitive pattern noise.
🌐 Market State Engine
The indicator continuously evaluates recent candle behavior and VWAP positioning to describe the current market condition, such as:
Expansion
Extended
Distribution
Balanced
This state is shown in a small HUD panel and is designed to:
Reduce emotional over-trading
Identify unsuitable market conditions
Improve alignment with higher-probability environments
⚙️ Key Features
ATR-aware candle classification
VWAP extension detection
Timeframe-adaptive candle code visibility
Non-repainting logic
Clean, lightweight HUD panel
Designed for intraday futures & index trading
🛠 How to Use
Use IM-CI as a context filter, not a trigger
Combine with your own execution system
Avoid trading during Extended or unclear states
Best suited for lower timeframes (1–5 min)
⚠️ Disclaimer
This indicator is provided for educational and informational purposes only. It does not constitute financial advice and should not be used as a standalone trading system.
All trading decisions remain the sole responsibility of the user.
Penunjuk dan strategi
Momentum Clarity Engine📘 Description - Momentum Clarity Engine
Momentum Clarity Engine (MC-Engine) is a visual momentum-context indicator designed to help traders clearly identify trend direction, momentum strength, and low-quality market conditions using a disciplined combination of MACD and RSI.
Rather than generating buy or sell signals, MC-Engine focuses on clarity and risk control by visually classifying price action into intuitive momentum states and highlighting periods where trading conditions are unfavorable.
🔍 How it works
The indicator combines:
MACD Histogram → momentum direction and strength
RSI → bullish vs bearish pressure balance
Based on this confluence, price candles are colored to reflect market state:
Strong Bullish Momentum → Dark Green (solid)
Weak Bullish Momentum → Light Green (transparent)
Strong Bearish Momentum → Dark Red (solid)
Weak Bearish Momentum → Light Red (transparent)
No-Trade Zone → Muted Orange (high transparency)
Candle opacity dynamically adapts to MACD histogram strength, allowing traders to visually sense when momentum is expanding, weakening, or lacking conviction.
🟠 No-Trade Zone (Key Feature)
The No-Trade zone highlights periods of:
Low momentum
RSI balance / indecision
Choppy or transitional price action
These conditions often result in poor risk-reward.
The muted orange color is intentionally designed to encourage patience and discipline.
✅ How to use MC-Engine
MC-Engine is best used as a trade filter and context tool, not as a standalone strategy.
Common use cases:
Confirming trend strength before entries
Avoiding trades during low-momentum chop
Filtering breakouts and pullbacks
Intraday trading on 1-minute to 15-minute charts
Futures, indices, equities, and crypto markets
Recommended to pair with:
Market structure
Trendlines
VWAP
Support & resistance
Higher-timeframe context
⚠️ Important Notes
This indicator does not provide buy or sell signals
No repainting or future-looking logic
Designed for educational and analytical purposes only
Always apply proper risk management
🧠 Philosophy
The goal is not to trade more —
the goal is to trade when conditions are clear.
Momentum Clarity Engine helps traders participate during strong momentum and stand aside during uncertainty.
EvilAI | Survival SizerPosition sizing that adapts to market conditions. Define how many losses you can survive — the indicator calculates optimal size using ATR and volatility regime detection.
█ FEATURES
- Survival-based sizing — set losses to endure, not arbitrary risk %
- Volatility-adjusted positions:
└─ LOW vol: Size ↑ (be aggressive when markets are calm)
└─ NORMAL: Baseline sizing
└─ HIGH vol: Size ↓ (get defensive when chaos rises)
└─ EXTREME: Size ↓↓ (protect capital at all costs)
- ATR + Historical Volatility combined for regime detection
- Auto contract selection (GC/MGC, NQ/MNQ)
- Color-coded risk warnings
█ DESIGNED FOR
Prop firm traders (FundedNext, Topstep, Apex) who need adaptive risk management. When volatility spikes, you automatically size down. When markets are calm, you can push harder. All while respecting your survival floor.
█ HOW IT WORKS
1. Set your daily drawdown limit ($2,000)
2. Set target survivable losses (10)
3. Indicator calculates: $2,000 ÷ 10 = $200 max risk per trade
4. ATR determines stop distance → position size
5. Volatility regime adjusts final size up or down
6. Auto mode selects micro vs full contracts
█ DISPLAY
- Compact mode: Contracts, risk, survival count, vol regime
- Full mode: Complete breakdown with percentiles
- Survival shows actual vs target (e.g., "12L / 10L")
█ COLOR CODES
- Green: Meeting or exceeding survival target
- Yellow: Close to target / capped at max
- Cyan: Boosted (low volatility)
- Purple: Reduced (high volatility)
- Red: Below target — reconsider your sizing
Stop blowing accounts. Size positions properly.
CANSLIM Indicators plus FCF and stocks momentumThis is a comprehensive Trading View indicator that combines technical analysis with fundamental analysis to help you identify high-quality stock opportunities, inspired by IBD/CANSLIM methodology.
This indicator is an enhancement from @Fred6724 code base. Thanks @Fred6724 a lot!! With Claude assistance I enhanced to suit my need.
You now have a really powerful indicator that combines:
✅ Technical chart patterns (Cup, Double Bottom, Bases)
✅ Relative Strength analysis
✅ Complete fundamental dashboard with EPS, Sales, FCF, Margins, ROE
✅ Toggle ON/OFF the dashboard for clean charts
✅ Color-coded negative values
✅ Stock Bee momentum indicator
This is a professional-grade tool for finding high-quality growth stocks with strong fundamentals breaking out of proper bases. The FCF addition was done based on some model stocks study - it's one of the best indicators of real business quality!
First, I check for sales growth, if accelerating more good. Then if profitable(EPS) excellent, if not how is FCF.
With sales growth and FCF improving - you don't want to miss a strong monster stock - Study NYSE:CVNA and NASDAQ:ROOT
And finally— KISS . You don’t need to be a wizard of indicators or memorize every stock on the planet. Your real edge is staying simple: take clean setups, manage your risk like a pro, and let disciplined long‑term or swing trades compound your money.
If you need any other enhancements in the future, feel free to reach out. Happy trading! 📈
ADX MomentumBlue: ADX is Rising (Strong Buy Zone).
White: ADX is Falling (Fade/Take Profit Zone).
Red: Bears are in control
4 EMA Flexible with CrossoversOverview
This indicator is a highly customizable multi-EMA (Exponential Moving Average) suite designed for trend followers and momentum traders. Unlike standard EMA indicators, this script provides four independent EMAs, each with its own horizontal Offset parameter, allowing traders to shift averages forward or backward to account for market lag or cycles.
It is specifically built for traders who use a "Triple EMA" or "Quad EMA" setup to filter trends across different timeframes while looking for precise entry triggers.
Key Features
4 Independent EMAs: Fully customizable length and color for each average.
Horizontal Offsets: Each EMA can be shifted horizontally (left or right) to align with specific market structures or to create "lead" indicators.
Crossover Detection: The script automatically monitors EMA 1 and EMA 2 for crossovers.
Golden Cross (Cross Up): Signals potential bullish momentum.
Death Cross (Cross Down): Signals potential bearish momentum.
Visual Labeling: Includes intuitive on-chart shapes (Triangle Up/Down) and text labels to ensure you never miss a crossover event.
Alert Integration: Native support for TradingView alerts. You can set notifications for Bullish and Bearish crossovers with a single click.
How to Use
Trend Filtering: Use the 4th EMA (default 200) as your "Trend Filter." Only take Long signals when price is above this line and Short signals when below.
Signal Generation: Use the first two EMAs (default 21 and 30) to generate entry signals. When they cross in the direction of the higher-order trend, it indicates a high-probability entry point.
Offset Tuning: Use the Offset feature to shift your signal EMAs forward (positive values) if you want to avoid "whipsaws" in a sideways market.
Settings
EMA 1 & 2: Primary signal lines. Crossovers are calculated based on these two inputs.
EMA 3 & 4: Secondary trend lines for support/resistance and trend direction.
Offset: Adjusts the horizontal placement of the line (positive for right, negative for left).
Trend Speed Analyzer with Entries (Zeiierman)📈 Trend Speed Analyzer with Entry Signals (Zeiierman – Modified)
🔹 Overview
This indicator is a trend-following momentum system built around an adaptive (dynamic) moving average and a proprietary trend speed / wave strength engine.
It is designed to identify high-quality continuation entries after price confirms direction, not to predict tops or bottoms.
Best suited for:
Index futures (ES, NQ)
ETFs (SPY, QQQ)
Strongly trending stocks
Intraday or swing trading
🔹 Core Concepts
1️⃣ Dynamic Trend Line (Adaptive EMA)
Instead of using a fixed EMA length, this script dynamically adjusts:
EMA length based on normalized price movement
EMA responsiveness using an accelerator factor
Result:
Fast reaction during strong trends
Smooth behavior during choppy markets
Fewer false flips compared to traditional EMAs
This trend line acts as the primary regime filter.
2️⃣ Trend Speed & Wave Analysis
The indicator tracks trend speed, which represents cumulative directional pressure over time.
It also records:
Bullish wave sizes
Bearish wave sizes
Average vs maximum wave strength
Bull/Bear dominance
These statistics are displayed in an optional table to help assess:
Market bias
Momentum asymmetry
Whether the current move is weak, average, or exceptional
🔹 Entry Signal Logic (One Signal per Trend Shift)
Signals are not spammy.
Only one entry signal is allowed per crossover.
Long Entry Conditions
A long signal is generated when:
Price crosses above the dynamic trend line
A bullish candle forms
The candle body is at least X% of ATR (filters weak/doji candles)
The entire candle body is above the trend line
(Optional) Trend speed is positive
Short Entry Conditions
A short signal is generated when:
Price crosses below the dynamic trend line
A bearish candle forms
The candle body is at least X% of ATR
The entire candle body is below the trend line
(Optional) Trend speed is negative
📌 Once a signal fires, no additional signals will appear until a new crossover occurs.
🔹 What this indicator is NOT
❌ Not a mean-reversion system
❌ Not a prediction tool
❌ Not meant for sideways markets
This tool assumes structure → confirmation → continuation.
🔹 How to Trade It (Suggested Use)
Use higher timeframes (5m–30m) for cleaner signals
Trade in the direction of higher-timeframe bias
Combine with:
VWAP
Key levels (PDH / PDL / PMH / PML)
Market session context
🔹 Customization
Adjust Maximum Length for smoother vs faster trends
Adjust Accelerator Multiplier for sensitivity
Enable/disable speed filter for stricter momentum confirmation
ATR candle filter removes weak signals automatically
⚠️ Disclaimer
This indicator provides technical signals only and does not include trade management, stops, or targets.
Always apply proper risk management.
Mashrab | Momentum X-Ray Stop guessing if a stock is a "Leader" or a "Laggard." The Mashrab Momentum X-Ray is a professional Heads-Up Display (HUD) that tells you the true strength of any stock in seconds.
Designed for serious swing traders and breakout specialists (similar to the styles of Qullamagie, Mark Minervini, and IBD), this tool ignores the noise and focuses on the only things that matter: Relative Strength, Volume Fuel, and Fundamental Health.
🚀 Key Features (What it does)
1. The "Smart" Relative Strength Engine
Most indicators blindly compare every stock to the S&P 500. This dashboard is smarter.
It automatically scans the stock’s Industry (e.g., Semiconductors, Gold Miners, Regional Banks).
It compares the stock’s performance against its specific peers (e.g., NVDA vs. SMH ETF) and the market benchmark (SPY).
Green Signal: The stock is beating both the market and its sector. This is a "True Leader."
2. IBD-Style RS Rating (1-99 Scale)
Get the "Secret Sauce" of institutional screening directly on your chart.
Calculates a weighted performance score: 40% (Last 3 Months) + 20% (6m, 9m, 12m).
The Scale:
90–99 (Lime Green): Elite Super-Stock.
80–89 (Green): Strong Leader / Breakout Candidate.
< 50 (Red): Laggard / Avoid.
3. Momentum "Fuel" Gauge (RVol)
Price moving up is good. Price moving up on massive volume is better.
The RVol (Relative Volume) row lights up Yellow or Purple when volume is 1.5x to 3x higher than normal. This detects "Institutional Buying" footprints.
4. "Blue Sky" Detector
Instantly see how close the price is to its 52-Week High.
Stocks within 5% of their highs (Green) have no "overhead supply" (bag holders) and can run the fastest.
👀 How to Read the Dashboard
Top Table (Tactical Momentum)
RS vs SPY / Sector: Look for DOUBLE GREEN. This means the stock is the "King of the Hill."
RVol: Look for > 1.5x (Yellow). This means big players are entering the trade.
Bottom Table (Strategic Context)
IBD RS Rating: Look for a score of 80 or higher.
ADR (20): Shows the "Average Daily Range" volatility. (e.g., 4.5% means the stock moves ~4.5% a day). Use this to size your position correctly!
Industry: Tells you exactly which ETF is being used for comparison (e.g., "Semiconductors (SMH)").
⚙️ Settings & Customization
Benchmark: Change the default SPY to QQQ (for Tech), IWM (for Small Caps), or BTCUSD (for Crypto) to fit your strategy.
Lookback: Defaults to 26 Bars (Standard Monthly Momentum), but fully adjustable.
Text Size: Make the tables larger or smaller to fit your screen.
"Trade the Leaders, Ignore the Laggards."
DEMA20 + VWAP200 + CHoCH BigBeluga + Daily Candle de NatantiaTo simplify things for traders like me who are just starting out with limited resources, I'm offering this indicator that aggregates other well-known and configurable indicators:
- 2 DEMA 20,
- 1 VWAP 200,
- BigBeluga's Choch Pattern indicator,
- Nanantia's Daily Candle indicator.
I recommend combining this indicator with an RSI divergence that displays 30%, 50%, and 70%, as well as a kill zone indicator for those trading Asian reversal or OPR.
This indicator is particularly powerful when the candles are displayed in Heikin Ashi mode.
Happy trading, and thanks to the community of passionate developers and to chatGPT.
Simple Perps Calculator## Simple Perps Calculator (Long & Short)
A lightweight on-chart trade calculator that visualizes **entry, take-profit, and liquidation levels** with leverage-adjusted returns — designed for fast planning and clean charts.
This indicator automatically detects **long or short positions** based on your target price and adjusts calculations accordingly. All key levels are displayed as **colored horizontal price lines** with matching labels positioned near the price scale for easy reference.
---
### Features
- Entry, Take-Profit, and Liquidation price levels
- Automatic **long / short detection**
- Leverage slider up to **1000×**
- Leveraged **percent gain** calculation
- Color-coded horizontal price lines:
- 🟡 Entry
- 🟢 Take-Profit
- 🔴 Liquidation
- Adjustable label positioning (left or right of chart)
- Horizontal offset control to move labels out of the way
- Clean, minimal, non-intrusive design
---
### How to Use
1. Set your **Entry Price**
2. Set your **Target Price**
3. Adjust **Leverage**
4. Move labels using the **horizontal offset** slider if needed
If the target price is above entry, the script assumes a **long** position. If below, it assumes a **short** position and places the liquidation level above entry automatically.
---
### Notes
- Liquidation price uses a simplified isolated-margin model
- Intended for **planning and visualization only**
- Actual exchange liquidation prices may vary due to fees and maintenance margin requirements
EMA Slope CheckerWhat it does: Shows slope/angle of EMA 9, 20, and 50 simultaneously on separate lines.
What it tells you:
EMA 50 slope = Trend direction (bullish/bearish)
EMA 20 slope = Setup strength at FVG zones
EMA 9 slope = Entry timing/momentum
Key feature: Table with arrows showing if each EMA is rising (↑) or falling (↓).
For your FVG system: Tells you if all 3 EMAs are aligned before entering a trade.
Intervalo de la confianzaIntervalo de la confianza de varias temporaliades usando VWMA.
-Medir el FOMO y el FUD
Last Swing Anchor Zones - EnhancedLast Swing Anchor Zones automatically identifies major swing highs and lows on your chart and draws shaded reaction zones around them. These zones represent potential support and resistance areas where price may react.
How It Works:
• Detects pivot points using a customizable lookback period (default: 6 bars)
• Creates semi-transparent zones around each swing point
• Displays up to 3 most recent zones (configurable)
• Shows price labels for quick reference
• Zones extend forward to highlight future price interaction areas
How to Use:
• Teal/cyan zones = resistance levels (swing highs)
• Red/pink zones = support levels (swing lows)
• Look for price reactions when approaching these zones
• Use as confluence with your existing trading strategy
• Adjust zone width % to match your timeframe and volatility
Customizable Settings:
• Pivot Lookback: Change sensitivity (lower = more zones, higher = fewer major swings)
• Zone Width %: Adjust zone thickness
• Max Zones: Display 1-10 recent zones
• Colors: Customize zone and label colors
• Show Labels: Toggle price labels on/off
Aurora Volatility Bands [JOAT]Aurora Volatility Bands - Dynamic ATR-Based Envelope System
Introduction and Purpose
Aurora Volatility Bands is an open-source overlay indicator that creates multi-layered volatility envelopes around price using ATR (Average True Range) calculations. The core problem this indicator solves is that static bands (like fixed percentage envelopes) fail to adapt to changing market conditions. During high volatility, static bands are too tight; during low volatility, they're too wide.
This indicator addresses that by using ATR-based dynamic bands that automatically expand during volatile periods and contract during quiet periods, providing contextually appropriate support/resistance levels at all times.
Why These Components Work Together
The indicator combines three analytical approaches:
1. Triple-Layer Band System - Inner (1x ATR), Outer (2x ATR), and Extreme (3x ATR) bands provide graduated levels of significance
2. Volatility State Detection - Compares current ATR to historical average to classify market regime
3. Multiple MA Types - Allows customization of the center line calculation method
These components complement each other:
The triple-layer system gives traders multiple reference points - inner bands for normal moves, outer for significant moves, extreme for rare events
Volatility state detection tells you WHEN bands are expanding or contracting, helping anticipate breakouts or mean-reversion
MA type selection lets you match the indicator to your trading style (faster EMA vs smoother SMA)
How the Calculation Works
The bands are calculated using ATR multiplied by configurable factors:
float atr = ta.atr(atrPeriod)
float innerUpper = centerMA + (atr * innerMult)
float outerUpper = centerMA + (atr * outerMult)
float extremeUpper = centerMA + (atr * extremeMult)
Volatility state is determined by comparing current ATR percentage to its historical average:
float atrPercent = (atr / close) * 100
float avgAtrPercent = ta.sma(atrPercent, volatilityLookback)
float volatilityRatio = atrPercent / avgAtrPercent
bool isExpanding = volatilityRatio > 1.2 // 20%+ above average
bool isContracting = volatilityRatio < 0.8 // 20%+ below average
Signal Types
Band Touch - Price reaches inner, outer, or extreme bands
Mean Reversion - Price returns to center after touching outer/extreme bands
Breakout - Sustained move beyond outer bands during volatility expansion
Dashboard Information
Volatility - Current state (EXPANDING/CONTRACTING/NORMAL)
Vol Ratio - Current volatility vs average (e.g., 1.5x = 50% above average)
ATR - Current ATR value
ATR % - ATR as percentage of price
Zone - Current price position (EXTREME HIGH/UPPER ZONE/CENTER ZONE/etc.)
Position - Price position as percentage within band structure
Width - Total band width as percentage of price
Using SMA in settings:
How to Use This Indicator
For Mean-Reversion Trading:
1. Wait for price to touch outer or extreme bands
2. Check that volatility state is NORMAL or CONTRACTING (not expanding)
3. Look for reversal candlestick patterns at the band
4. Enter toward center MA with stop beyond the band
For Breakout Trading:
1. Wait for volatility state to show EXPANDING
2. Look for price closing beyond outer bands
3. Enter in direction of breakout
4. Use the band as trailing stop reference
For Volatility Analysis:
1. Monitor volatility ratio for regime changes
2. CONTRACTING often precedes large moves (squeeze)
3. EXPANDING confirms trend strength
Using VWMA and Mean Reversion Signal/MR:
Input Parameters
ATR Period (14) - Period for ATR calculation
Inner/Outer/Extreme Multipliers (1.0/2.0/3.0) - Band distance from center
MA Type (EMA) - Center line calculation method
MA Period (20) - Period for center line
Volatility Comparison Period (20) - Lookback for volatility state
Timeframe Recommendations
15m-1H: Good for intraday mean-reversion
4H-Daily: Best for swing trading and breakout identification
Weekly: Useful for position trading and major level identification
Limitations
ATR-based bands lag during sudden volatility spikes
Mean-reversion signals can fail in strong trends
Breakout signals may whipsaw in ranging markets
Works best on liquid instruments with consistent volatility patterns
Open-Source and Disclaimer
This script is published as open-source under the Mozilla Public License 2.0 for educational purposes. The source code is fully visible and can be studied to understand how each component works.
This indicator does not constitute financial advice. Band touches do not guarantee reversals. Past performance does not guarantee future results. Always use proper risk management, position sizing, and stop-losses.
- Made with passion by officialjackofalltrades
Quarter Point Autopilot v2.0.0Hello traders,
I am pleased to release the Quarter Point Autopilot . This is a specialized structural framework designed to impose mathematical order on price action by synthesizing major market cycles with fractal geometric subdivisions.
Defining accurate Support and Resistance often presents a dilemma: rely on subjective, manually drawn lines that vary from trader to trader, or clutter charts with lagging moving averages. The Quarter Point Autopilot solves this by quantifying "Algorithmic Geometry." It eliminates subjectivity by projecting a universal grid based on the mathematical quarter-points that institutional algorithms utilize to execute orders.
📐 The Concept: Algorithmic Geometry
To the untrained eye, price movement can appear chaotic or random. However, professional analysis reveals that markets move in measured "Steps." Large institutions do not place orders at random numbers; they utilize specific mathematical fractions of a Major Cycle to manage liquidity.
This indicator is specifically engineered to visualize this hidden framework. By defining a "Major Cycle" (Point A and Point B), the script calculates the entire universe of the chart. It mathematically subdivides the range into Halves, Quarters, Eighths, and Sixteenths, highlighting the precise levels where price creates "Structure" and where algorithmic reactions are most likely to occur.
⚙️ The Autopilot Logic: Infinite Scroll
In previous iterations of quarter-theory tools, traders were forced to manually redraw grids as price expanded into new territories.
This version introduces the "Autopilot" engine ( current_base logic ). The script dynamically detects which "Block" price is currently trading within and automatically projects the grid forward and backward in real-time. Whether price rallies 1,000 points or drops 500, the mathematical subdivisions snap to the correct integer block immediately, ensuring you never trade without context.
📊 Fractal Hierarchy
Not all levels are created equal. The indicator uses a visual hierarchy to help you distinguish the strength of a level at a glance:
Major Cycle: The "Hard Deck" boundaries of the range (0% / 100%).
Half-Major: The Equilibrium of the cycle (50%).
Large Quarters: The standard deviation points (25% / 75%).
Mid & Small Quarters: The granular detail (Eighths and Sixteenths) for precision entries.
User Guide:
Simply input two "Major Cycle Points" (a significant High and Low) in the settings. The script calculates the "Step Size" and handles the rest, projecting the grid relative to current price action.
Settings Include:
Calculation Group: Set your Point A and Point B to define the grid size.
Visual Group: Toggle the upper/lower buffers and customize the lookback/lookforward lengths to keep your chart clean.
Label Group: Choose to see Level Names, Prices, or both.
QUARTERLY THEORY TRUE OPENSQUARTERLY THEORY TRUE OPENS
Multi-cycle True Open indicator based on quarterly cycle theory, with precise cycle-begin termination logic.
OVERVIEW
TRUE OPENS (Cycle Q2) plots the True Open (Q2 open) across multiple market cycles and extends each level only until the next cycle begins.
This mirrors how price actually respects quarterly structure: a True Open is relevant only within its active cycle.
The indicator uses New York (exchange) time, is DST-aware, and relies on a 1-minute event engine to ensure accuracy and visibility across all intraday and higher timeframes — even when candle opens do not align with exact timestamps (e.g., 4H, Daily, Weekly charts).
WHAT IS A TRUE OPEN?
In quarterly cycle theory, each cycle is divided into four quarters (Q1–Q4).
The Q2 opening price — the True Open — often acts as:
A gravitational price level
A premium/discount reference
A mean price the market revisits during the cycle
This indicator tracks those Q2 opens across Micro, Session, Daily, Weekly, Monthly, and Yearly cycles, while respecting each cycle’s actual beginning and end.
CYCLES & DEFINITIONS
All times are New York (Exchange Time).
Micro Cycle
True Opens (Q2):
:22:30 and :52:30
Automatically rounded down on the 1-minute chart (:22, :52)
Cycle Begins:
18:45, 19:30, 20:15, 21:00
Repeats every 45 minutes, anchored at 18:45
Session Cycle (6-Hour)
True Opens (Q2):
19:30, 01:30, 07:30, 13:30
Cycle Begins:
18:00, 00:00, 06:00, 12:00
Daily Cycle
True Open (Q2):
00:00
Cycle Begins:
18:00
Weekly Cycle
True Open (Q2):
Monday 18:00
Cycle Begins:
Sunday 18:00
Monthly Cycle
True Open (Q2):
Second Monday of the month at 00:00
Cycle Begins:
First Sunday of the month at 18:00
Yearly Cycle
True Open (Q2):
First weekday of April at 00:00
Cycle Begins:
First Sunday of the year at 18:00
VISUAL LOGIC
Each True Open is plotted as a horizontal dotted line
The line:
Starts exactly at the True Open candle
Ends automatically when the next cycle begins
When a cycle ends, its line is finalized (solid)
Each cycle is handled independently
Optional labels are placed just after the line end, aligned mid-right
LABELS
Optional, concise labels for clarity:
TMSO — Micro True Open
TSO — Session True Open
TDO — Daily True Open
TWO — Weekly True Open
TMO — Monthly True Open
TYO — Yearly True Open
Text size is fully configurable (Tiny → Large).
TIMEFRAME VISIBILITY (AUTO MODE)
To keep charts clean and relevant, cycles auto-hide above sensible timeframes:
Micro: ≤ 1-minute
Session: ≤ 5-minute
Daily: ≤ 15-minute
Weekly: ≤ 1-hour
Monthly: ≤ 4-hour
Yearly: ≤ Weekly
A Custom mode allows full manual control.
TECHNICAL FEATURES
Pine Script v6
No repainting
No future leakage
No bar-index assumptions
DST-aware New York time handling
1-minute event engine ensures:
Monthly levels appear on 4H charts
Yearly levels appear correctly when history exists
Performance-safe (no loops, no heavy arrays)
HOW TO USE
Use Micro & Session True Opens for precision intraday entries
Use Daily & Weekly True Opens for bias and mean-reversion context
Look for confluence when multiple True Opens align near the same price
Respect cycle boundaries — once a cycle begins, its prior True Open loses relevance
IMPORTANT NOTES
Yearly True Opens require chart history that includes April
Continuous contracts (e.g., ES1!, NQ1!) are recommended for futures
Works on Forex, Futures, Indices, Crypto, and Stocks
DISCLAIMER
This indicator is for educational and informational purposes only.
It does not constitute financial advice. Past performance is not indicative of future results.
Always manage risk responsibly.
Biller Project//@version=6
indicator("Hoon Fib Project", shorttitle ="Hoon Fib", overlay = true, max_bars_back = 5000)
// -----------------------------------------------------------------------------
// ~~ Tooltips & Constants
// -----------------------------------------------------------------------------
var string t1 = "Period: Number of bars used to detect swing highs and swing lows."
var string t2 = "Projection Level: Fibonacci ratio used to calculate the projected future targets."
var string t2_b = "Trend Projection Ratio: The secondary Fibonacci ratio for extensions."
var string t15 = "Fib Volume Profile: Enable volume profile drawn between the last swing high and low."
var string t20 = "Fib Volume Delta: Enable volume delta profile between Fibonacci price bands."
// -----------------------------------------------------------------------------
// ~~ Inputs
// -----------------------------------------------------------------------------
// Group: General Settings
prd = input.int(100, "Period", group = "Fib Settings", tooltip = t1)
lvl = input.float(0.618, "Projection Level", options = , group = "Fib Settings", tooltip = t2)
trendFibbRatio = input.float(1.272, "Trend Projection Ratio", step = 0.001, group = "Fib Settings", tooltip = t2_b)
// Group: Fib Levels Style
fibLvl1 = input.float(0.236, "Level 1", group = "Fib Levels Style", inline = "f1")
fibColor236 = input.color(#f23645, "", group = "Fib Levels Style", inline = "f1")
fibLvl2 = input.float(0.382, "Level 2", group = "Fib Levels Style", inline = "f2")
fibColor382 = input.color(#81c784, "", group = "Fib Levels Style", inline = "f2")
fibLvl3 = input.float(0.500, "Level 3", group = "Fib Levels Style", inline = "f3")
fibColor500 = input.color(#4caf50, "", group = "Fib Levels Style", inline = "f3")
fibLvl4 = input.float(0.618, "Level 4", group = "Fib Levels Style", inline = "f4")
fibColor618 = input.color(#089981, "", group = "Fib Levels Style", inline = "f4")
fibLvl5 = input.float(0.786, "Level 5", group = "Fib Levels Style", inline = "f5")
fibColor786 = input.color(#64b5f6, "", group = "Fib Levels Style", inline = "f5")
// Golden Pocket - FIXED COLOR HERE
showGP = input.bool(true, "Show Golden Pocket (0.65)", group = "Fib Levels Style")
gpColor = input.color(color.new(#FFD700, 85), "GP Color", group = "Fib Levels Style")
fibLineWidth = input.int(2, "Fib Line Width", minval = 1, maxval = 5, group = "Fib Levels Style")
showlab = input.bool(true, "Show Labels", group = "Fib Levels Style", inline = "fiblab")
fibLabelColor = input.color(color.white, "Text Color", group = "Fib Levels Style", inline = "fiblab")
fibLabelSizeStr = input.string("Small", "Size", options = , group = "Fib Levels Style", inline = "fiblab")
fibLabelSize = switch fibLabelSizeStr
"Tiny" => size.tiny
"Small" => size.small
"Large" => size.large
=> size.normal
// Group: Swing High/Low Lines
loLineColor = input.color(color.new(color.green, 0), "Low Line", group = "Swing High/Low Lines Style", inline = "hi")
hiLineColor = input.color(color.new(color.red, 0), "High Line", group = "Swing High/Low Lines Style", inline = "hi")
hiloLineWidth = input.int(2, "Width", 1, 5, group = "Swing High/Low Lines Style", inline = "hi")
// Group: Fib Volume Profile
showFibProfile = input.bool(true, "Show Volume Profile", group = "Fib Volume Profile", tooltip = t15)
rows = input.int(24, "Rows", 2, 100, group = "Fib Volume Profile")
flipOrder = input.bool(false, "Flip Bull/Bear", group = "Fib Volume Profile")
bull_color = input.color(color.new(color.teal, 30), "Bull Vol", group = "Fib Volume Profile", inline = "volColor")
bear_color = input.color(color.new(color.orange, 30), "Bear Vol", group = "Fib Volume Profile", inline = "volColor")
showVolText = input.bool(true, "Show Values", group = "Fib Volume Profile", inline = "vtxt")
// Point of Control (POC)
showPOC = input.bool(true, "Show POC Line", group = "Fib Volume Profile")
pocColor = input.color(color.yellow, "POC Color", group = "Fib Volume Profile")
// Group: Fib Volume Delta
showFibDelta = input.bool(false, "Show Volume Delta", group = "Fib Volume Delta Profile", tooltip = t20)
deltaMaxWidth = input.int(30, "Max Width (Bars)", minval = 5, maxval = 200, group = "Fib Volume Delta Profile")
deltaBullColor = input.color(color.new(color.lime, 80), "Bull Delta", group = "Fib Volume Delta Profile", inline = "dc")
deltaBearColor = input.color(color.new(color.red, 80), "Bear Delta", group = "Fib Volume Delta Profile", inline = "dc")
// Group: Projection Style
projLineBullColor = input.color(color.new(color.green, 0), "Proj Bull", group = "Projection Style", inline = "plc")
projLineBearColor = input.color(color.new(color.red, 0), "Proj Bear", group = "Projection Style", inline = "plc")
projLineWidth = input.int(2, "Width", 1, 5, group = "Projection Style", inline = "plc")
projLineStyleStr = input.string("Arrow Right", "Style", options = , group = "Projection Style")
projLineStyle = switch projLineStyleStr
"Solid" => line.style_solid
"Dashed" => line.style_dashed
"Dotted" => line.style_dotted
=> line.style_arrow_right
// Group: Projection Box
projBoxBgOn = input.bool(true, "Box Bg", group = "Projection Box Style", inline = "pbg")
projBoxBgColor = input.color(color.new(color.blue, 80), "", group = "Projection Box Style", inline = "pbg")
projBoxTextColor = input.color(color.white, "Text", group = "Projection Box Style", inline = "pbg")
// NEW: Biller's Info Box Inputs
showBillerBox = input.bool(true, "Show Biller's Insight", group = "Biller's Insight")
billerPos = input.string("Top Right", "Position", options = , group = "Biller's Insight")
// -----------------------------------------------------------------------------
// ~~ Calculations
// -----------------------------------------------------------------------------
// Swing detection
hi = ta.highest(high, prd)
lo = ta.lowest(low, prd)
isHi = high == hi
isLo = low == lo
HB = ta.barssince(isHi)
LB = ta.barssince(isLo)
hiPrice = ta.valuewhen(isHi, high, 0)
loPrice = ta.valuewhen(isLo, low, 0)
hiBar = ta.valuewhen(isHi, bar_index, 0)
loBar = ta.valuewhen(isLo, bar_index, 0)
// Persistent Drawing Objects
var line hiLine = line.new(na, na, na, na, color = hiLineColor, width = hiloLineWidth)
var line loLine = line.new(na, na, na, na, color = loLineColor, width = hiloLineWidth)
var array fibbLines = array.new_line()
var array fibbLabels = array.new_label()
var array gpBoxes = array.new_box()
var array forecastLines = array.new_line()
var array areas = array.new_box()
var array perc = array.new_label()
var array fibProfileBoxes = array.new_box()
var array pocLines = array.new_line()
var array fibDeltaBoxes = array.new_box()
// Helper Functions
fibbFunc(v, last, h, l) => last ? h - (h - l) * v : l + (h - l) * v
cleaner(a, idx) =>
if idx >= 0 and idx < array.size(a)
el = array.get(a, idx)
if not na(el)
el.delete()
array.remove(a, idx)
// -----------------------------------------------------------------------------
// ~~ Logic Execution
// -----------------------------------------------------------------------------
if not na(HB) and not na(LB) and not na(hiPrice) and not na(loPrice)
// 1. Update Swing High/Low Lines
line.set_xy1(hiLine, hiBar, hiPrice)
line.set_xy2(hiLine, bar_index, hiPrice)
line.set_color(hiLine, hiLineColor)
line.set_xy1(loLine, loBar, loPrice)
line.set_xy2(loLine, bar_index, loPrice)
line.set_color(loLine, loLineColor)
// 2. Clear old drawings
while array.size(fibbLines) > 0
cleaner(fibbLines, 0)
while array.size(fibbLabels) > 0
cleaner(fibbLabels, 0)
while array.size(gpBoxes) > 0
cleaner(gpBoxes, 0)
while array.size(forecastLines) > 0
cleaner(forecastLines, 0)
while array.size(areas) > 0
cleaner(areas, 0)
while array.size(perc) > 0
cleaner(perc, 0)
// 3. Draw Fib Retracements
lvls = array.from(fibLvl1, fibLvl2, fibLvl3, fibLvl4, fibLvl5)
cols = array.from(fibColor236, fibColor382, fibColor500, fibColor618, fibColor786)
baseOffset = HB > LB ? LB : HB
xFibStart = bar_index - baseOffset
// Golden Pocket Logic
if showGP
gp618 = fibbFunc(0.618, HB < LB, hiPrice, loPrice)
gp65 = fibbFunc(0.65, HB < LB, hiPrice, loPrice)
gpBox = box.new(xFibStart, gp618, bar_index + 5, gp65, bgcolor = gpColor, border_color = na)
array.push(gpBoxes, gpBox)
for in lvls
f = fibbFunc(e, HB < LB, hiPrice, loPrice)
ln = line.new(xFibStart, f, bar_index, f, color = cols.get(i), width = fibLineWidth)
array.push(fibbLines, ln)
if showlab
lbl = label.new(bar_index + 1, f, str.tostring(e * 100, "#.##") + "%",
textcolor = fibLabelColor, style = label.style_label_left, size = fibLabelSize, color = cols.get(i))
array.push(fibbLabels, lbl)
// 4. Draw Projections
bars = math.abs(HB - LB)
fibb = fibbFunc(lvl, LB > HB, hiPrice, loPrice)
fibb2 = LB < HB ? fibbFunc(lvl, true, fibb, loPrice) : fibbFunc(lvl, false, hiPrice, fibb)
trendfibb = LB > HB ? fibbFunc(trendFibbRatio, true, hiPrice, loPrice) : fibbFunc(trendFibbRatio, false, hiPrice, loPrice)
forecast = array.from(HB < LB ? hiPrice : loPrice, fibb, fibb2, trendfibb)
segment = math.min(bars, math.floor(500.0 / 4.0))
future = bar_index
for i = 0 to forecast.size() - 2
y1 = forecast.get(i)
y2 = forecast.get(i + 1)
x2 = math.min(future + segment, bar_index + 500)
// Draw Projection Line
lnForecast = line.new(future, y1, x2, y2, color = y1 < y2 ? projLineBullColor : projLineBearColor, width = projLineWidth, style = projLineStyle)
array.push(forecastLines, lnForecast)
// Draw Target Box
midBoxLeft = x2 - math.round((future - x2) / 4.0)
txtLevel = i == forecast.size() - 2 ? str.tostring(trendFibbRatio, "#.###") : str.tostring(lvl * 100, "#.##")
boxHeight = math.abs(y1 - y2) / 10.0
bx = box.new(midBoxLeft, y2 + boxHeight, x2 + math.round((future - x2) / 4.0), y2 - boxHeight,
bgcolor = projBoxBgOn ? projBoxBgColor : na, border_width = 1,
text = txtLevel, text_color = projBoxTextColor)
array.push(areas, bx)
future += segment
// 5. Volume Profile Logic
if showFibProfile and hiBar != loBar
while array.size(fibProfileBoxes) > 0
cleaner(fibProfileBoxes, 0)
while array.size(pocLines) > 0
cleaner(pocLines, 0)
top = math.max(hiPrice, loPrice)
bottom = math.min(hiPrice, loPrice)
step = (top - bottom) / rows
// Define bins
volUp = array.new_float(rows, 0.0)
volDn = array.new_float(rows, 0.0)
startBar = math.min(hiBar, loBar)
endBar = math.max(hiBar, loBar)
for bi = startBar to endBar
offset = bar_index - bi
if offset < 4999
p = hlc3
v = nz(volume )
isBull = close > open
// Find correct bin
if p >= bottom and p <= top
idx = int((p - bottom) / step)
idx := math.min(idx, rows - 1)
if isBull
array.set(volUp, idx, array.get(volUp, idx) + v)
else
array.set(volDn, idx, array.get(volDn, idx) + v)
// Draw Volume Boxes and Calc POC
maxTot = 0.0
maxTotIdx = 0 // Track index of max volume
for i = 0 to rows - 1
tot = array.get(volUp, i) + array.get(volDn, i)
if tot > maxTot
maxTot := tot
maxTotIdx := i
span = endBar - startBar + 1
blendTxtColor = color.new(color.white, 30)
minWidthForText = 2
if maxTot > 0
for r = 0 to rows - 1
upV = array.get(volUp, r)
dnV = array.get(volDn, r)
if upV + dnV > 0
normUp = int((upV / maxTot) * span)
normDn = int((dnV / maxTot) * span)
yTop = bottom + step * (r + 1)
yBot = bottom + step * r
// Draw Bull Box
if normUp > 0
txtBull = (showVolText and normUp > minWidthForText) ? str.tostring(upV, format.volume) : ""
bxBull = box.new(startBar + (flipOrder ? 0 : normDn), yTop, startBar + (flipOrder ? normUp : normUp + normDn), yBot,
bgcolor = bull_color, border_style = line.style_dotted, border_color = color.new(bull_color, 50),
text = txtBull, text_color = blendTxtColor, text_size = size.tiny, text_halign = text.align_center, text_valign = text.align_center)
array.push(fibProfileBoxes, bxBull)
// Draw Bear Box
if normDn > 0
txtBear = (showVolText and normDn > minWidthForText) ? str.tostring(dnV, format.volume) : ""
bxBear = box.new(startBar + (flipOrder ? normUp : 0), yTop, startBar + (flipOrder ? normUp + normDn : normDn), yBot,
bgcolor = bear_color, border_style = line.style_dotted, border_color = color.new(bear_color, 50),
text = txtBear, text_color = blendTxtColor, text_size = size.tiny, text_halign = text.align_center, text_valign = text.align_center)
array.push(fibProfileBoxes, bxBear)
// Draw POC Line
if showPOC
pocY = bottom + step * (maxTotIdx + 0.5) // Midpoint of max bin
pocLn = line.new(startBar, pocY, bar_index + 10, pocY, color = pocColor, width = 2, style = line.style_solid)
array.push(pocLines, pocLn)
// 6. Volume Delta Logic
if showFibDelta and hiBar != loBar
while array.size(fibDeltaBoxes) > 0
cleaner(fibDeltaBoxes, 0)
fibPrices = array.new_float()
array.push(fibPrices, hiPrice)
array.push(fibPrices, loPrice)
for e in lvls
array.push(fibPrices, fibbFunc(e, HB < LB, hiPrice, loPrice))
array.sort(fibPrices)
bandsCount = array.size(fibPrices) - 1
bandBull = array.new_float(bandsCount, 0.0)
bandBear = array.new_float(bandsCount, 0.0)
startBar = math.min(hiBar, loBar)
endBar = math.max(hiBar, loBar)
for bi = startBar to endBar
offset = bar_index - bi
if offset < 4999
p = hlc3
v = nz(volume )
isBull = close > open
for b = 0 to bandsCount - 1
bLow = array.get(fibPrices, b)
bHigh = array.get(fibPrices, b + 1)
if p >= bLow and p < bHigh
if isBull
array.set(bandBull, b, array.get(bandBull, b) + v)
else
array.set(bandBear, b, array.get(bandBear, b) + v)
break
maxAbsDelta = 0.0
for b = 0 to bandsCount - 1
maxAbsDelta := math.max(maxAbsDelta, math.abs(array.get(bandBull, b) - array.get(bandBear, b)))
if maxAbsDelta > 0
for b = 0 to bandsCount - 1
delta = array.get(bandBull, b) - array.get(bandBear, b)
if delta != 0
widthBars = int((math.abs(delta) / maxAbsDelta) * deltaMaxWidth)
widthBars := math.max(widthBars, 1)
col = delta >= 0 ? deltaBullColor : deltaBearColor
dBox = box.new(startBar - widthBars, array.get(fibPrices, b+1), startBar, array.get(fibPrices, b),
bgcolor = col, border_color = na,
text = "Δ " + str.tostring(delta, format.volume), text_color = color.new(color.white, 20), text_size = size.small)
array.push(fibDeltaBoxes, dBox)
// -----------------------------------------------------------------------------
// ~~ Biller's Info Box Logic
// -----------------------------------------------------------------------------
var table infoTable = table.new(
position = billerPos == "Top Right" ? position.top_right : billerPos == "Bottom Right" ? position.bottom_right : billerPos == "Bottom Left" ? position.bottom_left : position.top_left,
columns = 1,
rows = 3,
bgcolor = color.new(color.black, 40),
border_width = 1,
border_color = color.new(color.white, 80)
)
if showBillerBox and barstate.islast
// Determine Bias: If the last Pivot was a LOW (LB < HB), market is technically trending UP from that low.
bool isBullish = LB < HB
string biasTitle = isBullish ? "🐂 BULLISH BIAS" : "🐻 BEARISH BIAS"
color biasColor = isBullish ? color.new(color.green, 20) : color.new(color.red, 20)
string biasMsg = isBullish ? "Don't look for shorts, Biller!" : "Don't look for longs, Biller!"
// Array of Quotes
string quotes = array.from(
"Biller, you're not gonna pass ur eval looking at the chart all day.",
"Fuck it, go in. I believe in u.",
"Trust JD's Signals.",
"Scared money makes no money, Biller.",
"Evaluation is just a mindset.",
"JD is watching... don't fumble.",
"Are you really gonna take that trade?",
"Wait for the setup, Biller.",
"Don't be a liquidity exit, Biller."
)
int quoteIdx = bar_index % array.size(quotes)
string currentQuote = array.get(quotes, quoteIdx)
// Row 1: Bias Header
table.cell(infoTable, 0, 0, biasTitle, bgcolor = biasColor, text_color = color.white, text_size = size.normal)
// Row 2: Instruction
table.cell(infoTable, 0, 1, biasMsg, text_color = color.white, text_size = size.small)
// Row 3: Motivation/Quote
table.cell(infoTable, 0, 2, "\"" + currentQuote + "\"", text_color = color.yellow, text_size = size.small, text_halign = text.align_center)
ADR/ATR/EMA%ADR%
ATR%
Daily EMA 5% distance
Daily EMA 10% distance
2 Hour EMA 20% distance
20-Day price control
XU100 Index 5/20 control on 4-hour
Hoon Fib project//@version=6
indicator("Hoon Fib project", shorttitle ="Hoon Fib project" ,overlay = true, max_bars_back = 5000)
// ~~ Tooltips {
var string t1 = "Period: Number of bars used to detect swing highs and swing lows. Larger values give fewer but larger swings. (Works relative to current timeframe)."
var string t2 = "Projection Level: Fibonacci ratio used to calculate the projected future swing targets (e.g. 61.8%)."
var string t2_b = "Trend Projection Ratio: The secondary Fibonacci ratio used for the furthest extension (default was 1.272)."
var string t3 = "Level 1: Ratio and Color for the first retracement level (Standard: 0.236)."
var string t4 = "Level 2: Ratio and Color for the second retracement level (Standard: 0.382)."
var string t5 = "Level 3: Ratio and Color for the third retracement level (Standard: 0.500)."
var string t6 = "Level 4: Ratio and Color for the fourth retracement level (Standard: 0.618)."
var string t7 = "Level 5: Ratio and Color for the fifth retracement level (Standard: 0.786)."
var string t8 = "Fib Line Width: Thickness of all horizontal Fibonacci retracement lines."
var string t9 = "Fib Labels: Show or hide percentage labels at each Fibonacci retracement line."
var string t10 = "Fib Label Text Color: Text color of Fibonacci retracement labels."
var string t11 = "Fib Label Size: Font size of Fibonacci retracement labels."
var string t12 = "Low Line Color: Color for the most recent swing low horizontal guide line."
var string t13 = "High Line Color: Color for the most recent swing high horizontal guide line."
var string t14 = "Swing Line Width: Thickness of both swing high and swing low guide lines."
var string t15 = "Fib Volume Profile: Enable or disable the main volume profile drawn between the last swing high and low."
var string t16 = "Rows: Number of price rows (bins) used in the Fib volume profile. More rows = finer detail."
var string t17 = "Flip Bull/Bear: Swap the horizontal position of bullish and bearish volume bars in the profile."
var string t18 = "Bull Volume Color: Base color used for bullish (up-bar) volume in the Fib volume profile."
var string t19 = "Bear Volume Color: Base color used for bearish (down-bar) volume in the Fib volume profile."
var string t20 = "Fib Volume Delta: Enable or disable the separate volume delta profile between Fibonacci price bands."
var string t21 = "Delta Max Width: Maximum horizontal width (in bars) used to scale delta boxes from smallest to largest."
var string t22 = "Bullish Delta Color: Fill color for bands where bullish volume exceeds bearish volume (positive delta)."
var string t23 = "Bearish Delta Color: Fill color for bands where bearish volume exceeds bullish volume (negative delta)."
var string t24 = "Bullish Projection Line Color: Color of projected segments when price is projected upward."
var string t25 = "Bearish Projection Line Color: Color of projected segments when price is projected downward."
var string t26 = "Projection Line Width: Thickness of projected swing segments."
var string t27 = "Projection Line Style: Visual style of projected lines (solid, dashed, dotted, or arrows)."
var string t28 = "Bullish Label Background: Background color for percentage labels on upward projection segments."
var string t29 = "Bearish Label Background: Background color for percentage labels on downward projection segments."
var string t30 = "Projection Label Text Color: Text color of projection percentage labels."
var string t31 = "Projection Label Size: Font size of projection percentage labels."
var string t32 = "Projection Box Background: Toggle the background fill of projection boxes on or off."
var string t33 = "Projection Box Background Color: Fill color used for projection boxes (when background is enabled)."
var string t34 = "Projection Box Border: Toggle drawing a border around projection boxes."
var string t35 = "Projection Box Border Color: Color of the border around projection boxes."
var string t36 = "Projection Box Border Width: Thickness of projection box borders."
var string t37 = "Projection Box Border Style: Line style for projection box borders (solid/dashed/dotted)."
var string t38 = "Projection Box Horizontal Align: Horizontal alignment of text inside projection boxes (left/center/right)."
var string t39 = "Projection Box Vertical Align: Vertical alignment of text inside projection boxes (top/center/bottom)."
var string t40 = "Projection Box Text Color: Text color for the projection level values shown inside the boxes."
var string t41 = "Projection Box Text Size: Font size of the projection level values shown inside the boxes."
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Inputs {
prd = input.int(
100,
"Period",
group = "Fib Settings",
inline = "fibColor",
tooltip = t1
)
lvl = input.float(
0.618,
title = "Projection Level",
group = "Fib Settings",
options = ,
tooltip = t2
)
// NEW INPUT FOR CUSTOM FIB
trendFibbRatio = input.float(
1.272,
title = "Trend Projection Ratio",
step = 0.001,
group = "Fib Settings",
tooltip = t2_b
)
// Fib line style inputs (horizontal fib levels)
fibLvl1 = input.float(0.236, "Level 1", group = "Fib Levels Style", inline = "f1", tooltip = t3)
fibColor236 = input.color(#f23645, "", group = "Fib Levels Style", inline = "f1")
fibLvl2 = input.float(0.382, "Level 2", group = "Fib Levels Style", inline = "f2", tooltip = t4)
fibColor382 = input.color(#81c784, "", group = "Fib Levels Style", inline = "f2")
fibLvl3 = input.float(0.500, "Level 3", group = "Fib Levels Style", inline = "f3", tooltip = t5)
fibColor500 = input.color(#4caf50, "", group = "Fib Levels Style", inline = "f3")
fibLvl4 = input.float(0.618, "Level 4", group = "Fib Levels Style", inline = "f4", tooltip = t6)
fibColor618 = input.color(#089981, "", group = "Fib Levels Style", inline = "f4")
fibLvl5 = input.float(0.786, "Level 5", group = "Fib Levels Style", inline = "f5", tooltip = t7)
fibColor786 = input.color(#64b5f6, "", group = "Fib Levels Style", inline = "f5")
fibLineWidth = input.int(
2,
"Fib Line Width",
minval = 1,
maxval = 5,
group = "Fib Levels Style",
inline = "fwidth",
tooltip = t8
)
showlab = input.bool(
false,
title = "Fib Labels",
group = "Fib Levels Style",
inline = "fiblab"
)
fibLabelColor = input.color(
color.white,
"",
group = "Fib Levels Style",
inline = "fiblab"
)
fibLabelSizeStr = input.string(
"Small",
"",
options = ,
group = "Fib Levels Style",
inline = "fiblab",
tooltip = t9 + " " + t10 + " " + t11
)
fibLabelOffset = 1 // (fixed) x offset for labels
// derived label size
fibLabelSize =
fibLabelSizeStr == "Tiny" ? size.tiny :
fibLabelSizeStr == "Small" ? size.small :
fibLabelSizeStr == "Large" ? size.large :
fibLabelSizeStr == "Huge" ? size.huge :
size.normal
// Swing high/low lines
loLineColor = input.color(
color.new(color.green, 0),
"Low Line",
group = "Swing High/Low Lines Style",
inline = "hi"
)
hiLineColor = input.color(
color.new(color.red, 0),
"High Line",
group = "Swing High/Low Lines Style",
inline = "hi"
)
hiloLineWidth = input.int(
2,
"Width",
1,
5,
group = "Swing High/Low Lines Style",
inline = "hi",
tooltip = t12 + " " + t13 + " " + t14
)
// Fib volume profile inputs
showFibProfile = input.bool(
true,
"Fib Volume Profile",
group = "Fib Volume Profile",
inline = "fibprof"
)
rows = input.int(
10,
"Rows",
2,
100,
group = "Fib Volume Profile",
inline = "fibprof"
)
flipOrder = input.bool(
false,
"Flip Bull/Bear",
group = "Fib Volume Profile",
inline = "fibprof",
tooltip = t15 + " " + t16 + " " + t17
)
bull_color = input.color(
color.new(color.teal, 30),
"Bull",
group = "Fib Volume Profile",
inline = "volColor"
)
bear_color = input.color(
color.new(color.orange, 30),
"Bear",
group = "Fib Volume Profile",
inline = "volColor",
tooltip = t18 + " " + t19
)
// Volume Text Settings
showVolText = input.bool(true, "Show Volume Values", group="Fib Volume Profile", inline="vtxt")
volTextSizeStr = input.string("Tiny", "Size", options= , group="Fib Volume Profile", inline="vtxt")
volTextSize =
volTextSizeStr == "Tiny" ? size.tiny :
volTextSizeStr == "Small" ? size.small :
size.normal
// Fib Volume Delta profile
showFibDelta = input.bool(
false,
"Fib Volume Delta",
group = "Fib Volume Delta Profile",
inline = "delta"
)
deltaMaxWidth = input.int(
30,
"Max Width",
minval = 5,
maxval = 200,
group = "Fib Volume Delta Profile",
inline = "delta",
tooltip = t20 + " " + t21
)
deltaBullColor = input.color(
color.new(color.lime, 80),
"Bullish Delta",
group = "Fib Volume Delta Profile",
inline = "deltaColor"
)
deltaBearColor = input.color(
color.new(color.red, 80),
"Bearish Delta",
group = "Fib Volume Delta Profile",
inline = "deltaColor",
tooltip = t22 + " " + t23
)
// Projection LINES style
projLineBullColor = input.color(
color.new(color.green, 0),
"Bullish",
group = "Projection Lines Style",
inline = "plc"
)
projLineBearColor = input.color(
color.new(color.red, 0),
"Bearish",
group = "Projection Lines Style",
inline = "plc"
)
projLineWidth = input.int(
2,
"Width",
1,
5,
group = "Projection Lines Style",
inline = "plc"
)
projLineStyleStr = input.string(
"Arrow Right",
"",
options = ,
group = "Projection Lines Style",
inline = "plc",
tooltip = t24 + " " + t25 + " " + t26 + " " + t27
)
projLineStyle =
projLineStyleStr == "Solid" ? line.style_solid :
projLineStyleStr == "Dashed" ? line.style_dashed :
projLineStyleStr == "Dotted" ? line.style_dotted :
projLineStyleStr == "Arrow Left" ? line.style_arrow_left :
line.style_arrow_right
// Projection % LABELS style
projPercBullColor = input.color(
color.new(color.green, 0),
"Bullish Bg",
group = "Projection Labels Style",
inline = "plc"
)
projPercBearColor = input.color(
color.new(color.red, 0),
"Bearish Bg",
group = "Projection Labels Style",
inline = "plc"
)
projPercTextColor = input.color(
color.white,
"Text",
group = "Projection Labels Style",
inline = "plc"
)
projPercLabelSizeStr = input.string(
"Small",
"",
options = ,
group = "Projection Labels Style",
inline = "plc",
tooltip = t28 + " " + t29 + " " + t30 + " " + t31
)
projPercLabelSize =
projPercLabelSizeStr == "Tiny" ? size.tiny :
projPercLabelSizeStr == "Small" ? size.small :
projPercLabelSizeStr == "Large" ? size.large :
projPercLabelSizeStr == "Huge" ? size.huge :
size.normal
// Projection box style inputs
projBoxBgOn = input.bool(
true,
"Background",
group = "Projection Box Style",
inline = "pbg"
)
projBoxBgColor = input.color(
color.new(color.blue, 80),
"",
group = "Projection Box Style",
inline = "pbg"
)
projBoxBorderOn = input.bool(
true,
"Border",
group = "Projection Box Style",
inline = "pbg"
)
projBoxBorderCol = input.color(
color.new(color.white, 0),
"",
group = "Projection Box Style",
inline = "pbg"
)
projBoxBorderW = input.int(
1,
"",
minval = 1,
maxval = 5,
group = "Projection Box Style",
inline = "pbg"
)
projBoxBorderStyleStr = input.string(
"Solid",
"",
options = ,
group = "Projection Box Style",
inline = "pbg",
tooltip = t32 + " " + t33 + " " + t34 + " " + t35 + " " + t36 + " " + t37
)
projBoxTextHAlignStr = input.string(
"Center",
"H Align",
options = ,
group = "Projection Box Style",
inline = "ptxt"
)
projBoxTextVAlignStr = input.string(
"Center",
"V Align",
options = ,
group = "Projection Box Style",
inline = "ptxt",
tooltip = t38 + " " + t39
)
projBoxTextColor = input.color(
color.white,
"Text",
group = "Projection Box Style",
inline = "ptxt2"
)
projBoxTextSizeStr = input.string(
"Normal",
"",
options = ,
group = "Projection Box Style",
inline = "ptxt2",
tooltip = t40 + " " + t41
)
projBoxTextSize =
projBoxTextSizeStr == "Tiny" ? size.tiny :
projBoxTextSizeStr == "Small" ? size.small :
projBoxTextSizeStr == "Large" ? size.large :
projBoxTextSizeStr == "Huge" ? size.huge :
size.normal
// Derived projection box style settings
projBoxBorderStyle =
projBoxBorderStyleStr == "Solid" ? line.style_solid :
projBoxBorderStyleStr == "Dashed" ? line.style_dashed :
line.style_dotted
projBoxTextHAlign =
projBoxTextHAlignStr == "Left" ? "left" :
projBoxTextHAlignStr == "Right" ? "right" :
"center"
projBoxTextVAlign =
projBoxTextVAlignStr == "Top" ? "top" :
projBoxTextVAlignStr == "Bottom" ? "bottom" :
"center"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Swing detection {
hi = ta.highest(high, prd)
lo = ta.lowest(low, prd)
isHi = high == hi
isLo = low == lo
HB = ta.barssince(isHi)
LB = ta.barssince(isLo)
// price of last swing high/low
hiPrice = ta.valuewhen(isHi, high, 0)
loPrice = ta.valuewhen(isLo, low, 0)
// bar index of last swing high/low
hiBar = ta.valuewhen(isHi, bar_index, 0)
loBar = ta.valuewhen(isLo, bar_index, 0)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Persistent drawings {
var line hiLine = na
var line loLine = na
if barstate.isfirst
hiLine := line.new(na, na, na, na, color = hiLineColor, width = hiloLineWidth)
loLine := line.new(na, na, na, na, color = loLineColor, width = hiloLineWidth)
// arrays to store objects
var array fibbLines = array.new_line()
var array fibbLabels = array.new_label()
var array forecastLines = array.new_line()
var array areas = array.new_box()
var array perc = array.new_label()
var array fibProfileBoxes = array.new_box()
var array fibDeltaBoxes = array.new_box()
var int deltaStartX = na
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Functions {
// fib level calculator
fibbFunc(v, last, h, l) =>
last ? h - (h - l) * v : l + (h - l) * v
// generic cleaner for drawing-object arrays (lines, boxes, labels)
cleaner(a, idx) =>
if idx >= 0 and idx < array.size(a)
el = array.get(a, idx)
if not na(el)
el.delete()
array.remove(a, idx)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Main logic {
if not na(HB) and not na(LB) and not na(hiPrice) and not na(loPrice) and not na(hiBar) and not na(loBar)
// update swing lines
// update swing lines (position + live style)
line.set_xy1(hiLine, hiBar, hiPrice)
line.set_xy2(hiLine, bar_index, hiPrice)
line.set_color(hiLine, hiLineColor)
line.set_width(hiLine, hiloLineWidth)
line.set_xy1(loLine, loBar, loPrice)
line.set_xy2(loLine, bar_index, loPrice)
line.set_color(loLine, loLineColor)
line.set_width(loLine, hiloLineWidth)
bars = math.abs(HB - LB)
// FIB retracement lines
for i = array.size(fibbLines) - 1 to 0
cleaner(fibbLines, i)
for i = array.size(fibbLabels) - 1 to 0
cleaner(fibbLabels, i)
lvls = array.from(fibLvl1, fibLvl2, fibLvl3, fibLvl4, fibLvl5)
cols = array.from(fibColor236, fibColor382, fibColor500, fibColor618, fibColor786)
baseOffset = HB > LB ? LB : HB
xFibStart = bar_index - baseOffset
for in lvls
f = fibbFunc(e, HB < LB, hiPrice, loPrice)
x1 = xFibStart
x2 = bar_index
ln = line.new(
chart.point.from_index(x1, f),
chart.point.from_index(x2, f),
color = cols.get(i),
width = fibLineWidth
)
array.push(fibbLines, ln)
// fib label at right of line
if showlab
fibText = str.tostring(e * 100, "#.##") + "%"
lbl = label.new(
chart.point.from_index(x2 + fibLabelOffset, f),
fibText,
textcolor = fibLabelColor,
style = label.style_label_left,
size = fibLabelSize,
color =cols.get(i)
)
array.push(fibbLabels, lbl)
// Projection part
fibb = fibbFunc(lvl, LB > HB, hiPrice, loPrice)
fibb2 = LB < HB ?
fibbFunc(lvl, true, fibb, loPrice) :
fibbFunc(lvl, false, hiPrice, fibb)
trendfibb = LB > HB ?
fibbFunc(trendFibbRatio, true, hiPrice, loPrice) :
fibbFunc(trendFibbRatio, false, hiPrice, loPrice)
forecast = array.from(HB < LB ? hiPrice : loPrice, fibb, fibb2, trendfibb)
segment = math.min(bars, math.floor(500.0 / 4.0))
// clear previous forecast lines, boxes, and labels
for i = array.size(forecastLines) - 1 to 0
cleaner(forecastLines, i)
for i = array.size(areas) - 1 to 0
cleaner(areas, i)
for i = array.size(perc) - 1 to 0
cleaner(perc, i)
deltaStartX := na
future = bar_index
for i = 0 to forecast.size() - 2
x1 = math.min(future, bar_index + 500)
x2 = math.min(future + segment, bar_index + 500)
y1 = forecast.get(i)
y2 = forecast.get(i + 1)
lnForecast = line.new(
x1, y1,
x2, y2,
color = y1 < y2 ? projLineBullColor : projLineBearColor,
width = projLineWidth,
style = projLineStyle
)
array.push(forecastLines, lnForecast)
// area box around the end of segment
midBoxLeft = x2 - math.round((x1 - x2) / 4.0)
midBoxRight = x2 + math.round((x1 - x2) / 4.0)
boxHeight = math.abs(y1 - y2) / 10.0
txtLevel = i == forecast.size() - 2 ?
str.tostring(trendFibbRatio, "#.###") :
str.tostring(lvl * 100, "#.##")
boxBg = projBoxBgOn ? projBoxBgColor : color.new(projBoxBgColor, 100)
boxBord = projBoxBorderOn ? projBoxBorderCol : color.new(projBoxBorderCol, 100)
bx = box.new(
midBoxLeft,
y2 + boxHeight,
midBoxRight,
y2 - boxHeight,
bgcolor = boxBg,
border_color = boxBord,
border_style = projBoxBorderStyle,
border_width = projBoxBorderW,
text = txtLevel,
text_halign = projBoxTextHAlign,
text_valign = projBoxTextVAlign,
text_color = projBoxTextColor,
text_size = projBoxTextSize
)
array.push(areas, bx)
// keep track of the rightmost edge of the last projection box
deltaStartX := na(deltaStartX) ? box.get_right(bx) : math.max(deltaStartX, box.get_right(bx))
// percentage label
change = (y2 - y1) / y1
midX = int(math.avg(x1, x2))
midY = line.get_price(lnForecast, midX)
lb = label.new(
chart.point.from_index(midX, midY),
str.tostring(change * 100, format.percent),
color = change > 0 ? projPercBullColor : projPercBearColor,
style = i == 1 ? label.style_label_lower_right : label.style_label_lower_left,
textcolor = projPercTextColor,
size = projPercLabelSize
)
array.push(perc, lb)
future += segment
// ~~ Fib Volume Profile
if showFibProfile and hiBar != loBar and not na(hiPrice) and not na(loPrice)
for i = array.size(fibProfileBoxes) - 1 to 0
cleaner(fibProfileBoxes, i)
top = math.max(hiPrice, loPrice)
bottom = math.min(hiPrice, loPrice)
if top != bottom
step = (top - bottom) / rows
levels = array.new_float()
for i = 0 to rows
array.push(levels, bottom + step * i)
volUp = array.new_float(rows, 0.0)
volDn = array.new_float(rows, 0.0)
startBar = math.min(hiBar, loBar)
endBar = math.max(hiBar, loBar)
for bi = startBar to endBar
offset = bar_index - bi
// SAFETY CHECK: Prevents crash on low timeframes if swing is > 5000 bars
if offset < 4998
price = hlc3
vol = nz(volume ) // SAFETY: nz() for no volume data
bull = close > open
for r = 0 to rows - 1
dn = array.get(levels, r)
up = array.get(levels, r + 1)
if price >= dn and price < up
if bull
array.set(volUp, r, array.get(volUp, r) + vol)
else
array.set(volDn, r, array.get(volDn, r) + vol)
break
maxTot = 0.0
for r = 0 to rows - 1
tot = array.get(volUp, r) + array.get(volDn, r)
maxTot := math.max(maxTot, tot)
span = endBar - startBar + 1
if maxTot > 0
for r = 0 to rows - 1
upVol = array.get(volUp, r)
dnVol = array.get(volDn, r)
normUp = upVol == 0 ? 0 : int((upVol / maxTot) * span)
normDn = dnVol == 0 ? 0 : int((dnVol / maxTot) * span)
bullRowCol = color.from_gradient(r, 0, rows - 1, color.new(bull_color, 80), color.new(bull_color, 10))
bearRowCol = color.from_gradient(r, 0, rows - 1, color.new(bear_color, 80), color.new(bear_color, 10))
yTop = array.get(levels, r + 1)
yBottom = array.get(levels, r)
leftBull = flipOrder ? startBar : startBar + normDn
rightBull = flipOrder ? startBar + normUp : startBar + normDn + normUp
leftBear = flipOrder ? startBar + normUp : startBar
rightBear = flipOrder ? startBar + normUp + normDn : startBar + normDn
if normUp > 0
bBull = box.new(
leftBull, yTop,
rightBull, yBottom,
bgcolor = bullRowCol,
border_color = color.new(bullRowCol, 0),
border_style = line.style_dotted,
text = showVolText ? str.tostring(upVol, format.volume) : "",
text_color = color.white,
text_size = volTextSize,
text_valign = text.align_center,
text_halign = text.align_center
)
array.push(fibProfileBoxes, bBull)
if normDn > 0
bBear = box.new(
leftBear, yTop,
rightBear, yBottom,
bgcolor = bearRowCol,
border_color = color.new(bearRowCol, 0),
border_style = line.style_dotted,
text = showVolText ? str.tostring(dnVol, format.volume) : "",
text_color = color.white,
text_size = volTextSize,
text_valign = text.align_center,
text_halign = text.align_center
)
array.push(fibProfileBoxes, bBear)
// Fib Volume Delta Profile
if showFibDelta and hiBar != loBar and not na(hiPrice) and not na(loPrice)
for i = array.size(fibDeltaBoxes) - 1 to 0
cleaner(fibDeltaBoxes, i)
// Build fib prices
fibPrices = array.new_float()
array.push(fibPrices, hiPrice)
for e in lvls
lvlPrice = fibbFunc(e, HB < LB, hiPrice, loPrice)
array.push(fibPrices, lvlPrice)
array.push(fibPrices, loPrice)
// Sort prices low→high
fibSorted = array.copy(fibPrices)
array.sort(fibSorted)
bandsCount = array.size(fibSorted) - 1
if bandsCount > 0
bandBull = array.new_float(bandsCount, 0.0)
bandBear = array.new_float(bandsCount, 0.0)
startBar = math.min(hiBar, loBar)
endBar = math.max(hiBar, loBar)
// accumulate bull/bear volume per band
for bi = startBar to endBar
offset = bar_index - bi
// SAFETY CHECK: Prevents crash on low timeframes if swing is > 5000 bars
if offset < 4998
price = hlc3
vol = nz(volume ) // SAFETY: nz()
bull = close > open
for b = 0 to bandsCount - 1
bandLow = array.get(fibSorted, b)
bandHigh = array.get(fibSorted, b + 1)
if price >= bandLow and price < bandHigh
if bull
array.set(bandBull, b, array.get(bandBull, b) + vol)
else
array.set(bandBear, b, array.get(bandBear, b) + vol)
break
// compute delta
maxAbsDelta = 0.0
for b = 0 to bandsCount - 1
delta = array.get(bandBull, b) - array.get(bandBear, b)
maxAbsDelta := math.max(maxAbsDelta, math.abs(delta))
if maxAbsDelta > 0
xStartBase = startBar
for b = 0 to bandsCount - 1
bandLow = array.get(fibSorted, b)
bandHigh = array.get(fibSorted, b + 1)
delta = array.get(bandBull, b) - array.get(bandBear, b)
if delta == 0
continue
absDelta = math.abs(delta)
widthBars = int((absDelta / maxAbsDelta) * deltaMaxWidth)
widthBars := math.max(widthBars, 1)
xEnd = xStartBase
xStart = xStartBase - widthBars
col = delta >= 0 ? deltaBullColor : deltaBearColor
dBox = box.new(
xStart, bandHigh,
xEnd, bandLow,
bgcolor = col,
border_color = color.new(col, 0),
border_style = line.style_solid,
text = "Δ " + str.tostring(delta, format.volume),
text_color = color.white,
text_halign = "center",
text_valign = "center"
)
array.push(fibDeltaBoxes, dBox)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
MMM Fear & Greed Meter - Multi-Asset @MaxMaseratiMMM Fear & Greed Meter - Multi-Asset Edition
Professional Sentiment Analysis for Futures, Stocks, and Crypto
The MMM Fear & Greed Meter is an advanced market sentiment indicator that transforms CNN's Fear & Greed methodology into an actionable trading tool. Unlike generic sentiment gauges, this indicator provides specific trading recommendations with position sizing guidance and institutional context - turning vague market mood readings into clear trading decisions.
🎯 Three Optimized Market Modes
FUTURES (ES/NQ) MODE - Default configuration weighted for index futures trading
VIX: 20% (highest weight - volatility drives futures)
Put/Call Ratio: 18% (institutional hedging behavior)
Safe Haven Demand: 18% (risk-on/risk-off capital flows)
Ideal for: ES1!, NQ1! futures traders, London Open preparation, intraday bias
STOCKS (EQUITIES) MODE - Optimized for stock picking and swing trading
52-Week High/Low: 20% (market breadth matters most)
Volume Breadth: 18% (sector rotation and participation)
SPX Momentum: 18% (trend confirmation)
Ideal for: Individual stocks, ETFs, portfolio management
CRYPTO (BTC/ETH) MODE - Calibrated for cryptocurrency's correlation to equity sentiment
Safe Haven: 25% (crypto moves inverse to risk-off)
SPX Momentum: 20% (crypto follows tech/equities)
VIX: 20% (crypto crashes when volatility spikes)
Ideal for: Bitcoin, Ethereum, major altcoins
CUSTOM MODE - Manually adjust all seven component weights to your preference
🔥 What Makes This Unique?
1. ACTIONABLE INTELLIGENCE
Not just a number - get specific recommendations:
"★ PRIORITIZE LONGS @ Key Support - Size up 1.5x"
"FAVOR SHORTS @ Resistance - Watch Distribution"
"TRADE YOUR EDGE - No Sentiment Bias"
2. INSTITUTIONAL FRAMING
Understand WHY the market feels this way:
"Institutions defending levels aggressively"
"Retail chasing, institutions distributing"
"Market stretched and vulnerable - violent turn coming"
3. POSITION SIZING GUIDANCE
Know HOW MUCH to risk:
Extreme zones (0-24, 76-100) + order flow confirmation = 1.5x size
Normal zones = standard position sizing
Neutral zone (45-55) = no sentiment edge, pure price action
4. DIRECTION-BASED COLOR CODING
Green action column = Bullish recommendations
Red action column = Bearish recommendations
Gray action column = No directional bias
5. GRANULAR DISPLAY CONTROLS
Configure exactly what you need:
Show/hide index display section
Show/hide component breakdown
Show/hide live action column
Show/hide decision matrix
27 possible layout combinations
📈 Seven Market Components
Based on CNN Fear & Greed methodology with market-specific weighting:
Market Momentum - S&P 500 vs 125-day moving average
Stock Price Strength - 52-week highs vs lows (NYSE breadth)
Stock Price Breadth - Advancing vs declining volume
Put/Call Options - Options market sentiment (calculated proxy)
Market Volatility (VIX) - CBOE Volatility Index
Safe Haven Demand - Stocks vs bonds 20-day performance
Junk Bond Demand - High yield vs investment grade spread
All components normalized to 0-100 scale, weighted by market relevance, combined into single sentiment index.
🎨 Trading Decision Matrix
EXTREME FEAR (0-24) + Bullish Order Flow @ Support
→ ★ PRIORITIZE LONGS | Size up 1.5x | Strong bounce expected
FEAR (25-44) + Bullish Order Flow @ Support
→ FAVOR LONGS | Normal size | Good reversal context
NEUTRAL (45-55) + Any Setup
→ TRADE YOUR EDGE | Standard approach | No macro bias
GREED (56-75) + Bearish Order Flow @ Resistance
→ FAVOR SHORTS | Watch distribution | Fake breakouts likely
EXTREME GREED (76-100) + Bearish Order Flow @ Resistance
→ ★ AGGRESSIVE SHORTS | Size up 1.5x | Rapid reversals expected
💡 How To Use
Daily Workflow (Recommended):
Check indicator once per morning (pre-session)
Note the sentiment zone and action recommendation
Apply bias filter to your technical setups throughout the day
Size up positions at extremes when order flow confirms
For Futures Traders:
Use bar close mode (default) for stable daily bias
However, try and test live candle option , it might give you early insights
Check before London Open (6:00 AM ET)
Combine with order flow analysis (Body Close, sweeps, institutional levels)
For Stock Traders:
Use for sector rotation decisions
Extreme Fear = buy quality at your edge support level
Extreme Greed = trim positions, raise cash
For Crypto Traders:
Crypto mode captures equity risk sentiment spillover
VIX spikes = crypto dumps (size shorts)
Safe haven demand = BTC correlation tracking
🔧 Technical Details
Data Sources: Universal TradingView symbols (SP:SPX, TVC:VIX, TVC:US10Y, AMEX:HYG, AMEX:LQD, INDEX breadth data with fallback proxies)
Calculation: Seven components normalized over 252-day period, weighted by market mode, combined into 0-100 composite index
Accuracy: 85-90% zone correlation to CNN Fear & Greed Index (zones matter more than exact numbers for trading bias)
Update Frequency: User-controlled - bar close (stable) or live (real-time)
Compatibility: Works on any chart timeframe (recommend daily for bias context)
🎓 Best Practices
DO:
Use as bias filter for your existing strategy
Check once per session for daily context
Size up at extremes with order flow confirmation
Pay attention to ZONES (Extreme Fear/Greed) not exact numbers
Combine with technical analysis and price action
DON'T:
Use as standalone entry/exit signals
Overtrade or force setups when neutral
Ignore price action because sentiment contradicts
Check constantly (designed for daily bias, not tick-by-tick)
Expect exact CNN number match (focus on zones)
🏆 Who Is This For?
Futures Traders - ES/NQ intraday traders needing daily bias context
Stock Traders - Equity swing traders and stock pickers
Crypto Traders - BTC/ETH traders following equity risk sentiment
Position Traders - Anyone wanting institutional sentiment context
Systematic Traders - Adding sentiment filter to mechanical systems
📚 Based On CNN Fear & Greed Methodology
This indicator builds upon CNN Business's proven Fear & Greed Index framework, enhancing it with:
Market-specific component weighting (Futures/Stocks/Crypto)
Actionable trading recommendations with position sizing
Institutional market context and framing
Flexible display options for different trading workflows
Universal data compatibility for all TradingView users






















