Crypto 15M Volume + Supertrend + RSI StrategyThis is AI generated Signal Base on Supertrend, RSI, And Volume Base indicator to create code
Candlestick analysis
Swing Structure Map - SZ Alpha🔓 Why this is free
Swing Structure Map · SZ Alpha
is designed as market structure infrastructure,
not as a trading strategy.
Swing High / Swing Low
are the shared language behind most technical systems.
They describe structure, not decisions.
That’s why this module is released free, by design.
If you can’t see structure clearly,
every “signal” becomes noise.
🧭 How you can use it
Use it as a standalone market structure map
Combine it with your own strategy or framework
For context and validation, not decision replacement
🚫 What you won’t find here
❌ Buy / sell recommendations
❌ Win-rate or performance claims
❌ Emotional or opinion-driven conclusions
This is not a tool that tells you what to do,
but one that helps you see what the market is doing.
-----------------------------------------------------------------
🔓 为什么这是免费的
Swing Structure Map · SZ Alpha
被设计为结构基础设施,而不是交易策略。
Swing High / Swing Low(波段高低点)
是所有技术分析与交易系统的共同语言。
它们描述的是市场结构,而不是买卖答案。
因此,这一部分选择永久免费公开。
如果连结构都看不清,那任何“信号”,都只是噪音。
🧭 你可以如何使用
作为独立的市场结构地图
搭配你自己的交易系统或判断逻辑
用于验证认知,而不是替代决策
🚫 你不会在这里看到
❌ 买卖建议
❌ 胜率或收益承诺
❌ 情绪化或主观结论
这不是一个“告诉你该做什么”的工具,
而是一个让你看清市场正在做什么的工具。
Free structure.
Decisions remain yours.
— SZ Alpha
Target Ladder Elite Median and ATR Active TargetsTarget Ladder Elite is a precision-based price targeting and reaction framework designed to reveal where price is statistically drawn next and when that target has been meaningfully engaged.
Instead of forecasting distant projections or repainting future paths, this indicator operates entirely in live market context, adapting dynamically to volatility and structure on any timeframe.
📌 What This Indicator Does
Target Ladder Elite builds a dynamic price ladder using three core components:
1️⃣ Median Price Axis
At its core is a short-length median moving average, acting as the equilibrium line of price. This median defines directional bias:
Price above the median → bullish pressure
Price below the median → bearish pressure
The median continuously adapts to price behavior rather than lagging behind it.
2️⃣ ATR-Based Target Bands
Using Average True Range (ATR), the indicator constructs upper and lower volatility targets around the median.
These are not generic volatility bands — they function as statistically relevant price objectives, expanding and contracting with market conditions.
Upper band = upside target
Lower band = downside target
The bands remain stable, smooth, and timeframe-independent.
3️⃣ Active Target System
Only one target is active at a time, determined automatically:
If price is above the median → upper target is active
If price is below the median → lower target is active
The Active Target label appears on the most recent candle and updates in real time, showing traders exactly where price is currently being drawn.
This keeps focus on one objective, eliminating clutter and decision paralysis.
🎯 HIT Detection Logic
Whenever price meaningfully reaches an ATR target, the indicator registers a HIT label directly on the chart.
A HIT signals:
Target fulfillment
Momentum exhaustion or continuation decision zone
High-probability reaction area
Clusters of HITs often appear during trends, while missed or rejected targets frequently precede reversals.
🧠 How to Use Target Ladder Elite
✔ Trend Following
Trade in the direction of the active target
Use HITs as confirmation of trend strength
✔ Mean Reversion Awareness
Multiple HITs without follow-through can signal exhaustion
Failed target attempts often precede reversals back toward the median
✔ Confluence Trading
Pairs exceptionally well with:
Bollinger Bands
RSI / Stochastic RSI
Market structure or support/resistance
✔ Any Timeframe
The logic is volatility-normalized, making it effective on:
Intraday charts
Swing charts
Daily and higher timeframes
No parameter changes are required when switching timeframes.
🎨 Visual Clarity & Customization
Fully customizable colors for:
Median
Upper & lower targets
Active target balloon
HIT labels
Clean, non-repainting design
Designed for professional chart layouts and publishing
⚠️ Important Notes
Target Ladder Elite is not a signal generator and does not predict future price paths.
It is a price reaction and target awareness tool, best used as part of a broader trading plan.
📈 In Summary
Target Ladder Elite helps traders answer three critical questions in real time:
Where is price statistically drawn next?
Has that objective been fulfilled?
Is momentum continuing or stalling?
It brings structure, clarity, and discipline to price movement — without noise.
CPR Kuvera Trading Academy - Created by RajeshPlotting CPR components plotting pivot levels of daily weekly monthly
Cody Order Block FinderCody Order Block Finder
Free Telegram Trading Community t.me
Overview
A professional order block detection indicator that identifies institutional supply and demand zones on any timeframe. This tool helps traders spot key reversal areas where institutional orders are likely placed, providing strategic levels for limit order entries.
Key Features
🔍 Smart Order Block Detection
Bullish Order Blocks: Identifies the last bearish candle before consecutive bullish candles
Bearish Order Blocks: Identifies the last bullish candle before consecutive bearish candles
Configurable Sensitivity: Adjust the number of consecutive candles required (1-50 periods)
Minimum Move Filter: Set percentage threshold to filter only significant moves
🎨 Visual Customization
Multiple Color Schemes: Choose from DARK, BRIGHT, or NEON themes
Customizable Display: Show/hide bullish/bearish channels
Line Extension: Extend OB lines to current bar for better visibility
Historical View: Toggle between showing all historical OBs or only the latest ones
📊 Advanced Filtering
OB Size Filter: Set minimum and maximum order block size as percentage of price
ATR Filter: Filter OBs based on Average True Range multiples
OB Strength Indicator: Color-coded OBs based on subsequent price move strength
Wick/Body Selection: Choose to mark OBs using whole candle range or body only
🔔 Alert System
Real-time Alerts: Get notified immediately when new order blocks form
Customizable Messages: Set your own alert messages
Once-per-OB Option: Prevent alert spam with single alert per OB
📈 Display Features
Three-Line Channels: Shows high, low, and average levels for each OB
Visual Shapes: Clear triangle markers above/below candles
Info Panel: Displays latest OB statistics in a clean table format
Data Window Info: View OB levels in TradingView's data window
How to Use
Setup
Add indicator to your chart
Configure periods (default: 5) - higher values = fewer but stronger OBs
Set minimum % move (default: 0%) to filter significant moves
Choose color scheme for your preference
Trading Applications
Limit Order Placement: Place buy limits at bullish OB lows, sell limits at bearish OB highs
Stop Loss Reference: Set stops beyond OB extremes
Reversal Confirmation: Use OBs as confluence with other indicators
Support/Resistance: OB levels often act as future support/resistance
Advanced Tips
Combine with volume profile for higher probability zones
Use on higher timeframes (4H, Daily) for more significant levels
Look for OBs at key Fibonacci levels for added confluence
Monitor price reactions when revisiting OBs
Technical Details
Programming Language: Pine Script v6
Overlay: Yes (draws directly on price chart)
Max Lines: 500 (prevents chart clutter)
Timeframe Compatibility: All timeframes (1min to Monthly)
Market Compatibility: Forex, Stocks, Crypto, Futures
Input Parameters
Basic Settings
Relevant Periods: Number of consecutive candles required (1-50)
Min. Percent move: Minimum % move to validate OB (0.0-100.0)
Color Scheme: DARK, BRIGHT, or NEON color themes
Display Options
Show latest Bullish/Bearish Channel: Toggle channel display
Extend OB lines to right: Extend lines to current bar
Show all historical OBs: Display all OBs or only latest
Use whole range: Use High/Low or Open/Close for OB marking
Advanced Filters
Min/Max OB size (%): Filter by order block size
Use ATR filter: Filter based on volatility
Show OB Strength: Color code by subsequent move strength
Alert Configuration
Create alerts directly from the indicator by clicking "Create Alert" button on chart:
Bullish OB alerts when green triangle appears
Bearish OB alerts when red triangle appears
Includes price and OB level information
Best Practices
Higher Timeframes First: Start on daily/4H to identify major levels
Multiple Confluence: Combine with trend lines, Fibonacci, or moving averages
Patience: Wait for price to return to OB levels for entries
Risk Management: Always use appropriate position sizing and stops
Support & Updates
For updates and support, visit the script page. The indicator is regularly maintained for optimal performance across all markets and timeframes.
Perfect for: Swing traders, position traders, institutional traders, and anyone looking to trade with the "smart money" flow using order flow concepts.
Trading Styles: Works with all styles - scalping, day trading, swing trading, and investing.
Experience Level: Suitable for beginners to advanced traders with clear visual cues and customizable settings.
VSA Quantitative Framework [Research Grade]VSA Quantitative Framework – Objective Effort vs Result
This indicator reformulates classical Volume Spread Analysis (VSA) into a fully quantitative, statistically grounded framework.
Traditional VSA relies heavily on discretionary interpretation (e.g., “this volume looks high”). This script removes subjectivity by applying statistical normalization and modern market microstructure concepts, allowing effort–result relationships to be evaluated objectively and consistently.
The core objective is to measure how efficiently the market converts Effort (Volume) into Result (Price Range / True Range).
⚙️ Methodology (Quantitative Foundation)
Instead of using raw values, the indicator computes Z-Scores (standard deviations from a rolling mean) for:
Log-normalized Volume (Effort)
True Range (Result)
This normalization makes volume and range comparable across regimes and volatility conditions.
Additionally, an efficiency metric inspired by the Square Root Law of Market Impact is used, reflecting the empirical relationship between traded volume and price movement described in market microstructure literature (e.g., Kyle’s Lambda).
Each bar is classified objectively into one of four VSA quadrants.
📊 VSA Quadrant Classification
🔴 The Squat – Inefficiency / Absorption
Logic:
High Effort (elevated Volume Z-Score) + Low Result (Range below average)
Interpretation:
Significant trading activity fails to produce proportional price movement, suggesting absorption by passive liquidity (e.g., iceberg or limit orders). Commonly observed near distribution/accumulation zones and potential reversal areas.
Visualization:
Red X marker on the bar.
💎 The Glide – High Efficiency / No Resistance
Logic:
Low Effort (low Volume Z-Score) + High Result (elevated Range Z-Score)
Interpretation:
Price moves with minimal volume, indicating a lack of opposing liquidity (liquidity vacuum). This is typically a high-quality continuation signal in directional markets.
Visualization:
Turquoise diamond marker.
🔵 The Drive – Trend Validation
Logic:
High Effort + High Result
Interpretation:
A healthy, well-supported directional move, often associated with institutional participation. This state is primarily contextual rather than a direct entry signal.
🕒 Session Filter – New York Focus
To reduce noise and regime distortion from overnight trading, the indicator includes an integrated session filter.
Default session:
10:00 – 16:00 New York Time
Key design choice:
The first 30 minutes of the NY open (09:30–10:00) are intentionally excluded due to frequent failed auctions, opening volatility spikes, and initial liquidity imbalances.
Statistical calculations continue in the background across all bars to preserve correct rolling distributions, while signals and bar coloring are displayed only during the active NY session.
The session filter can be disabled to display signals across all trading hours.
🚀 Practical Use Cases
Reversal Context:
Squat signals occurring near key levels (FVGs, order blocks, structural highs/lows) may indicate absorption and potential exhaustion.
Continuation Context:
Glide signals following a pullback often confirm low resistance and trend continuation.
This indicator is designed as a contextual and confirmation tool, not as a standalone mechanical trading system.
⚠️ Disclaimer
This script is provided for educational and research purposes only.
Trading involves substantial risk and is not suitable for all participants.
DAS Levels and BoxesTrading levels mainly used to trade MNQ Futures plus 1-Hour & 4-Hour price range boxes. I define the day trading range from 6:30AM PST to 1PM PST. I define the overnight range from midnight PST to 6:30AM PST. I define the futures market entire range as starting at 3PM PST going overnight and ending at 2PM PST the following day.
The 1-hour box is for scalping and catching smaller moves and are more risky. Enter long or short trade upon 1-hour candle close above & below the mid-line, respectively.
The 4-hour box is for catching larger moves and require more patience. Enter long or short trade upon 4-hour candle close above & below the mid-line, respectively. This is my first indicator so be patient. These are the lines and boxes that I use to trade so I thought it would save time to have them all present in one indicator. This is set up with Pacific Standard Time as default. I may need to adjust later for day light savings time.
Levels include:
Previous Day Low (PDL)
Previous Day High (PDH)
Overnight Low (ONL)
Overnight High (ONH)
Open AM Price
Open PM Price
Target Ladder Pro MTF ATR and HIT Confirmation
Target Ladder Pro is a multi-timeframe price-targeting and confirmation system designed to give traders clear, actionable target levels regardless of chart timeframe.
The indicator combines volatility-based ATR targets across multiple higher timeframes with a live, candle-by-candle target engine that confirms when price has objectively reached its projected objective (“HIT”). The result is a structured target ladder that helps traders frame expectations, manage trades, and avoid emotional decision-making.
What makes Target Ladder Pro different:
Multi-Timeframe Target Ladder
ATR-derived targets are calculated for 1H, 4H, Daily, and Weekly timeframes.
Each timeframe can be enabled or disabled independently, allowing traders to focus on a single horizon or view full market structure at once.
Live Active Target + HIT Confirmation
A dynamic target updates with each new candle on the active chart timeframe.
When price reaches the target, a HIT label is printed—objectively confirming completion rather than relying on subjective interpretation.
Historical Target Context
Recent targets are retained on the chart, allowing traders to see how price interacts with previous objectives.
This provides valuable insight into continuation, exhaustion, or reversal behavior.
Deviation Band Context (Optional)
Mean and deviation bands offer visual context for where targets sit relative to recent price distribution.
These bands can be toggled on or off without affecting targets or confirmations.
Clean, Chart-Locked Design
All plots and labels are locked to the price scale and designed for clarity across assets and timeframes.
No repainting or future-looking values are used.
Target Ladder Pro is designed to support entries, exits, partials, and risk planning, while remaining flexible enough for scalpers, swing traders, and higher-timeframe analysts alike.
How to Use This Indicator
1. Choose Your Timeframe Focus
Enable only the target ladders that matter to your strategy (e.g., 4H + Daily for swing trading, or 1H for intraday structure).
2. Identify the Active Target
The active target represents the current volatility-based objective for price. This level updates as new candles form.
3. Watch for HIT Confirmation
When price reaches the active target, a HIT label confirms completion. This can be used for:
Profit-taking
Trade management decisions
Evaluating continuation vs. exhaustion
4. Use the Ladder for Context
Higher-timeframe targets often act as decision zones. Price behavior near these levels can signal:
Trend continuation
Compression and consolidation
Potential reaction or reversal areas
5. Optional: Enable Deviation Bands
Deviation bands provide additional context for whether targets are occurring within typical price behavior or at statistically extended levels.
Best Use Cases
Defining objective profit targets
Managing trades across multiple timeframes
Avoiding premature exits during strong trends
Identifying completed moves versus unfinished structure
Session OHLC Statistical MappingSession OHLC Statistical Mapping — Mean/Median Price Zones (Percent-Normalized)
Session OHLC Statistical Mapping plots statistically derived price zones around a session’s Open using historical behavior of that same session on a higher “mapping” timeframe (15m / 1H / 4H / Daily / Weekly).
It is designed to answer a simple question:
“Based on historical sessions, how far does price typically displace away from the open — and how far does it typically manipulate against it?”
Instead of using fixed ATR or arbitrary ranges, this tool builds zones from real distribution data collected from previous sessions, using Mean / Median / Both and optional robust estimators (including Power Mean).
What the levels mean
The indicator draws five core levels (or zones when Mean+Median are shown together):
OPEN (O) — The anchor of the session.
+DIS — “Displacement” in the direction of the session’s move (typical expansion away from open).
-DIS — Displacement on the opposite side (symmetrical reference).
-MAN — “Manipulation” zone above open (often where price runs stops/liq before moving).
+MAN — Manipulation zone below open.
DIS vs MAN logic (per historical candle):
If the session candle is bullish:
DIS = High − Open
MAN = Open − Low
If the session candle is bearish:
DIS = Open − Low
MAN = High − Open
That means DIS captures directional expansion and MAN captures the typical counter-move or wick against the open.
Why Percent Mode matters (important for multi-asset trading)
This indicator supports Points and Percent modes.
Points mode is direct and works well when your instrument is stable in price scale.
Percent mode normalizes distances by the historical session open:
𝑟
𝑖
=
𝑑
𝑖
𝑠
𝑡
𝑎
𝑛
𝑐
𝑒
𝑖
𝑜
𝑝
𝑒
𝑛
𝑖
×
100
r
i
=
open
i
distance
i
×100
Then the statistic is computed on
𝑟
𝑖
r
i
, and converted back to points using the current session open.
✅ Percent mode is usually the best choice when you trade multiple instruments (Gold, indices, FX, crypto) or when price levels change over time, because it keeps the zones comparable across regimes.
Mean vs Median (and why “Both” is powerful)
Median represents the “typical” session behavior and is more resistant to outliers.
Mean reflects the average including rare but large expansions (fat tails).
If you select Both, the indicator draws a zone between mean and median, which effectively becomes a distribution band.
Practical interpretation:
Median area = common/expected range
Mean extension = “higher probability tail events” / stretched sessions
This is especially useful in volatile markets where occasional big days pull the mean away from the median.
Robust averaging (Power Mean, RMS, EMA)
Markets often have non-normal distributions (skew, fat tails). Standard arithmetic mean can be influenced heavily by rare extreme sessions. This script allows alternative estimators:
Power Mean (p > 1): increases sensitivity to larger values in a controlled way (useful when you want zones that respect occasional expansions without fully jumping to outlier extremes).
RMS: strongly weights larger moves.
EMA: prioritizes recent behavior (good when volatility regime changes quickly).
These options let you match the zones to how the market actually behaves instead of assuming a perfect bell curve.
How to use it in trading
1) Intraday bias around the Open
If price holds above OPEN, you can treat upside zones as the primary magnet (+MAN → +DIS).
If price holds below OPEN, downside zones matter more (+MAN → -DIS).
2) Targets and take-profit mapping
A simple structured approach:
First target: nearest MAN zone
Second target: DIS zone
Extended target: mean/median extremes (if “Both” is enabled)
3) Rejection / reversal zones
MAN zones often behave like “liquidity sweep” regions:
Price runs into a MAN zone, wicks, and returns through OPEN → reversal potential.
Price enters a DIS zone and stalls → partial take profit or tighten stops.
4) Session-to-session context
Because zones are drawn for historical sessions, they can act like:
daily/weekly range expectations
contextual “where price should struggle”
systematic reference levels for day structure
Best markets to use this on
This indicator is built for anything liquid and session-driven, including:
Futures (ES, NQ, YM, CL, GC, etc.)
Great for mapping daily/4H session expansions and where stop-runs occur.
Gold (XAUUSD / GC)
Percent mode helps because gold moves in changing volatility regimes.
Forex (EURUSD, GBPUSD, USDJPY, etc.)
Percent normalization is ideal for FX pairs and long historical comparisons.
Crypto (BTC, ETH)
Works well with EMA or Power Mean when volatility shifts frequently.
Tips for best results
Start with Mapping TF = Daily, Lookback = 60.
Use Percent mode if you compare different assets or time periods.
Use Both (Mean+Median) to see distribution width and avoid overconfidence in a single number.
Use Power Mean (p ≈ 1.4–1.8) if arithmetic mean feels too tight or too distorted by outliers.
Combine with structure: previous highs/lows, session highs/lows, and rejection candles.
What this indicator is not
It does not predict direction by itself.
It’s a statistical mapping tool: it tells you where price typically expands and where it often “manipulates” around the session open.
Your edge comes from combining these zones with confirmation (market structure, orderflow, volume, candlesticks, etc.).
TPO Profile by Vanya_zvwey
⚡️ This is a professional-grade Time Price Opportunity (TPO) indicator, also known as Market Profile, designed for serious auction market theory analysis.
Unlike standard TPO indicators that often slow down the chart or suffer from visual glitches ("ghosting") when parameters change, this engine is built on a Delayed Rendering Architecture with aggressive Garbage Collection. It ensures a clean chart and maximum performance.
🔥 Key Features:
1. Smart History & Skeleton Mode (Unique):
• Pine Script has a strict limit on drawing objects (boxes). To bypass this, this indicator uses a Reverse Rendering algorithm.
• It draws the most recent profiles first. Once the drawing limit (500 blocks budget) is reached, it automatically switches older profiles to "Skeleton Mode".
• Skeleton Mode displays only the essential levels (POC, VAH/VAL, Poor H/L, IB) without the heavy blocks, allowing you to see months of history without crashing the script.
2. Advanced Auction Logic:
• Split Profiles: Visualizes TPO using Blocks, Letters (A-Z), or Split text.
• Single Prints: Highlights areas of rapid price movement (inefficiencies) with a distinct color.
• Buying/Selling Tails: Automatically detects and colors long wicks at profile extremes indicating rejection.
• Poor High/Low: Detects flat auction extremes (no rejection) and marks them with dashed lines, suggesting potential revisit levels.
3. Key Levels:
• POC (Point of Control): The price level with the most time spent. Includes an "Extend" feature until tested.
• Value Area (VA): Highlights the 68% (customizable) range of trading activity.
• Initial Balance (IB): Vertical line marking the first hour of the session (configurable).
4. Anti-Ghosting System:
• Includes a hard-coded Garbage Collector that wipes old drawings before every new frame. No more overlapping blocks or visual artifacts when changing settings.
⚙️ Settings Guide:
• Main Settings:
• Session Mode: Choose "Full Day" or "Custom Window" (e.g., for RTH sessions).
• Block Size: Define the TPO resolution (5m, 30m, etc.).
• Row Mode: "Auto" adjusts tick size automatically based on volatility (recommended). "Manual" allows fixed tick precision.
• History Range:
• Auto (Smart): Optimizes for performance. Shows full blocks for recent days and lines for history (up to 30 days).
• Manual: Allows you to specify the exact number of days to look back (still respects the smart box limit).
• Visuals:
• Customize colors for the Profile Body, Single Prints, Tails, and POC.
• Toggle Text modes (Letters, Blocks, or Squares).
• Value Area & Other Visuals:
• Enable/Disable VA Lines, Poor High/Low markers, and Initial Balance.
• Extend POC: Extends the naked Point of Control line forward until price touches it.
Tips for Usage:
• If you see older profiles turning into lines (Skeleton), this is the Smart Optimization working to keep your chart fast.
• For the best visual experience, hide the native candlesticks or make them transparent if you want to focus solely on the TPO structure.
📈 Trading tips — practical uses
- POC often acts like a magnet — when price comes to a naked POC, pay attention for either a test (confirmation) or a failure (rejection).
- Value Area shows where the market agreed on price; if price leaves the VA with follow-through, that’s often the start of a trend; if it returns, that often signals rejection.
- Single prints are low-volume corridors — they can be quick highways for price or targets for pullbacks.
- Tails are classic rejection signs; retests of tail zones are frequently used for entries or stops.
- Poor High and Poor Low mark weak extremes — they have a high chance to be revisited, so keep them on your watchlist.
⸻ 🇺🇦 Part 2: Ukrainian Description
⚡️ Короткий опис
Це професійний інструмент для побудови TPO (Time Price Opportunity), також відомого як Ринковий Профіль (Market Profile). Швидко рендерить, дає чисту візуалізацію, показує детальні останні профілі і компактні історичні «скелети», щоб ви могли торгувати, а не боротися з лагами графіка.
На відміну від стандартних індикаторів, які часто гальмують термінал або залишають візуальні артефакти ("привидів") при зміні налаштувань, цей скрипт побудований на архітектурі Відкладеного Рендерингу (Delayed Rendering) з агресивною системою очищення пам'яті (Garbage Collection). Це гарантує чистоту графіка та максимальну швидкодію.
🔥 Ключові можливості:
1. Розумна Історія та Режим "Скелет" (Унікально):
• Pine Script має ліміт на кількість об'єктів (блоків). Щоб обійти це, індикатор використовує алгоритм Зворотного Рендерингу.
• Він малює найсвіжіші профілі першими (справа наліво). Як тільки ліміт малювання (бюджет у 500 блоків) вичерпується, старіші профілі автоматично перемикаються в "Режим Скелета".
• Режим Скелета відображає лише ключові рівні (POC, VAH/VAL, Poor H/L, IB) без важких блоків. Це дозволяє бачити історію за 30+ днів без помилок переповнення пам'яті.
2. Просунута Логіка Аукціону:
• Візуалізація: Блоки, Літери (A-Z) або розділені стовпці.
• Single Prints: Підсвічує зони швидкого руху ціни (неефективності) окремим кольором.
• Buying/Selling Tails: Автоматично виявляє та зафарбовує "хвости" на екстремумах профілю, що вказує на відторгнення ціни.
• Poor High/Low: Виявляє "слабкі" екстремуми (без чіткого відторгнення) і позначає їх пунктирною лінією як потенційні цілі для повернення.
3. Ключові Рівні:
• POC (Point of Control): Рівень ціни, де ринок провів найбільше часу. Функція "Extend" продовжує лінію вправо, доки ціна її не протестує.
• Value Area (VA): Виділяє зону, де відбулося 68% (налаштовується) торгів.
• Initial Balance (IB): Вертикальна лінія першої години торгів (налаштовується).
4. Система Anti-Ghosting:
• Вбудований збирач сміття (Garbage Collector) видаляє старі малюнки перед кожним оновленням кадру. Жодних накладання блоків або зависання об'єктів.
⚙️ Гід по налаштуваннях:
• Main Settings (Основні):
• Session Mode: "Full Day" (весь день) або "Custom Window" (наприклад, для торгової сесії США).
• Block Size: Розмір блоку TPO (5m, 30m і т.д.).
• Row Mode: "Auto" автоматично підбирає крок ціни (рекомендовано). "Manual" дозволяє вручну задати точність у тіках.
• History Range:
• Auto (Smart): Оптимізація швидкодії. Показує повні блоки для останніх днів і лінії для історії (до 30 днів).
• Manual: Дозваляє вручну задати кількість днів (але "розумний ліміт" блоків все одно діятиме для захисту пам'яті).
• Visuals (Візуал):
• Налаштування кольорів тіла профілю, Single Prints, хвостів та POC.
• Вибір режиму тексту (Тільки літери, Блоки або Квадрати).
• Value Area & Other Visuals:
• Увімкнення ліній VA, Poor High/Low та Initial Balance.
• Extend POC: Продовжує лінію POC вправо.
Порада:
• Якщо ви бачите, що старі профілі зліва перетворилися на лінії (Скелет) — це працює Smart Optimization, щоб ваш графік залишався швидким.
• Для найкращого вигляду рекомендується сховати стандартні японські свічки або зробити їх прозорими.
📈 Торгові поради
- POC — магніт; тест дає підтвердження або відторгнення.
- VA — зона згоди ринку; вихід із неї з підтвердженням часто означає рух.
- Single Prints — коридори для швидких рухів або цілі для повернень.
- Tails — відторгнення; ретест часто дає setup.
- Poor High/Low — часті цілі для повернення.
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.
Reversal SMC Suite ProThe Reversal SMC Suite is an intraday Smart Money Concepts toolkit designed to help traders visually analyze structure, imbalances, and displacement during trending or volatile sessions. This script combines multiple SMC elements—reversals, order blocks, FVGs, HTF bias, and pivot-based support/resistance—into one organized framework to support decision-making.
This indicator does not generate buy or sell signals and does not guarantee results. It is strictly a charting and visualization tool intended to help traders study market behavior.
🔍 Key Features
1. Reversal Detection
Swing Failure Pattern (SFP)
Bullish/Bearish Engulfing
Momentum candle detection (ATR-based)
Optional unified “reversal” signal
Visual arrows and reversal blocks
These are designed to highlight potential turning points based on price behavior—not to predict or guarantee outcomes.
2. HTF Trend Filter
Optional higher timeframe EMA/SMA filter
Customizable HTF resolution
Bias modes: Long only / Short only / Both
This helps you align lower-timeframe reversals with broader market context.
3. Dynamic Order Blocks
Automated OB detection (Body, Wick, or Hybrid)
Smart mitigation logic (body-based or wick-based)
Configurable lookback and OB count
Optional ATR body-size filter for OB quality
Real-time mitigation removal
These tools help visualize areas of interest where price previously showed displacement.
4. Fair Value Gaps (FVG)
Automatic gap detection
Optional FVG extension until filled
Per-side max FVG limit
Useful for identifying imbalance zones and measuring how price revisits inefficiencies.
5. Support / Resistance
Pivot-based S/R with left/right bar settings
Auto-drawing with customizable line counts
Optional S/R visibility toggle
🎛 Presets Included
Several visual configurations are included for convenience:
Custom / Manual (default)
Intraday ORB 5–15m (optimized for fast futures charts)
Clean SMC (Trend + OB)
FVG + OB Combo
Presets adjust inputs automatically to give new users cleaner starting points.
🧠 How To Use
This script is meant to be paired with any strategy or workflow that benefits from:
visual structure analysis,
HTF/LTF alignment,
OB + FVG context, or
intraday trend identification.
It does not replace risk management, strategy rules, or trade planning.
⚠️ Important Notes / Disclaimer
This indicator does not generate trading signals.
No part of this script guarantees profitable outcomes.
It is for educational and informational purposes only.
Always perform your own analysis and use proper risk management.
Past market behavior does not guarantee future results.
Sessions + Prev + PDH/PDL + Killzones SuiteDescription
This indicator is designed to provide time-based and price-based market context by combining session ranges with commonly referenced prior levels into a single, unified framework.
The purpose of the script is contextual analysis, not signal generation.
What the script does
The script tracks and plots the following elements directly on the price chart:
• High and Low ranges for multiple trading sessions (Asia, London, New York morning, and New York afternoon)
• High and Low levels from the previous occurrence of each session
• Prior Day High (PDH) and Prior Day Low (PDL)
• Optional session “killzone” boxes that visually mark active session time windows
All calculations are performed using time-based session boundaries and price extrema (high/low) within those windows.
Why these components are combined
Sessions, previous session levels, and prior day levels are frequently analyzed together by discretionary traders because they represent:
• Where liquidity formed earlier in the day or previous day
• Where price previously paused, expanded, or reversed
• Natural reference points for intraday structure and range analysis
Instead of plotting these elements using multiple separate scripts, this indicator integrates them into one consistent framework so that all levels are calculated using the same timezone, session logic, and display rules.
This avoids mismatched session times, duplicate levels, or conflicting calculations that can occur when multiple scripts are used simultaneously.
How the script works (high-level)
• Each session is defined using user-selectable session times and timezone
• During a session, the script tracks the highest and lowest traded price
• When a session ends, its final high and low are stored as the “previous session” levels
• PDH and PDL are calculated using the completed trading day
• Lines and labels are anchored to the bars where levels are formed, rather than extending indefinitely
• Optional display filters allow users to show only the current trading day to reduce chart clutter
No forward-looking logic, prediction, alerts, or trade execution logic is included.
How to use it
This script is intended to be used as a visual reference tool to help traders:
• Identify session boundaries and intraday ranges
• Observe how price reacts near prior session highs and lows
• Assess where price is trading relative to PDH and PDL
• Maintain consistent session timing across different timezones
The script does not provide trade entries, exits, alerts, or performance claims.
Important notes
• This indicator does not generate buy or sell signals
• It does not predict future price movement
• It is not a trading strategy
• All decisions remain the responsibility of the user
Disclaimer
This script is provided for educational and informational purposes only.
It does not constitute financial advice. Trading involves risk, and users should apply appropriate risk management and personal judgment when using any technical tool.
HTF Candles + Daily True Open + Session Levels AlaaHTF candles overlay with Daily True Open and session-based levels for price action traders.
═══ HTF CANDLES ═══
- Display up to 10 higher timeframe candles on the right side of your chart
- Select any timeframe (15m, 1H, 4H, 6H, Daily, Weekly, Monthly)
- Adjustable candle width and spacing
- Custom colors for bull/bear candles
═══ DAILY TRUE OPEN (DTO) ═══
- Marks the daily open at 00:00 New York time
- Custom text label at line start
- Adjustable line style and color
═══ SESSION LEVELS ═══
- Draw High, Mid, Low lines from any session candle
- Select any timeframe and hour (0-23)
- Choose from 13 timezones (NY, London, Tokyo, Riyadh, etc.)
- Track specific sessions like London Open, NY Open, Asia Open
═══ ALERTS ═══
- New Daily True Open
- Price crosses Daily True Open
- New HTF candle formed
Ideal for ICT, SMC, and price action trading.
Intervalo de la confianzaIntervalo de la confianza de varias temporaliades usando VWMA.
-Medir el FOMO y el FUD
Triple EMA IndicatorSimple EMA with 3 indicators in 1 so you don't occupy 3 indicator space in one place
SPY and QQQ wave candlestick pattern indicatorThis script will give a buy and sell signal after 3+ bearish bars followed by 3+ bullish bars. This can be used in the indexes to track when the market is in a wave pattern for good range trades. The signal triggers at the candle close of the formation.
Als Bar CountBar counting indicator with session-based reset. Useful for debugging
and referencing specific bars across trading sessions.
Fractal Candle IndicatorFractal Candle Indicator - Higher Timeframe Candles on Lower Timeframes
Overview
This indicator visualizes higher timeframe candles directly on your current chart, allowing you to see the "bigger picture" while analyzing lower timeframe price action. Instead of switching between charts, you can watch 4-hour, 1-hour, or other fractal candles build in real-time on your 5-minute or 1-minute chart.
Key Features
📊 Multiple Timeframe Options:
15 minutes
30 minutes
1 Hour
4 Hours
Daily (6 PM to 6 PM NY time)
🎨 Visual Design:
Rectangle Body: Represents the candle body (open to close)
Separate Wicks: Upper wick (high to body top) and lower wick (body bottom to low)
Color-Coded: Green for bullish candles, red for bearish candles
Proportional Width: Candles span the exact number of bars they represent
Customizable: Border width, wick width, and colors fully adjustable
🎯 Smart Filtering:
Show All Mode (default): Displays all fractal candles throughout the trading day
Specific Time Filter: Focus on specific hourly candles (e.g., only show 10 AM candles) plus the candle immediately before it
⏰ Market-Aware:
All times aligned to New York timezone
Trading day starts at 6:00 PM NY time (futures market open)
Special handling for market close: The 2 PM 4H candle correctly ends at 5 PM (3 hours) instead of extending to 6 PM
📈 Real-Time Updates:
Current candle updates dynamically as price moves
Completed candles remain static on the chart
See up to 500 bars of historical fractal candles
Use Cases
For Day Traders:
Watch 4H candles build while scalping on 5m charts
Identify key support/resistance levels from higher timeframes
Stay aware of larger timeframe structure without chart switching
For Swing Traders:
Monitor daily candles on 1H charts for precise entries
Track session-based price action (Asia, London, NY sessions)
For ICT/SMC Traders:
Analyze specific time candles (6 AM, 10 AM, 2 PM kill zones)
See how price behaves during institutional trading hours
Identify power of 3 or smart money cycles
How to Use
Select Your Fractal Timeframe: Choose which higher timeframe candle to display (15m, 30m, 1H, 4H, Daily)
Optional Time Filter: Enable "Show Specific Time Candle Only" to focus on particular hourly candles (great for kill zone analysis)
Customize Appearance: Adjust colors, border width, and wick width to match your chart theme
Interpret the Structure:
Rectangle = candle body (open to close)
Lines above/below = wicks (highs and lows)
Width = actual time span of that candle
Technical Notes
Maximum 500 bars of history due to Pine Script drawing limitations
Candles automatically scale to your current chart timeframe
Works on any symbol and timeframe
4H candles align to: 6 PM, 10 PM, 2 AM, 6 AM, 10 AM, 2 PM (NY time)
Why This Indicator?
Most traders lose context when zooming into lower timeframes. This indicator keeps you grounded in the bigger picture by literally showing you the higher timeframe candles as they form, helping you avoid low-probability trades that go against the larger trend or structure.
Perfect for: ICT traders, Smart Money Concept traders, Multi-timeframe analysis, Session-based trading, Kill zone strategies
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.
Rejection Block Pro+ [TakingProphets]REJECTION BLOCK PRO+
Rejection Block Pro+ detects and plots wick-only sweeps of liquidity (BSL/SSL) and converts them into actionable
Rejection Block zones with optional quadrant levels and HTF projection.
This tool is built for traders who want clean, rule-based rejection zones that only print when a sweep occurs
without a candle body acceptance through the level.
-----------------------------------------------------------------------------------------------
IMPORTANT NOTE: ORIGINAL RB INDICATOR VS THIS VERSION
-----------------------------------------------------------------------------------------------
We already have an existing Rejection Block indicator published on TradingView.
- That original Rejection Block script is being kept live and functioning exactly as it currently does
- We are not modifying the legacy logic or changing its behavior
- This new script is being released separately as "Rejection Block Pro+"
- Pro+ uses different detection logic, object management, and higher timeframe projection behavior
Reason:
- This update was requested specifically so traders can keep using the legacy RB tool unchanged
while also gaining access to a separate RB version with expanded functionality and cleaner HTF logic
If you have the old RB saved on your charts:
- You can continue using it with no changes
- Add Rejection Block Pro+ as a separate indicator when you want the newer behavior
-----------------------------------------------------------------------------------------------
CORE CONCEPT
-----------------------------------------------------------------------------------------------
Rejection Blocks are created when price sweeps a liquidity level using the wick only.
Wick-only sweep definition:
- BSL wick sweep (bearish rejection block)
- high trades above the level
- candle body remains fully below the level
- condition: high > level AND max(open, close) < level
- SSL wick sweep (bullish rejection block)
- low trades below the level
- candle body remains fully above the level
- condition: low < level AND min(open, close) > level
This prevents "accepted" breaks from generating rejection zones and keeps the output strict.
-----------------------------------------------------------------------------------------------
WHAT THIS INDICATOR DISPLAYS
-----------------------------------------------------------------------------------------------
Current Timeframe Rejection Blocks
- Automatically detects BSL/SSL pivot liquidity using ICT-style pivots
- Monitors those levels for wick-only sweeps
- When a wick-only sweep occurs, a rejection block box is created and extended forward
- Boxes invalidate when price breaks the rejection extreme
Higher Timeframe Rejection Blocks (HTF Projection)
- Optionally projects higher timeframe rejection blocks onto your lower timeframe chart
- HTF boxes only form after the HTF candle is confirmed closed (prevents early HTF repaint behavior)
- Supports up to 3 HTF sources (ex: 5m / 15m / 1h)
- Optional timeframe tag text rendered on each HTF box (bottom-right)
Quadrant Levels (0% / 25% / 50% / 75% / 100%)
- Optional horizontal levels drawn inside each box
- Each level has independent toggles:
- show/hide
- style (solid/dashed/dotted)
- width (thin/medium/thick)
- optional label
- Designed to support execution models that reference internal retracement levels of the rejection zone
-----------------------------------------------------------------------------------------------
MODEL FLOW
-----------------------------------------------------------------------------------------------
Step 1: Liquidity Level Detection (Pivot Levels)
- A pivot strength setting controls how BSL/SSL levels are formed
- More sensitive → more levels → more potential rejection blocks
- Strict → fewer levels → higher quality structure levels
Step 2: Wick-Only Sweep Validation
- When price trades beyond a level:
- if wick-only condition is true → create a rejection block
- regardless of outcome → the level is removed (prevents repeat triggering)
Step 3: Box Creation + Extension
- A rejection block box is created using wick + body boundaries
- Box extends forward in real-time until invalidated
Step 4: Invalidation
- Bearish rejection blocks invalidate if price breaks above the rejection extreme
- Bullish rejection blocks invalidate if price breaks below the rejection extreme
- When invalidated, the box and associated quadrant objects are deleted
Step 5: Visibility Control (Noise Management)
- Current timeframe: keeps only the closest N bullish and closest N bearish blocks
- HTF: per timeframe, keeps only the closest N bullish and closest N bearish blocks
- This prevents charts from being flooded with old rejection zones
-----------------------------------------------------------------------------------------------
SETTINGS GUIDE
-----------------------------------------------------------------------------------------------
General
- Swing strength
- Sensitive = pivot strength 1
- Normal = pivot strength 3
- Strict = pivot strength 6
- Maximum visible RBs per timeframe
- Controls how many bullish and bearish blocks remain visible per HTF source
Higher Timeframes
- Current Timeframe toggle
- If off, disables all current timeframe rejection blocks and clears existing drawings
- HTF1 / HTF2 / HTF3
- Enable and choose a timeframe for each projection source
- HTF colors
- Separate bullish and bearish colors per HTF source
- Timeframe label on box
- Displays source timeframe tag inside the HTF boxes
Visual
- Remove box fill
- Makes fill invisible while keeping the box border
- Quadrants
- Master toggle plus per-quadrant toggles for 0/25/50/75/100
Alerts
- Enable alerts
- Session windows (New York time)
- Session 1 / Session 2 / Session 3
- Bullish rejection block alert
- Bearish rejection block alert
- Alert templates support:
- {{symbol}} for ticker
- {{tf}} for timeframe tags
-----------------------------------------------------------------------------------------------
HOW TO USE (PRACTICAL)
-----------------------------------------------------------------------------------------------
- Use Sensitive swing strength if you want frequent rejection zones for scalping
- Use Normal for a balanced approach
- Use Strict if you only want major structure sweeps
Suggested workflows:
- LTF execution with HTF rejection block context:
- Enable HTF1 (ex: 5m) and HTF2 (ex: 15m)
- Keep max visible RBs per timeframe = 1 or 2
- Use quadrant 50% as your primary reaction/decision level
If you want the cleanest chart:
- Enable Remove box fill
- Leave only 50% or 25/50/75 quadrants enabled
- Disable 0% and 100% labels
-----------------------------------------------------------------------------------------------
ALERTS
-----------------------------------------------------------------------------------------------
Alerts trigger when a new rejection block is created (current TF and/or HTF projections).
Alerts can be restricted to session windows using New York time sessions.
Notes:
- HTF alerts are only produced after HTF bars confirm
- This prevents early/partial HTF triggers on lower timeframe charts
-----------------------------------------------------------------------------------------------
DISCLAIMER
-----------------------------------------------------------------------------------------------
This indicator is provided for educational and analytical purposes only.
It does not constitute financial advice.
Trading involves risk, and past performance is not indicative of future results.
© TakingProphets
-----------------------------------------------------------------------------------------------
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)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}






















