Indicador
Indicadores e estratégias
Adaptive Confluence Oscillator [ForexCracked]🔵 OVERVIEW
The Adaptive Confluence Oscillator scores four independent read-outs of the market on a continuous scale, weights them according to the current market regime, and plots the result as a single 0 to 100 line. Instead of asking "do my indicators agree, yes or no," it asks "how strongly does each one agree, and which of them should I be listening to right now."
It has no fixed overbought or oversold levels. The bands are calculated from the oscillator's own recent behaviour, so they widen when the market gets volatile and tighten when it goes quiet.
Signals confirm on candle close and do not repaint.
🔵 WHY THIS IS BUILT THE WAY IT IS
Most multi-indicator tools take a vote. RSI is oversold or it is not. That throws away most of the information: an RSI of 29 and an RSI of 12 are not the same signal, but a vote counts them identically. It also treats every indicator as equally relevant at all times, which is plainly false. Stochastic exhaustion means one thing in a strong trend and the opposite thing in a range.
This oscillator fixes both problems. Every component returns a continuous score, and the market regime decides how much each score is worth.
🔵 THE FOUR COMPONENTS (each scored from -1 to +1)
• Trend: how far price sits from its baseline EMA, measured in ATR units rather than in price. Distance matters, not just which side of the line you are on. Because it is measured in ATR, it reads the same on gold as it does on EURUSD.
• Momentum: RSI recentred around 50, so it contributes proportionally instead of flipping at a threshold.
• Impulse: the MACD histogram converted to a z-score against its own rolling deviation. This makes MACD comparable across symbols and timeframes without ever re-tuning it, which raw MACD values are not.
• Stretch: the Stochastic, recentred. This is the component that changes behaviour with regime (see below).
🔵 THE REGIME SWITCH (the part that makes it adaptive)
ADX decides whether the market is trending or ranging, and that changes two things.
First, the weights re-balance:
• Trending: Trend 0.35, Momentum 0.25, Impulse 0.30, Stretch 0.10
• Ranging: Trend 0.15, Momentum 0.25, Impulse 0.20, Stretch 0.40
Second, and more importantly, the Stretch component flips sign. In a trend, a stretched Stochastic confirms the move and pushes the score further in that direction. In a range, the same reading argues for a fade and pushes the score the other way. This is the behaviour a discretionary trader applies without thinking about it, and it is what a fixed vote cannot express.
🔵 ADAPTIVE BANDS
There are no 70/30 lines here. The upper and lower bands are the rolling mean of the oscillator plus and minus a multiple of its own standard deviation. A reading of 68 can be an extreme in a quiet market and completely unremarkable in a volatile one, and the bands reflect that.
• BUY: the score crosses above the upper adaptive band
• SELL: the score crosses below the lower adaptive band
🔵 DIVERGENCE
The script finds pivots on the score itself and compares them against price at those same bars. When price makes a higher high but the score makes a lower high, that is marked as a bearish divergence, and the mirror case as bullish. Divergences are labelled and have their own alerts. Because a divergence is anchored to a confirmed pivot, it prints a few bars after that pivot forms and never moves once printed.
🔵 THE DASHBOARD
The panel shows each component's live score, its current weight, the detected regime with the ADX value, and the oscillator against its adaptive bands. You can see exactly which component is driving the reading and why, rather than trusting a black box.
🔵 SETTINGS
• Baseline EMA 34, ATR 14, Trend Span 2.0 x ATR
• RSI 14, MACD 12/26/9, Stochastic 14
• ADX 14, trending above 22
• Band lookback 100, band width 1.0 x standard deviation
🔵 HOW TO USE
• Take signals where the dashboard regime agrees with the direction. A BUY in a trending regime is a continuation. A BUY in a ranging regime is a fade off the bottom of the range.
• Treat a divergence as a warning to tighten or take partials, not as a standalone entry.
• Raise the band width above 1.0 for fewer and stronger signals, lower it for more.
• Widen Trend Span on noisy symbols so ordinary volatility does not read as trend.
⚠️ DISCLAIMER
This is an analysis tool, not a prediction. A confluence score is a measure of agreement, and indicators can agree and still be wrong. Results depend on market conditions, settings, and your own execution and risk management. Shared for educational and research purposes. Not financial advice.
Indicador
Reverse level 1Calculates today's Support and Resistance using the previous day's High and Low with a 1.382 Fibonacci range extension
Indicador
Currency Strength Meter [ForexCracked]🔵 OVERVIEW
A currency strength meter that ranks the eight major currencies against each other in real time, and then tells you the one thing you actually opened it for: which pair to trade right now.
It reads all 28 major crosses, so every currency is measured across all seven of its pairs, not just against the dollar.
🔵 WHAT MAKES THIS ONE DIFFERENT
Almost every strength meter measures each pair's percent change and averages it. That has a flaw nobody talks about: a 40 pip move in a quiet pair and a 40 pip move in a violent one are treated as the same event, when they are not remotely the same event.
This meter measures every move in ATR units instead. A currency only scores highly if it has moved far relative to how far that pair normally moves. Quiet pairs stop being drowned out by naturally volatile ones, and the ranking stops flattering whichever currency happens to be paired with the wildest counterpart that week.
🔵 WHAT IT SHOWS
• A live ranking of USD, EUR, GBP, JPY, CHF, AUD, NZD and CAD, strongest to weakest
• Each currency's strength in ATR units, so the numbers mean something rather than being an index
• Whether each currency is strengthening or weakening against its own recent reading, not just where it sits
• The Best Pair line: long the strongest currency, short the weakest
• The Spread: the distance between strongest and weakest
🔵 THE SPREAD (read this one first)
The spread is the gap between the strongest and the weakest currency. It answers a question most traders skip: is anything actually happening?
A wide spread means currencies are genuinely diverging and a strength-based trade has something to work with. A narrow spread means everything is drifting together, the ranking is mostly noise, and the best trade is usually no trade. Check the spread before you trust the ranking.
🔵 HOW TO USE
• Read the spread. If it is small, the ranking is not telling you much, so wait.
• Take the Best Pair as a starting point, not an entry. It tells you where the divergence is, not when to get in.
• Prefer a currency that is both highly ranked and still strengthening over one that is highly ranked and already fading, since the second one has usually made its move.
• Confirm the pair on the chart with your own entry method. A strength meter frames the trade. It does not time it.
• Lengthen the Lookback for swing trading and shorten it for intraday.
🔵 SETTINGS
• Strength Lookback: how many bars back the move is measured over (default 24)
• ATR Length: the volatility yardstick every move is divided by (default 14)
• Symbol Prefix: leave blank on most charts. If the pairs do not load, set it to your data provider, for example OANDA: or FX:
• Show Ranking Table: toggles the strongest-to-weakest table in the top right (default on)
• Plot Strength Lines: toggles the eight strength curves in the pane (default on)
⚠️ DISCLAIMER
Relative strength tells you which currencies are moving and which are not. It does not tell you when to enter, and strong currencies reverse. Results depend on market conditions, settings, and your own execution and risk management. Shared for educational and research purposes. Not financial advice.
Indicador
Volume for Multiple ExchangesCreated for crypto analysis.
Shows aggregated value for a stock volume from multiple exchanges (up to three - e.g. Binance, ByBit, OKX, etc).
Rise alerts on big volume hits over EMA.
Indicador
TraderLifestyle Range Breakout Pro - Buy Sell Signals TP/SLRANGE BREAKOUT PRO is a complete range-breakout trading engine: it detects tradeable ranges from confirmed swing pivots, fires BUY and SELL signals when price breaks out in the direction of the trend, and then manages every trade on the chart with entry, stop loss, take profit, break-even and trailing logic - all fully visualized and fully automatable via webhook alerts.
HOW THE ENGINE WORKS
1. RANGE DETECTION - Confirmed swing highs and swing lows (pivot length configurable) become the active RANGE HIGH and RANGE LOW. Each extreme is marked on the chart with a dot and a vertical marker line. A range must be wide enough (minimum height in ATR) and fresh enough (maximum age in bars) to be tradeable - micro-ranges and stale levels are skipped automatically.
2. BREAKOUT SIGNAL - A signal fires only when a candle CLOSES beyond the range extreme plus an ATR buffer (no wick fake-outs), the gradient trend ribbon points in the breakout direction, the trend strength score clears your Buy/Sell Strength threshold, the breakout is not overextended (max distance from the ribbon in ATR - no chasing exhausted moves), and an optional cooldown after a losing trade has expired. Optional MTF Agreement requires the 15-minute trend to confirm.
3. TRADE MANAGEMENT - Every signal is managed like a real trade, live on the chart:
- TP1 (partial target) banks the win early and moves the stop to break-even
- the remainder runs to the full R-multiple take profit or a chandelier trail
- green TP box and red SL box grow bar by bar from the entry, exactly like a position tool
- price tags at the right edge show Entry, Stop Loss, Take Profit and live Profit/Loss %
- every closed trade is marked with a tick (win), circle (break-even) or cross (loss)
4. TWO TRADE MODES - "TP/SL Mode" (fixed targets, split TP1 + runner) or "Trailing Mode" (no fixed target, the trail line is the moving stop).
THE COCKPIT PANEL
- MARKET OVERVIEW: multi-timeframe trend dashboard - live trend strength meters for the chart timeframe, 15m, 1H, 4H and 1D
- SIGNAL SETUP: entry system, MTF agreement, current signal (Long / Flat / Short), Buy/Sell strength thresholds, trend filter state, trade mode, active Take Profit and Stop Loss levels
- PERFORMANCE: asset, exchange, timeframe, total trades and live win rate calculated from every signal on the chart history - no cherry picking, the counter runs over everything the engine fired
Win rate accounting is transparent: a trade counts as WIN when TP1 is banked, as LOSS when the initial stop is hit first, and break-even exits are tracked separately - the same split-target accounting professional scalpers use.
WHY-EXPLANATIONS ON THE CHART
Every BUY/SELL pill carries a tooltip that explains WHY the signal fired: which range level broke, the trend strength at the trigger, entry, stop and target prices. Range dots explain the level they mark. Nothing is a black box.
WEBHOOK AUTOMATION
Create one alert with condition "Any alert() function call" and paste your webhook URL. The indicator sends ready-to-use JSON for every event: BUY, SELL, TP_HIT, SL_HIT, TRAIL_EXIT, BE_EXIT - including symbol, price, stop, target, trade mode, win rate and timeframe. Connect it to any bridge or bot and the strategy runs hands-free.
WORKS ON
Any symbol and timeframe: indices (NASDAQ, S&P, DAX), gold and forex, crypto, stocks. Scalping on 1-5 minute charts, day trading on 15m-1H, swing trading on 4H-Daily. Defaults are tuned for intraday breakout scalping.
DISCLAIMER
This indicator is a technical analysis tool, not financial advice. Past win rates do not guarantee future results. Always test on a demo account first and manage your risk.
Indicador
P&P Cloud Professional// P&P CLOUD PROFESSIONAL v2
// Developed by Krish | P&P Trade
//
// Description:
// P&P Cloud Professional is an advanced trading dashboard designed
// for futures and active traders. It combines EMA cloud analysis,
// ATR-based market range analytics, trend identification, and
// real-time risk measurements into one professional interface.
//
// Features:
// • Multi-timeframe EMA Cloud (9 EMA / 21 EMA)
// • Non-repainting HTF mode
// • Bullish/Bearish trend detection
// • EMA distance tracking (Points, %, ATR)
// • EMA spread strength analysis
// • Current ATR value
// • Daily ATR expected range
// • ATR High / ATR Low levels
// • Today's range and ATR utilization %
// • Market stretch detection
// • Risk gauge for trade conditions
// • BUY / SELL crossover alerts
// • Professional dashboard optimized for white TradingView themes
//
// Designed for:
// Futures traders (MNQ, NQ, ES, MES, MGC),
// equities, ETFs, and active intraday trading.
//
// Premium Version:
// This indicator is developed by Krish at P&P Trade.
// For premium access, custom versions, and additional trading tools,
// please reach out to the author.
//
// © P&P Trade | Developed by Krish
//════════════════════════════════════════════════════════════════════
Indicador
Dynamic Loop + VWAP/EMA9 Signal + BULL RIDER Sector Scanner: Volume Ranked + VWAP/EMA9 Signal + Earnings BeatThis comprehensive intraday dashboard tracks top-performing NSE stocks across 5 major sectors (IT, Bank, Auto, Pharma, FMCG) in a single, real-time table. It automatically ranks sectors and stocks based on institutional volume activity, giving you an instant view of where the smart money is moving.📊 Key FeaturesLive Sector & Stock Ranking: Ranks sectors by 3-minute volume (highest volume on top). Within each sector, individual stocks are also dynamically sorted by volume.Intraday Trend Indicators: Displays 3-minute VWAP, EMA (9), and live % change for all tracked stocks.Non-Repainting BUY Signals: Generates a BUY signal when a fully closed 3-minute candle crosses and closes above both the VWAP and EMA(9).Volume Momentum Tag ("↑"): Appears instantly when both price and volume increase compared to the previous candle.Earnings Surprise Tag ("📈 BEAT"): Highlights stocks that outperformed market estimates in their latest quarterly results.Custom Alerts: Supports individual alert configurations triggered on active BUY signals.💡 How to UseAdd the indicator to your chart to load the live multi-sector ranking table.Select or switch to any listed stock to automatically plot its corresponding VWAP/EMA9 lines and BUY labels.Use the top-ranked sectors to identify high-probability intraday setups.Note: Signals are based strictly on fully closed candles to ensure zero repainting.⚠️ DisclaimerThis indicator is built purely for educational and informational purposes. The generated BUY signals do not constitute financial or investment advice. Trading involves significant market risk. Please conduct your own research or consult a registered financial advisor before making any investment decisions.
Indicador
Dynamic Loop + VWAP/EMA9 Signal + Earnings Beat $BULL RIDER $
-Sector Scanner: Volume Ranked + VWAP/EMA9 Signal + Earnings BeatThis comprehensive intraday dashboard tracks top-performing NSE stocks across 5 major sectors (IT, Bank, Auto, Pharma, FMCG) in a single, real-time table. It automatically ranks sectors and stocks based on institutional volume activity, giving you an instant view of where the smart money is moving.📊 Key FeaturesLive Sector & Stock Ranking: Ranks sectors by 3-minute volume (highest volume on top). Within each sector, individual stocks are also dynamically sorted by volume.Intraday Trend Indicators: Displays 3-minute VWAP, EMA (9), and live % change for all tracked stocks.Non-Repainting BUY Signals: Generates a BUY signal when a fully closed 3-minute candle crosses and closes above both the VWAP and EMA(9).Volume Momentum Tag ("↑"): Appears instantly when both price and volume increase compared to the previous candle.Earnings Surprise Tag ("📈 BEAT"): Highlights stocks that outperformed market estimates in their latest quarterly results.Custom Alerts: Supports individual alert configurations triggered on active BUY signals.💡 How to UseAdd the indicator to your chart to load the live multi-sector ranking table.Select or switch to any listed stock to automatically plot its corresponding VWAP/EMA9 lines and BUY labels.Use the top-ranked sectors to identify high-probability intraday setups.Note: Signals are based strictly on fully closed candles to ensure zero repainting.⚠️ DisclaimerThis indicator is built purely for educational and informational purposes. The generated BUY signals do not constitute financial or investment advice. Trading involves significant market risk. Please conduct your own research or consult a registered financial advisor before making any investment decisions.
Indicador
MT Range + Ramban + Session Bias Tablemt range + ramban + Session bias table
draws mon tuesday range high low mid and displayes first fvg stats
Indicador
VWAP, 2 EMA's (by Claude)I had Claude Ai write the code for an adjustable VWAP and 2 adjustable EMA's.i
Indicador
MT High/Low/Mid (Mon-Tue Range)Added a "Range Formation Shading" group with:
Shade Mon-Tue Range Period toggle (on by default)
Shade Color (defaults to a neutral gray)
Shade Transparency slide
Indicador
LONG MARKET CONTROL SPY / VIX / DXYHere's an English description you can use for the indicator (e.g., for the TradingView publishing page or as a header comment):
---
**LONG MARKET CONTROL – SPY / VIX / DXY**
A composite U.S. market regime indicator built for long-only trading decisions. It scores overall market conditions from 0–100 by combining SPY trend/structure/momentum, VIX fear-level and rate-of-change, and DXY dollar-direction dynamics, then applies a correlation adjustment based on how the three interact (e.g., full risk-on, classic risk-off, or the more dangerous "U.S. asset stress" pattern where stocks fall, VIX rises, and the dollar falls at the same time — money leaving U.S. assets without fleeing to the dollar as a safe haven).
**What it does:**
- Calculates a 0–100 Market Score (SPY worth up to 50 pts, VIX up to 30, DXY up to 20, plus a correlation adjustment of −10 to +5) and classifies the market into five color-coded regimes: Strong Risk-On, Selective Long, Caution, Risk-Off, and Market Veto — each with a suggested maximum position size.
- Detects a **Market Veto** state (hard stop on new longs) using six independent trigger conditions (breakdown below the 150-day MA, VIX spike above 30, high-volume breakdown of the 20-day low, etc.), shown with a red background and a dedicated alert.
- Tracks a separate **Recovery Score** (0–20) after panic/veto conditions to flag early recovery, confirmed recovery, and prevents the score from jumping straight from red to dark green in a single day.
- Measures **market breadth** (RSP, IWM, QQQ vs. SPY) to flag narrow, mega-cap-driven rallies.
- Ranks all 11 S&P sector ETFs (XLK, XLC, XLY, XLF, XLI, XLE, XLB, XLV, XLP, XLU, XLRE) by relative strength vs. SPY and surfaces the top 3 / bottom 3 leaders.
- A built-in **"Where To Look"** engine translates the current SPY/VIX/DXY combination into a plain-language suggestion of which asset classes or sectors typically show relative strength in that regime (e.g., gold/silver/miners during "U.S. asset stress," defensives during classic risk-off, tech/growth during full risk-on).
- On-chart dashboard table, background/label state markers, and 17 built-in alert conditions with fully dynamic alert text (state, score, prices, top sectors, recommended position size).
All core calculations run on **daily data** via `request.security()` regardless of the chart's timeframe, with an option to use only confirmed (closed) daily bars to avoid repainting.
*For educational and analytical purposes only — not financial advice. All symbols and thresholds are user-configurable via the Inputs panel.*
**LONG MARKET CONTROL – SPY / VIX / DXY**
אינדיקטור למצב השוק האמריקאי, מיועד לקבלת החלטות מסחר בלונג בלבד. הוא נותן ציון שוק בין 0 ל־100 על סמך שילוב של מגמת SPY (מבנה מחיר ומומנטום), רמת הפחד ב־VIX וקצב השינוי שלו, וכיוון הדולר לפי DXY — ולאחר מכן מפעיל התאמת קורלציה לפי האופן שבו שלושת הגורמים משפיעים זה על זה (למשל Risk-On מלא, Risk-Off קלאסי, או המצב המסוכן ביותר — "U.S. Asset Stress" — שבו מניות יורדות, VIX עולה והדולר יורד בו־זמנית, כלומר כסף בורח מנכסים אמריקאיים בלי לברוח לדולר כמקלט).
**מה האינדיקטור עושה:**
- מחשב ציון שוק בין 0 ל־100 (SPY עד 50 נקודות, VIX עד 30, DXY עד 20, בתוספת התאמת קורלציה בין מינוס 10 לפלוס 5), ומסווג את השוק לחמישה מצבים צבעוניים: Strong Risk-On, Selective Long, Caution, Risk-Off ו־Market Veto — כל אחד עם המלצת גודל פוזיציה מקסימלי.
- מזהה מצב **Market Veto** (עצירה מוחלטת לכניסות לונג חדשות) לפי שישה תנאים עצמאיים (שבירת MA150, קפיצת VIX מעל 30, שבירת שפל 20 יום בווליום גבוה ועוד), עם רקע אדום ו־Alert נפרד.
- עוקב אחרי **Recovery Score** נפרד (0–20) לאחר מצבי פאניקה/Veto, מסמן התאוששות ראשונית והתאוששות מאושרת, ומונע קפיצה ישירה מאדום לירוק כהה תוך יום אחד.
- מודד **רוחב שוק** (RSP, IWM, QQQ מול SPY) כדי לזהות עליות "צרות" המבוססות על מעט מניות ענק.
- מדרג את 11 סקטורי ה־S&P (XLK, XLC, XLY, XLF, XLI, XLE, XLB, XLV, XLP, XLU, XLRE) לפי חוזקה יחסית מול SPY, ומציג את 3 המובילים ו־3 החלשים.
- מנוע **"Where To Look"** מובנה שמתרגם את שילוב ה־SPY/VIX/DXY הנוכחי להמלצה בשפה פשוטה על אילו נכסים או סקטורים נוטים להראות חוזקה יחסית באותו מצב (למשל זהב/כסף/כורים ב־"U.S. Asset Stress", דפנסיביים ב־Risk-Off קלאסי, טכנולוגיה וצמיחה ב־Risk-On מלא).
- טבלת דשבורד על הגרף, סימוני רקע ותוויות מעבר מצב, ו־17 תנאי Alert מובנים עם טקסט דינמי מלא (מצב, ציון, מחירים, סקטורים מובילים, גודל פוזיציה מומלץ).
כל החישובים המרכזיים רצים על **נתוני Daily** דרך `request.security()` ללא תלות בטיימפריים של הגרף, עם אפשרות להשתמש רק בנרות יומיים סגורים כדי למנוע Repainting.
*למטרות לימוד וניתוח בלבד — אין לראות בכך ייעוץ השקעות. כל הסמלים והספים ניתנים להתאמה אישית דרך פאנל ה־Inputs.*
Indicador
Multi-Timeframe FVG & IFVGThis indicator has been produced to satisfy those traders who use Goldbach and CE times for their trading. Being a multi timeframe indicator, it is capable of showing greater timeframe fvg's/ifvg's on the lower timeframe charts. This should prevent the need to continuously change current timeframe being watched.
Each timeframe fvg/ifvg can be toggled on or off to prevent too much clutter on the chart. The colours of the timeframes can be changed to the individual's needs.
IFVG'S are labelled with a bold black notation to help differentiate them from normal FVG's
Ihope you find this indicator helpful.
Indicador
T4T Balanced Price Range (BPR)A Balanced Price Range is one of the most overlooked yet reliable zones in Smart Money Concept - and this indicator finds them for you automatically, with precision.
When price displaces aggressively in one direction and leaves a Fair Value Gap, then displaces back in the opposite direction and leaves an opposing FVG, the area where two gaps overlap is a BPR. That overlap represents price territory that has been delivered in both directions. - buyside and sellside imbalances rebalance against each other. When Price returns to this zone, it frequently reacts with speed, making the BPR a high-sensitivity support/resistance level and refined entry area for continuation setups.
Most traders mark the full range of both FVG's and wonder why their zones are sloppy. This indicator draws only the shared overlap - the true BPR - nothing more.
What it does
Automatically detects bullish and bearish FVG's in real time and pairs opposing gaps that share price territory within your chosen window
Draws only the intersection of the two gaps, with a clean equilibrium midline for precise entry refinement
Classifies each BPR by the direction of the rebalancing displacement: BPR+ (support) and BPR- (resistance), labeled at the leading edge of the zone
Tracks mitigation - a bullish BPR is invalidated on a break below its low, a bearish on a break above, with you choice of close-based or wick based triggers
Optionally keeps mitigated zones on the chart, dimmed, so you can review how price treated them
BPR's shine as retracement entries in trending conditions. After a BPR forms, wait for price to trade back into the zone - the midline is your refinement level - and look for your confirmation there, targeting the liquidity the displacement was reaching for.Because the zones has been delivered in both directions, a clean breakthrough it is information too: it signals the rebalance failed and the opposing side is in control.
Trade the zone, not the noise. Quality over quantity - structure over ego.
"Patience Pays"
Indicador
LIQS and FIBS Scalp SystemOverview
The "LIQS and FIBS Scalp System" is an advanced Smart Money Concepts (SMC) and Price Action indicator designed for traders seeking high-probability scalping and day trading setups. Instead of relying on lagging indicators, this system dynamically maps critical liquidity sweeps, structure shifts, and optimal trade entry zones based entirely on pure price action.
Key Features
HTF Market Structure Bias (No EMA Lag):
The core of the system determines the main trend bias by tracking the most recent Break of Structure (BOS) or Change of Character (CHoCH) on your selected Higher Timeframe (HTF). If the HTF just broke a swing high, your bias is firmly Bullish. If it broke a swing low, your bias is Bearish. This ensures you are always trading in alignment with true institutional market structure, not a delayed moving average.
HTF Sweeps & Reversals:
Automatically identifies liquidity sweeps at Higher Timeframe highs and lows. It monitors price action around these key historical pivot levels and highlights potential reversal pinbars right at the sweep zones.
LTF BOS & CHoCH Logic:
Detects micro Break of Structure (BOS) and Change of Character (CHoCH) patterns to spot short-term momentum shifts in real-time, helping you catch the very beginning of a new leg.
Deep Fibonacci Setups & Runner Targets:
Following a valid CHoCH, the indicator automatically draws Fibonacci retracement zones (0.318 - 0.618) representing optimal entry points. It dynamically projects logical Stop Loss zones and extends up to Target 6 for runners to capture massive long-term trends:
Target 1 & Target 2 for short-term scalps.
Target 3 & Target 4 (3.618 - 4.236 extensions) for day trades.
Target 5 & Target 6 (5.618 - 6.854 extensions) to hold your runners and ride extreme trend continuation.
A-Plus Setup Filter & VWAP:
To protect you from fake breakouts and low-probability trades, the system validates every entry.
Pro-trend setups that align with both the HTF Structure Bias and the VWAP are highlighted with colored entry and target boxes.
Counter-trend or low-probability setups are visually muted (grayed out) so you can easily ignore them.
Built-in alerts notify you only when a micro CHoCH perfectly aligns with the HTF trend direction!
How to Use
Wait for price to sweep an HTF liquidity level, watch for a valid CHoCH in the opposite direction, and set your limit orders inside the highlighted 0.318 - 0.618 Fibonacci reaction box. Trust the colored boxes (A-Plus setups) and ignore the gray ones. Take partial profits at T1 and T2, then leave runners for the deeper T3 to T6 targets!
Disclaimer
This script is provided for educational and informational purposes only and does not constitute financial advice. Trading in financial markets involves a high degree of risk and may not be suitable for all investors. Past performance is not indicative of future results. Always conduct your own research, use strict risk management, and perform thorough backtesting before trading with real funds.
Indicador
MAGALHAES NEOWAVE ONDA 3 PRO//@version=6
indicator(
title="MAGALHAES NEOWAVE ONDA 3 PRO",
shorttitle="NEOWAVE O3 PRO",
overlay=true,
max_lines_count=500,
max_labels_count=500
)
//==================================================
// 1. MOTOR DA ESTRUTURA
//==================================================
grupoMotor = "1. Motor da Estrutura"
inicioLeitura = input.time(
defval=timestamp("01 Jan 2024 00:00 +0000"),
title="Iniciar/Reiniciar leitura em",
confirm=true,
group=grupoMotor
)
forcaPivot = input.int(
defval=5,
title="Força do pivô",
minval=2,
maxval=30,
group=grupoMotor
)
hipoteseCorrecao = input.string(
defval="Onda 2",
title="Correção analisada",
options= ,
group=grupoMotor
)
retracaoMinima = input.float(
defval=0.236,
title="Retração mínima para validar",
minval=0.05,
maxval=1.00,
step=0.001,
group=grupoMotor
)
fibIdealMinimo = input.float(
defval=0.382,
title="Início da região Fibonacci válida",
minval=0.05,
maxval=1.00,
step=0.001,
group=grupoMotor
)
fibIdealMaximo = input.float(
defval=0.886,
title="Fim da região Fibonacci válida",
minval=0.05,
maxval=1.50,
step=0.001,
group=grupoMotor
)
invalidarEm100 = input.bool(
defval=true,
title="Invalidar se fechar além de 100%",
group=grupoMotor
)
scoreMinimo = input.int(
defval=80,
title="Índice mínimo de confirmação",
minval=40,
maxval=100,
step=20,
group=grupoMotor
)
//==================================================
// 2. TEMPO NEOWAVE
//==================================================
grupoTempo = "2. Tempo NeoWave"
relacaoMinimaTempo = input.float(
defval=1.00,
title="Tempo mínimo da correção",
minval=0.10,
maxval=5.00,
step=0.05,
group=grupoTempo
)
relacaoIdealInicio = input.float(
defval=1.50,
title="Início da janela temporal ideal",
minval=0.20,
maxval=6.00,
step=0.05,
group=grupoTempo
)
relacaoIdealFim = input.float(
defval=2.00,
title="Fim da janela temporal ideal",
minval=0.30,
maxval=8.00,
step=0.05,
group=grupoTempo
)
//==================================================
// 3. VISUALIZAÇÃO
//==================================================
grupoVisual = "3. Visualização"
mostrarPainel = input.bool(true, "Mostrar painel", group=grupoVisual)
mostrarBase = input.bool(true, "Mostrar movimento direcional", group=grupoVisual)
mostrarCorrecao = input.bool(true, "Mostrar correção", group=grupoVisual)
mostrarFibonacci = input.bool(true, "Mostrar Fibonacci", group=grupoVisual)
mostrarAlvos = input.bool(true, "Mostrar alvos", group=grupoVisual)
mostrarSinal = input.bool(true, "Mostrar sinal da próxima onda", group=grupoVisual)
mostrarFundo = input.bool(false, "Colorir fundo temporal", group=grupoVisual)
//==================================================
// 4. NÍVEIS
//==================================================
grupoNiveis = "4. Níveis"
usar236 = input.bool(true, "23,6%", group=grupoNiveis)
usar382 = input.bool(true, "38,2%", group=grupoNiveis)
usar500 = input.bool(true, "50,0%", group=grupoNiveis)
usar618 = input.bool(true, "61,8%", group=grupoNiveis)
usar705 = input.bool(true, "70,5%", group=grupoNiveis)
usar786 = input.bool(true, "78,6%", group=grupoNiveis)
usar810 = input.bool(true, "81,0%", group=grupoNiveis)
usar854 = input.bool(true, "85,4%", group=grupoNiveis)
usar886 = input.bool(true, "88,6%", group=grupoNiveis)
usar100 = input.bool(true, "100,0%", group=grupoNiveis)
//==================================================
// 5. CORES
//==================================================
grupoCores = "5. Cores"
corAlta = input.color(color.lime, "Direcional de alta", group=grupoCores)
corBaixa = input.color(color.red, "Direcional de baixa", group=grupoCores)
corCorrecao = input.color(color.orange, "Correção", group=grupoCores)
corFibo = input.color(color.aqua, "Fibonacci", group=grupoCores)
corIdeal = input.color(color.yellow, "Janela temporal ideal", group=grupoCores)
corConfirmacao = input.color(color.green, "Próxima onda confirmada", group=grupoCores)
corAlvo = input.color(color.fuchsia, "Alvos", group=grupoCores)
//==================================================
// 6. FUNÇÕES
//==================================================
f_tempo(float minutos) =>
string texto = "AGUARDANDO"
if not na(minutos)
int dias = int(math.floor(minutos / 1440.0))
int horas = int(math.floor((minutos % 1440.0) / 60.0))
int mins = int(math.floor(minutos % 60.0))
if dias > 0
texto := str.tostring(dias) + "d " + str.tostring(horas) + "h " + str.tostring(mins) + "m"
else if horas > 0
texto := str.tostring(horas) + "h " + str.tostring(mins) + "m"
else
texto := str.tostring(mins) + "m"
texto
f_percentual(float valor) =>
na(valor) ? "AGUARDANDO" : str.tostring(valor * 100.0, "#.##") + "%"
f_relacao(float valor) =>
na(valor) ? "AGUARDANDO" : str.tostring(valor, "#.##") + "x"
f_preco(float valor) =>
na(valor) ? "-" : str.tostring(valor, format.mintick)
f_simNao(bool condicao) =>
condicao ? "SIM" : "NÃO"
f_nivelRetracao(float inicio, float fim, float percentual) =>
fim - ((fim - inicio) * percentual)
f_nomeProximaOnda(string tipoCorrecao) =>
string nome = "ONDA C"
if tipoCorrecao == "Onda 2"
nome := "ONDA 3"
else if tipoCorrecao == "Onda 4"
nome := "ONDA 5"
nome
f_direcaoTexto(int direcao) =>
string texto = "AGUARDANDO"
if direcao == 1
texto := "ALTA"
else if direcao == -1
texto := "BAIXA"
texto
//==================================================
// 7. PIVÔS CONFIRMADOS
//==================================================
float pivotTopo = ta.pivothigh(high, forcaPivot, forcaPivot)
float pivotFundo = ta.pivotlow(low, forcaPivot, forcaPivot)
float novoPivotPreco = na
int novoPivotBar = na
int novoPivotTempo = na
int novoPivotTipo = 0
if not na(pivotTopo) and na(pivotFundo)
novoPivotPreco := pivotTopo
novoPivotBar := bar_index - forcaPivot
novoPivotTempo := time
novoPivotTipo := 1
else if not na(pivotFundo) and na(pivotTopo)
novoPivotPreco := pivotFundo
novoPivotBar := bar_index - forcaPivot
novoPivotTempo := time
novoPivotTipo := -1
//==================================================
// 8. ESTADOS
//==================================================
// 0 = procurando movimento direcional
// 1 = correção ativa
// 2 = próxima onda iniciada
var int estado = 0
//==================================================
// 9. MEMÓRIA DO ÚLTIMO PIVÔ
//==================================================
var float ultimoPivotPreco = na
var int ultimoPivotBar = na
var int ultimoPivotTempo = na
var int ultimoPivotTipo = 0
//==================================================
// 10. MOVIMENTO DIRECIONAL TRAVADO
//==================================================
var float baseInicioPreco = na
var float baseFimPreco = na
var int baseInicioBar = na
var int baseFimBar = na
var int baseInicioTempo = na
var int baseFimTempo = na
var int direcaoBase = 0
var float tempoBase = na
var float amplitudeBase = na
//==================================================
// 11. CORREÇÃO
//==================================================
var float extremoCorrecao = na
var int extremoCorrecaoBar = na
var int extremoCorrecaoTempo = na
var float retracaoMaxima = na
var bool correcaoValidada = false
var int finalCorrecaoTempo = na
var int confirmacaoBar = na
var float confirmacaoPreco = na
//==================================================
// 12. OBJETOS
//==================================================
var line linhaBase = na
var line linhaCorrecao = na
var line linhaRetomada = na
var label labelInicio = na
var label labelFim = na
var label labelCorrecao = na
var label labelConfirmacao = na
var line linhasFibo = array.new_line()
var label labelsFibo = array.new_label()
var line linhasAlvo = array.new_line()
var label labelsAlvo = array.new_label()
//==================================================
// 13. LIMPEZA DOS NÍVEIS
//==================================================
f_limparFibo() =>
int totalLinhas = array.size(linhasFibo)
if totalLinhas > 0
for i = 0 to totalLinhas - 1
line.delete(array.get(linhasFibo, i))
int totalLabels = array.size(labelsFibo)
if totalLabels > 0
for i = 0 to totalLabels - 1
label.delete(array.get(labelsFibo, i))
array.clear(linhasFibo)
array.clear(labelsFibo)
f_limparAlvos() =>
int totalLinhas = array.size(linhasAlvo)
if totalLinhas > 0
for i = 0 to totalLinhas - 1
line.delete(array.get(linhasAlvo, i))
int totalLabels = array.size(labelsAlvo)
if totalLabels > 0
for i = 0 to totalLabels - 1
label.delete(array.get(labelsAlvo, i))
array.clear(linhasAlvo)
array.clear(labelsAlvo)
//==================================================
// 14. DESENHO DE FIBONACCI
//==================================================
f_desenharFibo(float precoNivel, string nome, bool habilitado) =>
if habilitado and mostrarFibonacci and not na(precoNivel) and not na(baseFimBar)
line novaLinha = line.new(
x1=baseFimBar,
y1=precoNivel,
x2=bar_index + 25,
y2=precoNivel,
xloc=xloc.bar_index,
extend=extend.right,
color=corFibo,
style=line.style_dashed,
width=1
)
label novoLabel = label.new(
x=bar_index,
y=precoNivel,
text=nome + " " + f_preco(precoNivel),
xloc=xloc.bar_index,
yloc=yloc.price,
style=label.style_label_left,
color=color.new(corFibo, 78),
textcolor=corFibo,
size=size.tiny
)
array.push(linhasFibo, novaLinha)
array.push(labelsFibo, novoLabel)
//==================================================
// 15. DESENHO DOS ALVOS
//==================================================
f_desenharAlvo(float precoAlvo, string nome) =>
if mostrarAlvos and not na(precoAlvo) and not na(confirmacaoBar)
line novaLinha = line.new(
x1=confirmacaoBar,
y1=precoAlvo,
x2=bar_index + 30,
y2=precoAlvo,
xloc=xloc.bar_index,
extend=extend.right,
color=corAlvo,
style=line.style_dotted,
width=2
)
label novoLabel = label.new(
x=bar_index,
y=precoAlvo,
text=nome + " " + f_preco(precoAlvo),
xloc=xloc.bar_index,
yloc=yloc.price,
style=label.style_label_left,
color=color.new(corAlvo, 75),
textcolor=corAlvo,
size=size.small
)
array.push(linhasAlvo, novaLinha)
array.push(labelsAlvo, novoLabel)
//==================================================
// 16. IDENTIFICAÇÃO DO MOVIMENTO DIRECIONAL
//==================================================
bool leituraAtiva = time >= inicioLeitura
if leituraAtiva and estado == 0 and novoPivotTipo != 0 and novoPivotTempo >= inicioLeitura
if na(ultimoPivotPreco)
ultimoPivotPreco := novoPivotPreco
ultimoPivotBar := novoPivotBar
ultimoPivotTempo := novoPivotTempo
ultimoPivotTipo := novoPivotTipo
else if novoPivotTipo == ultimoPivotTipo
bool pivotMaisExtremo = novoPivotTipo == 1 ? novoPivotPreco > ultimoPivotPreco : novoPivotPreco < ultimoPivotPreco
if pivotMaisExtremo
ultimoPivotPreco := novoPivotPreco
ultimoPivotBar := novoPivotBar
ultimoPivotTempo := novoPivotTempo
else
baseInicioPreco := ultimoPivotPreco
baseInicioBar := ultimoPivotBar
baseInicioTempo := ultimoPivotTempo
baseFimPreco := novoPivotPreco
baseFimBar := novoPivotBar
baseFimTempo := novoPivotTempo
direcaoBase := baseFimPreco > baseInicioPreco ? 1 : -1
tempoBase := math.abs(baseFimTempo - baseInicioTempo) / 60000.0
amplitudeBase := math.abs(baseFimPreco - baseInicioPreco)
extremoCorrecao := baseFimPreco
extremoCorrecaoBar := baseFimBar
extremoCorrecaoTempo := baseFimTempo
retracaoMaxima := 0.0
correcaoValidada := false
finalCorrecaoTempo := na
confirmacaoBar := na
confirmacaoPreco := na
estado := 1
ultimoPivotPreco := novoPivotPreco
ultimoPivotBar := novoPivotBar
ultimoPivotTempo := novoPivotTempo
ultimoPivotTipo := novoPivotTipo
//==================================================
// 17. MEDIÇÃO DA CORREÇÃO
//==================================================
float retracaoAtual = na
if estado == 1 and not na(amplitudeBase) and amplitudeBase > 0
if direcaoBase == 1
if low < extremoCorrecao
extremoCorrecao := low
extremoCorrecaoBar := bar_index
extremoCorrecaoTempo := time
retracaoAtual := math.max(0.0, (baseFimPreco - close) / amplitudeBase)
retracaoMaxima := math.max(0.0, (baseFimPreco - extremoCorrecao) / amplitudeBase)
else if direcaoBase == -1
if high > extremoCorrecao
extremoCorrecao := high
extremoCorrecaoBar := bar_index
extremoCorrecaoTempo := time
retracaoAtual := math.max(0.0, (close - baseFimPreco) / amplitudeBase)
retracaoMaxima := math.max(0.0, (extremoCorrecao - baseFimPreco) / amplitudeBase)
correcaoValidada := retracaoMaxima >= retracaoMinima
//==================================================
// 18. TEMPO DA CORREÇÃO
//==================================================
int tempoAgora = barstate.isrealtime ? timenow : time_close
float tempoCorrecao = na
if estado == 1 and not na(baseFimTempo)
tempoCorrecao := math.max(0.0, (tempoAgora - baseFimTempo) / 60000.0)
else if estado == 2
if not na(baseFimTempo) and not na(finalCorrecaoTempo)
tempoCorrecao := math.max(0.0, (finalCorrecaoTempo - baseFimTempo) / 60000.0)
float relacaoTemporal = na
if not na(tempoBase) and tempoBase > 0 and not na(tempoCorrecao)
relacaoTemporal := tempoCorrecao / tempoBase
float tempoMinimo = na
float inicioJanela = na
float fimJanela = na
if not na(tempoBase)
tempoMinimo := tempoBase * relacaoMinimaTempo
inicioJanela := tempoBase * relacaoIdealInicio
fimJanela := tempoBase * relacaoIdealFim
float faltamMinimo = na
if not na(tempoCorrecao) and not na(tempoMinimo)
if tempoCorrecao < tempoMinimo
faltamMinimo := tempoMinimo - tempoCorrecao
float faltamJanela = na
if not na(tempoCorrecao) and not na(inicioJanela)
if tempoCorrecao < inicioJanela
faltamJanela := inicioJanela - tempoCorrecao
bool tempoValido = not na(relacaoTemporal) and relacaoTemporal >= relacaoMinimaTempo
bool janelaIdeal = not na(relacaoTemporal) and relacaoTemporal >= relacaoIdealInicio and relacaoTemporal <= relacaoIdealFim
bool tempoExcedido = not na(relacaoTemporal) and relacaoTemporal > relacaoIdealFim
bool fibValida = not na(retracaoMaxima) and retracaoMaxima >= fibIdealMinimo and retracaoMaxima <= fibIdealMaximo
//==================================================
// 19. INVALIDAÇÃO
//==================================================
bool estruturaInvalidada = false
if estado == 1 and invalidarEm100 and not na(baseInicioPreco)
if direcaoBase == 1
estruturaInvalidada := close <= baseInicioPreco
else if direcaoBase == -1
estruturaInvalidada := close >= baseInicioPreco
if estruturaInvalidada
estado := 0
ultimoPivotPreco := na
ultimoPivotBar := na
ultimoPivotTempo := na
ultimoPivotTipo := 0
baseInicioPreco := na
baseFimPreco := na
baseInicioBar := na
baseFimBar := na
baseInicioTempo := na
baseFimTempo := na
direcaoBase := 0
tempoBase := na
amplitudeBase := na
extremoCorrecao := na
extremoCorrecaoBar := na
extremoCorrecaoTempo := na
retracaoMaxima := na
correcaoValidada := false
finalCorrecaoTempo := na
confirmacaoBar := na
confirmacaoPreco := na
if not na(linhaBase)
line.delete(linhaBase)
if not na(linhaCorrecao)
line.delete(linhaCorrecao)
if not na(linhaRetomada)
line.delete(linhaRetomada)
linhaBase := na
linhaCorrecao := na
linhaRetomada := na
if not na(labelInicio)
label.delete(labelInicio)
if not na(labelFim)
label.delete(labelFim)
if not na(labelCorrecao)
label.delete(labelCorrecao)
if not na(labelConfirmacao)
label.delete(labelConfirmacao)
labelInicio := na
labelFim := na
labelCorrecao := na
labelConfirmacao := na
f_limparFibo()
f_limparAlvos()
//==================================================
// 20. CONFIRMAÇÃO DA PRÓXIMA ONDA
//==================================================
bool retomadaAlta = estado == 1 and direcaoBase == 1 and correcaoValidada and close > baseFimPreco
bool retomadaBaixa = estado == 1 and direcaoBase == -1 and correcaoValidada and close < baseFimPreco
bool retomadaConfirmada = barstate.isconfirmed and (retomadaAlta or retomadaBaixa)
if retomadaConfirmada
estado := 2
finalCorrecaoTempo := time_close
confirmacaoBar := bar_index
confirmacaoPreco := close
//==================================================
// 21. ÍNDICE NEOWAVE
//==================================================
int indiceNeoWave = 0
if not na(baseFimPreco)
indiceNeoWave += 20
if correcaoValidada
indiceNeoWave += 20
if tempoValido
indiceNeoWave += 20
if fibValida
indiceNeoWave += 20
if estado == 2
indiceNeoWave += 20
bool proximaOndaConfirmada = estado == 2 and indiceNeoWave >= scoreMinimo
//==================================================
// 22. TEXTOS OPERACIONAIS
//==================================================
string nomeProximaOnda = f_nomeProximaOnda(hipoteseCorrecao)
string proximaOndaDirecao = "AGUARDANDO"
if direcaoBase == 1
proximaOndaDirecao := nomeProximaOnda + " DE ALTA"
else if direcaoBase == -1
proximaOndaDirecao := nomeProximaOnda + " DE BAIXA"
string faseTexto = "PROCURANDO DIRECIONAL"
string ondaAtualTexto = "AGUARDANDO"
string estagioTexto = "AGUARDANDO"
string acaoTexto = "AGUARDAR"
string sinalTexto = "SEM SINAL"
if estado == 1
faseTexto := "CORREÇÃO ATIVA"
ondaAtualTexto := str.upper(hipoteseCorrecao)
if not correcaoValidada
estagioTexto := "CORREÇÃO NÃO VALIDADA"
acaoTexto := "AGUARDAR RETRAÇÃO MÍNIMA"
else if not tempoValido
estagioTexto := "CORREÇÃO JOVEM"
acaoTexto := "AGUARDAR MATURIDADE"
else if janelaIdeal and fibValida
estagioTexto := "JANELA DE FINAL DA " + str.upper(hipoteseCorrecao)
acaoTexto := "AGUARDAR RETOMADA DE " + f_direcaoTexto(direcaoBase)
else if tempoExcedido
estagioTexto := "CORREÇÃO COMPLEXA"
acaoTexto := "REAVALIAR CONTAGEM"
else
estagioTexto := "CORREÇÃO MADURA"
acaoTexto := "MONITORAR FINAL DA " + str.upper(hipoteseCorrecao)
else if estado == 2
faseTexto := "EXPANSÃO INICIADA"
ondaAtualTexto := proximaOndaDirecao
if proximaOndaConfirmada
estagioTexto := proximaOndaDirecao + " CONFIRMADA"
if direcaoBase == 1
sinalTexto := "SINAL DE ALTA"
acaoTexto := "ACOMPANHAR EXPANSÃO DE ALTA"
else
sinalTexto := "SINAL DE BAIXA"
acaoTexto := "ACOMPANHAR EXPANSÃO DE BAIXA"
else
estagioTexto := "RETOMADA CONFIRMADA"
acaoTexto := "ÍNDICE ABAIXO DO MÍNIMO"
//==================================================
// 23. STOP E ALVOS
//==================================================
float stopTecnico = estado == 2 ? extremoCorrecao : na
float alvo100 = na
float alvo1618 = na
float alvo2618 = na
if estado == 2 and not na(extremoCorrecao) and not na(amplitudeBase)
alvo100 := extremoCorrecao + direcaoBase * amplitudeBase
alvo1618 := extremoCorrecao + direcaoBase * amplitudeBase * 1.618
alvo2618 := extremoCorrecao + direcaoBase * amplitudeBase * 2.618
//==================================================
// 24. DESENHO DO DIRECIONAL
//==================================================
if not na(baseInicioBar) and not na(baseFimBar)
color corDirecional = direcaoBase == 1 ? corAlta : corBaixa
if mostrarBase
if na(linhaBase)
linhaBase := line.new(
x1=baseInicioBar,
y1=baseInicioPreco,
x2=baseFimBar,
y2=baseFimPreco,
xloc=xloc.bar_index,
color=corDirecional,
width=3
)
else
line.set_xy1(linhaBase, baseInicioBar, baseInicioPreco)
line.set_xy2(linhaBase, baseFimBar, baseFimPreco)
line.set_color(linhaBase, corDirecional)
if na(labelInicio)
labelInicio := label.new(
x=baseInicioBar,
y=baseInicioPreco,
text="INÍCIO DIRECIONAL",
xloc=xloc.bar_index,
yloc=yloc.price,
style=direcaoBase == 1 ? label.style_label_up : label.style_label_down,
color=corDirecional,
textcolor=color.white,
size=size.small
)
if na(labelFim)
labelFim := label.new(
x=baseFimBar,
y=baseFimPreco,
text="FIM DIRECIONAL " + f_tempo(tempoBase),
xloc=xloc.bar_index,
yloc=yloc.price,
style=direcaoBase == 1 ? label.style_label_down : label.style_label_up,
color=corDirecional,
textcolor=color.white,
size=size.small
)
//==================================================
// 25. DESENHO DA CORREÇÃO
//==================================================
if mostrarCorrecao and estado >= 1 and not na(baseFimBar) and not na(extremoCorrecaoBar)
if na(linhaCorrecao)
linhaCorrecao := line.new(
x1=baseFimBar,
y1=baseFimPreco,
x2=extremoCorrecaoBar,
y2=extremoCorrecao,
xloc=xloc.bar_index,
color=corCorrecao,
width=2
)
else
line.set_xy1(linhaCorrecao, baseFimBar, baseFimPreco)
line.set_xy2(linhaCorrecao, extremoCorrecaoBar, extremoCorrecao)
line.set_color(linhaCorrecao, corCorrecao)
string textoCorrecao = str.upper(hipoteseCorrecao) + " " + f_tempo(tempoCorrecao)
if na(labelCorrecao)
labelCorrecao := label.new(
x=extremoCorrecaoBar,
y=extremoCorrecao,
text=textoCorrecao,
xloc=xloc.bar_index,
yloc=yloc.price,
style=direcaoBase == 1 ? label.style_label_up : label.style_label_down,
color=corCorrecao,
textcolor=color.white,
size=size.small
)
else
label.set_xy(labelCorrecao, extremoCorrecaoBar, extremoCorrecao)
label.set_text(labelCorrecao, textoCorrecao)
//==================================================
// 26. SINAL DA PRÓXIMA ONDA
//==================================================
if estado == 2
if not na(confirmacaoBar)
if na(linhaRetomada)
linhaRetomada := line.new(
x1=extremoCorrecaoBar,
y1=extremoCorrecao,
x2=confirmacaoBar,
y2=confirmacaoPreco,
xloc=xloc.bar_index,
color=corConfirmacao,
width=3
)
else
line.set_xy1(linhaRetomada, extremoCorrecaoBar, extremoCorrecao)
line.set_xy2(linhaRetomada, confirmacaoBar, confirmacaoPreco)
line.set_color(linhaRetomada, corConfirmacao)
string textoConfirmacao = "RETOMADA CONFIRMADA " + str.tostring(indiceNeoWave) + "/100"
if proximaOndaConfirmada
textoConfirmacao := proximaOndaDirecao + " CONFIRMADA " + str.tostring(indiceNeoWave) + "/100"
if mostrarSinal
if na(labelConfirmacao)
labelConfirmacao := label.new(
x=confirmacaoBar,
y=direcaoBase == 1 ? low : high,
text=textoConfirmacao,
xloc=xloc.bar_index,
yloc=yloc.price,
style=direcaoBase == 1 ? label.style_label_up : label.style_label_down,
color=proximaOndaConfirmada ? corConfirmacao : color.orange,
textcolor=color.white,
size=size.normal
)
else
label.set_xy(labelConfirmacao, confirmacaoBar, direcaoBase == 1 ? low : high)
label.set_text(labelConfirmacao, textoConfirmacao)
label.set_color(labelConfirmacao, proximaOndaConfirmada ? corConfirmacao : color.orange)
//==================================================
// 27. FIBONACCI
//==================================================
if barstate.islast
f_limparFibo()
if estado >= 1 and not na(baseInicioPreco) and not na(baseFimPreco)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.236), "23,6%", usar236)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.382), "38,2%", usar382)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.500), "50,0%", usar500)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.618), "61,8%", usar618)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.705), "70,5%", usar705)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.786), "78,6%", usar786)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.810), "81,0%", usar810)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.854), "85,4%", usar854)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.886), "88,6%", usar886)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 1.000), "100,0%", usar100)
//==================================================
// 28. ALVOS
//==================================================
if barstate.islast
f_limparAlvos()
if proximaOndaConfirmada
f_desenharAlvo(alvo100, "ALVO 1 — 100%")
f_desenharAlvo(alvo1618, "ALVO 2 — 161,8%")
f_desenharAlvo(alvo2618, "ALVO 3 — 261,8%")
//==================================================
// 29. FUNDO
//==================================================
color corFundo = na
if mostrarFundo and estado == 1 and janelaIdeal
corFundo := color.new(corIdeal, 88)
else if mostrarFundo and proximaOndaConfirmada
corFundo := color.new(corConfirmacao, 90)
bgcolor(corFundo)
//==================================================
// 30. PAINEL
//==================================================
var table painel = table.new(position.top_right, 2, 23, border_width=1)
if mostrarPainel and barstate.islast
color corDirecao = color.gray
color corEstado = corCorrecao
if direcaoBase == 1
corDirecao := corAlta
else if direcaoBase == -1
corDirecao := corBaixa
if proximaOndaConfirmada
corEstado := corConfirmacao
else if janelaIdeal
corEstado := corIdeal
else if tempoExcedido
corEstado := color.fuchsia
string movimentoBaseTexto = "AGUARDANDO"
if direcaoBase == 1
movimentoBaseTexto := "DIRECIONAL DE ALTA"
else if direcaoBase == -1
movimentoBaseTexto := "DIRECIONAL DE BAIXA"
string textoJanela = "-"
if janelaIdeal
textoJanela := "JANELA ATIVA"
else if tempoExcedido
textoJanela := "JANELA EXCEDIDA"
else if not na(faltamJanela)
textoJanela := f_tempo(faltamJanela)
table.cell(painel, 0, 0, "MAGALHAES", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 0, "NEOWAVE ONDA 3 PRO", bgcolor=color.black, text_color=color.white)
table.cell(painel, 0, 1, "Fase", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 1, faseTexto, bgcolor=corEstado, text_color=color.white)
table.cell(painel, 0, 2, "Movimento Base", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 2, movimentoBaseTexto, bgcolor=corDirecao, text_color=color.white)
table.cell(painel, 0, 3, "Onda Atual", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 3, ondaAtualTexto, bgcolor=corEstado, text_color=color.white)
table.cell(painel, 0, 4, "Estágio", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 4, estagioTexto, bgcolor=corEstado, text_color=color.white)
table.cell(painel, 0, 5, "Tempo Direcional", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 5, f_tempo(tempoBase), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 6, "Tempo Correção", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 6, f_tempo(tempoCorrecao), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 7, "Relação Temporal", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 7, f_relacao(relacaoTemporal), bgcolor=corEstado, text_color=color.white)
table.cell(painel, 0, 8, "Tempo Mínimo", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 8, f_tempo(tempoMinimo), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 9, "Faltam Mínimo", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 9, not na(faltamMinimo) ? f_tempo(faltamMinimo) : "CUMPRIDO", bgcolor=tempoValido ? color.green : color.gray, text_color=color.white)
table.cell(painel, 0, 10, "Janela Ideal", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 10, f_tempo(inicioJanela) + " até " + f_tempo(fimJanela), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 11, "Faltam Janela", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 11, textoJanela, bgcolor=corEstado, text_color=color.white)
table.cell(painel, 0, 12, "Retração Atual", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 12, f_percentual(retracaoAtual), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 13, "Retração Máxima", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 13, f_percentual(retracaoMaxima), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 14, "Tempo Válido", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 14, f_simNao(tempoValido), bgcolor=tempoValido ? color.green : color.gray, text_color=color.white)
table.cell(painel, 0, 15, "Fib Válida", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 15, f_simNao(fibValida), bgcolor=fibValida ? color.green : color.gray, text_color=color.white)
table.cell(painel, 0, 16, "Correção Completa", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 16, estado == 2 ? "SIM" : "NÃO", bgcolor=estado == 2 ? color.green : color.gray, text_color=color.white)
table.cell(painel, 0, 17, "Rompimento", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 17, estado == 2 ? "CONFIRMADO" : "AGUARDANDO", bgcolor=estado == 2 ? color.green : color.gray, text_color=color.white)
table.cell(painel, 0, 18, "Índice NeoWave", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 18, str.tostring(indiceNeoWave) + " / 100", bgcolor=indiceNeoWave >= scoreMinimo ? color.green : color.orange, text_color=color.white)
table.cell(painel, 0, 19, "Sinal", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 19, sinalTexto, bgcolor=proximaOndaConfirmada ? corDirecao : color.gray, text_color=color.white)
table.cell(painel, 0, 20, "Stop Técnico", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 20, f_preco(stopTecnico), bgcolor=color.red, text_color=color.white)
table.cell(painel, 0, 21, "Alvos", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 21, "100%: " + f_preco(alvo100) + " 161,8%: " + f_preco(alvo1618) + " 261,8%: " + f_preco(alvo2618), bgcolor=corAlvo, text_color=color.white)
table.cell(painel, 0, 22, "Estado / Ação", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 22, estagioTexto + " " + acaoTexto, bgcolor=corEstado, text_color=color.white)
//==================================================
// 31. ALERTAS
//==================================================
alertcondition(
correcaoValidada and not correcaoValidada ,
title="NeoWave — Correção validada",
message="A correção atingiu a retração mínima."
)
alertcondition(
tempoValido and not tempoValido ,
title="NeoWave — Tempo mínimo cumprido",
message="A correção cumpriu o tempo mínimo."
)
alertcondition(
janelaIdeal and not janelaIdeal ,
title="NeoWave — Janela temporal ativa",
message="A correção entrou na janela temporal ideal."
)
alertcondition(
retomadaConfirmada,
title="NeoWave — Retomada confirmada",
message="A correção terminou e a direção original foi retomada."
)
alertcondition(
proximaOndaConfirmada and not proximaOndaConfirmada ,
title="NeoWave — Próxima onda confirmada",
message="A próxima onda foi confirmada pelo motor NeoWave."
)
alertcondition(
estruturaInvalidada,
title="NeoWave — Estrutura invalidada",
message="A correção fechou além da origem do movimento direcional."
)
Indicador
VWAP trap logic tradingvwap with vol fetch,it s a volume based tren indicator ,u can fecth anu future voluime here
Indicador
Time-at-Price S/R Pockets v11TIME-AT-PRICE S/R POCKETS
WHAT IT IS
Most profiles answer "where did the business get done?" This tool starts from a different question: where has price been ACCEPTED? Time-at-price measures acceptance; volume-at-price measures participation. The two often disagree, and the disagreements are informative. This script maps acceptance into support/resistance pockets, tracks how value migrates, and runs a self-scoring projection whose structural inputs are chosen by walk-forward evidence rather than by opinion.
Everything here is descriptive and backward-looking. The projection is a model of where current forces point, not a forecast — and the script continuously publishes its own hit rate so you can see exactly how much it deserves to be trusted on your symbol.
THE POCKETS
A rolling window (tuned per timeframe by preset) is binned into price rows. Each bar adds weight to every row it touched, with a recency decay (half-life plus floor) so old structure fades without vanishing. Strength = a row's weight relative to the strongest row. Contiguous strong rows become pockets, drawn to the right of price:
- Length is proportional to strength.
- Colour is the bar-win bias inside the zone: green shades where buyers won more bars, red where sellers did, grey when balanced.
- A gold border marks pockets being tested within the recent heat window.
- Declutter: only the N strongest pockets (plus the one at price) get full labels; the rest carry hover dots with the same detail.
- A dotted line marks the Point of Control — the single most-accepted price in the window.
- A higher-timeframe rail on the far right shows the same construction one frame up (D charts get W, 1H gets D, etc.) as slim context bands.
VALUE MIGRATION
The rolling profile says where value sits; the trail says which way it is moving. A stepped PoC trail is recomputed with the same construction as the display profile, so its right-hand end lands exactly on the PoC line. Around it: a shaded value-area band (70% of the distribution by default), a drift readout in ATR units (value migrating up / down / balanced — comparable across instruments), and an overlap metric versus N bars ago (overlapping value areas = balance; stepping areas = trending).
THE PROJECTION (A MODEL, NOT A FORECAST)
A deterministic path: linear-regression drift, fading each bar, plus reversion toward the PoC, plus drag from any zone the path passes through, wrapped in an ATR*sqrt(t) volatility cone. It can terminate at the first strong zone it enters — forces point INTO structure, so projecting through it would overclaim. The reversion and fade coefficients are derived from the instrument itself (distance persistence and return autocorrelation), with manual overrides.
A tug-of-war readout decomposes the next step into momentum vs structure, with direction and ratio.
SELF-SCORING AND DRAG ARBITRATION
Three strength fields are built in one pass: Time, Volume, and Composite sqrt(time*volume). Every bar, three parallel projections — one per field, each reverting to its own PoC — are scored walk-forward against the then-unseen future: directional hit rate, and error versus a flat baseline ("predict no change"). The drag source can be fixed manually, or set to Auto: a field becomes eligible after a minimum number of scored forecasts, ranking is by error-vs-flat with hit rate breaking ties, and an incumbent is only dethroned when a challenger beats it by a margin, to stop flapping.
Read the scoreboard honestly. Forecasts are scored every bar over an N-bar horizon, so adjacent forecasts share outcome bars — the effective independent sample is roughly n divided by the horizon. Ratios near 1.0x mean no demonstrated edge, and the script will say so rather than hide it. The champion's own score is a clean walk-forward tally, but champion SWITCHING is greedy, so it is not an out-of-sample estimate of the switching policy.
INTRABAR VOLUME (EXPERIMENTAL)
Optionally, the volume fields are rebuilt from lower-timeframe data: each intrabar's volume is allocated to the bin containing its close, instead of smearing a chart bar's volume across its full high-low range. The lower timeframe is auto-selected to fit TradingView's intrabar budget (manual override available), and the HUD reports the chosen timeframe, data coverage, and any capping. The time field deliberately stays on chart-bar construction, so the scoreboards act as a controlled test of whether sharper volume allocation actually improves the projection on your instrument.
SETTINGS
The Auto preset reads your chart timeframe and applies tuned defaults for Weekly / Daily / 1-Hour / 15-Min; Manual exposes every knob. If TradingView reports the script is slow, raise the recompute stride or lower the scoring window.
LIMITATIONS, STATED PLAINLY
- Boxes, labels and lines redraw on the latest bar — standard for rolling profiles. Nothing uses future data; all scoring is confirmed-bar only.
- Without volume data the script degrades gracefully to time-only mode.
- Pockets are context, not signals. There are no alerts and no entries. If the scoreboard says the projection does not beat a flat line on your symbol, believe it.
Built from scratch; no reused open-source code. A companion script surfacing the time-vs-volume divergences directly (auction quadrants: VALUE / SOFT / EVENT zones, absorption flags, dual PoC trails) will follow.
Indicador
TraderLifestyle Space Concept Pro - 3 Finger Spread EngineSPACE CONCEPT PRO - THE THREE-FINGER SPREAD ENGINE
Some of the most consistent discretionary traders never look at a chart without two moving averages on it: the 20 SMA and the 200 SMA. Add price itself and you have THREE ITEMS - three "fingers". The distance between them is called SPACE, and space tells you when a market is about to explode and when a move is about to die. This indicator turns that entire concept into a fully mechanical engine with signals, trade management and webhook automation.
=== THE CONCEPT ===
THE THREE ITEMS
1. Price
2. The 20 period simple moving average
3. The 200 period simple moving average
NARROW STATE - all three items clustered together. The market has reset itself. An explosive move is loading, direction unknown. You do not need to predict it: you simply wait for the biggest bar to emerge.
SPACE ZONE 1 - the space between the 20 SMA and the 200 SMA.
SPACE ZONE 2 - price accelerating away from the 20 SMA. Sometimes the underlying moves faster than the moving average can keep up, creating a second layer of space.
DUAL SPACE / THREE-FINGER SPREAD - both zones open at the same time, all three fingers clearly separated and stacked in order. This is where moves get exhausted.
THE RAILROAD RULE - if price runs parallel to the 20 SMA like railroad tracks, that is NOT a spread. Price has to ACCELERATE away from the moving average. The engine checks this automatically.
THE WIDEST SPREAD - the widest three-finger spread of the lookback window finds you the temporary top or bottom 8 to 9 times out of 10. When it prints, the reversal watch arms and the extreme that must hold is marked on the chart.
NARROW TO NARROW - when the spread collapses from the widest state back to narrow WITHOUT breaking the extreme, the next direction is the reversal. Confirmed by a power bar: a three-finger spread reversing with a power bar is the creme de la creme of this method.
=== THE SIGNALS ===
1. BREAKOUT - power bar (biggest bar of the window) exploding out of a narrow state. Entry inside the bar, stop beyond the bar.
2. SPREAD REVERSAL - widest spread found the extreme, spread collapsed back toward narrow without breaking it, power bar confirms. Target follows the 50 percent rule.
3. EARLY REVERSAL - first strong color change directly at the widest spread (the bottoming tail bar play). Stop beyond the extreme.
4. TAIL BAR - optional: bottoming/topping tail bars near narrow states as early entries (markers by default).
Every signal prints as a two-line pill with the setup name, and every pill carries a WHY tooltip that explains the exact chain of logic behind the trade - plus entry, stop, target and R:R.
=== TRADE MANAGEMENT (AS TAUGHT) ===
- ADD on the first color change after entry ("always adding on the first color change")
- TP at the 50 percent mark of the move - the pros are satisfied with the halfway mark, do not get greedy
- After the partial: bar-by-bar trailing stop until the market takes you out
- Hard stop beyond the power bar / spread extreme with an ATR buffer
- Full position box and live status in the cockpit panel
=== THE COCKPIT ===
An animated terminal-style panel shows everything at a glance:
- Animated 3D gold pixel logo with a moving light sweep (live ticks)
- State chip: NARROW STATE / 3-FINGER SPREAD / WIDEST SPREAD / REVERSAL WATCH
- Spread rank 0-100 plus live ZONE 1 / ZONE 2 meter bars in ATR
- 7-step SPACE CHECKLIST mirroring the method: items stacked, zone 1, zone 2, acceleration (railroad filter), widest-spread watch, power bar, management
- Position box, big signal line, spread/reset/signal counters
On the chart: shaded zone 1 and zone 2 fills, narrow-state boxes, MARKET RESET tags, 3-FINGER SPREAD labels, gold WIDEST SPREAD stars with vertical measuring lines (exactly how it is drawn when taught), the must-hold extreme line, TAIL tags and lightning power-bar markers. Everything is explained on the chart - hover any label for the reasoning.
=== AUTOMATION / WEBHOOK ===
Create ONE alert with condition "Any alert() function call" and paste your webhook URL. The indicator sends ready-to-use JSON for every event:
{"id":"TL-SPACE-CONCEPT","symbol":"BTCUSD","action":"BUY","setup":"BREAKOUT","price":64100.5,"sl":63900.0,"tp":64500.0,"tf":"15","time":"2026-07-18 16:30"}
Actions: BUY, SELL, ADD, TP_50, TRAIL_EXIT, SL_HIT, NARROW_STATE, WIDEST_SPREAD. Classic alertconditions for BUY / SELL / Narrow State / Widest Spread are included as well.
=== SELF-CALIBRATING ===
The spread is ranked against its own history (percentile engine) and all distances are measured in ATR - so the indicator works out of the box on any market (crypto, forex, gold, indices, stocks, futures) and any timeframe from 1 minute to weekly. Practice finding three-finger spreads everywhere - that is the homework.
=== SETTINGS ===
Every input is documented with a tooltip quoting the original rule it implements. Adjust the narrow/wide percentiles, power-bar size, dual-space minimum, acceleration window, 50 percent rule targets and the SL buffer to fit your market and style.
=== DISCLAIMER ===
Educational tool, not financial advice. No indicator wins every trade - prepare for the 1-2 times out of 10 the concept is wrong: keep your risk unit small compared to your profit unit. That is how you stay in business.
Indicador
Volatility Jump DetectorVolatility Jump Detector
This tool marks structurally significant price moves and tells you what kind of move each one was. It is an event detector, not a signal — it does not predict direction. It answers "did something real just happen here, and what was behind it?"
HOW JUMPS ARE DETECTED
Most "big candle" indicators compare a move to an ordinary volatility estimate, which has a circular flaw: a large jump inflates the very volatility measure used to judge it, so the biggest moves look less exceptional than they are.
This uses bipower variation (Barndorff-Nielsen and Shephard; Lee and Mykland), which builds the local volatility estimate from products of adjacent absolute returns. That construction is insensitive to a single large move, and it is computed excluding the current bar — so a jump cannot inflate its own threshold. A move is flagged when it exceeds a chosen multiple of that robust volatility, and the panel reports the exact sigma reading.
TWO INDEPENDENT CONTEXT AXES
INTENSITY — Is the recent jump rate elevated versus its own long-run baseline? Reported as a multiple with the underlying counts always visible, so you can see the sample behind the verdict. Note on method: a Hawkes branching-ratio estimate was implemented first and dropped. At a 4-sigma threshold real data yields only a handful of jumps per few hundred bars, far too few for count-variance statistics — it returned zero on every timeframe tested. A plain rate comparison is what sparse events can actually support, and below a minimum count the reading honestly says "insufficient" rather than printing a fabricated number.
VOLUME — Was the jump backed by participation, or did it slip through a thin book? A large move on heavy volume and the same move on nothing are different events. Auto-disables on instruments without a volume feed.
Optionally link the Risk & Levels Cockpit's exported levels, and jumps that fire through your invalidation level or at the point of control are flagged.
ON THE CHART
Direction-aware triangles mark each jump, colored by the intensity regime at that moment. The most recent jump is labelled with its sigma reading and volume tag. The background tints when jump intensity is elevated. The panel adapts to your chart theme and colors each row by meaning.
WORKS ON ANY MARKET AND TIMEFRAME
All lookbacks are in bars with no session, expiry, or clock anchors. Non-repainting: the robust volatility estimate excludes the current bar, and everything confirms at close.
LIMITATIONS
Not a signal and not investment advice. This marks events and describes them; it does not forecast what follows. An earlier version classified jumps as "ignition" versus "exhaustion" and measured the forward tendency of each — the measured continuation and reversal rates sat at base rate, so that classification was removed rather than kept as decoration. Jump detection depends on the threshold you choose; a lower threshold marks more moves and dilutes significance. Intensity needs a long baseline window because jumps are rare, and reports "insufficient" when the count is too low. Volume confirmation requires a volume feed.
CREDITS
Original implementation. Barndorff-Nielsen and Shephard bipower variation; Lee and Mykland (2008) jump test; jump-rate intensity comparison.
Indicador
Forex Smart Trend StrategyForex Smart Trend Strategy
| Pair | Timeframe | EMA | ADX | Supertrend |
| ------- | --------- | ------ | --- | ---------------- |
| EUR/USD | 5m | 50/200 | 25 | ATR 10, Factor 3 |
| GBP/USD | 5m | 50/200 | 25 | ATR 10, Factor 3 |
| XAU/USD | 15m | 50/200 | 25 | ATR 10, Factor 4 |
Estratégia
Institutional Positioning (COT S&P 500 Asset Managers)中文說明
機構部位擁擠度指標(COT S&P 500 Asset Manager Positioning)
本指標追蹤美國股指期貨市場中「資產管理公司/機構法人」類別的淨部位相對歷史水位,用以觀察機構投資人多空部位是否已經過度擁擠,是一個逆勢型的市場情緒觀察工具。
計算方式
資料來源為 CFTC(美國商品期貨交易委員會)每週五公布的 Traders in Financial Futures(TFF)報告,取 E-mini S&P 500 期貨(CFTC Code #13874A)中「Asset Manager/Institutional」類別的多單減空單,得到淨部位。再用 ta.percentrank() 將淨部位轉換成過去約3年(780個交易日)區間內的百分位排名(0-100),用以判斷目前部位相對於自身歷史的擁擠程度。
如何使用
紅色區域(百分位 80-95以上):機構多單部位處於近3年相對高檔,代表多頭部位已經擁擠。這是逆勢訊號,不是趨勢確認——意味著追高風險上升、獲利了結壓力可能浮現,不代表市場馬上要跌。
綠色區域(百分位 5-20以下):機構空單部位處於近3年相對高檔(或多單部位處於低檔),代表空頭情緒或減碼行為已經擁擠。同樣是逆勢訊號,提醒悲觀情緒可能已經到達極端,存在反彈的統計傾向,不代表市場立刻反轉向上。
中線(50)代表目前部位落在過去3年的中位數,無明顯偏多或偏空的擁擠現象。
注意事項
資產管理公司(退休基金、資產管理業者)本質上以長期資產配置為主要目的,部位天生偏向長期持有多單,這代表本指標的中樞長期會偏向50以上,這是市場結構特性,不是指標偏誤。
資料為週更新,雖然本指標可以掛在任何K線週期上使用,但反映的訊號本質是總經/中長期部位變化,不適合作為短線精確進出場依據,建議搭配保證金負債、淨流動性、信用壓力等指標一起觀察,綜合判斷市場所處的槓桿-流動性-信用-部位週期階段。
若發現此分類訊號長期缺乏區分度,可考慮改用波動性更高的 Leveraged Funds(避險基金)分類作為替代或補充。
本指標僅供教育與研究參考,不構成投資建議。
English Description
Institutional Positioning Crowding Indicator (COT S&P 500 Asset Manager Positioning)
This indicator tracks the net positioning of the "Asset Manager/Institutional" category in U.S. equity index futures relative to its own historical range, used to assess whether institutional investors' long or short positioning has become overcrowded. It is a contrarian market-sentiment tool, not a trend-confirmation one.
Methodology
Data comes from the CFTC's weekly Traders in Financial Futures (TFF) report, using the E-mini S&P 500 futures (CFTC Code #13874A). Net position is calculated as Asset Manager/Institutional long positions minus short positions. This net position is then converted using ta.percentrank() into a percentile ranking (0–100) relative to roughly the past 3 years (780 trading days), showing how crowded the current positioning is relative to its own history.
How to use it
Red zone (percentile 80–95+): Institutional long positioning is near a 3-year relative high — longs are crowded. This is a contrarian signal, not trend confirmation: it flags rising risk of profit-taking or a pullback, not an imminent decline.
Green zone (percentile 5–20 or below): Short positioning (or reduced long exposure) is near a 3-year relative extreme — pessimism is crowded. Also contrarian: it suggests bearish sentiment may be near an extreme, with a statistical tendency toward a bounce, not a guaranteed reversal.
Midline (50) indicates positioning sits near its 3-year median, with no notable crowding in either direction.
Notes
Asset managers (pension funds, institutional money managers) are structurally oriented toward long-term allocation and tend to run persistent long exposure. This means the indicator's center of gravity will naturally skew above 50 over time — this reflects genuine market structure, not a flaw in the indicator.
Although the underlying data updates weekly and this indicator can technically be applied to any chart timeframe, the signal itself reflects medium- to long-term institutional positioning shifts. It is not suited for precise short-term trade timing and works best alongside margin debt, net liquidity, and credit stress indicators to build a fuller picture of the leverage-liquidity-credit-positioning cycle.
If this category's signal proves insufficiently differentiated over time, consider substituting or supplementing it with the more volatile Leveraged Funds (hedge fund) category.
For educational and research purposes only; not investment advice.
Indicador






















