Impulse Alert - Supply (Sell) [Fixed]🟥 Supply Zone (Sell) – Institutional Order Block Detector
This custom indicator automatically detects valid Supply Zones (Sell Zones) based on Smart Money Concepts and institutional trading behavior.
🔍 How It Works:
Identifies strong bearish impulsive moves after price forms a potential Order Block
Valid supply zones are plotted after:
A valid rally–base–drop or drop–base–drop structure
A shift in structure or clear imbalance is detected
The zone is created from the last bullish candle before a strong bearish engulfing move
Zones remain on chart until price revisits and reacts
📊 Use Case:
Ideal for traders using Smart Money Concepts (SMC), Supply & Demand, or ICT-inspired strategies
Perfect for scalping, day trading, or swing setups
Designed for confluence with HTF bias and LTF execution
⚙️ Features:
Supply Zone auto-plotting
Customizable zone color and opacity
Alerts when price returns to the zone (retest entry opportunity)
🧠 Tip for Best Use:
Use in confluence with:
HTF Supply zones (manual or other indicator)
Market Structure breaks
Fair Value Gaps or Imbalance zones
Strong impulsive moves from HTF to LTF
🔁 Future Additions (Coming Soon):
Demand Zone detection
Zone strength rating system
Refined zone filters (volume, candle size, etc.)
Alerts for mitigation or invalidation
📌 Created by: Rohit Jadhav | Real-time market trader | YT/Insta - @GrowthByTrading
💬 Feedback? Drop a comment or connect via profile for updates and tutorials!
Cerca negli script per "chart"
🌊 Reinhart-Rogoff Financial Instability Index (RR-FII)Overview
The Reinhart-Rogoff Financial Instability Index (RR-FII) is a multi-factor indicator that consolidates historical crisis patterns into a single risk score ranging from 0 to 100. Drawing from the extensive research in "This Time is Different: Eight Centuries of Financial Crises" by Carmen M. Reinhart and Kenneth S. Rogoff, the RR-FII translates nearly a millennium of crisis data into practical insights for financial markets.
What It Does
The RR-FII acts like a real-time financial weather forecast by tracking four key stress indicators that historically signal the build-up to major financial crises. Unlike traditional indicators based only on price, it takes a broader view, examining the global market's interconnected conditions to provide a holistic assessment of systemic risk.
The Four Crisis Components
- Capital Flow Stress (Default weight: 25%)
- Data analyzed: Volatility (ATR) and price movements of the selected asset.
- Detects abrupt volatility surges or sharp price falls, which often precede debt defaults due to sudden stops in capital inflow.
- Commodity Cycle (Default weight: 20%)
- Data analyzed: US crude oil prices (customizable).
- Watches for significant declines from recent highs, since commodity price troughs often signal looming crises in emerging markets.
- Currency Crisis (Default weight: 30%)
- Data analyzed: US Dollar Index (DXY, customizable).
- Flags if the currency depreciates by more than 15% in a year, aligning with historical criteria for currency crashes linked to defaults.
- Banking Sector Health (Default weight: 25%)
- Data analyzed: Performance of financial sector ETFs (e.g., XLF) relative to broad market benchmarks (SPY).
- Monitors for underperformance in the financial sector, a strong indicator of broader financial instability.
Risk Scale Interpretation
- 0-20: Safe – Low systemic risk, normal conditions.
- 20-40: Moderate – Some signs of stress, increased caution advised.
- 40-60: Elevated – Multiple risk factors, consider adjusting positions.
- 60-80: High – Significant probability of crisis, implement strong risk controls.
- 80-100: Critical – Several crisis indicators active, exercise maximum caution.
Visual Features
- The main risk line changes color with increasing risk.
- Background colors show different risk zones for quick reference.
- Option to view individual component scores.
- A real-time status table summarizes all component readings.
- Crisis event markers appear when thresholds are breached.
- Customizable alerts notify users of changing risk levels.
How to Use
- Apply as an overlay for broad risk management at the portfolio level.
- Adjust position sizes inversely to the crisis index score.
- Use high index readings as a warning to increase vigilance or reduce exposure.
- Set up alerts for changes in risk levels.
- Analyze using various timeframes; daily and weekly charts yield the best macro insights.
Customizable Settings
- Change the weighting of each crisis factor.
- Switch commodity, currency, banking sector, and benchmark symbols for customized views or regional focus.
- Adjust thresholds and visual settings to match individual risk preferences.
Academic Foundation
Rooted in rigorous analysis of 66 countries and 800 years of data, the RR-FII uses empirically validated relationships and thresholds to assess systemic risk. The indicator embodies key findings: financial crises often follow established patterns, different types of crises frequently coincide, and clear quantitative signals often precede major events.
Best Practices
- Use RR-FII as part of a comprehensive risk management strategy, not as a standalone trading signal.
- Combine with fundamental analysis for complete market insight.
- Monitor for differences between component readings and the overall index.
- Favor higher timeframes for a broader macro view.
- Adjust component importance to suit specific market interests.
Important Disclaimers
- RR-FII assesses risk using patterns from past crises but does not predict future events.
- Historical performance is not a guarantee of future results.
- Always employ proper risk management.
- Consider this tool as one element in a broader analytical toolkit.
- Even with high risk readings, markets may not react immediately.
Technical Requirements
- Compatible with Pine Script v6, suitable for all timeframes and symbols.
- Pulls data automatically for USOIL, DXY, XLF, and SPY.
- Operates without repainting, using only confirmed data.
The RR-FII condenses centuries of financial crisis knowledge into a modern risk management tool, equipping investors and traders with a deeper understanding of when systemic risks are most pronounced.
LANZ Strategy 6.0 [Backtest]🔷 LANZ Strategy 6.0 — Precision Backtesting Based on 09:00 NY Candle, Dynamic SL/TP, and Lot Size per Trade
LANZ Strategy 6.0 is the simulation version of the original LANZ 6.0 indicator. It executes a single LIMIT BUY order per day based on the 09:00 a.m. New York candle, using dynamic Stop Loss and Take Profit levels derived from the candle range. Position sizing is calculated automatically using capital, risk percentage, and pip value — allowing accurate trade simulation and performance tracking.
📌 This is a strategy script — It simulates real trades using strategy.entry() and strategy.exit() with full money management for risk-based backtesting.
🧠 Core Logic & Trade Conditions
🔹 BUY Signal Trigger:
At 09:00 a.m. NY (New York time), if:
The current candle is bullish (close > open)
→ A BUY order is placed at the candle’s close price (EP)
Only one signal is evaluated per day.
⚙️ Stop Loss / Take Profit Logic
SL can be:
Wick low (0%)
Or dynamically calculated using a % of the full candle range
TP is calculated using the user-defined Risk/Reward ratio (e.g., 1:4)
The TP and SL levels are passed to strategy.exit() for each trade simulation.
💰 Risk Management & Lot Size Calculation
Before placing the trade:
The system calculates pip distance from EP to SL
Computes the lot size based on:
Account capital
Risk % per trade
Pip value (auto or manual)
This ensures every trade uses consistent, scalable risk regardless of instrument.
🕒 Manual Close at 3:00 p.m. NY
If the trade is still open by 15:00 NY time, it will be closed using strategy.close().
The final result is the actual % gain/loss based on how far price moved relative to SL.
📊 Backtest Accuracy
One trade per day
LIMIT order at the candle close
SL and TP pre-defined at execution
No repainting
Session-restricted (only runs on 1H timeframe)
✅ Ideal For:
Traders who want to backtest a clean and simple daily entry system
Strategy developers seeking reproducible, high-conviction trades
Users who prefer non-repainting, session-based simulations
👨💻 Credits:
💡 Developed by: LANZ
🧠 Logic & Money Management Engine: LANZ
📈 Designed for: 1H charts
🧪 Purpose: Accurate simulation of LANZ 6.0's NY Candle Entry system
Clean ATR LevelsSimple 14D ATR +1 & -1 display from PM to Close.
The Clean ATR Levels indicator is a powerful Pine Script tool designed to provide traders with dynamic support and resistance levels based on the Average True Range (ATR) calculation. This indicator automatically draws horizontal lines that represent key price levels where significant market reactions are likely to occur, helping traders identify potential entry and exit points throughout the trading session.
The core functionality centers around calculating ATR levels using the most recent daily close as the reference point. The script draws two primary levels: an upper level at +100% ATR above the current close and a lower level at -100% ATR below the current close. These levels represent statistically significant price zones where the market has historically shown increased volatility and potential reversal patterns. Additionally, the indicator includes an optional previous close line that serves as a psychological reference point for intraday price action.
What sets this indicator apart is its intelligent session management and clean visual presentation. The lines are automatically redrawn at the start of each new trading day and are programmed to extend precisely until 4 PM EST market close, eliminating visual clutter on the chart. This session-aware approach ensures that traders are always working with the most relevant levels for the current trading day without having outdated lines extending unnecessarily into future sessions.
The indicator also features a comprehensive information table that displays real-time values for the ATR calculation, current close price, and both upper and lower ATR levels. This provides traders with exact numerical references without having to manually calculate these critical values. The script is highly customizable, allowing users to adjust the ATR period, line colors, widths, and choose whether to display the previous close reference line, making it adaptable to various trading styles and visual preferences.
Alternate Hourly HighlightAlternate Hourly Highlight
This indicator automatically highlights every alternate one-hour window on your chart, making it easy to visually identify and separate each trading hour. The background alternates color every hour, helping traders spot hourly cycles, session changes, or develop time-based trading strategies.
Works on any timeframe.
No inputs required—just add to your chart and go!
Especially useful for intraday traders who analyze price action, volatility, or volume by the hour.
For custom colors or session windows, feel free to modify the script!
Session HL + Candles + AMD (Nephew_Sam_)Session HL + Candles + AMD (Nephew_Sam_)
This indicator marks out intraday sessions summarized into single candles, with an additional option to mark out the HL of each session. Perfect for understanding AMD within a glance (accumulation-manipulation-distribution)
Features:
Session High/Low lines with customizable colors and labels
Optional session candles displayed on the right side of the chart
Timezone support for global traders
Customizable bull/bear candle colors
Works on timeframes up to 1 hour
Perfect for:
Identifying session liquidity levels
Tracking session ranges and breakouts
Multi-timeframe session analysis
ICT methodology traders
Settings:
Choose your timezone for accurate session detection
Toggle session candles and HL lines independently
Customize colors, line styles, and labels
Set maximum timeframe (up to 1 hour)
Expansion Triangle [TradingFinder] MegaPhone Broadening🔵 Introduction
The Expanding Triangle, also known as the Broadening Formation, is one of the key technical analysis patterns that clearly reflects growing market volatility, increasing indecision among participants, and the potential for sharp price explosions.
This pattern is typically defined by a sequence of higher highs and lower lows, forming within two diverging trendlines. Unlike traditional triangles that converge to a breakout point, the expanding triangle pattern becomes wider over time, leaving no precise apex for a breakout to occur.
From a price action perspective, the pattern represents a prolonged tug-of-war between buyers and sellers, where neither side has taken control yet. Each aggressive swing opens the door to new opportunities whether it's a trend reversal, range trading, or a momentum breakout. This dual nature makes the pattern highly versatile across market conditions, from exhausted trend ends to volatile consolidation zones.
The custom-built indicator for this pattern uses a combination of smart algorithms and detailed analysis of swing dynamics to automatically detect expanding triangles and highlight low-risk entry points.
Traders can use this tool to capitalize on high-probability setups from shorting near the upper edge of the structure with confirmation, to trading bearish breakouts during trend continuations, or entering long positions near the lower boundary during bullish reversals. The chart examples included in this article demonstrate these three highly practical trading scenarios in live market conditions.
A major advantage of this indicator lies in its structural filtering engine, which analyzes the behavior of each price leg in the triangle. With four adjustable filter levels from Very Aggressive, which highlights all potential patterns, to Very Defensive, which only triggers when price actually touches the triangle's trendlines the indicator ensures that only structurally sound and verified setups appear on the chart, reducing noise and false signals significantly.
Long Setup :
Short Setup :
🔵 How to Use
The pattern typically forms in conditions of heightened uncertainty and volatility, where price swings generate a series of higher highs and lower lows. The expanding triangle consists of three key legs bounded by diverging trendlines. The indicator intelligently analyzes each leg's direction and angle to determine whether a valid pattern is forming.
At the core of the indicator’s logic is its leg filtering system, which controls the quality of the pattern and filters out weak or noisy setups. Four structural filter modes are available to suit different trading styles and risk preferences. In Very Aggressive mode, filters are disabled, and the indicator detects any pattern purely based on the sequence of swing points.
This mode is ideal for traders who want to see everything and apply their own discretion.
In Aggressive mode, the indicator checks whether each new leg extends no more than twice the length of the previous one. If a leg overshoots excessively, the structure is invalidated.
In Defensive mode, the filter enforces a minimum movement requirement each leg must move at least 2% of the previous one. This prevents the formation of shallow, weak patterns that visually resemble triangles but lack substance.
The strictest setting, Very Defensive, combines all previous filters and additionally requires the price to physically touch the triangle’s trendlines before issuing a signal. This ensures that setups only appear when real market interaction with key structural levels has occurred, not based on assumptions or geometry alone. This mode is ideal for traders seeking maximum precision and minimal risk.
🟣 Bullish Setup
A bullish setup within the Expanding Triangle pattern occurs when price revisits the lower support boundary after a series of broad swings typically near the third leg of the formation. This area often represents a shift in momentum, where sellers begin to lose strength and buyers prepare to take control.
Ideally, the setup is accompanied by a bullish reversal candle (e.g. doji, pin bar, or engulfing) near the lower trendline. If the Very Defensive filter is active, the indicator will only issue a signal if price makes a confirmed touch on the trendline and reacts from that level. This significantly improves signal accuracy and filters out premature entries.
After confirmation, traders may choose to enter a long position on the bullish candle or shortly afterward. A logical stop-loss is placed just below the recent swing low within the pattern. The target can be set at or near the upper trendline, or projected using the full height of the triangle added to the breakout point. On higher timeframes, this reversal often marks the beginning of a strong uptrend.
🟣 Bearish Setup
A bearish setup forms when price climbs toward the upper resistance trendline, usually as the third leg completes. This is where buyers often begin to show exhaustion, and sellers step in with strength providing an ideal low-risk entry point for short positions.
As with the bullish setup, if the Candle Confirmation filter is enabled, the indicator will only show a signal when a bearish reversal candle forms at the point of contact. If Defensive or Very Defensive filters are also active, the setup must meet strict criteria of proportionate leg movement and an actual trendline touch to qualify.
Once confirmed, traders can enter on the reversal candle, placing a stop-loss slightly above the recent high. The target can be set at the lower trendline or calculated based on the triangle's full height, projected downward. This setup is particularly useful at the end of weak bullish trends or in volatile market tops.
🔵 Settings
🟣 Logic Settings
Pivot Period : Defines how many bars are analyzed to identify swing highs and lows. Higher values detect larger, slower structures, while lower values respond to faster patterns. The default value of 13 offers a balanced sensitivity.
Pattern Filter :
Very Aggressive : Detects all patterns based on point sequence with no structural checks.
Aggressive : Ensures each leg is no more than 2x the size of the previous one.
Defensive : Requires each leg to be at least 2% the size of the previous leg.
Very Defensive : The strictest level; only confirms patterns when price touches trendlines.
Candle Confirmation : When enabled, the indicator requires a valid confirmation candle (doji, pin bar, engulfing) at the interaction point with the trendline before issuing a signal. This reduces false entries and improves entry precision.
🟣 Alert Settings
Alert : Enables alerts for SSS.
Message Frequency : Determines the frequency of alerts. Options include 'All' (every function call), 'Once Per Bar' (first call within the bar), and 'Once Per Bar Close' (final script execution of the real-time bar). Default is 'Once per Bar'.
Show Alert Time by Time Zone : Configures the time zone for alert messages. Default is 'UTC'.
🔵 Conclusion
The Expanding Triangle pattern, with its wide structure and volatility-driven nature, represents chaos but also opportunity. For traders who can read its behavior, it provides some of the most powerful setups for reversals, breakouts, and range-based trades. While the pattern may seem messy at first glance, it is built on clear logic and when properly detected, it offers high-probability opportunities.
This indicator doesn’t just draw expanding triangles it intelligently evaluates their structural quality, validates price interaction through candle confirmation, and allows the trader to fine-tune the detection logic through adjustable filter levels. Whether you’re a reversal trader looking for a turning point, or a breakout trader hunting momentum, this tool adapts to your strategy.
In volatile or uncertain markets, where fakeouts and sudden shifts are common, this indicator can become a cornerstone of your trading system helping you turn volatility into structured, high-quality opportunities.
Essa's Sessions IndicatorOverview
This powerful tool is designed to visually map out the key trading sessions: Asia, London, and New York directly on your chart. By highlighting these periods and plotting their respective highs and lows, it helps you identify critical price levels, gauge market sentiment, and pinpoint potential breakout opportunities with ease.
What It Does
Visualizes Key Trading Sessions: Automatically draws colored backgrounds for the Asia, London, and New York sessions to show you exactly when the most important market activity is happening.
Plots Session Highs & Lows: Displays precise horizontal lines for the highest and lowest prices reached during each session, acting as key support and resistance levels.
Dual Timezone Mode: Easily switch between London (GMT/BST) and New York (EST/EDT) timezones with a single click. The indicator automatically adjusts all session times for you, ensuring accuracy no matter where you are.
Interactive & Informative Labels: Hover over any session high or low label to see a detailed tooltip containing:
The exact price level.
The session's price range (calculated in pips or points).
The total daily price range for broader context.
A simple volatility gauge (from "Low Vol 😴" to "High Vol 🔥").
Customizable Alerts: Enable breakout alerts to receive instant notifications the moment the price closes above a session high or below a session low.
Simple, powerful, and highly informative, this indicator is an essential tool for traders looking to build strategies around session-based price action.
Alt Szn Oracle - Institutional GradeThe Alt Szn Oracle is a macro-level indicator built to help traders front-run altseason by tracking liquidity, dominance rotation, sentiment, and capital flows—all in one signal. It’s designed for those who don’t just chase pumps, but want to understand when the tide is turning and why. This tool doesn't predict specific coin breakouts—it tells you when the market as a whole is gearing up to rotate into higher beta assets like altcoins, including memes and microcaps.
The index consolidates ten macro inputs into a normalized, smoothed score from 0–100. These include Bitcoin and Ethereum dominance, ETH/BTC, altcoin market cap (Total3), relative volume flows, and stablecoin supply (USDT, USDC, DAI)—which act as proxies for risk-on appetite and dry powder entering the system. It also incorporates manually updated sentiment metrics from Google Trends and the Fear & Greed Index, giving it a behavioral edge that most indicators lack.
The logic is simple but powerful: when BTC dominance is falling, ETH/BTC is rising, altcoin volume increases relative to BTC/ETH, and stablecoins start moving—you're likely in the early innings of rotation. The index is also filtered through a volatility threshold and smoothed with an EMA to eliminate chop and fakeouts.
Use this indicator on macro charts like TOTAL3, TOTAL2, or ETHBTC to gauge market health, or overlay it on specific coins like PEPE, DOGE, or SOL to confirm if the tide is in your favor. Interpreting the score is straightforward: readings above 80 suggest euphoria and signal it’s time to de-risk, 60–80 indicates expansion and confirms altseason is underway, 40–60 is neutral, and 20–40 is a capitulation zone where smart money accumulates.
What sets this apart is that it doesn’t just track price—it reflects the flow of capital, the positioning of liquidity, and the sentiment of the crowd. Most altseason indicators are lagging, overfitted, or too simplistic. This one is modular, forward-looking, and grounded in real capital rotation theory.
If you're a trader who wants to time the cycle, not guess it, this is your tool. Refine it, fork it, or expand it to your niche—DeFi, NFTs, meme coins, or L1s. It’s a framework for reading the macro winds, not a signal service. Use it with discipline, and you’ll catch the wave while others drown in noise.
Futures Support & Resistance LevelsMulti-Timeframe Support & Resistance Levels for Futures Trading
Description:
This indicator automatically identifies and displays key support and resistance levels using multiple technical analysis methods. Designed specifically for futures traders (ES, NQ, etc.), it provides a clean, organized view of important price levels.
Key Features:
Multiple Detection Methods: Combines pivot points, daily ranges, and psychological levels
Smart Ranking System: Levels are numbered by strength (1 = strongest)
Clean Visualization: Extended lines across the chart with clear price labels
Confluence Detection: Highlights areas where multiple levels converge
Customizable Display: Adjust colors, line styles, and label sizes
Level Types Identified:
Daily High/Low (current session)
Previous Daily High/Low
Pivot-based Support/Resistance
Psychological Round Numbers
Confluence Zones (multiple levels clustering)
Technical Approach:
The indicator uses a strength-scoring algorithm to rank levels by importance. Daily levels receive the highest weighting (2.0), followed by previous daily levels (1.5), pivot points (1.0), and psychological levels (0.5). This helps traders focus on the most significant levels.
Visual Elements:
Solid lines = Strong levels
Dashed lines = Medium levels
Dotted lines = Weak levels
Optional technical condition markers for educational analysis
Best Used For:
Identifying key intraday levels for futures trading
Finding high-probability reversal zones
Setting logical stop-loss and take-profit levels
Recognizing confluence areas for stronger setups
Note:
This is a technical analysis tool for educational purposes. No indicator can predict future price movements. Always use proper risk management and combine with other forms of analysis.
Jumping watermark# Jumping watermark
## Function description
- Dynamic watermark: Mainly used to add dynamic watermarks to prevent theft and transfer when recording videos.
- Static watermark: Sharing opinions can easily include information such as trading pairs, cycles, current time, and individual signatures.
### Static watermark:
Display the watermark related to the current trading pair in the center of the chart.
- Configuration items:
- You can choose to configure the display content: current trading pair code and name, cycle, date, time, and individual signature content
### Dynamic watermark
Display the configured watermark content in a dynamic random position.
- Configuration items:
- Turn on or off the display of watermark jumping
- Modify the display text content and style by yourself
----- 中文简介-----
# 跳动水印
## 功能描述
- 动态水印: 主要可用于视频录制时添加动态水印防盗、防搬运。
- 静态水印:观点分享是可方便的带上交易对、周期、当前时间、个签等信息。
### 静态水印:
在图表中心位置显示当前交易对相关信息水印。
- 配置项:
- 可选择配置显示内容:当前交易对代码及名称、周期、日期、时间、个签内容
### 动态水印
动态随机位置显示配置水印内容。
- 配置项:
- 开启或关闭显示水印跳动
- 自行修改配置显示文字内容和样式
Candles by Day, Time, Month + StatsThis Pine Script allows you to filter and display candles based on:
📅 Specific days of the week
🕒 Custom intraday time ranges (e.g., 9:15 to 10:30)
📆 Selected months
📊 Shows stats for each filtered block:
🔼 Range (High – Low)
📏 Average candle body size
⚙️ Key Features:
✅ Filter by day, time, and month
🎛 Toggle to show/hide the stats label
🟩 Candles are drawn only for selected conditions
📍 Stats label is positioned above session high (adjustable)
⚠️ Important Setup Instructions:
✅ 1. Use it on a blank chart
To avoid overlaying with default candles:
Open the chart of your preferred symbol
Click on the chart type (top toolbar: "Candles", "Bars", etc.)
Select "Blank" from the dropdown (this will hide all native candles)
Apply this indicator
This ensures only the filtered candles from the script are visible.
Adjust for your local timezone
This script uses a hardcoded timezone: "Asia/Kolkata"
If you are in a different timezone, change it to your own (e.g. "America/New_York", "Europe/London", etc.) in all instances of:
time(timeframe.period, "Asia/Kolkata")
timestamp("Asia/Kolkata", ...)
Use Cases:
Opening range behavior on specific weekdays/months
Detecting market anomalies during exact windows
Building visual logs of preferred trade hours
Enhanced Ichimoku Cloud Strategy V1 [Quant Trading]Overview
This strategy combines the powerful Ichimoku Kinko Hyo system with a 171-period Exponential Moving Average (EMA) filter to create a robust trend-following approach. The strategy is designed for traders seeking to capitalize on strong momentum moves while using the Ichimoku cloud structure to identify optimal entry and exit points.
This is a patient, low-frequency trading system that prioritizes quality over quantity. In backtesting on Solana, the strategy achieved impressive results with approximately 3600% profit over just 29 trades, demonstrating its effectiveness at capturing major trend movements rather than attempting to profit from every market fluctuation. The extended parameters and strict entry criteria are specifically optimized for Solana's price action characteristics, making it well-suited for traders who prefer fewer, higher-conviction positions over high-frequency trading approaches.
What Makes This Strategy Original
This implementation enhances the traditional Ichimoku system by:
Custom Ichimoku Parameters: Uses non-standard periods (Conversion: 7, Base: 211, Lagging Span 2: 120, Displacement: 41) optimized for different market conditions
EMA Confirmation Filter: Incorporates a 171-period EMA as an additional trend confirmation layer
State Memory System: Implements a sophisticated memory system to track buy/sell states and prevent false signals
Dual Trade Modes: Offers both traditional Ichimoku signals ("Ichi") and cloud-based signals ("Cloud")
Breakout Confirmation: Requires price to break above the 25-period high for long entries
How It Works
Core Components
Ichimoku Elements:
-Conversion Line (Tenkan-sen): 7-period Donchian midpoint
-Base Line (Kijun-sen): 211-period Donchian midpoint
-Span A (Senkou Span A): Average of Conversion and Base lines, plotted 41 periods ahead
-Span B (Senkou Span B): 120-period Donchian midpoint, plotted 41 periods ahead
-Lagging Span (Chikou Span): Current close plotted 41 periods back
EMA Filter: 171-period EMA acts as a long-term trend filter
Entry Logic (Ichi Mode - Default)
A long position is triggered when ALL conditions are met:
Cloud Bullish: Span A > Span B (41 periods ago)
Breakout Confirmation: Current close > 25-period high
Ichimoku Bullish: Conversion Line > Base Line
Trend Alignment: Current close > 171-period EMA
State Memory: No previous buy signal is still active
Exit Logic
Positions are closed when:
Ichimoku Bearish: Conversion Line < Base Line
Alternative Cloud Mode
When "Cloud" mode is selected, the strategy uses:
Entry: Span A crosses above Span B with additional cloud and EMA confirmations
Exit: Span A crosses below Span B with cloud and EMA confirmations
Default Settings Explained
Strategy Properties
Initial Capital: $1,000 (realistic for average traders)
Position Size: 100% of equity (appropriate for backtesting single-asset strategies)
Commission: 0.1% (realistic for most brokers)
Slippage: 3 ticks (accounts for realistic execution costs)
Date Range: January 1, 2018 to December 31, 2069
Key Parameters
Conversion Periods: 7 (faster than traditional 9, more responsive to price changes)
Base Periods: 211 (much longer than traditional 26, provides stronger trend confirmation)
Lagging Span 2 Periods: 120 (custom period for stronger support/resistance levels)
Displacement: 41 (projects cloud further into future than standard 26)
EMA Period: 171 (long-term trend filter, approximately 8.5 months of daily data)
How to Use This Strategy
Best Market Conditions
Trending Markets: Works best in clearly trending markets where the cloud provides strong directional bias
Medium to Long-term Timeframes: Optimized for daily charts and higher timeframes
Volatile Assets: The breakout confirmation helps filter out weak signals in choppy markets
Risk Management
The strategy uses 100% equity allocation, suitable for backtesting single strategies
Consider reducing position size when implementing with real capital
Monitor the 25-period high breakout requirement as it may delay entries in fast-moving markets
Visual Elements
Green/Red Cloud: Shows bullish/bearish cloud conditions
Yellow Line: Conversion Line (Tenkan-sen)
Blue Line: Base Line (Kijun-sen)
Orange Line: 171-period EMA trend filter
Gray Line: Lagging Span (Chikou Span)
Important Considerations
Limitations
Lagging Nature: Like all Ichimoku strategies, signals may lag significant price moves
Whipsaw Risk: Extended periods of consolidation may generate false signals
Parameter Sensitivity: Custom parameters may not work equally well across all market conditions
Backtesting Notes
Results are based on historical data and past performance does not guarantee future results
The strategy includes realistic slippage and commission costs
Default settings are optimized for backtesting and may need adjustment for live trading
Risk Disclaimer
This strategy is for educational purposes only and should not be considered financial advice. Always conduct your own analysis and risk management before implementing any trading strategy. The unique parameter combinations used may not be suitable for all market conditions or trading styles.
Customization Options
Trade Mode: Switch between "Ichi" and "Cloud" signal generation
Short Trading: Option to enable short positions (disabled by default)
Date Range: Customize backtesting period
All Ichimoku Parameters: Fully customizable for different market conditions
This enhanced Ichimoku implementation provides a structured approach to trend following while maintaining the flexibility to adapt to different trading styles and market conditions.
log.info() - 5 Exampleslog.info() is one of the most powerful tools in Pine Script that no one knows about. Whenever you code, you want to be able to debug, or find out why something isn’t working. The log.info() command will help you do that. Without it, creating more complex Pine Scripts becomes exponentially more difficult.
The first thing to note is that log.info() only displays strings. So, if you have a variable that is not a string, you must turn it into a string in order for log.info() to work. The way you do that is with the str.tostring() command. And remember, it's all lower case! You can throw in any numeric value (float, int, timestamp) into str.string() and it should work.
Next, in order to make your output intelligible, you may want to identify whatever value you are logging. For example, if an RSI value is 50, you don’t want a bunch of lines that just say “50”. You may want it to say “RSI = 50”.
To do that, you’ll have to use the concatenation operator. For example, if you have a variable called “rsi”, and its value is 50, then you would use the “+” concatenation symbol.
EXAMPLE 1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
log.info(“RSI= ” + str.tostring(rsi))
Example Output =>
RSI= 50
Here, we use double quotes to create a string that contains the name of the variable, in this case “RSI = “, then we concatenate it with a stringified version of the variable, rsi.
Now that you know how to write a log, where do you view them? There isn’t a lot of documentation on it, and the link is not conveniently located.
Open up the “Pine Editor” tab at the bottom of any chart view, and you’ll see a “3 dot” button at the top right of the pane. Click that, and right above the “Help” menu item you’ll see “Pine logs”. Clicking that will open that to open a pane on the right of your browser - replacing whatever was in the right pane area before. This is where your log output will show up.
But, because you’re dealing with time series data, using the log.info() command without some type of condition will give you a fast moving stream of numbers that will be difficult to interpret. So, you may only want the output to show up once per bar, or only under specific conditions.
To have the output show up only after all computations have completed, you’ll need to use the barState.islast command. Remember, barState is camelCase, but islast is not!
EXAMPLE 2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
if barState.islast
log.info("RSI=" + str.tostring(rsi))
plot(rsi)
However, this can be less than ideal, because you may want the value of the rsi variable on a particular bar, at a particular time, or under a specific chart condition. Let’s hit these one at a time.
In each of these cases, the built-in bar_index variable will come in handy. When debugging, I typically like to assign a variable “bix” to represent bar_index, and include it in the output.
So, if I want to see the rsi value when RSI crosses above 0.5, then I would have something like
EXAMPLE 3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,0.5)
if rsiCrossedOver
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
Example Output =>
bix=19964 - RSI=51.8449459867
bix=19972 - RSI=50.0975830828
bix=19983 - RSI=53.3529808079
bix=19985 - RSI=53.1595745146
bix=19999 - RSI=66.6466337654
bix=20001 - RSI=52.2191767466
Here, we see that the output only appears when the condition is met.
A useful thing to know is that if you want to limit the number of decimal places, then you would use the command str.tostring(rsi,”#.##”), which tells the interpreter that the format of the number should only be 2 decimal places. Or you could round the rsi variable with a command like rsi2 = math.round(rsi*100)/100 . In either case you’re output would look like:
bix=19964 - RSI=51.84
bix=19972 - RSI=50.1
bix=19983 - RSI=53.35
bix=19985 - RSI=53.16
bix=19999 - RSI=66.65
bix=20001 - RSI=52.22
This would decrease the amount of memory that’s being used to display your variable’s values, which can become a limitation for the log.info() command. It only allows 4096 characters per line, so when you get to trying to output arrays (which is another cool feature), you’ll have to keep that in mind.
Another thing to note is that log output is always preceded by a timestamp, but for the sake of brevity, I’m not including those in the output examples.
If you wanted to only output a value after the chart was fully loaded, that’s when barState.islast command comes in. Under this condition, only one line of output is created per tick update — AFTER the chart has finished loading. For example, if you only want to see what the the current bar_index and rsi values are, without filling up your log window with everything that happens before, then you could use the following code:
EXAMPLE 4
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
bix = bar_index
if barstate.islast
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
Example Output =>
bix=20203 - RSI=53.1103309071
This value would keep updating after every new bar tick.
The log.info() command is a huge help in creating new scripts, however, it does have its limitations. As mentioned earlier, only 4096 characters are allowed per line. So, although you can use log.info() to output arrays, you have to be aware of how many characters that array will use.
The following code DOES NOT WORK! And, the only way you can find out why will be the red exclamation point next to the name of the indicator. That, and nothing will show up on the chart, or in the logs.
// CODE DOESN’T WORK
//@version=6
indicator("MW - log.info()")
var array rsi_arr = array.new()
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,50)
if rsiCrossedOver
array.push(rsi_arr, rsi)
if barstate.islast
log.info("rsi_arr:" + str.tostring(rsi_arr))
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
// No code errors, but will not compile because too much is being written to the logs.
However, after putting some time restrictions in with the i_startTime and i_endTime user input variables, and creating a dateFilter variable to use in the conditions, I can limit the size of the final array. So, the following code does work.
EXAMPLE 5
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// CODE DOES WORK
//@version=6
indicator("MW - log.info()")
i_startTime = input.time(title="Start", defval=timestamp("01 Jan 2025 13:30 +0000"))
i_endTime = input.time(title="End", defval=timestamp("1 Jan 2099 19:30 +0000"))
var array rsi_arr = array.new()
dateFilter = time >= i_startTime and time <= i_endTime
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,50) and dateFilter // <== The dateFilter condition keeps the array from getting too big
if rsiCrossedOver
array.push(rsi_arr, rsi)
if barstate.islast
log.info("rsi_arr:" + str.tostring(rsi_arr))
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
Example Output =>
rsi_arr:
bix=20210 - RSI=56.9030578034
Of course, if you restrict the decimal places by using the rounding the rsi value with something like rsiRounded = math.round(rsi * 100) / 100 , then you can further reduce the size of your array. In this case the output may look something like:
Example Output =>
rsi_arr:
bix=20210 - RSI=55.6947486019
This will give your code a little breathing room.
In a nutshell, I was coding for over a year trying to debug by pushing output to labels, tables, and using libraries that cluttered up my code. Once I was able to debug with log.info() it was a game changer. I was able to start building much more advanced scripts. Hopefully, this will help you on your journey as well.
Live Breakout Zones (No Repaint)The Live Breakout Zones indicator is a non-repainting, real-time breakout detection tool designed to help traders identify critical price breakouts as they happen — without lag and without repainting past signals.
This indicator scans recent price action to determine the highest high and lowest low over a user-defined lookback period. When price closes above the recent high or below the recent low, it immediately plots a breakout zone on the chart and provides a visual confirmation through labels and optional alerts.
🔍 Key Features:
✅ No Repainting – Signals are locked in as soon as a breakout happens; no future bar confirmation is needed.
⏱️ Minimal Lag – Reacts on breakout of recent range highs/lows without waiting for pivots or candle confirmation.
📦 Breakout Zones – Automatically draws colored rectangles showing the breakout level and zone width for clearer analysis.
🔔 Real-Time Alerts – Alerts for both bullish and bearish breakouts help you stay informed without watching the screen.
⚙️ Customizable – Adjustable lookback length, zone width, and color settings to match your strategy or chart style.
📈 Use Cases:
Identify key breakout moments for entry or retest zones.
Confirm breakout-based strategies in trending or consolidating markets.
Use zones for setting risk-reward areas, SL/TP levels, or re-entry planning.
⚙️ Settings:
Lookback Range (High/Low): Defines how many previous bars are checked for breakout levels.
Zone Width: Number of bars to extend the breakout box forward.
Bullish/Bearish Zone Color: Choose custom colors for breakout visualization.
🧠 Trading Tip:
Combine this tool with volume spikes, tail candles, or support/resistance for more reliable breakout setups.
Morning Structure – Live 30 Min Range📝 Description:
This indicator captures the morning price structure by tracking the high and low during the first 30 minutes after market open (default: 9:30 AM to 10:00 AM, New York time).
🔧 How it works:
At market open, it begins tracking the highest high and lowest low
The high and low lines are dynamic and update in real-time during the first 30 minutes
Once the 30-minute range completes, the lines freeze at their final values
Lines extend horizontally across the rest of the session to mark the "Morning Range"
✅ Key Features:
Tracks live price action during the morning session
Freezes the structure after 30 minutes (or user-defined)
Automatically resets each new trading day
Built-in timezone setting (America/New_York) to align with standard U.S. market hours
Clean visual lines that scroll naturally with the chart
⚙️ Use Cases:
Identify morning breakout zones
Define support and resistance early in the session
Combine with breakout, fade, or range-trading strategies
⚠️ Note:
This version does not include alerts or labels, by design (clean and focused).
Those can be added easily for custom strategies.
Price-EMA Z-Score Backgroundhe “Price‑to‑EMA Z‑Score Background” indicator is designed to give you a clear, visual sense of when price has moved unusually far away from its smoothed trend, and to highlight those moments as potential overextension or mean‑reversion opportunities. Under the hood, it first computes a standard exponential moving average (EMA) of your chosen lookback length, then measures the raw difference between the current close and that EMA on every bar. To make that raw deviation comparable across different markets and timeframes, it converts the series of differences into a z‑score—subtracting the rolling mean of the deviations and dividing by their rolling standard deviation over a second lookback window.
Once you’ve normalized price‑to‑EMA distance into z‑score units, you can set two simple trigger levels: one upper threshold and one lower threshold. Whenever the z‑score climbs above the upper threshold, the chart background glows green, signaling that price is extended far above its EMA (and might be ripe for a pullback). Whenever the z‑score falls below the lower threshold, the background turns red, calling out an equally extreme move below the EMA (and a possible oversold bounce). Between those bands, no shading appears, letting you know price is trading within its “normal” range around the trend.
By adjusting the EMA period, the z‑score lookback, and the two trigger levels, you can dial in early warning signals (e.g. ±1 σ) or wait for very stretched moves (±2 σ or more). Used in concert with your favorite momentum or pattern tools—or even as a standalone visual cue—this simple background‑shading approach makes it easy to spot when a market is running too hot or too cold relative to its own recent average.
Yield Curve Regime Shading with LegendTakes two symbols (e.g. two futures contracts, two FX pairs, etc.) as inputs.
Calculates the “regime” as the sign of the change in their difference over an n‑period lookback.
Lets you choose whether you want to color the bars themselves or shade the background.
How it works
Inputs
symbolA, symbolB: the two tickers you’re comparing.
n: lookback in bars to measure the change in the spread.
mode: pick between “Shading” or “Candle Color”.
Data fetching
We use request.security() to pull each series at the chart’s timeframe.
Regime calculation
spread = priceA – priceB
spreadPrev = ta.valuewhen(not na(spread), spread , 0) (i.e. the spread n bars ago)
If spread > spreadPrev → bullish regime
If spread < spreadPrev → bearish regime
Plotting
Shading: apply bgcolor() in green/red.
Candle Color: use barcolor() to override the bar color.
Sell to Buy / Buy to SellSell to Buy / Buy to Sell — Momentum Shift Detector
The Sell to Buy / Buy to Sell indicator detects simple but powerful two-bar momentum shift patterns directly on your chart, offering early insights into potential reversals or strong breakout continuation.
🔎 How it works:
Sell to Buy (StB):
Previous candle (bar -1) is bearish
Current candle (bar 0) is bullish
The bullish candle closes above the high of the previous bearish candle
Confirmed only after bar close
Buy to Sell (BtS):
Previous candle (bar -1) is bullish
Current candle (bar 0) is bearish
The bearish candle closes below the low of the previous bullish candle
Confirmed only after bar close
🎯 Key Features:
✅ Pure price action logic — no indicators, no oscillators
✅ Immediate visual markers:
Green "StB" label for bullish momentum shifts
Red "BtS" label for bearish momentum shifts
✅ Full alert system to notify you in real-time when either pattern occurs
⚙ Who is this for?
Scalpers looking for short-term momentum shifts
Swing traders identifying potential reversals or breakout confirmations
Price action traders who want clean and objective setup detection
The Sell to Buy / Buy to Sell indicator is designed to give you clear and simple signals whenever the market shows decisive strength after a short-term opposite move — potentially marking the start of a new impulse.
80% Rule Indicator (ETH Session + SVP Prior Session)I created this script to show the 80% opportunity on chart if setting lines up.
"80% rule: Open outside the vah or Val. Spend 30 mins outside there then break back inside spend 15 mins below or above depending which way u broke. Then come back and retest the vah/val and take it to the poc as a first target with the final target being the other Val/vah "
📌 Script Summary
The "80% Rule Indicator (ETH Session + SVP Prior Session)" overlays your chart with prior session value area levels (VAH, VAL, and POC) calculated from extended-hours 30-minute data. It tracks when the price reenters the value area and confirms 80% Rule setups during your chosen trading session. You can optionally trigger alerts, show/hide market sessions, and fine-tune line appearance for a clean, modular workflow.
⚙️ Options & Settings Breakdown
- Use 24-Hour Session (All Markets)
When checked, the indicator ignores time zones and tracks signals during a full 24-hour period (0000-0000), helpful if you're outside U.S. trading hours or want consistent behavior globally.
- Market Session
Dropdown to select one of three key market zones:
- New York (09:30–16:00 ET)
- London (08:00–16:30 local)
- Tokyo (09:00–15:00 local)
Used to gate entry signals during relevant hours unless you choose the 24-hour option.
- Show PD VAH/VAL/POC Lines
Toggle to show or hide prior day’s levels (based on the 30-min extended session). Turning this off removes both the lines and their white text labels.
- Extend Lines Right
When enabled, the VAH/VAL/POC lines extend into the current day’s session. If disabled, they appear only at their anchor point.
- Highlight Selected Session
Adds a soft blue background to help visualize the active session you selected.
- Enable Alert Conditions
Allows TradingView alerts to be created for long/short 80% Rule entries.
- Enable Audible Alerts
Plays an in-chart sound with a popup message (“80% Rule LONG” or “SHORT”) when signals trigger. Requires the chart to be active and sounds enabled in TradingView.
Modified Fractal Open/CloseModified Fractal (Open/Close Based) - Indicator
The Modified Fractal (Open/Close Based) indicator offers a new way to detect fractal patterns on your chart by analyzing the open and close prices instead of the traditional high and low values.
🧮 How it works:
The indicator evaluates a group of 5 consecutive candles.
The central candle (2 bars ago) is analyzed.
For a Bullish Fractal:
The open or close of the central candle must be lower than the open and close of the other 4 surrounding candles.
For a Bearish Fractal:
The open or close of the central candle must be higher than the open and close of the other 4 surrounding candles.
Once a valid pattern is detected, a visual symbol (triangle) is plotted directly on the chart and an alert can be triggered.
✅ Key Features:
Non-repainting signals (evaluated after candle close)
Fully mechanical detection logic
Easy-to-use visual signals
Alert conditions ready to be integrated into TradingView’s alert system
Suitable for multiple timeframes (can be used from M1 to Daily and beyond)
🎯 Use case:
This modified fractal approach can help traders:
Spot potential swing points
Identify possible reversals
Confirm price exhaustion zones
Support breakout or mean reversion strategies
⚠ Note:
This indicator does not provide trade signals by itself. It is recommended to be combined with additional tools, price action analysis, or risk management rules.
Multifractal Forecast [ScorsoneEnterprises]Multifractal Forecast Indicator
The Multifractal Forecast is an indicator designed to model and forecast asset price movements using a multifractal framework. It uses concepts from fractal geometry and stochastic processes, specifically the Multifractal Model of Asset Returns (MMAR) and fractional Brownian motion (fBm), to generate price forecasts based on historical price data. The indicator visualizes potential future price paths as colored lines, providing traders with a probabilistic view of price trends over a specified trading time scale. Below is a detailed breakdown of the indicator’s functionality, inputs, calculations, and visualization.
Overview
Purpose: The indicator forecasts future price movements by simulating multiple price paths based on a multifractal model, which accounts for the complex, non-linear behavior of financial markets.
Key Concepts:
Multifractal Model of Asset Returns (MMAR): Models price movements as a multifractal process, capturing varying degrees of volatility and self-similarity across different time scales.
Fractional Brownian Motion (fBm): A generalization of Brownian motion that incorporates long-range dependence and self-similarity, controlled by the Hurst exponent.
Binomial Cascade: Used to model trading time, introducing heterogeneity in time scales to reflect market activity bursts.
Hurst Exponent: Measures the degree of long-term memory in the price series (persistence, randomness, or mean-reversion).
Rescaled Range (R/S) Analysis: Estimates the Hurst exponent to quantify the fractal nature of the price series.
Inputs
The indicator allows users to customize its behavior through several input parameters, each influencing the multifractal model and forecast generation:
Maximum Lag (max_lag):
Type: Integer
Default: 50
Minimum: 5
Purpose: Determines the maximum lag used in the rescaled range (R/S) analysis to calculate the Hurst exponent. A higher lag increases the sample size for Hurst estimation but may smooth out short-term dynamics.
2 to the n values in the Multifractal Model (n):
Type: Integer
Default: 4
Purpose: Defines the resolution of the multifractal model by setting the size of arrays used in calculations (N = 2^n). For example, n=4 results in N=16 data points. Larger n increases computational complexity and detail but may exceed Pine Script’s array size limits (capped at 100,000).
Multiplier for Binomial Cascade (m):
Type: Float
Default: 0.8
Purpose: Controls the asymmetry in the binomial cascade, which models trading time. The multiplier m (and its complement 2.0 - m) determines how mass is distributed across time scales. Values closer to 1 create more balanced cascades, while values further from 1 introduce more variability.
Length Scale for fBm (L):
Type: Float
Default: 100,000.0
Purpose: Scales the fractional Brownian motion output, affecting the amplitude of simulated price paths. Larger values increase the magnitude of forecasted price movements.
Cumulative Sum (cum):
Type: Integer (0 or 1)
Default: 1
Purpose: Toggles whether the fBm output is cumulatively summed (1=On, 0=Off). When enabled, the fBm series is accumulated to simulate a price path with memory, resembling a random walk with long-range dependence.
Trading Time Scale (T):
Type: Integer
Default: 5
Purpose: Defines the forecast horizon in bars (20 bars into the future). It also scales the binomial cascade’s output to align with the desired trading time frame.
Number of Simulations (num_simulations):
Type: Integer
Default: 5
Minimum: 1
Purpose: Specifies how many forecast paths are simulated and plotted. More simulations provide a broader range of possible price outcomes but increase computational load.
Core Calculations
The indicator combines several mathematical and statistical techniques to generate price forecasts. Below is a step-by-step explanation of its calculations:
Log Returns (lgr):
The indicator calculates log returns as math.log(close / close ) when both the current and previous close prices are positive. This measures the relative price change in a logarithmic scale, which is standard for financial time series analysis to stabilize variance.
Hurst Exponent Estimation (get_hurst_exponent):
Purpose: Estimates the Hurst exponent (H) to quantify the degree of long-term memory in the price series.
Method: Uses rescaled range (R/S) analysis:
For each lag from 2 to max_lag, the function calc_rescaled_range computes the rescaled range:
Calculate the mean of the log returns over the lag period.
Compute the cumulative deviation from the mean.
Find the range (max - min) of the cumulative deviation.
Divide the range by the standard deviation of the log returns to get the rescaled range.
The log of the rescaled range (log(R/S)) is regressed against the log of the lag (log(lag)) using the polyfit_slope function.
The slope of this regression is the Hurst exponent (H).
Interpretation:
H = 0.5: Random walk (no memory, like standard Brownian motion).
H > 0.5: Persistent behavior (trends tend to continue).
H < 0.5: Mean-reverting behavior (price tends to revert to the mean).
Fractional Brownian Motion (get_fbm):
Purpose: Generates a fractional Brownian motion series to model price movements with long-range dependence.
Inputs: n (array size 2^n), H (Hurst exponent), L (length scale), cum (cumulative sum toggle).
Method:
Computes covariance for fBm using the formula: 0.5 * (|i+1|^(2H) - 2 * |i|^(2H) + |i-1|^(2H)).
Uses Hosking’s method (referenced from Columbia University’s implementation) to generate fBm:
Initializes arrays for covariance (cov), intermediate calculations (phi, psi), and output.
Iteratively computes the fBm series by incorporating a random term scaled by the variance (v) and covariance structure.
Applies scaling based on L / N^H to adjust the amplitude.
Optionally applies cumulative summation if cum = 1 to produce a path with memory.
Output: An array of 2^n values representing the fBm series.
Binomial Cascade (get_binomial_cascade):
Purpose: Models trading time (theta) to account for non-uniform market activity (e.g., bursts of volatility).
Inputs: n (array size 2^n), m (multiplier), T (trading time scale).
Method:
Initializes an array of size 2^n with values of 1.0.
Iteratively applies a binomial cascade:
For each block (from 0 to n-1), splits the array into segments.
Randomly assigns a multiplier (m or 2.0 - m) to each segment, redistributing mass.
Normalizes the array by dividing by its sum and scales by T.
Checks for array size limits to prevent Pine Script errors.
Output: An array (theta) representing the trading time, which warps the fBm to reflect market activity.
Interpolation (interpolate_fbm):
Purpose: Maps the fBm series to the trading time scale to produce a forecast.
Method:
Computes the cumulative sum of theta and normalizes it to .
Interpolates the fBm series linearly based on the normalized trading time.
Ensures the output aligns with the trading time scale (T).
Output: An array of interpolated fBm values representing log returns over the forecast horizon.
Price Path Generation:
For each simulation (up to num_simulations):
Generates an fBm series using get_fbm.
Interpolates it with the trading time (theta) using interpolate_fbm.
Converts log returns to price levels:
Starts with the current close price.
For each step i in the forecast horizon (T), computes the price as prev_price * exp(log_return).
Output: An array of price levels for each simulation.
Visualization:
Trigger: Updates every T bars when the bar state is confirmed (barstate.isconfirmed).
Process:
Clears previous lines from line_array.
For each simulation, plots a line from the current bar’s close price to the forecasted price at bar_index + T.
Colors the line using a gradient (color.from_gradient) based on the final forecasted price relative to the minimum and maximum forecasted prices across all simulations (red for lower prices, teal for higher prices).
Output: Multiple colored lines on the chart, each representing a possible price path over the next T bars.
How It Works on the Chart
Initialization: On each bar, the indicator calculates the Hurst exponent (H) using historical log returns and prepares the trading time (theta) using the binomial cascade.
Forecast Generation: Every T bars, it generates num_simulations price paths:
Each path starts at the current close price.
Uses fBm to model log returns, warped by the trading time.
Converts log returns to price levels.
Plotting: Draws lines from the current bar to the forecasted price T bars ahead, with colors indicating relative price levels.
Dynamic Updates: The forecast updates every T bars, replacing old lines with new ones based on the latest price data and calculations.
Key Features
Multifractal Modeling: Captures complex market dynamics by combining fBm (long-range dependence) with a binomial cascade (non-uniform time).
Customizable Parameters: Allows users to adjust the forecast horizon, model resolution, scaling, and number of simulations.
Probabilistic Forecast: Multiple simulations provide a range of possible price outcomes, helping traders assess uncertainty.
Visual Clarity: Gradient-colored lines make it easy to distinguish bullish (teal) and bearish (red) forecasts.
Potential Use Cases
Trend Analysis: Identify potential price trends or reversals based on the direction and spread of forecast lines.
Risk Assessment: Evaluate the range of possible price outcomes to gauge market uncertainty.
Volatility Analysis: The Hurst exponent and binomial cascade provide insights into market persistence and volatility clustering.
Limitations
Computational Intensity: Large values of n or num_simulations may slow down execution or hit Pine Script’s array size limits.
Randomness: The binomial cascade and fBm rely on random terms (math.random), which may lead to variability between runs.
Assumptions: The model assumes log-normal price movements and fractal behavior, which may not always hold in extreme market conditions.
Adjusting Inputs:
Set max_lag based on the desired depth of historical analysis.
Adjust n for model resolution (start with 4–6 to avoid performance issues).
Tune m to control trading time variability (0.5–1.5 is typical).
Set L to scale the forecast amplitude (experiment with values like 10,000–1,000,000).
Choose T based on your trading horizon (20 for short-term, 50 for longer-term for example).
Select num_simulations for the number of forecast paths (5–10 is reasonable for visualization).
Interpret Output:
Teal lines suggest bullish scenarios, red lines suggest bearish scenarios.
A wide spread of lines indicates high uncertainty; convergence suggests a stronger trend.
Monitor Updates: Forecasts update every T bars, so check the chart periodically for new projections.
Chart Examples
This is a daily AMEX:SPY chart with default settings. We see the simulations being done every T bars and they provide a range for us to analyze with a few simulations still in the range.
On this intraday PEPPERSTONE:COCOA chart I modified the Length Scale for fBm, L, parameter to be 1000 from 100000. Adjusting the parameter as you switch between timeframes can give you more contextual simulations.
On BITSTAMP:ETHUSD I modified the L to be 1000000 to have a more contextual set of simulations with crypto's volatile nature.
With L at 100000 we see the range for NASDAQ:TLT is correctly simulated. The recent pop stays within the bounds of the highest simulation. Note this is a cherry picked example to show the power and potential of these simulations.
Technical Notes
Error Handling: The script includes checks for array size limits and division by zero (math.abs(denominator) > 1e-10, v := math.max(v, 1e-10)).
External Reference: The fBm implementation is based on Hosking’s method (www.columbia.edu), ensuring a robust algorithm.
Conclusion
The Multifractal Forecast is a powerful tool for traders seeking to model complex market dynamics using a multifractal framework. By combining fBm, binomial cascades, and Hurst exponent analysis, it generates probabilistic price forecasts that account for long-range dependence and non-uniform market activity. Its customizable inputs and clear visualizations make it suitable for both technical analysis and strategy development, though users should be mindful of its computational demands and parameter sensitivity. For optimal use, experiment with input settings and validate forecasts against other technical indicators or market conditions.
Algorithmic Candle Finder {Darkoexe}Algorithmic Candle Finder Indicator
Algorithmic candles are candles whose size and direction are significantly influenced by institutions or large players using market algorithms. These entities can move large amounts of capital in or out of the market, creating price moves that are often difficult for retail traders to predict or react to.
This can make short-term retail trading risky and inconsistent, especially when unaware of such institutional activity. The goal of this indicator is to help identify such candles, allowing traders to avoid trading during times of potential algorithmic influence.
Detection Criteria:
A candle is marked as algorithmic if either of the following conditions are met:
Size-Based Detection: If the current candle’s size exceeds the Average True Range (ATR) of the previous candle multiplied by the ATR factor input.
Volume-Based Detection: If the current candle’s volume exceeds the average volume of recent candles (e.g., last N candles) multiplied by the volume factor input.
When a candle is deemed algorithmic, a label saying "Algo!!!!!" will appear on the chart above the candle where the condition occurred.
Usage:
Use this indicator to study which times of day algorithmic candles frequently appear. This can help you adjust your strategy to avoid trading during these unpredictable moments.
Analogy:
Think of the market like the game Agar.io: small players (retail traders) collect small pellets to grow, while larger players (institutions) devour smaller ones. The small players must avoid the big ones to survive. Likewise, in trading, retail traders should aim to avoid high-impact algorithmic activity that could “consume” their trades.