Volume Profile - Density of Density [DAFE]Volume Profile - Density of Density
The Art & Science of Market Architecture: An AI-Enhanced Volume Profile & Order Flow Engine with a Revolutionary Visualization Core.
█ PHILOSOPHY: BEYOND THE PROFILE, INTO THE DENSITY
Standard Volume Profile shows you a one-dimensional story: where volume was traded. It shows you the first layer of density. But this is like looking at a galaxy and only seeing the stars, completely missing the gravitational forces, the dark matter, and the nebulae that give it structure.
Volume Profile - Density of Density (VP-DoD) is a revolutionary leap forward. It was engineered to analyze the second order of market data: the properties of the density itself . We don't just ask "Where did volume trade?" We ask " Why did it trade there? What was the character of that volume? What is the statistical significance of its shape? What is the probability of what happens next?"
This is a complete, institutional-grade analytical framework built on the DAFE principle: Data Analysis For Execution . It fuses a higher-timeframe structural engine, a proprietary microstructure delta engine, and a Bayesian AI into a single, cohesive intelligence system. It is designed to transform your chart from a flat, lagging record of the past into a living, three-dimensional map of market structure and intention.
█ WHAT MAKES VP-DoD ULTIMATE UNLIKE ANY OTHER PROFILE TOOL?
This is not just another volume profile script. It stands apart due to a suite of proprietary features previously unseen on this platform.
Higher Timeframe (HTF) Core: While other profiles are trapped by the noise of your current chart, VP-DoD builds its foundation on a higher timeframe of your choice (e.g., Daily data on a 15m chart). This is its greatest strength. It filters out intraday noise to reveal the true, macro architectural levels where institutions have built their positions.
Microstructure Hybrid Delta Engine: Standard delta is primitive. Our engine provides a far more accurate picture of order flow by simulating tick data and analyzing the battle between candle bodies (aggression) and wicks (absorption). It sees the hidden story inside the volume.
Bayesian AI Confidence Model: This is not a simple weighted score. VP-DoD incorporates a genuine Bayesian inference model. It starts with a neutral "belief" about the market and continuously updates its Bullish/Bearish Confidence percentage based on new evidence from delta, POC velocity, and price action. It thinks like a professional quant, providing you with a real-time statistical edge.
Advanced Statistical Analysis: It calculates metrics found nowhere else, such as Profile Entropy (a measure of market disorder) and Volatility Skew (a measure of fear vs. greed from the derivatives market), and normalizes them with Z-Scores for universal applicability.
Revolutionary Visualization Engine: Data should be intuitive and beautiful. VP-DoD features 14 distinct, animated, and theme-aware rendering modes . From "Nebula Plasma" and "Liquid Metal" to "DNA Helix" and "Constellation Map," you can transform raw data into interactive data art, allowing you to perceive market structure in a way that resonates with your unique analytical style.
█ THE ART OF ANALYSIS: A REVOLUTIONARY VISUALIZATION CORE
Data is useless if it isn't intuitive. VP-DoD shatters the mold of boring, static indicators with a state-of-the-art visualization engine. This is where data analysis becomes data art.
The Profile Itself: 14 Modes of Perception
Choose how you want to see the market's architecture:
Nebula Plasma & Quantum Matrix: Futuristic, cyberpunk aesthetics with vibrant glow effects that make HVNs and POCs pulse with energy.
Thermal Vision & Heat Shimmer: Renders the profile as a heatmap, instantly drawing your eye to the "hottest" zones of institutional liquidity.
Liquid Metal & Crystalline: Creates a tangible, almost physical representation of volume with metallic sheens, animated light flows, and faceted structures.
3D Depth Map & Prismatic Refraction: Uses layering and color channel separation to create a stunning illusion of depth, separating the profile into its core components.
Particle Field & Constellation Map: Abstract, beautiful data art modes that represent volume as animated particles or glowing stars, connecting major nodes like celestial bodies.
DNA Helix & Magnetic Field: Dynamic, animated modes that visualize the forces of attraction and repulsion around the POC and Value Area, representing the market's underlying code.
The POC & Value Area: A Living, Breathing Structure
The POC and VA are no longer static lines. They are a dynamic, interactive system designed for immediate contextual awareness:
Multi-Layered Glow Effects: The POC and VA lines are rendered with multiple layers of glowing, pulsating light, giving them a vibrant, three-dimensional presence on your chart.
Dynamic Labels & Badges: Each key level (POC, VAH, VAL) features an advanced label block showing not just the price, but the real-time distance from the current price, and a status badge (e.g., "▲ ABOVE", "◆ INSIDE") that changes color and text based on price interaction.
Intelligent Color Adaptation: The color of the VAH and VAL lines dynamically changes. A VAH line will glow bright green when price is breaking above it, but will appear dim and neutral when price is far below it, providing instant visual cues about market context.
█ ACTIONABLE INTELLIGENCE: THE SIGNAL & ALERT SYSTEM
VP-DoD is not just an analytical tool; it's a complete trading framework with a built-in, context-aware signal system.
Absorption/Distribution Signals (🏦): The "Whale Signal." Triggers when price and delta are in stark divergence, indicating large passive orders are absorbing the market—a classic institutional maneuver.
Coiling Signals (⚡): A high-probability setup that alerts you when the market is compressing (VA contracting, low entropy), storing energy for a significant breakout.
POC Shift & VA Breakout Signals: Trend-initiation signals that fire when value is migrating and the market breaks out of its established balance area with conviction.
Delta Extreme Signals: Contrarian reversal signals that detect capitulation at the extremes of buying or selling pressure, often marking key turning points.
█ THE DASHBOARD: YOUR INSTITUTIONAL COMMAND CENTER
The professional-grade dashboard provides a real-time, comprehensive overview of the market's hidden state.
Market Regime: Instantly know if the market is BALANCED, COILING, TRENDING , or VOLATILE .
Advanced Metrics: Monitor Entropy (disorder), Volatility Skew (fear/greed), and a composite Risk Score .
Institutional Score: See the calculated Liquidity Score and Conviction Level , grading the quality of the current market structure.
Bayesian AI: The crown jewel. See the real-time, AI-calculated Bull vs. Bear Confidence percentages, giving you a statistical edge on the probable direction of the next move.
Breakout Gauge: A forward-looking metric that calculates the Breakout Probability and its likely Bias (Bullish/Bearish).
█ DEVELOPMENT PHILOSOPHY
VP-DoD Ultimate was created out of a passion for revealing the hidden architecture of the market. We believe that the most profound truths are found at the intersection of rigorous science and intuitive art. This tool is the culmination of thousands of hours of research into market microstructure, statistical analysis, and data visualization. It is for the trader who is no longer satisfied with lagging indicators and seeks a deeper, more contextual understanding of the market auction. It is for the trader who believes that analysis should be not only effective but also beautiful.
VP-DoD Ultimate is designed to help you ride the trend with confidence, but more importantly, to give you the data-driven intelligence to anticipate that final, critical bend.
█ DISCLAIMER AND BEST PRACTICES
CONTEXT IS KING: This is an advanced contextual tool, not a simple "buy/sell" signal indicator. Use its intelligence to frame your trades within your own strategy.
RISK MANAGEMENT IS PARAMOUNT: All trading involves substantial risk. The signals and levels provided are based on historical data and statistical probability, not guarantees.
HTF IS YOUR GUIDE: For the highest probability setups, use the HTF feature (e.g., 240m or Daily) to identify macro structure. Then, execute trades on a lower timeframe based on interactions with these key macro levels.
ALIGN WITH THE REGIME: Pay close attention to the "Regime" and "Entropy" readouts on the dashboard. Trading a breakout strategy during a high-entropy "RANGING" regime is a low-probability endeavor. Align your strategy with the market's current state.
"The trend is your friend, except at the end where it bends."
— Ed Seykota, Market Wizard
Taking you to school. - Dskyz, Trade with Volume. Trade with Density. Trade with DAFE
Penunjuk dan strategi
Table_UtilsLibrary "Table_Utils"
Enhanced Table Utilities for Professional Dashboards V2.0
get_position(posStr)
Convert string to position constant
Parameters:
posStr (string) : User-selected position string
Returns: Pine Script position constant
get_size(sizeStr)
Convert string to size constant
Parameters:
sizeStr (string) : User-selected size string
Returns: Pine Script size constant
get_theme_color(scheme, colorType)
Get color from predefined palette
Parameters:
scheme (string) : Palette name: "Cyberpunk", "Professional", "Pastel", "Dark"
colorType (string) : Color role: "bull", "bear", "neutral", "bg", "border"
Returns: Color value
create_dashboard(posStr, cols, rows, scheme)
Create standard dashboard table with preset styling
Parameters:
posStr (string) : Position string
cols (int) : Number of columns
rows (int) : Number of rows
scheme (string) : Color scheme name
Returns: Configured table object
add_header_cell(tbl, col, row, text_, scheme)
Add header cell with preset styling
Parameters:
tbl (table) : Table object
col (int) : Column index
row (int) : Row index
text_ (string)
scheme (string) : Color scheme
add_data_cell(tbl, col, row, text_, value, scheme)
Add data cell with conditional coloring
Parameters:
tbl (table) : Table object
col (int) : Column index
row (int) : Row index
text_ (string)
value (float) : Numeric value for color coding
scheme (string) : Color scheme
format_number(value, decimals)
Format number with appropriate suffix (K, M, B)
Parameters:
value (float) : Number to format
decimals (int) : Number of decimal places
Returns: Formatted string
format_percentage(value)
Format percentage with sign
Parameters:
value (float) : Percentage value (as decimal, e.g., 0.05 = 5%)
Returns: Formatted string with % symbol
Consolidation zones + BreakoutThis Pine Script v6 indicator is designed to detect consolidation zones and mark breakout entries (long or short) when price exits those zones.
Indicator purpose
Identify periods where price moves in a tight range for several consecutive bars (consolidation).
Highlight those zones on the chart with a yellow shaded area between the local high and low.
Mark potential LONG and SHORT entries when price breaks out of a consolidation zone.
Core consolidation logic
The indicator measures whether the market is “compressed” by comparing the price range of recent bars with volatility measured via ATR:
It computes the highest high and lowest low of the last lookback bars:
rangeHigh = ta.highest(high, lookback)
rangeLow = ta.lowest(low, lookback)
It calculates the current range:
rng = rangeHigh - rangeLow
It calculates ATR over atrLen bars as a volatility benchmark:
atrVal = ta.atr(atrLen)
It defines a compressed range (base consolidation) when the range is smaller than a multiple of ATR:
baseConso = rng < atrVal * atrMult
Here, atrMult controls how tight the range must be. Lower values (0.8–1.0) require strong compression; higher values (1.5–2.0) are more permissive.
Minimum bars in consolidation
To avoid calling a very short pause a consolidation, the script enforces a minimum duration:
It uses ta.barssince(not baseConso) to count how many bars have passed since the last time the consolidation condition was false.
If that count is greater than or equal to minBars, the market is considered to be in consolidation:
text
isConsolidating = ta.barssince(not baseConso) >= minBars
This prevents 2–3 sideways bars from being treated as a full consolidation zone. The minBars input lets you adapt the duration to your timeframe and trading style.
Plotting the consolidation zone
When isConsolidating is true, the script shades the consolidation area:
It plots two invisible series for the zone’s high and low:
text
pHigh = plot(rangeHigh, display = display.none)
pLow = plot(rangeLow, display = display.none)
It creates a yellow semi‑transparent fill between those lines only while in consolidation:
text
fillColor = isConsolidating ? color.new(#ffeb3b, 80) : color.new(#ffeb3b, 100)
fill(pHigh, pLow, color = fillColor, title = "Consolidation Zone")
Outside consolidation, the color becomes almost fully transparent so the shaded zone disappears. This keeps the chart clean and focuses attention on the actual ranges.
Breakout detection (LONG / SHORT)
The script then looks for breakouts when price leaves a consolidation zone:
It checks if the previous bar was inside consolidation:
wasConso = isConsolidating
A bullish breakout (LONG) occurs when:
The current bar is no longer in consolidation (not isConsolidating).
The previous bar was in consolidation (wasConso).
The close breaks above the previous consolidation high (close > rangeHigh ):
text
breakLong = not isConsolidating and wasConso and close > rangeHigh
A bearish breakout (SHORT) occurs when:
The current bar is no longer in consolidation.
The previous bar was in consolidation.
The close breaks below the previous consolidation low (close < rangeLow ):
text
breakShort = not isConsolidating and wasConso and close < rangeLow
On each breakout, a label is drawn at the breakout bar:
text
if breakLong
label.new(bar_index, low, "LONG",
style = label.style_label_up,
textcolor = color.white,
color = color.new(color.teal, 0),
size = size.tiny)
if breakShort
label.new(bar_index, high, "SHORT",
style = label.style_label_down,
textcolor = color.white,
color = color.new(color.red, 0),
size = size.tiny)
These labels highlight where price transitions from sideways action to a potential directional move.
User inputs and tuning
lookback (Bars for range)
Number of bars used to compute the consolidation high/low. Higher values produce wider, less frequent zones; lower values detect shorter consolidations.
minBars (Minimum bars in consolidation)
Minimum number of consecutive bars that must meet the compression condition. On 15‑minute charts, values between 6 and 12 often work, but this depends on the asset.
atrLen and atrMult
Control how strict the compression rule is.
atrLen: ATR period.
atrMult: maximum allowed range as a multiple of ATR.
Increasing atrMult finds more zones; decreasing it makes the filter stricter.
showText
Optional helper label with a short description, useful when sharing the script with other users on the TradingView community.
Practical usage
Apply the indicator to your preferred timeframe (for example, 15‑minute crypto charts).
Tweak lookback, minBars, and atrMult until the yellow zones match the consolidations you would mark manually.
Use the LONG and SHORT labels as areas of interest for studying range breakouts and building your own entry/exit rules, always combining them with risk management and a complete trading strategy.
This way, the script turns a visual concept—sideways consolidation followed by breakout—into a systematic, testable signal in Pine Script v6.
Sequential 9(Setup Count)- KoRCThis indicator is a simplified Sequential 9-count (Setup 9) tool inspired by widely known “sequential counting” concepts. It detects potential exhaustion points by counting consecutive closes relative to the close 4 bars earlier:
Buy Setup (DIP): close < close for 9 consecutive bars (optional strict mode: <=)
Sell Setup (TOP): close > close for 9 consecutive bars (optional strict mode: >=)
Enhancements / Filters (optional):
Trend filter (default ON): uses EMA(200) as a macro trend filter and EMA(20) as a fast context filter.
Volatility filter (optional): ignores signals in low-volatility regimes using ATR% threshold.
Dedupe (default ON): prevents repeated signals within a short window (one-shot per swing concept).
Perfected highlight:
Signals are visually emphasized when a simple “perfected” condition is met (bar 8 or 9 extends beyond recent reference highs/lows), displayed with brighter colors.
How to use:
Use DIP/TOP labels as potential exhaustion alerts, not standalone trade signals. Combine with your own risk management and confirmation tools.
Disclaimer:
Not affiliated with or endorsed by any third-party. This script is provided for educational/visualization purposes only and does not constitute financial advice.
Sequential 9(Setup Count)- KoRCThis indicator is a simplified Sequential 9-count (Setup 9) tool inspired by widely known “sequential counting” concepts. It detects potential exhaustion points by counting consecutive closes relative to the close 4 bars earlier:
Buy Setup (DIP): close < close for 9 consecutive bars (optional strict mode: <=)
Sell Setup (TOP): close > close for 9 consecutive bars (optional strict mode: >=)
Enhancements / Filters (optional):
Trend filter (default ON): uses EMA(200) as a macro trend filter and EMA(20) as a fast context filter.
Volatility filter (optional): ignores signals in low-volatility regimes using ATR% threshold.
Dedupe (default ON): prevents repeated signals within a short window (one-shot per swing concept).
Perfected highlight:
Signals are visually emphasized when a simple “perfected” condition is met (bar 8 or 9 extends beyond recent reference highs/lows), displayed with brighter colors.
How to use:
Use DIP/TOP labels as potential exhaustion alerts, not standalone trade signals. Combine with your own risk management and confirmation tools.
Disclaimer:
Not affiliated with or endorsed by any third-party. This script is provided for educational/visualization purposes only and does not constitute financial advice.
Sequential 9(Setup Count)- KoRCThis indicator is a simplified Sequential 9-count (Setup 9) tool inspired by widely known “sequential counting” concepts. It detects potential exhaustion points by counting consecutive closes relative to the close 4 bars earlier:
Buy Setup (DIP): close < close for 9 consecutive bars (optional strict mode: <=)
Sell Setup (TOP): close > close for 9 consecutive bars (optional strict mode: >=)
Enhancements / Filters (optional):
Trend filter (default ON): uses EMA(200) as a macro trend filter and EMA(20) as a fast context filter.
Volatility filter (optional): ignores signals in low-volatility regimes using ATR% threshold.
Dedupe (default ON): prevents repeated signals within a short window (one-shot per swing concept).
Perfected highlight:
Signals are visually emphasized when a simple “perfected” condition is met (bar 8 or 9 extends beyond recent reference highs/lows), displayed with brighter colors.
How to use:
Use DIP/TOP labels as potential exhaustion alerts, not standalone trade signals. Combine with your own risk management and confirmation tools.
Disclaimer:
Not affiliated with or endorsed by any third-party. This script is provided for educational/visualization purposes only and does not constitute financial advice.
Dynamic Strike Selection Indicator [ARJO]Dynamic Strike Selection Indicator
OVERVIEW
The Dynamic Strike Selection Indicator is a visual analysis tool designed for traders observing NSE (National Stock Exchange of India) instruments, particularly those interested in options. It displays a trend-based oscillator in the lower chart pane and automatically calculates option strike prices , presenting them in an easy-to-read table. The indicator helps users observe trend changes and understand how option strikes might be selected based on current market conditions.
IT has a dashboard that shows you:
Where the trend might be heading (through the oscillator)
What option strikes align with the current price level
When trend transitions occurred
CONCEPTS
This indicator combines several technical analysis concepts in a beginner-friendly format:
1. Trend Observation (Chandelier Exit)
The indicator uses a method called "Chandelier Exit" which observes price volatility to identify potential trend directions. When the indicator shows green, it suggests an upward trend pattern; red suggests a downward pattern. These are reference points, not predictions.
2. Smoothed Price Movement
Raw price data can be noisy. This indicator applies mathematical smoothing (called "Ehlers 2-Pole filter") to reduce short-term fluctuations, making it easier to observe the underlying trend direction.
3. Momentum Oscillator
The oscillator (displayed as bars and lines in the lower pane) shows the difference between smoothed price and its moving average. Positive values suggest upward momentum; negative values suggest downward momentum . This is similar to how MACD or LBR works.
4. Strike Price Calculation
For option traders , the indicator automatically calculates:
ATM (At-The-Money): The strike price closest to the current underlying price
OTM (Out-of-The-Money): Strike prices at a distance from ATM, based on your settings
These calculations use standard rounding methods based on each instrument's official strike interval.
FEATURES
Visual Components:
Color-Coded Oscillator: Green/teal for potential uptrend, purple/red for potential downtrend
Histogram Display: Visual bars showing momentum strength
Chandelier Exit Lines: Plotted on the main price chart as reference levels
Information Table: Displays calculated strikes, timestamps, and optional tracking data
Supported Instruments:
Major indices: NIFTY, BANKNIFTY
Popular stocks: RELIANCE, HDFCBANK, ICICIBANK, INFY, TCS, SBIN, and more
Any NSE instrument (using manual strike interval setting)
Flexible Configuration:
Choose between "Sell Mode" and "Buy Mode" perspectives
Customize strike interval for any instrument
Adjust sensitivity of trend detection
Modify visual appearance (colors, table position, text size)
Track entry prices and observe P&L calculations (for reference only)
Features:
Automatic strike interval detection for predefined instruments
Manual override option for custom requirements
Real-time option premium fetching (where available)
Timestamp recording of trend transitions
Active trade highlighting based on current trend
HOW TO USE
Step 1: Adding the Indicator
Open your TradingView chart with an NSE instrument (e.g., NIFTY, BANKNIFTY, or any stock)
Search for " Dynamic Strike Selection Indicator " in the Indicators menu
Click to add it to your chart
You'll see an oscillator appear in a pane below your price chart and a table in the corner
Step 2: Basic Settings
Click the settings (gear icon) on the indicator. Here are the key settings to understand:
Symbol Settings:
Symbol Source: Keep it on " Use Chart Symbol " to analyze whatever instrument is on your chart
Custom Symbol: Only change if you want to analyze a different instrument while viewing another chart
Expiry Date:
Set the expiry date of the option contracts you're observing
Use the dropdown menus for Day, Month, and Year
Example: For 30th January 2025, select Day: 30, Month: 01, Year: 25
Trade Entry (Optional):
Trade Mode: Choose "Sell" or "Buy" based on your observation perspective
Lot Size: Enter your intended lot size for P&L calculation reference
PUT/CALL Entry Price: Manually enter prices if you want to track reference P&L
OTM Strike Distance:
Default is 4 (means 4 strikes away from ATM)
Increase for further OTM strikes, decrease for closer strikes
Step 3: Understanding the Display
The Oscillator (Lower Pane):
Green/Teal Bars: Suggest bullish momentum characteristics
Purple/Red Bars: Suggest bearish momentum characteristics
Zero Line: The reference point - above suggests strength, below suggests weakness
Color Change: When the oscillator changes from red to green (or vice versa), it indicates a potential trend transition
Active Row Highlighting:
In Sell Mode: Green background on PUT row during uptrend, Red background on CALL row during downtrend
In Buy Mode: Green background on PUT row during downtrend, Red background on CALL row during uptrend
This helps you observe which strike aligns with the current trend direction
Visual Customization:
Change oscillator colors under "Color Settings"
Adjust table position, size, and transparency under "Table Settings"
Modify table colors to match your chart theme
NOTES FOR BEGINNERS
Start Simple: Use default settings first. Don't change too many parameters initially.
Paper Trade First: Observe the indicator for several days before considering any real trades. Note how often trend transitions occur and how strikes align.
Understand Your Instrument: Know the strike interval for your chosen stock/index. NIFTY/BANKNIFTY use 100, most stocks use 10, 20, or 50.
Timeframe Matters: The indicator behaves differently on different timeframes. A 5-minute chart will show more transitions than a 1-hour chart.
Use with Other Analysis: This indicator is one tool among many. Combine with price action, support/resistance, and volume analysis.
Don't Chase: Just because a transition occurs doesn't mean you must act. Observe the quality of the move.
Backtest Observations: Use TradingView's replay feature to observe how the indicator performed historically.
CONCLUSION
The Dynamic Strike Selection Indicator serves as an educational tool for observing trend-based oscillator patterns and understanding how option strikes might be mathematically selected based on current market conditions. It combines visual trend analysis with structured strike price calculations, helping users study the relationship between momentum patterns and option strike references.
The indicator is designed to enhance chart interpretation skills and provide transparency into strike selection methodologies. It does not predict future price movements or guarantee any outcomes. Users are encouraged to use it as one component of a broader analytical approach, always conducting independent research and maintaining realistic expectations about market analysis tools.
DISCLAIMER
This indicator is strictly for educational and analytical observation purposes. It is NOT a trading system, signal generator, or financial advisory service.
What This Indicator Does NOT Do:
Does not predict future price movements with certainty
Does not guarantee profitable trades or outcomes
Does not constitute financial, investment, or trading advice
Does not replace the need for independent research and analysis
Does not eliminate trading risks or ensure success
What You Must Understand:
All calculated strikes, P&L values, and trend observations are informational references only
Option trading involves substantial risk and can result in complete loss of invested capital
Past indicator performance does not predict future results
Trend transitions shown are historical observations, not predictions
The "active" highlighting is a visual reference tool, not a trade recommendation
Conduct thorough independent research before taking any trading decision. and consult qualified, licensed financial professionals for personalized advice.
The creator of this indicator is not a registered investment advisor, broker, or financial planner. This tool is provided "as is" without warranties of any kind. By using this indicator, you acknowledge that you understand these risks and limitations, and you agree that all trading decisions and their consequences are solely your responsibility. If you do not fully understand these risks or are unsure about options trading, do not use this indicator for live trading .
[CodaPro] Multi-Timeframe RSI Dashboard v1.1
v1.1 Update - Fixed Panel Positioning
After initial release, I realized the indicator was displaying overlayed on the price chart instead of in its own panel. This has been corrected!
Changes:
- Fixed: Indicator now displays in separate subpanel below price chart (much cleaner!)
- Improved: 5min and 1H RSI lines are now bold and prominent for easier reading
- Improved: 15min, 4H, and Daily lines are subtle/transparent for context
- Updated: Default levels changed to 40/60 (tighter, high-conviction signals)
- Updated: All 5 timeframes now active by default (toggle any off in settings)
Thanks for the patience on this quick fix! The indicator should now display properly in its own panel below your price chart.
If you were using v1.0, please remove it from your chart and re-add the updated version.
Happy trading!
Multi-Timeframe RSI Dashboard
This indicator displays RSI (Relative Strength Index) values from five different timeframes simultaneously in a clean dashboard format, helping traders identify momentum alignment across multiple time periods.
═══════════════════════════════════════
FEATURES
✓ Displays RSI for 5 customizable timeframes
✓ Color-coded status indicators (Oversold/Neutral/Overbought)
✓ Clean table display positioned in chart corner
✓ Fully customizable RSI length and threshold levels
✓ Works on any instrument and timeframe
✓ Real-time updates as price moves
✓ Smart BUY/SELL signals with cooldown system
✓ Non-repainting - signals never disappear after appearing
═══════════════════════════════════════
HOW IT WORKS
The indicator calculates the standard RSI formula for each selected timeframe and displays the results in both a graph and organized table. Default timeframes are:
- 5-minute
- 15-minute
- 1-hour
- 4-hour (optional - hidden by default)
- Daily (optional - hidden by default)
Visual Display:
- Graph shows all RSI lines in subtle, transparent colors
- Lines don't overpower your price chart
- Dashboard table shows exact values and status
Color Coding:
- GREEN = RSI below 32 (traditionally considered oversold)
- YELLOW = RSI between 32-64 (neutral zone)
- RED = RSI above 64 (traditionally considered overbought)
All timeframes and thresholds are fully adjustable in the indicator settings.
═══════════════════════════════════════
SIGNAL LOGIC
BUY Signal:
- Triggers when ALL 3 primary timeframes drop below the buy level (default: 32)
- Arrow appears near the RSI lines for easy identification
- 120-minute cooldown prevents signal spam
SELL Signal:
- Triggers when ALL 3 primary timeframes rise above the sell level (default: 64)
- Arrow appears near the RSI lines for easy identification
- 120-minute cooldown prevents signal spam
The cooldown system ensures you only see HIGH-CONVICTION signals, not every minor fluctuation.
═══════════════════════════════════════
SCREENSHOT FEATURES VISIBLE
- Multi-timeframe RSI lines (5min, 15min, 1H) in subtle colors
- Smart BUY/SELL signals with cooldown system
- Real-time dashboard showing current RSI values
- Clean, professional design that doesn't clutter your chart
═══════════════════════════════════════
DEFAULT SETTINGS
- Buy Signal Level: 32 (all 3 timeframes must cross below)
- Sell Signal Level: 64 (all 3 timeframes must cross above)
- Signal Cooldown: 24 bars (120 minutes on 5-min chart)
- Active Timeframes: 5min, 15min, 1H (4H and Daily can be enabled)
- RSI Length: 14 periods (standard)
═══════════════════════════════════════
CUSTOMIZABLE SETTINGS
- RSI Length (default: 14)
- Oversold Level (default: 32)
- Overbought Level (default: 64)
- Buy Signal Level (default: 32)
- Sell Signal Level (default: 64)
- Signal Cooldown in bars (default: 24)
- Five timeframe selections (fully customizable)
- Toggle visibility for each timeframe
- Toggle dashboard table on/off
- Toggle arrows on/off
═══════════════════════════════════════
HOW TO USE
1. Add the indicator to your chart
2. Customize timeframes in settings (optional)
3. Adjust RSI length and threshold levels (optional)
4. Monitor the dashboard for multi-timeframe alignment
INTERPRETATION:
When multiple timeframes show the same condition (all oversold or all overbought), it can indicate stronger momentum in that direction. For example:
- Multiple timeframes showing oversold may suggest a potential bounce
- Multiple timeframes showing overbought may suggest potential weakness
However, RSI alone should not be used as a standalone signal. Always combine with:
- Price action analysis
- Support/resistance levels
- Trend analysis
- Volume confirmation
- Other technical indicators
═══════════════════════════════════════
EDUCATIONAL BACKGROUND
RSI (Relative Strength Index) was developed by J. Welles Wilder Jr. and introduced in his 1978 book "New Concepts in Technical Trading Systems." It measures the magnitude of recent price changes to evaluate overbought or oversold conditions.
The RSI oscillates between 0 and 100, with readings:
- Below 30 traditionally considered oversold
- Above 70 traditionally considered overbought
- Around 50 indicating neutral momentum
Multi-timeframe analysis helps traders understand whether momentum conditions are aligned across different time horizons, potentially providing more robust signals than single-timeframe analysis alone.
═══════════════════════════════════════
NON-REPAINTING GUARANTEE
This indicator uses confirmed bar data to prevent repainting:
- All RSI values are calculated from previous bar's close
- Signals only fire when the bar closes (not mid-bar)
- What you see in backtest = what you get in live trading
- No signals will disappear after they appear
This is critical for reliable trading signals and accurate backtesting.
═══════════════════════════════════════
VISUAL DESIGN PHILOSOPHY
The indicator is designed with a "less is more" approach:
- Transparent RSI lines (60% opacity) keep price candles as the focal point
- Thin lines reduce visual clutter
- Arrows positioned near RSI levels (not floating randomly)
- Background flashes provide extra visual confirmation
- Dashboard table is compact and non-intrusive
The goal is to provide powerful multi-timeframe analysis without overwhelming your chart.
═══════════════════════════════════════
TECHNICAL NOTES
- Uses standard request.security() calls for multi-timeframe data
- Non-repainting implementation with proper lookahead handling
- Minimal performance impact
- Compatible with all instruments and timeframes
- Written in Pine Script v6
═══════════════════════════════════════
IMPORTANT DISCLAIMERS
- This is an educational tool for technical analysis
- Past RSI patterns do not guarantee future results
- No indicator is 100% accurate
- Always use proper risk management
- Consider multiple factors before making trading decisions
- This indicator does not provide buy/sell recommendations
- Consult with a qualified financial advisor before trading
═══════════════════════════════════════
LEARNING RESOURCES
For traders new to RSI, consider studying:
- J. Welles Wilder's original RSI methodology
- RSI divergence patterns
- RSI in trending vs ranging markets
- Multi-timeframe analysis techniques
═══════════════════════════════════════
Disclaimer
This tool was created using the CodaPro Pine Script architecture engine — designed to produce robust trading overlays, educational visuals, and automation-ready alerts. It is provided strictly for educational purposes and does not constitute financial advice. Always backtest and demo before applying to real capital.
Difference Based Curvature by WizkaThis is my very explorative script which studies the use of "derivatives" in indicating the momentum and the potential reversals. As we know the market data is so noisy and non-stationary (random walk) that mathematical derivatives can not be used. Therefore I use "differences (Diff)" as an analogy to them. The indicator, which I call "Difference-Based Curvature", calculates 10 period differences (ROC10) for three segments (0,10; 10,20; 20,30) and creates of them three degrees of Diff: 1st DIff = ROC(10), 2nd DIff = "dROC" = ROC(0,10) - ROC(10,20), which represents the "curvature" of the price movement. Furthermore, the 3rd Diff = "jROC" is calculated as a change of 2nd diff between consecutive segments. The values of Diffs are plotted as lines, but the interpretation is in the background colors. Dark green indicates strong (accelerating) growth (1. and 2.Diff >0). Light green = slowing increase (2.Diff turns <0). Dark red = strong decrease (1. and 2. Diff <0). Light red = slowing decrease (1.Diff<0, 2.Diff turning >0). Furthermore, red and green arrows are plotted when 3.Diff changes to negative in uptrend or positive in downtrend (hence trying to hint early potential top or bottom formation).
There are a few scale smoothing options, and I mostly use ATR-smoothing on.
It can be noted, that there is a certain resemblance with MACD (or PPO) as can be seen in the chart. This corresponds my intuition of the MACD: 1.Diff vs. MACD-line, 2.DIff vs. sign of Histogram and 3.Diff vs. direction of histogram.
DISCLAIMER: This indicator has not been tested, and use of it only with caution and own responsibility. No decision should be made on one indicator only.
Unfortunately some parameters can only be changed in the script. But it is open.
Have fun experimenting!
BBW Advanced (Percentiles & Regime)Bollinger BandWidth Advanced (Percentiles & Regime)
Description
This indicator is an advanced implementation of Bollinger BandWidth (BBW) focused on volatility regimes, not trade signals.
Unlike the standard BBW, which relies on fixed thresholds or recent highs/lows, this version uses statistical percentiles and normalization to adapt automatically to different assets and timeframes.
Its purpose is to identify abnormal volatility compression and expansion and, more importantly, the transitions between regimes.
Key Improvements Over Standard BBW
1. Percentile-based thresholds
Instead of arbitrary levels, BBW is evaluated relative to its own historical distribution:
Low percentile (e.g. 5th) → extreme compression
High percentile (e.g. 95th) → extreme expansion
This makes the indicator adaptive and statistically meaningful across markets.
2. Volatility normalization
BBW is normalized by its own historical mean, allowing comparison across:
Different instruments
Different timeframes
A normalized value around 1 represents “normal” volatility for that market.
3. Regime classification instead of signals
The indicator does not generate buy/sell signals.
It classifies the market into volatility regimes and highlights regime transitions, which must be interpreted together with price structure.
How to Interpret the Indicator
Blue Line – BBW
Raw Bollinger BandWidth value.
Represents relative volatility only. Not a trading trigger.
Green Line – Low Percentile (Extreme Compression)
Marks statistically rare low-volatility conditions.
Price is compressed; energy is building, but direction is unknown.
Red Line – High Percentile (Extreme Expansion)
Marks unusually high volatility.
Often associated with breakouts, trends, or late-stage moves.
Orange Line – Normalized BBW
Shows current volatility relative to its historical average:
Below ~0.7 → very low volatility
Around 1.0 → normal volatility
Above ~1.5 → unusually high volatility
Background Colors
Green background → BBW is below the low percentile (extreme compression)
Red background → BBW is above the high percentile (extreme expansion)
Background colors indicate market state, not entries.
Practical Use
Extreme compression highlights environments where breakouts may develop, but does not predict direction
The most useful moment is the exit from compression, when volatility starts expanding again
Always combine with price action, structure, and context
BBW should be treated as a condition filter, never as a standalone strategy
Important Notes
This indicator measures volatility only, not trend or bias
Compression does not guarantee a breakout
Expansion does not guarantee continuation
Misuse as a signal generator will lead to poor results
ICT Killzones [Forex Edition] |MC|💎 ICT Killzones |MC| 💎
All credit and recognition go to © SimoneMicucci00 for the great work! This is another development that was created through many hours of dedicated effort.
ICT Killzones is a precision session-mapping indicator designed for intraday Forex traders who follow ICT concepts and time-based market structure.
It visually highlights the most important institutional trading windows (“Killzones”) directly on your chart, helping you focus on when price is most likely to expand.
This tool is built to stay clean, configurable, and performance-friendly—no unnecessary clutter, no repainting.
🔹 Key Features
Asian Range
London Open
New York Open
London Close
Each session can be displayed as:
A transparent box (range high–low)
Or a background highlight (killzone shading)
All sessions are calculated using New York time, ensuring consistency with ICT teachings.
🔹 Fully Customizable
Enable or disable each session independently
Custom session times
Custom colors and labels
Adjustable transparency and border styling
Optional range size display (in pips)
Control how many historical days are shown to keep charts clean
⚠️ Disclaimer
This indicator is for educational and analytical purposes only.
It does not provide financial advice or trading signals.
Always apply proper risk management.
Happy Trading!
Pradip's MACD Divergence ProThis is where the "magic" happens, Pradip. MACD Divergence is one of the most powerful concepts because it acts like an early-warning system. It tells you when the market is "lying"—when the price is moving up or down, but the energy (momentum) behind it is dying.
Net Long / Short + OI (Absorption Style)clear insight of the move to the upside or downside here , adjust metrics accordingly .
EL OJO DE DIOS - FINAL (ORDEN CORREGIDO)//@version=6
indicator("EL OJO DE DIOS - FINAL (ORDEN CORREGIDO)", overlay=true, max_boxes_count=500, max_lines_count=500, max_labels_count=500)
// --- 1. CONFIGURACIÓN ---
grpEMA = "Medias Móviles"
inpShowEMA = input.bool(true, "Mostrar EMAs", group=grpEMA)
inpEMA21 = input.int(21, "EMA 21", minval=1, group=grpEMA)
inpEMA50 = input.int(50, "EMA 50", minval=1, group=grpEMA)
inpEMA200 = input.int(200, "EMA 200", minval=1, group=grpEMA)
grpStrategy = "Estrategia"
inpTrendTF = input.string("Current", "Timeframe Señal", options= , group=grpStrategy)
inpADXFilter = input.bool(true, "Filtro ADX", group=grpStrategy)
inpADXPeriod = input.int(14, "Período ADX", group=grpStrategy)
inpADXLimit = input.int(20, "Límite ADX", group=grpStrategy)
inpRR = input.float(2.0, "Riesgo:Beneficio", group=grpStrategy)
grpVisuals = "Visuales"
inpShowPrevDay = input.bool(true, "Máx/Mín Ayer", group=grpVisuals)
inpShowNY = input.bool(true, "Sesión NY", group=grpVisuals)
// --- 2. VARIABLES ---
var float t1Price = na
var bool t1Bull = false
var bool t1Conf = false
var line slLine = na
var line tpLine = na
// Variables Prev Day
var float pdH = na
var float pdL = na
var line linePDH = na
var line linePDL = na
// Variables Session
var box nySessionBox = na
// --- 3. CÁLCULO ADX MANUAL ---
f_calcADX(_high, _low, _close, _len) =>
// True Range Manual
tr = math.max(_high - _low, math.abs(_high - _close ), math.abs(_low - _close ))
// Directional Movement
up = _high - _high
down = _low - _low
plusDM = (up > down and up > 0) ? up : 0.0
minusDM = (down > up and down > 0) ? down : 0.0
// Smoothed averages
atr = ta.rma(tr, _len)
plus = 100.0 * ta.rma(plusDM, _len) / atr
minus = 100.0 * ta.rma(minusDM, _len) / atr
// DX y ADX
sum = plus + minus
dx = sum == 0 ? 0.0 : 100.0 * math.abs(plus - minus) / sum
adx = ta.rma(dx, _len)
adx
// --- 4. CÁLCULO DE DATOS ---
ema21 = ta.ema(close, inpEMA21)
ema50 = ta.ema(close, inpEMA50)
ema200 = ta.ema(close, inpEMA200)
// MTF Logic
targetTF = inpTrendTF == "Current" ? timeframe.period : inpTrendTF == "15m" ? "15" : "60"
// CORRECCIÓN AQUÍ: Uso de argumentos nominales (gaps=, lookahead=) para evitar errores de orden
f_getSeries(src, tf) =>
tf == timeframe.period ? src : request.security(syminfo.tickerid, tf, src, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off)
tf_close = f_getSeries(close, targetTF)
tf_high = f_getSeries(high, targetTF)
tf_low = f_getSeries(low, targetTF)
tf_ema21 = ta.ema(tf_close, inpEMA21)
tf_ema50 = ta.ema(tf_close, inpEMA50)
// Calcular ADX
float tf_adx = f_calcADX(tf_high, tf_low, tf_close, inpADXPeriod)
// Cruces
bool crossUp = ta.crossover(tf_ema21, tf_ema50)
bool crossDown = ta.crossunder(tf_ema21, tf_ema50)
bool crossSignal = crossUp or crossDown
bool adxOk = inpADXFilter ? tf_adx > inpADXLimit : true
// --- 5. LÓGICA DE SEÑALES ---
if crossSignal and adxOk and barstate.isconfirmed
t1Price := tf_ema21
t1Bull := tf_ema21 > tf_ema50
t1Conf := false
if not na(slLine)
line.delete(slLine)
slLine := na
if not na(tpLine)
line.delete(tpLine)
tpLine := na
label.new(bar_index, high + (ta.atr(14)*0.5), text="CRUCE T1", color=t1Bull ? color.green : color.red, textcolor=color.white, size=size.small)
bool touch = false
if not na(t1Price) and not t1Conf
if t1Bull
touch := low <= t1Price and close >= t1Price
else
touch := high >= t1Price and close <= t1Price
if touch and barstate.isconfirmed
t1Conf := true
float atr = ta.atr(14)
float sl = t1Bull ? low - (atr*0.1) : high + (atr*0.1)
float dist = math.abs(t1Price - sl)
float tp = t1Bull ? t1Price + (dist * inpRR) : t1Price - (dist * inpRR)
label.new(bar_index, t1Price, text="ENTRADA", color=color.yellow, textcolor=color.black, size=size.small)
slLine := line.new(bar_index, sl, bar_index + 15, sl, color=color.red, style=line.style_dashed, width=2)
tpLine := line.new(bar_index, tp, bar_index + 15, tp, color=color.green, style=line.style_dashed, width=2)
// --- 6. GRÁFICO ---
col21 = ema21 > ema21 ? color.teal : color.maroon
col50 = ema50 > ema50 ? color.aqua : color.fuchsia
col200 = ema200 > ema200 ? color.blue : color.red
plot(inpShowEMA ? ema21 : na, "EMA21", color=col21, linewidth=2)
plot(inpShowEMA ? ema50 : na, "EMA50", color=col50, linewidth=2)
plot(inpShowEMA ? ema200 : na, "EMA200", color=col200, linewidth=2)
bgcolor(ema50 > ema200 ? color.new(color.green, 95) : color.new(color.red, 95))
// --- 7. SESIÓN NY ---
isNYSummer = (month(time) == 3 and dayofmonth(time) >= 14) or (month(time) > 3 and month(time) < 11)
hourOffset = isNYSummer ? 4 : 5
nyHour = (hour - hourOffset) % 24
bool isSession = nyHour >= 6 and nyHour < 11
if isSession and inpShowNY
if na(nySessionBox)
nySessionBox := box.new(bar_index, high, bar_index, low, bgcolor=color.new(color.blue, 92), border_color=color.new(color.white, 0))
else
box.set_right(nySessionBox, bar_index)
box.set_top(nySessionBox, math.max(high, box.get_top(nySessionBox)))
box.set_bottom(nySessionBox, math.min(low, box.get_bottom(nySessionBox)))
if not isSession and not na(nySessionBox)
box.delete(nySessionBox)
nySessionBox := na
// --- 8. MÁX/MÍN AYER ---
hCheck = request.security(syminfo.tickerid, "D", high , lookahead=barmerge.lookahead_on)
lCheck = request.security(syminfo.tickerid, "D", low , lookahead=barmerge.lookahead_on)
if not na(hCheck)
pdH := hCheck
if not na(lCheck)
pdL := lCheck
if barstate.islast and inpShowPrevDay
line.delete(linePDH)
line.delete(linePDL)
if not na(pdH)
linePDH := line.new(bar_index - 50, pdH, bar_index, pdH, color=color.green)
if not na(pdL)
linePDL := line.new(bar_index - 50, pdL, bar_index, pdL, color=color.red)
alertcondition(crossSignal, "Cruce T1", "Cruce Tendencia 1")
alertcondition(touch, "Entrada Confirmada", "Entrada Confirmada")
Donchian Channels (Multi Time Frame) x 3)📊 MTF Donchian Channels Pro — Triple Timeframe Structure
MTF Donchian Channels Pro is a professional-grade multi-timeframe market structure indicator designed to help traders visualize trend, momentum, and execution zones on a single chart.
This tool allows you to plot up to three independent Donchian Channels, each with its own configurable timeframe and lookback length, giving you instant insight into multi-timeframe alignment and breakout conditions.
By stacking higher, medium, and lower timeframe channels, traders can eliminate noise, improve timing, and trade in the direction of dominant market structure.
🔧 Key Features
✅ Up to 3 independent Donchian Channels
✅ Individual timeframe selection for each channel
✅ Adjustable lookback length per channel
✅ Optional show/hide per channel
✅ Midline (basis) for structure reference
✅ Clean visual fills for fast interpretation
✅ Works on all markets and timeframes
🎯 How to Use
This indicator is designed to support multi-timeframe trading systems.
Example configuration:
• Channel 1 → Lower timeframe (Execution)
• Channel 2 → Medium timeframe (Momentum)
• Channel 3 → Higher timeframe (Structure)
Long Bias Example
Price above higher timeframe channel
Pullback into mid timeframe range
Breakout on lower timeframe channel
Short Bias Example
Price below higher timeframe channel
Retrace into structure
Breakdown on execution timeframe
When all channels align, probability increases.
📈 Best Use Cases
✔ Futures Scalping
✔ Options Day Trading
✔ Forex & Crypto
✔ Swing Trading
✔ Prop Firm Evaluations
✔ Trend-Following Systems
⚠️ Risk Disclaimer
This indicator is a market structure visualization tool and does not provide financial advice. Always use proper risk management and confirm with your own strategy.
My Candle (HTF Overlay)
This indicator overlays Higher Timeframe (HTF) candles, such as Daily or Weekly, onto your current chart background. It allows you to grasp the larger trend while trading on lower timeframes.
- Accurate Historical Data: By utilizing "lookahead", this script ensures that the High and Low of the HTF candles align perfectly with the price action on historical charts.
- Gap Filling: Includes an option to fill data gaps for a smoother visual experience.
- Customization: You can easily change the timeframe and adjust the transparency of colors to suit your chart theme.
1. Add to the chart.
2. Open settings to select your target timeframe (e.g., "1 Day" or "1 Week").
3. Adjust the "Gap" and "Transparency" settings as needed.
Uptrend Pullback (High Winrate-ish) - RSI + EMA + ATR TrailUptrend Pullback Strategy (EMA Filter + RSI Reversal + ATR Trailing Stop)
Description
This strategy is designed for rising markets and trades long only. It uses a simple trend filter and a pullback entry:
Trend filter: An uptrend is defined when EMA(50) > EMA(200) and price is above EMA(200). Trades are allowed only under these conditions.
Entry (buy the dip): A long position is opened when RSI crosses up above a user-defined pullback level (default 40), suggesting a pullback is ending and momentum is recovering.
Exits:
Take profit: Close the position when RSI reaches an overbought level (default 70).
Risk management: A dynamic ATR-based trailing stop follows price upward to lock in gains.
Hard stop: An additional ATR-based stop acts as a safety net to limit downside risk.
Notes
Parameters (EMA lengths, RSI levels, ATR multipliers) are fully configurable.
This is a demo/reference strategy for research and optimization; results depend strongly on the symbol and timeframe.
If you want, I can also write a shorter “one-liner” description and a set of tag keywords for the publish page.
MA Band Area (Objective Zone)This indicator can be useful for you to create areas of dynamic purchase, you just need to contextualise when to stop in range, on smaller time frames it is very powerful but also for long term with stock it is very precise
LibProfLibrary "LibProf"
Core Profiling Library.
This library provides a generic, object-oriented framework for
creating, managing, and analyzing 1D distributions (profiles) on
a customizable coordinate grid.
Unlike traditional Volume Profile libraries, `LibProf` is designed
as a **neutral Engine**. It abstracts away specific concepts
like "Price" or "Volume" in favor of mathematical primitives
("Level" and "Mass"). This allows developers to profile *any*
data series, such as Time-at-Price, Velocity, Delta, or Ticks.
Key Features:
1. **Object-Oriented Design (UDT):** Built around the `Prof`
object, encapsulating grid geometry, two generic data accumulators
(Array A & B), and cached statistical metrics. Supports full
lifecycle management: creation, cloning, clearing, and merging.
2. **Data-Agnostic Abstraction:**
- **Level (X-Axis):** Represents the coordinate system (e.g.,
Price, Time, Oscillator Value).
- **Mass (Y-Axis):** Represents the accumulated quantity
(e.g., Volume, Duration, Count).
- **Resolution (Grain):** The grid represents continuous data
discretized by a customizable resolution step size.
3. **Dual-Mode Geometry (Linear & Logarithmic):**
The engine supports seamless switching between two geometric modes:
- **Linear:** Arithmetic scaling (equal distance).
- **Logarithmic:** Geometric scaling (equal percentage), essential
for consistent density analysis across large ranges (Crypto).
Includes strict domain validation (enforcing positive bounds for log-space)
and physics-based constraints to prevent aliasing.
4. **High-Fidelity Resampling:**
Includes a sophisticated **Trapezoidal Integration Model** to
handle grid resizing and profile merging. When data is moved
between grids of different resolutions or geometries, the
library calculates the exact integral of the mass density
to ensure strict mass conservation.
5. **Dynamic Grid Management:**
- **Adapting:** Automatically expands the coordinate boundaries
to include new data points (`adapt`).
- **Resizing:** Allows changing the resolution (bins) or
boundaries on the fly, triggering the interpolation engine to
re-sample existing data accurately.
6. **Statistical Analysis (Lazy Evaluation):**
Comprehensive metrics calculated on-demand.
In Logarithmic mode, metrics adapt to use **Geometric Mean** and
**Geometric Interpolation** for maximum precision.
- **Location:** Peak (Mode), Weighted Mean (Center of Gravity), Median.
- **Dispersion:** Standard Deviation (Population), Coverage.
- **Shape:** Skewness and Excess Kurtosis.
7. **Structural Analysis:**
Includes a monotonic segmentation algorithm (configured by gapSize)
to decompose the distribution into its fundamental unimodal
segments, aiding in the detection of multi-modal distributions.
---
**DISCLAIMER**
This library is provided "AS IS" and for informational and
educational purposes only. It does not constitute financial,
investment, or trading advice.
The author assumes no liability for any errors, inaccuracies,
or omissions in the code. Using this library to build
trading indicators or strategies is entirely at your own risk.
As a developer using this library, you are solely responsible
for the rigorous testing, validation, and performance of any
scripts you create based on these functions. The author shall
not be held liable for any financial losses incurred directly
or indirectly from the use of this library or any scripts
derived from it.
create(bins, upper, lower, resolution, dynamic, isLog, coverage, gapSize)
Construct a new `Prof` object with fixed bin count & bounds.
Parameters:
bins (int) : series int number of level bins ≥ 1
upper (float) : series float upper level bound (absolute)
lower (float) : series float lower level bound (absolute)
resolution (float) : series float Smallest allowed bin size (resolution).
dynamic (bool) : series bool Flag for dynamic adaption of profile bounds
isLog (bool) : series bool Flag to enable Logarithmic bin scaling.
coverage (int) : series int Percentage of total mass to include in the Coverage Area (1..100)
gapSize (int) : series int Noise filter for segmentation. Number of allowed bins against trend.
Returns: Prof freshly initialised profile
method clone(self)
Create a deep copy of the profile.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object to copy
Returns: Prof A new, independent copy of the profile
method merge(self, massA, massB, upper, lower)
Merges mass data from a source profile into the current profile.
If resizing is needed, it performs a high-fidelity re-binning of existing
mass using a linear interpolation model inferred from neighboring bins,
preventing aliasing artifacts and ensuring accurate mass preservation.
Namespace types: Prof
Parameters:
self (Prof) : Prof The target profile object to merge into.
massA (array) : array float The source profile's mass A bin array.
massB (array) : array float The source profile's mass B bin array.
upper (float) : series float The upper level bound of the source profile.
lower (float) : series float The lower level bound of the source profile.
Returns: Prof `self` (chaining), now containing the merged data.
method clear(self)
Reset all bin tallies while keeping configuration intact.
Namespace types: Prof
Parameters:
self (Prof) : Prof profile object
Returns: Prof cleared profile (chaining)
method addMass(self, idx, mass, useMassA)
Adds mass to a bin.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
idx (int) : series int Bin index
mass (float) : series float Mass to add (must be > 0)
useMassA (bool) : series bool If true, adds to Array A, otherwise Array B
method adapt(self, upper, lower)
Automatically adapts the profile's boundaries to include a given level interval.
If the level bound exceeds the current profile bounds, it triggers
the _resizeGrid method to resize the profile and re-bin existing mass.
Namespace types: Prof
Parameters:
self (Prof) : Prof The profile object.
upper (float) : series float The upper level to fit.
lower (float) : series float The lower level to fit.
Returns: Prof `self` (chaining).
method setBins(self, bins)
Sets the number of bins for the profile.
Behavior depends on the `isDynamic` flag.
- If `dynamic = true`: Works on filled profiles by re-binning to a new resolution.
- If `dynamic = false`: Only works on empty profiles to prevent accidental changes.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
bins (int) : series int The new number of bins
Returns: Prof `self` (chaining)
method setBounds(self, upper, lower)
Sets the level bounds for the profile.
Behavior depends on the `dynamic` flag.
- If `dynamic = true`: Works on filled profiles by re-binning existing mass
- If `dynamic = false`: Only works on empty profiles to prevent accidental changes.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
upper (float) : series float The new upper level bound
lower (float) : series float The new lower level bound
Returns: Prof `self` (chaining)
method setResolution(self, resolution)
Sets the minimum resolution size (granularity limit) for the profile.
If the current bin count exceeds the limit imposed by the new
resolution, the profile is automatically resized (downsampled) to fit.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
resolution (float) : series float The new smallest allowed bin size.
Returns: Prof `self` (chaining)
method setLog(self, isLog)
Toggles the geometry of the profile between Linear and Logarithmic.
Behavior depends on the `dynamic` flag.
- If `dynamic = true`: Mass is re-distributed (merged) into the new geometric grid.
- If `dynamic = false`: Only works on empty profiles.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
isLog (bool) : series bool True for Logarithmic, False for Linear.
Returns: Prof `self` (chaining)
method setCoverage(self, coverage)
Set the percentage of mass for the Coverage Area. If the value
changes, the profile is finalized again.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
coverage (int) : series int The new Mass Coverage Percentage (0..100)
Returns: Prof `self` (chaining)
method setGapSize(self, gapSize)
Sets the gapSize (noise filter) for segmentation.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
gapSize (int) : series int Number of bins allowed to violate monotonicity
Returns: Prof `self` (chaining)
method getBins(self)
Returns the current number of bins in the profile.
Namespace types: Prof
Parameters:
self (Prof) : Prof The profile object.
Returns: series int The number of bins.
method getBounds(self)
Returns the current level bounds of the profile.
Namespace types: Prof
Parameters:
self (Prof) : Prof The profile object.
Returns:
upper series float The upper level bound of the profile.
lower series float The lower level bound of the profile.
method getBinWidth(self)
Get Width of a bin.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
Returns: series float The width of a bin
method getBinIdx(self, level)
Get Index of a bin.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
level (float) : series float absolute coordinate to locate
Returns: series int bin index 0…bins‑1 (clamped)
method getBinBnds(self, idx)
Get Bounds of a bin.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
idx (int) : series int Bin index
Returns:
up series float The upper level bound of the bin.
lo series float The lower level bound of the bin.
method getBinMid(self, idx)
Get Mid level of a bin.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
idx (int) : series int Bin index
Returns: series float Mid level
method getMassA(self)
Returns a copy of the internal raw data array A (Mass A).
Namespace types: Prof
Parameters:
self (Prof) : Prof The profile object.
Returns: array The internal array for mass A.
method getMassB(self)
Returns a copy of the internal raw data array B (Mass B).
Namespace types: Prof
Parameters:
self (Prof) : Prof The profile object.
Returns: array The internal array for mass B.
method getBinMassA(self, idx)
Get Mass A of a bin.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
idx (int) : series int Bin index
Returns: series float mass A
method getBinMassB(self, idx)
Get Mass B of a bin.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
idx (int) : series int Bin index
Returns: series float mass B
method getPeak(self)
Get Peak information.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
Returns:
peakIndex series int The index of the Peak bin.
peakLevel. series float The mid-level of the Peak bin.
method getCoverage(self)
Get Coverage information.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object
Returns:
covUpIndex series int The index of the upper bound bin of the Coverage Area.
covUpLevel series float The upper level bound of the Coverage Area.
covLoIndex series int The index of the lower bound bin of the Coverage Area.
covLoLevel series float The lower level bound of the Coverage Area.
method getMedian(self)
Get the profile's median level and its bin index. Calculates the value on-demand if stale.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object.
Returns:
medianIndex series int The index of the bin containing the Median.
medianLevel series float The Median level of the profile.
method getMean(self)
Get the profile's mean and its bin index. Calculates the value on-demand if stale.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object.
Returns:
meanIndex series int The index of the bin containing the mean.
meanLevel series float The mean of the profile.
method getStdDev(self)
Get the profile's standard deviation. Calculates the value on-demand if stale.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object.
Returns: series float The Standard deviation of the profile.
method getSkewness(self)
Get the profile's skewness. Calculates the value on-demand if stale.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object.
Returns: series float The Skewness of the profile.
method getKurtosis(self)
Get the profile's excess kurtosis. Calculates the value on-demand if stale.
Namespace types: Prof
Parameters:
self (Prof) : Prof Profile object.
Returns: series float The Kurtosis of the profile.
method getSegments(self)
Get the profile's fundamental unimodal segments. Calculates on-demand if stale.
Uses a pivot-based recursive algorithm configured by gapSize.
Namespace types: Prof
Parameters:
self (Prof) : Prof The profile object.
Returns: matrix A 2-column matrix where each row is an pair.
Prof
Prof Generic Profile object containing the grid and two data arrays.
Fields:
_bins (series int) : int Number of discrete containers (bins).
_upper (series float) : float Upper boundary of the domain.
_lower (series float) : float Lower boundary of the domain.
_resolution (series float) : float Smallest atomic grid unit (Resolution).
_isLog (series bool) : bool If true, the grid uses logarithmic scaling.
_logFactor (series float) : float Cached multiplier for log iteration (k = (up/lo)^(1/n)).
_logStep (series float) : float Cached natural logarithm of the factor (ln(k)) for optimized index calculation.
_dynamic (series bool) : bool Flag for dynamic resizing/resampling.
_coverage (series int) : int Target Mass Coverage Percentage (Input for Coverage).
_gapSize (series int) : int Tolerance against trend violations (Noise filter).
_maxBins (series int) : int Hard capacity limit for bins.
_massA (array) : array Generic Mass Array A.
_massB (array) : array Generic Mass Array B.
_peak (series int) : int Index of max mass (Mode).
_covUp (series int) : int Index of Coverage Upper Bound.
_covLo (series int) : int Index of Coverage Lower Bound.
_median (series float) : float Median level of distribution.
_mean (series float) : float Weighted Average Level (Center of Gravity).
_stdDev (series float) : float Population Standard Deviation.
_skewness (series float) : float Asymmetry measure.
_kurtosis (series float) : float Tail heaviness measure.
_segments (matrix) : matrix Identified unimodal segments.
Trend-Based Fibs: Static Labels at StartThis indicator automatically projects Fibonacci extension levels and "Golden Zones" starting from the opening price of a new period (Daily or Weekly). By using the previous period’s range (High-Low) as the basis for volatility, it provides objective price targets and reversal zones for the current session.
How it Works Unlike standard Fibonacci Retracements that require manual drawing from swing highs to lows, this tool uses a fixed anchor method: The Range: It calculates the total range of the previous day or week.
The Anchor: It sets the current period's opening price as the "Zero Line."The Projection: It applies Fibonacci ratios ($0.236$, $0.5$, $0.786$, $1.0$, and $1.618$) upward and downward from that opening price.
Key Features Automated Levels: No more manual drawing. Levels reset and recalculate automatically at the start of every Daily or Weekly candle. Bullish & Bearish Zones: Instantly see extensions for both directions. The "Golden Zones": Highlighted boxes represent the high-probability $0.236$ to $0.5$ zones for both long and short continuations. Previous Period Levels: Optional toggles to show the previous High and Low, which often act as major support or resistance.
Integrated EMAs: Includes two customizable Exponential Moving Averages (default 20 and 100) to help you stay on the right side of the trend.
Clean Visuals: Labels are pinned to the start of the period to keep your charts uncluttered while lines extend dynamically as time progresses.
How to Trade with it Trend Continuation: If price opens and holds above the $0.236$ bullish level, look for the $0.618$ and $1.0$ levels as targets.
Reversals: Watch for price exhaustion at the $1.618$ extension, especially if it aligns with an EMA or a Previous High/Low.
Gap Plays: Excellent for "Opening Range" strategies where you use the first close of the day as the pivot point for the extensions.
Custom Stochastic Momentum Index (SMI)📊 Custom Stochastic Momentum Index (SMI)
Custom Stochastic Momentum Index (SMI) is a refined momentum oscillator designed to identify trend strength, reversals, and overbought/oversold conditions with higher accuracy than traditional stochastic indicators.
This version gives traders full control over smoothing and signal calculation, making it suitable for intraday, swing, and positional trading across all markets.
🔹 Key Features
Fully customizable %K Length
Adjustable %K Smoothing and Double Smoothing
Configurable %D Period
User-selectable %D Moving Average Type
SMA
EMA
WMA
RMA
Fixed and proven levels:
Overbought: +40
Oversold: −40
Automatic shaded zones above overbought and below oversold levels
Clear K–D crossover labels for precise entry and exit timing
Clean, non-repainting logic
📈 How to Use
Bullish Setup
Look for %K crossing above %D near or below −40
Bearish Setup
Look for %K crossing below %D near or above +40
Trend Confirmation
Trade crossovers in the direction of the higher-timeframe trend
Works best when combined with:
Price Action
Support & Resistance
Market Structure / SMC concepts
🎯 Best For
Intraday traders
Swing traders
Momentum-based strategies
Confirmation with structure or breakout systems
⚠️ Disclaimer
This indicator is for educational and analytical purposes only.
It does not provide financial advice. Always use proper risk management.
US Stock Market Performance by Sector[Dots3Red]This indicator displays the annual performance of the U.S. stock market by sector.
Selected major sectors
IND – Industrials
TECH – Technology
HTH – Healthcare
FIN – Financials
COMM – Communication Services
CONSCYC – Consumer Cyclical
CONSSTAP – Consumer Staples
ENERGY – Energy
REAL ESTATE – Real Estate
BASMAT – Basic Materials
The data is presented in a table below the main chart.
Green cell — the sector was bullish during that year
Red cell — the sector was bearish during that year
The table automatically sorts sectors by performance, placing the best-performing sector at the top for each year.
NOTE:
Annual performance is calculated starting from 2020 by default (arbitrarily chosen) and can be adjusted by the user.






















