Squeeze Momentum MACDSqueeze Momentum MACD
🧠 Description
Squeeze Momentum MACD combines the concept of market volatility compression (the “squeeze”) from Bollinger Bands (BB) and Keltner Channels (KC) with a MACD-style momentum oscillator to reveal potential breakout phases.
The indicator first calculates:
BB Width = Upper Band − Lower Band
KC Width = Upper Band − Lower Band
Then it computes their difference:
Δ = BB Width − KC Width
When Δ > 0 → BB width is greater than KC width → volatility is expanding → potential momentum breakout.
When Δ < 0 → BB is inside KC → volatility is compressing → potential squeeze phase before expansion.
This Δ value is then processed through a MACD-style calculation:
MACD Line = EMA(fast) − EMA(slow)
Signal Line = EMA(MACD, signal length)
Histogram = MACD − Signal
The result is a visual momentum oscillator that behaves like MACD but measures volatility expansion instead of price direction.
🔹 Features:
Dynamic 4-color MACD & Signal lines (positive/negative + rising/falling)
Optional display of raw BB & KC widths
Fully adjustable parameters for BB, KC, and MACD
Works on all timeframes and instruments
🔹 Ideal For:
Detecting market squeezes and breakout momentum
Timing entries before volatility expansion
Integrating volatility and momentum into a single framework
지표 및 전략
Jensen Alpha RS🧠 Jensen Alpha RS (J-Alpha RS)
Jensen Alpha RS is a quantitative performance evaluation tool designed to compare multiple assets against a benchmark using Jensen’s Alpha — a classic risk-adjusted return metric from modern portfolio theory.
It helps identify which assets have outperformed their benchmark on a risk-adjusted basis and ranks them in real time, with optional gating and visual tools. 📊
✨ Key Features
• 🧩 Multi-Asset Comparison: Evaluate up to four assets simultaneously.
• 🔀 Adaptive Benchmarking: TOTALES mode uses CRYPTOCAP:TOTALES (total crypto market cap ex-stablecoins). Dynamic mode automatically selects the strongest benchmark among BTC, ETH, and TOTALES based on rolling momentum.
• 📐 Jensen’s Alpha Calculation: Uses rolling covariance, variance, and beta to estimate α, showing how much each asset outperformed its benchmark.
• 📈 Z-Score & Consistency Metrics: Z-Score highlights statistical deviations in alpha; Consistency % shows how often α has been positive over a chosen window.
• 🚦 Trend & Zero Gates: Optional filters that require assets to be above EMA (trend) and/or have α > 0 for confirmation.
• 🏆 Leaders Board Table: Displays α, Z, Rank, Consistency %, and Gate ✓/✗ for all assets in a clear visual layout.
• 🔔 Dynamic Alerts: Get notified whenever the top alpha leader changes on confirmed (non-repainting) data.
• 🎨 Visual Enhancements: Smooth α with an SMA or color bars by the current top-performing asset.
🧭 Typical Use Cases
• 🔄 Portfolio Rotation & Relative Strength: Identify which assets consistently outperform their benchmark to optimize capital allocation.
• 🧮 Alpha Persistence Analysis: Gauge whether a trend’s performance advantage is statistically sustainable.
• 🌐 Market Regime Insight: Observe how asset leadership rotates as benchmarks shift across market cycles.
⚙️ Inputs Overview
• 📝 Assets (1–4): Select up to four tickers for evaluation.
• 🧭 Benchmark Mode: Choose between static TOTALES or Dynamic auto-selection.
• 📏 Alpha Settings: Adjustable lookback, smoothing, and consistency windows.
• 🚦 Gates: Optional trend and alpha filters to refine results.
• 🖥️ Display: Enable/disable table and customize colors.
• 🔔 Alerts: Toggle notifications on leadership changes.
🔎 Formula Basis
Jensen’s Alpha (α) is estimated as:
α = E − β × E
where β = Cov(Ra, Rb) / Var(Rb), and Ra/Rb represent asset and benchmark returns, respectively.
A positive α indicates outperformance relative to the risk-adjusted benchmark expectation. ✅
⚠️ Disclaimer
This script is for educational and analytical purposes only.
It is NOT a signal. 🚫📉
It does not constitute financial advice, trading signals, or investment recommendations. 💬
The author is not responsible for any financial losses or trading decisions made based on this indicator. 🙏
Always perform your own analysis and use proper risk management. 🛡️
Ripster Labels + Air Gaps (v6)What it shows (on one chart)
EMA Clouds (current timeframe)
Plots EMA 8/12/21/34/50/200 with three cloud fills:
12–21 = “fast” cloud
34–50 = “mid” cloud
50–200 = “base” cloud
Cloud color: green when the faster EMA is above the slower (bullish), red/maroon/orange when below (bearish).
Toggle lines vs. clouds via A) EMA Clouds settings.
MTF Rails (higher-TF EMAs)
For three higher timeframes (defaults 30m / 60m / 240m), draws two EMAs each (defaults 34 & 50).
These are stepline-like rails you can visually use as higher-TF supports/resistances.
Configure in B) MTF Rails (turn on/off, change TFs/lengths/colors).
Relative Volume Box (RVol)
Small table (top-center) showing:
Candle Vol (formatted K/M/B if enabled)
RVol = current bar volume / SMA 20 of volume (as a %)
Color scale: blue (<100%), yellow (100–150%), red (>150%).
Settings in C) RVol Box.
DTR vs ATR Box
Daily True Range (DTR = day high − day low) vs ATR(14) on the daily timeframe, with DTR as % of ATR.
Placed at top-right; toggle in D) DTR/ATR Box.
Ripster Trend Label (10m 12/50)
Looks at a separate timeframe (default 10m): EMA 12 vs EMA 50.
Bottom-right table cell shows “10m Trend ↑/↓/Sideways” (green/red/gray).
Configure in E) Ripster Trend Labels (TF and lengths).
Air Gaps (single EMA per TF)
Three horizontal, auto-extending lines showing an EMA from 30m / 60m / 240m (default length 12).
“Air gaps” are the price spaces between these lines—often lighter-resistance zones for price.
Start point logic:
All Bars = draw from the chart’s left
Start of Day = draw from today’s first bar
Bars Offset = draw from N bars back (default 100)
Settings in F) Air Gaps (TFs, length, draw-from, bars-back).
Inputs & where to tweak
A) EMA Clouds
Show EMA Clouds: master toggle
Source: close (default)
Lengths: 8/12/21/34/50/200
Show EMA lines: toggle plotted lines (clouds remain)
B) MTF Rails
Show MTF Rails
TF1/TF2/TF3 (defaults 30/60/240)
EMA A/B (defaults 34/50)
C) RVol Box
Show box
Format as K/M/B: K=1e3, M=1e6, B=1e9
D) DTR/ATR Box
Show DTR/ATR
ATR len: default 14 (daily)
E) Ripster Trend Labels
Show labels
Trend TF: default 10 (10-minute)
Trend EMA Fast/Slow: default 12/50
F) Air Gaps
Show Air Gap lines
TF1/TF2/TF3 (30/60/240)
EMA length: default 12
Draw from: All Bars | Start of Day | Bars Offset
Bars back: used if Draw from = Bars Offset
How it makes decisions
Cloud bias = sign of (faster EMA − slower EMA) for each cloud pair.
Example: 12>21 → fast cloud is bullish (green); 34>50 → mid cloud bullish (teal).
10m trend label = sign of (EMA12−EMA50) on the Trend TF (default 10m).
RVol = volume / sma(volume, 20); formatted as a percent and color-coded.
Practical read of the screen
Fast cloud flips (12/21) often mark short-term momentum changes; mid cloud flips (34/50) reflect swing bias.
Air Gap lines from higher TFs frequently act as support/resistance. Larger spaces between lines = “air gaps” where price can move with less friction.
RVol color tells you how “real” a move is: red/yellow often confirms momentum; blue warns of thin/liquidy bars.
DTR vs ATR shows if today’s range is stretched vs recent norm.
Design choices (why your prior errors are gone)
Removed multiline ?: chains → replaced by if/else (Pine v6 is picky about line continuations).
Moved fill() calls outside of local if blocks (Pine limitation).
ta.change(time("D")) != 0 makes the if condition boolean.
Declared G_drawFrom / G_barsBack before startX() so identifiers exist.
ETH Smart Money Order Blocks Detector derek
This script helps identify potential Order Blocks (institutional price zones) on the chart based on Breaks of Structure (BOS).
It automatically highlights demand zones (green blocks) and supply zones (red blocks), making it easier to read institutional market flow.
Ideal for traders using Smart Money Concepts (SMC) or market structure analysis.
Compatible with any asset and timeframe.
🔹 Bullish OB = potential buy entry zone
🔹 Bearish OB = potential sell or resistance zone
Author: Derek 🧠💹
Volume Biased CandlesVolume Biased Candles
This indicator visualizes the underlying volume polarity of price action by coloring candles based on directional volume bias over a rolling bucket of bars.
Instead of reading price alone, each candle reflects whether buying or selling pressure has dominated within its recent volume structure — giving a more intuitive picture of volume sentiment beneath price movement.
🔹 How it works
Bucket Size (n) → defines how many candles are aggregated to evaluate directional volume bias
For each bucket, total up-volume and down-volume are compared to determine overall market pressure
Volume Bias Score → a continuous ratio from -1 to +1, representing the relative dominance of buyers or sellers
Candles are colored according to the active bias — green for positive (buying), red for negative (selling)
🔹 Use cases
Visualize shifts in market control without needing divergence overlays
Combine with delta divergence or price structure tools to validate entries and exits
Simplify volume and price insights into an intuitive, single-chart visualization
✨ Volume Biased Candles transforms standard candles into a live sentiment gauge, revealing whether the dominant flow behind price movement is bullish or bearish.
SPY vs VIX SMA Slope Alignment (Adjustable Days)Use this on VIX Chart only.
This indicator compares the SLOPE of the daily SMA of SPY, to the SLOPE of the Daily SMA to VIX
When SPY and VIX are trending UP for the length of time that you define, you will get a GREEN ARROW on the VIX chart showing that the condition has been met.
EXAMPLE:
Set 3 day SMA for VIX and SPY
THEN
Set Look back time to 2 days
---IF SPY 3day SMA AND VIX 3day SMA are both ASCENDING during any 3 day lookback period, a green indicator arrow will be showing on the VIX Chart
DO NOT Use this indicator on SPY Chart
(SPY and VIX have different daily open/close times. This indicator DOES NOT work propertly on SPY Chart. But it DOES work properly on VIX chart. )
Premarket, Previous Day H/L + EMA Trend Table + ATHPremarket, Previous Day H/L + EMA Trend Table + ATH
ES Key Levels (Adam Mancini)An automated way to draw key levels from Adam's newsletter without manually drawing it all out.
High Volume AlertThis Pine Script monitors trading volume in real time and alerts you whenever current volume is unusually high — specifically, when it’s greater than a chosen multiple (for example, 1.5×) of the average volume over a recent period (for example, 20 bars).
It’s a quick way to detect volume spikes, which often precede breakouts or reversals.
Asia Range Breakout Asia Range Breakout
Description:
Asia Range Breakout is a sophisticated, multi-filter trading tool designed to identify high-probability breakout opportunities during the core Asian trading session. By combining session-based range analysis with advanced confirmation filters like Heiken Ashi momentum, Ichimoku baseline trends, and EMA alignment, this indicator helps traders capture decisive moves while filtering out market noise.
Tired of false breakouts? This system provides a structured framework to trade the Sydney and Tokyo sessions with precision and confidence.
Key Features:
Multi-Session Range Tracking:
Monitors 6 distinct pre-defined Asian sessions (Sydney Box, Tokyo Pre-Open, Tokyo Launch, etc.).
Dynamically plots High and Low boundaries for each session (Teal for Highs, Red for Lows).
Individually toggleable sessions to focus on your preferred trading window.
Smart Alert & Signal System:
Generates alerts based on Heiken Ashi candle closings relative to session ranges.
Dual-Size Signals: Differentiates between "Large" breakouts (outside the range) and "Small" signals (within the range).
Configurable alert timeframe for confirmation candle closure.Built-in Sound Alerts for real-time notifications.
Advanced Confirmation Filters:
Heiken Ashi Momentum Filter: Ensures breakout candles have significant momentum, adjustable via a threshold multiplier.
EMA 200 Filter: Confirms the breakout's alignment with the broader trend.
Ichimoku Baseline (Kijun-sen) Filter: Uses a dynamic support/resistance level for additional confirmation.
Ichimoku Baseline Divergence Filter: A unique feature that requires the baseline's slope to match the breakout direction (Bullish for buys, Bearish for sells).
ATR Volatility Filter: (Optional) Ensures the breakout candle has sufficient range relative to recent market volatility.
Visual Enhancements:
Take-Profit Lines: Projects profit targets using ATR and connects consecutive alerts with a trendline.
Heiken Ashi Overlay: Displays smoothed Heiken Ashi candles directly on the main chart for cleaner trend visualization.
Divergence Trend Line: Visually plots the slope of the Ichimoku Baseline for quick trend assessment.
Session Background Highlighter: Shades the active sessions for easy time reference.
Comprehensive Debug Info Box: Provides real-time feedback on filter status, perfect for strategy validation and learning.
Usage Instructions & Tips:
1. Initial Setup:
Start simple! Apply the indicator to a 5-minute or 1-minute chart.
Recommended Instruments:
Forex: Major pairs like AUD/USD , USD/JPY or EUR/JPY.
Indices: `NAS100` (Nasdaq), `US30` (Dow Jones), `JP225` (Nikkei 225).
Commodities: `XAUUSD` (Gold).
Initially, enable only the Sydney Box (00:30 - 03:15 UTC) as it is the most robust session, then explore others.
2. Interpreting the Signals:
Large Green Arrow (Above Bar): A strong BUY signal. The Heiken Ashi candle closed above the session's High, and all enabled filters are confirmed.
Small Green Arrow (Above Bar): A moderate BUY signal. The candle closed bullishly but within the session range.
Large Red Arrow (Below Bar): A strong SELL signal. The Heiken Ashi candle closed below the session's Low, with filter confirmation.
Small Red Arrow (Below Bar): A moderate SELL signal. The candle closed bearishly but within the session range.
3. Optimizing Your Strategy:
Filter Tuning: The default filters are balanced. Adjust them based on your risk appetite:
Increase the Heiken Ashi Threshold (e.g., to 0.2) for fewer, but stronger signals.
Disable filters like ATR or Divergence if you find them too restrictive.
The Power of Divergence: The Ichimoku Divergence filter is a powerful trend-confirmation tool. Pay close attention to it for the highest-quality signals.
Use the Debug Box: Enable the "Show Debug Info Box" to see exactly why a signal did or did not trigger. This is invaluable for understanding the indicator's logic and avoiding bad trades.
4. Risk Management:
The TP Lines provide a logical profit target based on market volatility. Consider using them for setting take-profit orders.
Always use a stop-loss. A logical level is the opposite side of the session range (e.g., for a buy signal, place a stop below the session low).
You're very welcome! I'm glad I could help you create a professional tool. Wishing you great success with your Trading! 🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
XAUUSD Scalper-AbsoluteTesting for first time, indicator with an idea to get the volitality. first time will be bad but let us see with time
RSI + Stochastic Combo (fixed) by howhaber# RSI + Stochastic Indicator
**Summary**
This indicator combines RSI and Stochastic to generate BUY and SELL signals in oversold or overbought market conditions. It merges both indicators for higher accuracy, reducing false signals. Includes visual signals on the chart, alerts, and an info label for quick analysis.
---
## 📈 How the Indicator Works
### RSI Component
- Calculates standard RSI based on the specified period (`rsiLen`).
- Indicates oversold (< 30) or overbought (> 70) conditions.
### Stochastic Component
- Manually calculated to avoid compatibility issues.
- Measures the current price position relative to the price range (highs/lows) over the selected period.
- Smoothed using two SMA filters (%K and %D).
### Signal Logic
**BUY Signal**:
- %K crosses above %D (`ta.crossover(k, d)`).
- %K < 20 (oversold market).
- RSI < specified threshold (default < 40).
**SELL Signal**:
- %K crosses below %D (`ta.crossunder(k, d)`).
- %K > 80 (overbought market).
- RSI > specified threshold (default > 60).
---
## 📍 What's Displayed on the Chart
- 🟢 **Green arrow** below the bar → BUY signal.
- 🔴 **Red arrow** above the bar → SELL signal.
- **In a separate window**:
- RSI line (blue).
- Stochastic %K (orange).
- Stochastic %D (purple).
- Reference levels: 30/70 (RSI), 20/80 (Stochastic).
---
## 🔔 Alerts
- **RSI+Stoch BUY**: Notification on BUY signal.
- **RSI+Stoch SELL**: Notification on SELL signal.
Receive alerts via email, Telegram, or directly on the platform.
---
## 🧩 Additional Feature
- Info label on the last bar, displaying:
- Current RSI value.
- %K and %D values.
- Facilitates quick visual checks of the indicator's current state.
---
## 💡 Interpretation
- **Oversold market** (confirmed by RSI and Stochastic): Likely upward reversal.
- **Overbought market** (confirmed by RSI and Stochastic): Likely downward reversal.
- Combining both reduces false signals and improves accuracy in choppy markets.
---
## ⚠️ Important Note
This indicator is not financial advice. It is designed for technical analysis and educational purposes. Combine it with other tools like trend analysis, volume, and price patterns for better results.
多周期Stoch RSI共振指标Multi-period Stoch RSI resonance indicator
This is a multi-period resonance indicator,4h、1h、30m、15m
(RSI + CCI) × (MACD/ATR)^2⚙️ (RSI + CCI) × (MACD / ATR)² Composite — Normalized, Compressed, Dynamic Colors
This advanced composite oscillator merges three powerful momentum indicators — RSI, CCI, and MACD — into one normalized and volatility-adjusted signal that reacts smoothly across all markets.
By dividing MACD by ATR (Average True Range), the indicator self-scales for different symbols, and an optional tanh-like compression prevents extreme spikes while keeping the movement fluid and responsive.
🧩 Core Formula
(RSI + CCI) × (MACD / ATR)²
(optionally passed through a tanh compression for stability)
RSI and CCI are normalized (RSI ÷ 50, CCI ÷ 100) → roughly −2 to +2 range.
MACD is volatility-adjusted by ATR → scale-independent between assets.
The result is centered around 0 for clear bullish/bearish momentum comparison.
🎨 Visual Features
🟢🔴 Dynamic 4-Color Histogram
Positive + Rising = Strong Teal
Positive + Falling = Light Teal
Negative + Falling = Strong Red
Negative + Rising = Light Red
🟡⚫ 4-Color Smoothing Line
Positive & Rising = Bright Yellow
Positive & Falling = Soft Yellow
Negative & Rising = Grey
Negative & Falling = Dark Grey
Zero-centered layout for intuitive bullish/bearish visualization.
⚙️ Adjustable Parameters
Individual RSI, CCI, and MACD lengths and sources.
ATR length for volatility normalization.
Optional tanh-style compression with adjustable gain (to keep values in ±1 range).
Fully customizable colors and line widths for both bars and smoothing line.
🔔 Alerts
Triggered automatically when the composite crosses above or below zero, signaling potential trend reversals or momentum shifts.
💡 How to Use
Composite > 0 → Bullish momentum ↑
Composite < 0 → Bearish momentum ↓
A brightening line or bar = momentum accelerating.
A fading color = momentum weakening or reversal forming.
Combine with higher-timeframe trend filters (EMA, VWAP, Supertrend) for confirmation.
EMA Ribbon MozyMozy TRading
EMA Ribbons for short time frames on daily traders. Buy or sell during crosses
Liquidations Aggregated (Lite)Liquidations Aggregated (Lite)
The Liquidations Aggregated (Lite) script provides a unified cross-exchange visualization of short and long liquidation volumes, allowing traders to identify high-impact market events and sentiment reversals driven by forced position closures. It aggregates normalized liquidation data from Binance, Bybit, and OKX into a single coherent output, offering a consolidated perspective of derivative market stress across major venues.
Core Concept
Liquidations are involuntary closures of leveraged positions when margin requirements are breached. They represent points of structural orderflow imbalance, often triggering localized volatility spikes and price pivots. This indicator isolates and aggregates those liquidation volumes by direction (short vs. long), allowing traders to map where leveraged traders are being forced out and whether current market movement is driven by short covering or long capitulation.
Underlying Methodology
Each connected exchange provides liquidation feeds via standardized symbols (e.g., BTCUSDT.P_LQBUY or BTCUSD.P_LQSELL).
The script differentiates between:
Short Liquidations → Buy Volume: Forced covering of shorts, representing upward pressure.
Long Liquidations → Sell Volume: Forced selling of longs, representing downward pressure.
Bybit’s inverse data is normalized to align directional logic with Binance and OKX. Data is drawn through the request.security() function per symbol and per exchange, with per-exchange scaling adjustments applied to compensate for differences in reported nominal sizes (USD vs. coin-margined). The script is meant to match the calculation methods of professional-grade data sources (e.g., Velodata, Coinalyze). The value is denominated in the base currency at all times.
Computation Logic
Liquidation volumes are fetched separately for USD- and USDT-margined pairs on each exchange.
Exchange-specific magnitude adjustments are applied to account for nominal denomination differences.
Normalized liquidation buy and sell volumes are summed into two global aggregates:
combinedBuyVolumeLiquidationsShort → aggregated buy volume from forced short positions closes (Short Liquidations)
combinedSellVolumeLiquidationsLong → aggregated sell pressure from forced long position closes (Long Liquidations)
Final series are plotted as mirrored column charts around a zero baseline for direct comparison.
How to Use
Apply the script to any crypto perpetual futures symbol (e.g., BTCUSDT, ETHUSDT).
Observe teal bars (Buy Volume from Short Liquidations) for short squeezes and red bars (Sell Volume from Long Liquidations) for long wipes.
Strong teal spikes during downtrends often indicate aggressive short liquidations leading to short-term bounces.
Strong red spikes during uptrends often mark long unwinds that can trigger sharp retracements.
Sustained asymmetry in either direction suggests systemic imbalance across leveraged positioning.
RSI// This source code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © xdecow
//@version=5
indicator("RSI", overlay=true)
g_panel = 'Panel Options'
i_orientation = input.string('Vertical', 'Orientation', options = , group = g_panel)
i_position = input.string('Bottom Right', 'Position', options = , group = g_panel)
i_border_width = input.int(1, 'Border Width', minval = 0, maxval = 10, group = g_panel, inline = 'border')
i_color_border = input.color(#000000, '', group = g_panel, inline = 'border')
i_showHeaders = input.bool(true, 'Show Headers', group = g_panel)
i_color_header_bg = input.color(#5d606b, 'Headers Background', group = g_panel, inline = 'header')
i_color_header_text = input.color(color.white, 'Text', group = g_panel, inline = 'header')
i_color_tf_bg = input.color(#2a2e39, 'Timeframe Background', group = g_panel, inline = 'tf')
i_color_tf_text = input.color(color.white, 'Text', group = g_panel, inline = 'tf')
i_debug = input.bool(false, 'Display colors palette (debug)', group = g_panel)
// rsi bg colors
g_rsi = 'RSI Colors'
i_threshold_ob = input.int(70, 'Overbought Threshold', minval=51, maxval=100, group = g_rsi)
i_color_ob = input.color(#128416, 'Overbought Background', inline = 'ob', group = g_rsi)
i_tcolor_ob = input.color(color.white, 'Text', inline = 'ob', group = g_rsi)
i_threshold_uptrend = input.int(60, 'Uptrend Threshold', minval=51, maxval=100, group = g_rsi)
i_color_uptrend = input.color(#2d472e, 'Uptrend Background', inline = 'up', group = g_rsi)
i_tcolor_uptrend = input.color(color.white, 'Text', inline = 'up', group = g_rsi)
i_color_mid = input.color(#131722, 'No Trend Background', group = g_rsi, inline = 'mid')
i_tcolor_mid = input.color(#b2b5be, 'Text', group = g_rsi, inline = 'mid')
i_threshold_downtrend = input.int(40, 'Downtrend Threshold', group = g_rsi, minval=0, maxval=49)
i_color_downtrend = input.color(#5b2e2e, 'Downtrend Background', group = g_rsi, inline = 'down')
i_tcolor_downtrend = input.color(color.white, 'Text', group = g_rsi, inline = 'down')
i_threshold_os = input.int(30, 'Oversold Threshold', minval=0, maxval=49, group = g_rsi)
i_color_os = input.color(#db3240, 'Oversold Background', group = g_rsi, inline = 'os')
i_tcolor_os = input.color(color.white, 'Text', group = g_rsi, inline = 'os')
g_rsi1 = 'RSI #1'
i_rsi1_enabled = input.bool(true, title = 'Enabled', group = g_rsi1)
i_rsi1_tf = input.timeframe('5', 'Timeframe', group = g_rsi1)
i_rsi1_len = input.int(14, 'Length', minval = 1, group = g_rsi1)
i_rsi1_src = input.source(close, 'Source', group = g_rsi1) * 10000
v_rsi1 = i_rsi1_enabled ? request.security(syminfo.tickerid, i_rsi1_tf, ta.rsi(i_rsi1_src, i_rsi1_len)) : na
g_rsi2 = 'RSI #2'
i_rsi2_enabled = input.bool(true, title = 'Enabled', group = g_rsi2)
i_rsi2_tf = input.timeframe('15', 'Timeframe', group = g_rsi2)
i_rsi2_len = input.int(14, 'Length', minval = 1, group = g_rsi2)
i_rsi2_src = input.source(close, 'Source', group = g_rsi2) * 10000
v_rsi2 = i_rsi2_enabled ? request.security(syminfo.tickerid, i_rsi2_tf, ta.rsi(i_rsi2_src, i_rsi2_len)) : na
g_rsi3 = 'RSI #3'
i_rsi3_enabled = input.bool(true, title = 'Enabled', group = g_rsi3)
i_rsi3_tf = input.timeframe('60', 'Timeframe', group = g_rsi3)
i_rsi3_len = input.int(14, 'Length', minval = 1, group = g_rsi3)
i_rsi3_src = input.source(close, 'Source', group = g_rsi3) * 10000
v_rsi3 = i_rsi3_enabled ? request.security(syminfo.tickerid, i_rsi3_tf, ta.rsi(i_rsi3_src, i_rsi3_len)) : na
g_rsi4 = 'RSI #4'
i_rsi4_enabled = input.bool(true, title = 'Enabled', group = g_rsi4)
i_rsi4_tf = input.timeframe('240', 'Timeframe', group = g_rsi4)
i_rsi4_len = input.int(14, 'Length', minval = 1, group = g_rsi4)
i_rsi4_src = input.source(close, 'Source', group = g_rsi4) * 10000
v_rsi4 = i_rsi4_enabled ? request.security(syminfo.tickerid, i_rsi4_tf, ta.rsi(i_rsi4_src, i_rsi4_len)) : na
g_rsi5 = 'RSI #5'
i_rsi5_enabled = input.bool(true, title = 'Enabled', group = g_rsi5)
i_rsi5_tf = input.timeframe('D', 'Timeframe', group = g_rsi5)
i_rsi5_len = input.int(14, 'Length', minval = 1, group = g_rsi5)
i_rsi5_src = input.source(close, 'Source', group = g_rsi5) * 10000
v_rsi5 = i_rsi5_enabled ? request.security(syminfo.tickerid, i_rsi5_tf, ta.rsi(i_rsi5_src, i_rsi5_len)) : na
g_rsi6 = 'RSI #6'
i_rsi6_enabled = input.bool(true, title = 'Enabled', group = g_rsi6)
i_rsi6_tf = input.timeframe('W', 'Timeframe', group = g_rsi6)
i_rsi6_len = input.int(14, 'Length', minval = 1, group = g_rsi6)
i_rsi6_src = input.source(close, 'Source', group = g_rsi6) * 10000
v_rsi6 = i_rsi6_enabled ? request.security(syminfo.tickerid, i_rsi6_tf, ta.rsi(i_rsi6_src, i_rsi6_len)) : na
g_rsi7 = 'RSI #7'
i_rsi7_enabled = input.bool(false, title = 'Enabled', group = g_rsi7)
i_rsi7_tf = input.timeframe('W', 'Timeframe', group = g_rsi7)
i_rsi7_len = input.int(14, 'Length', minval = 1, group = g_rsi7)
i_rsi7_src = input.source(close, 'Source', group = g_rsi7) * 10000
v_rsi7 = i_rsi7_enabled ? request.security(syminfo.tickerid, i_rsi7_tf, ta.rsi(i_rsi7_src, i_rsi7_len)) : na
g_rsi8 = 'RSI #8'
i_rsi8_enabled = input.bool(false, title = 'Enabled', group = g_rsi8)
i_rsi8_tf = input.timeframe('W', 'Timeframe', group = g_rsi8)
i_rsi8_len = input.int(14, 'Length', minval = 1, group = g_rsi8)
i_rsi8_src = input.source(close, 'Source', group = g_rsi8) * 10000
v_rsi8 = i_rsi8_enabled ? request.security(syminfo.tickerid, i_rsi8_tf, ta.rsi(i_rsi8_src, i_rsi8_len)) : na
g_rsi9 = 'RSI #9'
i_rsi9_enabled = input.bool(false, title = 'Enabled', group = g_rsi9)
i_rsi9_tf = input.timeframe('W', 'Timeframe', group = g_rsi9)
i_rsi9_len = input.int(14, 'Length', minval = 1, group = g_rsi9)
i_rsi9_src = input.source(close, 'Source', group = g_rsi9) * 10000
v_rsi9 = i_rsi9_enabled ? request.security(syminfo.tickerid, i_rsi9_tf, ta.rsi(i_rsi9_src, i_rsi9_len)) : na
g_rsi10 = 'RSI #10'
i_rsi10_enabled = input.bool(false, title = 'Enabled', group = g_rsi10)
i_rsi10_tf = input.timeframe('W', 'Timeframe', group = g_rsi10)
i_rsi10_len = input.int(14, 'Length', minval = 1, group = g_rsi10)
i_rsi10_src = input.source(close, 'Source', group = g_rsi10) * 10000
v_rsi10 = i_rsi10_enabled ? request.security(syminfo.tickerid, i_rsi10_tf, ta.rsi(i_rsi10_src, i_rsi10_len)) : na
f_StrPositionToConst(_p) =>
switch _p
'Top Left' => position.top_left
'Top Right' => position.top_right
'Top Center' => position.top_center
'Middle Left' => position.middle_left
'Middle Right' => position.middle_right
'Middle Center' => position.middle_center
'Bottom Left' => position.bottom_left
'Bottom Right' => position.bottom_right
'Bottom Center' => position.bottom_center
=> position.bottom_right
f_timeframeToHuman(_tf) =>
seconds = timeframe.in_seconds(_tf)
if seconds < 60
_tf
else if seconds < 3600
str.tostring(seconds / 60) + 'm'
else if seconds < 86400
str.tostring(seconds / 60 / 60) + 'h'
else
switch _tf
"1D" => "D"
"1W" => "W"
"1M" => "M"
=> str.tostring(_tf)
type TPanel
table src = na
bool vertical_orientation = true
int row = 0
int col = 0
method incCol(TPanel _panel) =>
if _panel.vertical_orientation
_panel.col += 1
else
_panel.row += 1
method incRow(TPanel _panel) =>
if not _panel.vertical_orientation
_panel.col += 1
_panel.row := 0
else
_panel.row += 1
_panel.col := 0
method add(TPanel _panel, string _v1, color _bg1, color _ctext1, string _v2, color _bg2, color _ctext2) =>
table.cell(_panel.src, _panel.col, _panel.row, _v1, text_color = _ctext1, bgcolor = _bg1)
_panel.incCol()
table.cell(_panel.src, _panel.col, _panel.row, _v2, text_color = _ctext2, bgcolor = _bg2)
_panel.incRow()
f_bg(_rsi) =>
c_line = na(_rsi) ? i_color_mid :
_rsi >= i_threshold_ob ? i_color_ob :
_rsi >= i_threshold_uptrend ? i_color_uptrend :
_rsi <= i_threshold_os ? i_color_os :
_rsi <= i_threshold_downtrend ? i_color_downtrend :
i_color_mid
f_rsi_text_color(_rsi) =>
c_line = na(_rsi) ? i_tcolor_mid :
_rsi >= i_threshold_ob ? i_tcolor_ob :
_rsi >= i_threshold_uptrend ? i_tcolor_uptrend :
_rsi <= i_threshold_os ? i_tcolor_os :
_rsi <= i_threshold_downtrend ? i_tcolor_downtrend :
i_tcolor_mid
f_formatRsi(_rsi) => na(_rsi) ? 'N/A' : str.tostring(_rsi, '0.00')
if barstate.islast
v_panel = TPanel.new(vertical_orientation = i_orientation == 'Vertical')
v_max_rows = 20
v_panel.src := table.new(f_StrPositionToConst(i_position), v_max_rows, v_max_rows, border_width = i_border_width, border_color = i_color_border)
if i_showHeaders
v_panel.add('TF', i_color_header_bg, i_color_header_text, 'RSI', i_color_header_bg, i_color_header_text)
if i_rsi1_enabled
v_panel.add(f_timeframeToHuman(i_rsi1_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi1), f_bg(v_rsi1), f_rsi_text_color(v_rsi1))
if i_rsi2_enabled
v_panel.add(f_timeframeToHuman(i_rsi2_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi2), f_bg(v_rsi2), f_rsi_text_color(v_rsi2))
if i_rsi3_enabled
v_panel.add(f_timeframeToHuman(i_rsi3_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi3), f_bg(v_rsi3), f_rsi_text_color(v_rsi3))
if i_rsi4_enabled
v_panel.add(f_timeframeToHuman(i_rsi4_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi4), f_bg(v_rsi4), f_rsi_text_color(v_rsi4))
if i_rsi5_enabled
v_panel.add(f_timeframeToHuman(i_rsi5_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi5), f_bg(v_rsi5), f_rsi_text_color(v_rsi5))
if i_rsi6_enabled
v_panel.add(f_timeframeToHuman(i_rsi6_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi6), f_bg(v_rsi6), f_rsi_text_color(v_rsi6))
if i_rsi7_enabled
v_panel.add(f_timeframeToHuman(i_rsi7_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi7), f_bg(v_rsi7), f_rsi_text_color(v_rsi7))
if i_rsi8_enabled
v_panel.add(f_timeframeToHuman(i_rsi8_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi8), f_bg(v_rsi8), f_rsi_text_color(v_rsi8))
if i_rsi9_enabled
v_panel.add(f_timeframeToHuman(i_rsi9_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi9), f_bg(v_rsi9), f_rsi_text_color(v_rsi9))
if i_rsi10_enabled
v_panel.add(f_timeframeToHuman(i_rsi10_tf), i_color_tf_bg, i_color_tf_text, f_formatRsi(v_rsi10), f_bg(v_rsi10), f_rsi_text_color(v_rsi10))
if i_debug
t = table.new(position.middle_center, 21, 20, border_width = i_border_width, border_color = i_color_border)
v_panel2 = TPanel.new(t, vertical_orientation = i_orientation == 'Vertical')
v_panel2.add('Debug', i_color_header_bg, i_color_header_text, 'Colors', i_color_header_bg, i_color_header_text)
demo = map.new()
map.put(demo, 'Overbought', i_threshold_ob)
map.put(demo, 'Uptrend', i_threshold_uptrend)
map.put(demo, 'No Trend', 50)
map.put(demo, 'Downtrend', i_threshold_downtrend)
map.put(demo, 'Oversold', i_threshold_os)
demoKeys = map.keys(demo)
for key in demoKeys
tf = key
rsi = map.get(demo, key)
v_panel2.add(tf, i_color_tf_bg, i_color_tf_text, f_formatRsi(rsi), f_bg(rsi), f_rsi_text_color(rsi))
Custom MTF EMA CloudsVisualize market structure and trend alignment across multiple timeframes with six layered EMA clouds — from short-term momentum to macro trend anchors.
Each pair of EMAs forms a dynamic cloud that adapts to your selected timeframe.
Colors, lengths, and visibility are fully customizable, allowing you to tailor the setup for any trading style.
⚙️ Default Configuration
EMA Short Long Purpose
1 8 13 🔸 Intraday momentum cloud (scalping layer)
2 21 24 🟩 Short-term trend confirmation
3 50 55 🔵 Medium-term swing structure
4 120 144 🔴 Long-term support/resistance band
5 200 238 🟠 Institutional trend foundation
6 400 460 🟣 Macro directional anchor
🧩 Features
✅ Up to 6 independent EMA clouds
✅ Fully customizable short & long lengths
✅ Individual line and cloud colors
✅ Toggle each layer on/off
✅ Works with any timeframe via the Resolution input
✅ Automatic cloud transparency for better chart clarity
📈 How to Use
Use EMA 1–2 (8/13, 21/24) for momentum shifts and intraday entries.
Use EMA 3–4 (50/55, 120/144) for swing confirmation and trend continuation.
Use EMA 5–6 (200/238, 400/460) as long-term anchors to stay aligned with institutional flow.
Watch for crossovers or price breaking in/out of clouds — they often precede strong directional moves.
Previous Day High-LowIt will show Previous Day High-Low. This will create two horizontal lines automatically updated each day, marking yesterday’s high and low levels clearly on any intraday chart.
X 4H ORThis indicator plots the 30-second opening range (high/low) for six New-York–time anchors—2am, 6am, 10am, 2pm, 6pm, and 10pm—and extends each box to a fixed end time (e.g., 2am→9am, 6am→1pm, etc.). It samples true 30-second data regardless of the chart timeframe, so the captured highs/lows are precise.
What it does
Builds the first 30s OR for each selected anchor and draws a time-anchored box for that session.
Archives every day’s boxes (up to a cap) so you can study how price interacts with past ranges.
Adds per-anchor show toggles to display the latest box for that anchor.
Adds a global History toggle to show/hide all archived boxes without deleting them (clean view vs. context view).
Uses borderless, color-coded fills per anchor to avoid edge distortion while keeping levels easy to read.
Why it’s useful
Quickly spot session inflection zones where liquidity, breakouts, or reversals cluster.
Compare how current price trades relative to recent session ranges for bias and risk framing.
Perform lightweight post-session review/backtesting on OR breaks, retests, and range rotations.
Keep charts decluttered on demand (latest only), or flip on history for deeper context.
黄金专用LPPL特征检测(Log-Periodic Power Law Singularity)专门用于黄金走势的LPPL检测,在技术分析中,LPPL 奇点指的是对数周期幂律奇异性(Log-Periodic Power Law Singularity),它是对数周期幂律模型(LPPL)中的一个关键概念。以下是关于它的详细介绍:
提出者及背景:LPPL 模型是由研究市场泡沫的先驱者、物理学家迪迪埃・索尔内特(Didier Sornette)等人提出的。该模型结合了理性预期泡沫的经济理论、投资者的模仿和羊群行为的行为金融学以及分岔和相变的数学统计物理学,用于检测金融市场中的泡沫和预测市场转折点。
模型原理:LPPL 模型假设当市场出现泡沫时,资产价格会呈现出一种特殊的波动模式,这种模式由正反馈机制驱动。在泡沫形成过程中,投资者的模仿和跟风行为导致市场参与者的一致性和协同性急剧上升,价格出现 “快于指数” 的增长,同时伴随着加速的对数周期振荡。而 LPPL 奇点就是价格增长和振荡达到极限的那个有限时间点,在这个点之前,价格增长越来越快,振荡频率也越来越高,当到达奇点时,泡沫破裂,市场往往会出现急剧的反转和崩盘。
数学表达:LPPL 模型的数学公式较为复杂,其原始形式提出了一个由 3 个线性参数和 4 个非线性参数组成的函数。通过将这个函数与对数价格时间序列进行拟合,可以估计出模型的参数,进而确定奇点的时间位置等信息。
在金融市场中的应用:LPPL 模型及其中的奇点概念主要用于检测金融市场中的泡沫和预测市场的崩溃点。例如,在 2008 年石油价格泡沫和 2009 年上海股市泡沫等事件中,该模型都被用于分析和预测市场的转折点。不过,该模型也存在一定的局限性,比如对奇点具体点位的预测误差较大,而且市场情况复杂多变,可能会有强大的外力干扰等因素影响模型的准确性。
The LPPL model was proposed by physicist Didier Sornette, a pioneer in the study of market bubbles, and others. The model combines the economic theory of rational expectations bubbles, behavioral finance on investor imitation and herding behavior, and the mathematical statistical physics of bifurcations and phase transitions to detect bubbles in financial markets and predict market turning points.
Model Principle: The LPPL model posits that when a market bubble forms, asset prices exhibit a distinctive pattern of fluctuation driven by a positive feedback mechanism. During the bubble's formation, investors' imitation and bandwagon-following behavior lead to a sharp increase in consistency and coordination among market participants, resulting in "faster-than-exponential" price growth accompanied by accelerating logarithmic-periodic oscillations. The LPPL singularity is the finite point in time where price growth and oscillation reach their limits. Prior to this point, prices grow increasingly faster, and the frequency of oscillations increases. When the singularity is reached, the bubble bursts, and the market often experiences a sharp reversal and crash.
Previous Candle 50% line The intention of this is to mark the 50% mark of the previous candle. My use is to set stops and to spot reversals coming from the STRAT to see in real time 2's going 3
Continuation Gauge - ES 3m (v1.1)Continuation Gauge - ES 3m (v1.1)
wave trend analysis between bull and bear imbalance trends