指标和策略
NF_PLASMA_SURGE 🧩 NF_PLASMA_SURGE (NightFury Systems)
Author: Lachin M. Akhmedov (aka NightFury)
⚙️ A volumetric impulse oscillator detecting real candle energy through body density, directional momentum, and normalized volatility thrust.
🧠 Core Concept:
Not another RSI. Not another MACD.
NF_PLASMA_SURGE isolates true directional impulse by measuring the physics of price:
Body Energy → how much of each candle’s range is real movement.
Volume Thrust → amplifies strong participation only.
Volatility Normalization → filters emotional spikes and fake momentum.
⚡ Outputs:
Toxic Green = Real buy impulse (surge ignition)
Red Inferno = Real sell impulse (energy drain)
⚡ marks = Charged bursts detected (|z| > threshold)
💫 Synergy:
Designed to integrate with NF_CYBER_FURY as its ignition companion —
Cyber powers the reactor; Plasma lights the core.
🧩 Recommended Stack:
NF_CYBER_FURY + NF_PLASMA_SURGE = The NightFury Reactor System
PCE Inflation Monitor (Change YoY & MoM)📊 PCE Inflation Monitor - The Fed's Most Important Metric
Personal Consumption Expenditures (PCE) is the Federal Reserve's preferred inflation measure and THE metric they target for their 2% inflation goal. If you want to predict Fed policy, you need to watch PCE.
🎯 KEY FEATURES:
- Dual Perspective Analysis:
- Year-over-Year (YoY): Histogram bars showing annual PCE inflation
- Month-over-Month (MoM): Line overlay showing monthly consumption price changes
- Visual Reference System:
- Dashed line at 2% (Fed's official PCE inflation target)
- Dotted line at 0.17% (equivalent monthly target)
- Color-coded bars: Red above Fed target, Green below target
- Real-Time Data Table:
- Current PCE Index value
- YoY inflation rate vs. Fed's 2% target
- MoM inflation rate with color coding
- Exact deviation from Fed target (critical for policy predictions)
- Automated Alerts:
- PCE crosses Fed's 2% target (major policy signal!)
- MoM crosses monthly target
- Stay informed of Fed-relevant inflation changes
📈 WHY PCE IS DIFFERENT (AND MORE IMPORTANT):
PCE vs. CPI differences:
- Flexible basket: PCE adjusts for substitution (beef → chicken if prices rise)
- Broader coverage: Includes healthcare paid by insurance/government
- Lower readings: Typically 0.2-0.4% below CPI
- Fed's choice: Explicitly stated as their target metric
Most importantly: When Powell speaks about "our 2% target," he means PCE, not CPI!
🔍 TRADING IMPLICATIONS:
PCE Above 2% (Red Zone):
→ Fed under pressure to maintain/raise rates
→ Hawkish policy stance likely
→ Negative for growth stocks, crypto
→ Positive for USD, bearish for gold
PCE Below 2% (Green Zone):
→ Fed has flexibility to cut rates
→ Dovish policy stance possible
→ Positive for risk assets, growth stocks
→ Negative for USD, bullish for commodities
PCE Approaching 2% from Above:
→ Fed "mission accomplished" narrative
→ Rate cut cycle becomes possible
→ Major bullish signal for equities/crypto
💡 ADVANCED STRATEGIES:
1. Fed Meeting Preparation: Check PCE before FOMC meetings for policy clues
2. Dot Plot Predictions: PCE trend determines Fed's rate forecast updates
3. Pivot Timing: When PCE MoM turns negative, Fed pivot becomes realistic
4. Press Conference Analysis: Compare Powell's comments to PCE deviation
🎯 KEY LEVELS TO WATCH:
- 2.0% YoY: Fed's official target - crossing this level is major news
- 2.5% YoY: "Uncomfortably high" - Fed forced to stay restrictive
- 3.0% YoY: "Crisis mode" - Fed turns very hawkish
- 1.5% YoY: "Below target" - Rate cuts become likely
🔄 COMBINE WITH:
- CPI: Public perception vs. Fed's metric (often diverge)
- Core PCE: Even more important (excludes food/energy volatility)
- Fed Funds Rate: Is Fed responding appropriately to PCE?
📊 DATA SOURCE:
Official PCE data from FRED (Federal Reserve Economic Data), updated monthly typically in the last week of each month (after CPI/PPI releases).
🎨 CUSTOMIZATION:
Fully customizable:
- Toggle YoY/MoM displays
- Adjust Fed target if needed
- Customize colors
- Show/hide absolute PCE values
Perfect for: Fed watchers, macro traders, policy analysts, and serious investors who want to predict monetary policy changes before they happen.
⚠️ CRITICAL INSIGHT: While media focuses on CPI, the Fed focuses on PCE. Trade what the Fed trades, not what the headlines say.
🎓 Pro Tip: Fed members often mention "Core PCE" (excluding food/energy). Consider adding that indicator alongside this one for complete Fed policy analysis.
CPI Inflation Monitor (Change YoY & MoM)📊 CPI Inflation Monitor - Complete Macro Analysis Tool
This indicator provides a comprehensive view of Consumer Price Index (CPI) inflation trends, essential for understanding monetary policy, market conditions, and making informed trading decisions.
🎯 KEY FEATURES:
- Dual Perspective Analysis:
- Year-over-Year (YoY): Histogram bars showing annual inflation rate
- Month-over-Month (MoM): Line overlay showing monthly price changes
- Visual Reference System:
- Dashed line at 2% (Fed's official inflation target for YoY)
- Dotted line at 0.17% (equivalent monthly target for MoM)
- Color-coded bars: Red above target, Green below target
- Real-Time Data Table:
- Current CPI Index value
- YoY inflation rate with color coding
- MoM inflation rate with color coding
- Deviation from Fed target
- Automated Alerts:
- YoY crosses above/below 2% target
- MoM crosses above/below 0.17% target
- Perfect for staying informed without constant monitoring
📈 WHY THIS MATTERS FOR TRADERS:
CPI is the most widely reported inflation metric and directly influences:
- Federal Reserve interest rate decisions
- Bond yields and currency valuations
- Stock market sentiment (especially growth vs. value rotation)
- Cryptocurrency and risk asset performance
Rising inflation (red bars) typically leads to:
→ Higher interest rates → Negative for growth stocks, crypto
→ Stronger USD → Pressure on commodities
Falling inflation (green bars) typically leads to:
→ Rate cut expectations → Positive for growth stocks, crypto
→ Weaker USD → Support for commodities
🔍 HOW TO USE:
1. Strategic Positioning: Use YoY trend (thick bars) for long-term asset allocation
2. Tactical Timing: Use MoM trend (thin line) to identify turning points early
3. Divergence Trading: When MoM falls but YoY remains high, anticipate trend reversal
4. Fed Policy Prediction: Distance from 2% target indicates Fed's likely hawkishness
💡 PRO TIPS:
- Multiple months of MoM above 0.3% = Accelerating inflation → Fed turns hawkish
- MoM turning negative while YoY still elevated = Peak inflation → Position for pivot
- Compare with PPI and PCE indicators for complete inflation picture
- Use alerts to catch important threshold crossings automatically
📊 DATA SOURCE:
Official CPI data from FRED (Federal Reserve Economic Data), updated monthly mid-month when new data releases occur.
🎨 CUSTOMIZATION:
Fully customizable through settings:
- Toggle YoY/MoM displays
- Adjust target levels
- Customize colors for visual preference
- Show/hide absolute CPI values
Perfect for: Macro traders, swing traders, long-term investors, and anyone wanting to understand the inflation environment affecting their portfolio.
Note: This indicator works on any chart timeframe as it loads external monthly economic data.
SMA 10/20 Weekly on all timeframeHere are SMA 10/20 Weekly to see the underlying weekly trend across all timeframes
Custom Weekly WED→TUEPurpose:
This indicator creates custom weekly candles with a week boundary running from Wednesday to Tuesday (WED→TUE) for any symbol. It is designed for systems that prefer to close the trading week on Tuesday’s session instead of the standard weekend.
Custom Candle Logic (WED→TUE):
• Open = Opening price on Wednesday (start of the custom week).
• Close = Closing price on Tuesday (end of the custom week).
• High/Low = Maximum/minimum during the entire range from Wednesday → Tuesday.
Display Behavior:
• Only renders when the chart timeframe = 1W (Weekly).
• Completed weeks (with full Wed→Tue data) are shown as candlesticks (colored up/down based on O/C).
• The current incomplete week is shown as a preview box shifted to the next weekly slot (the column to the right), allowing you to see the progress of the ongoing week while keeping the last completed week intact.
Inputs:
• Start day (1=Mon…7=Sun) — default is 3 = Wednesday. You can change this to redefine the week boundary.
• Show current (incomplete) custom week — toggles the preview box for the current running week.
• Up/Down/Doji color — defines the colors of completed weekly candles.
• Preview box transparency — controls the opacity of the preview box for the ongoing week.
Bullish EMA Crossover Exact v6This indicator highlights bullish momentum shifts by plotting 9 EMA and 20 EMA crossovers. When the faster 9 EMA crosses above the slower 20 EMA, a bold black “X” appears exactly at the crossover price, signaling potential buy opportunities. Ideal for identifying strong uptrends and precise bullish entry points with clear visual confirmation.
Rolling VWAP x3editable rolling vwap, 3 lines, simple, can edit all 3, preset to 7/30/90 day. Just made it to declutter indicators, good luck.
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
Logit RSI [AdaptiveRSI]The traditional 0–100 RSI scale makes statistical overlays, such as Bollinger Bands or even moving averages, technically invalid. This script solves this issue by placing RSI on an unbounded, continuous scale, enabling these tools to work as intended.
The Logit function takes bounded data, such as RSI values ranging from 0 to 100, and maps them onto an unbounded scale ranging from negative infinity (−∞) to positive infinity (+∞).
An RSI reading of 50 becomes 0 on the Logit scale, indicating a balanced market. Readings above 50 map to positive Logit values (price above Wilder’s EMA / RSI above 50), while readings below 50 map to negative values (price below Wilder’s EMA / RSI below 50).
For the detailed formula, which calculates RSI as a scaled distance from Wilder’s EMA, check the RSI
: alternative derivation script.
The main issue with the 0–100 RSI scale is that different lookback periods produce very different distributions of RSI values. The histograms below illustrate how often RSIs of various lengths spend time within each 5-point range.
On RSI(2), the tallest bars appear at the edges (0–5 and 95–100), meaning short-term RSI spends most of its time at the extremes. For longer lookbacks, the bars cluster around the center and rarely reach 70 or 30.
This behavior makes it difficult to generalize the two most common RSI techniques:
Fixed 70/30 thresholds: These overbought and oversold levels only make sense for short- or mid-range lookbacks (around the low teens). For very short periods, RSI spends most of its time above or below these levels, while for long-term lookbacks, RSI rarely reaches them.
Bollinger Bands (±2 standard deviations): When applied directly to RSI, the bands often extend beyond the 0–100 limits (especially for short-term lookbacks) making them mathematically invalid. While the issue is less visible on longer settings, it remains conceptually incorrect.
To address this, we apply the Logit Transform :
Logit RSI = LN(RSI / (100 − RSI))
The transformed data fits a smooth bell-shaped curve, allowing statistical tools like Bollinger Bands to function properly for the first time.
Why Logit RSI Matters:
Makes RSI statistically consistent across all lookback periods.
Greatly improves the visual clarity of short-term RSIs
Allows proper use of volatility tools (like Bollinger Bands) on RSI.
Replaces arbitrary 70/30 levels with data-driven thresholds.
Simplifies RSI interpretation for both short- and long-term analysis.
INPUTS:
RSI Length — set the RSI lookback period used in calculations.
RSI Type — choose between Regular RSI or Logit RSI .
Plot Bollinger Bands — ON/OFF toggle to overlay statistical envelopes around RSI or Logit RSI.
SMA and Standard Deviation Length — defines the lookback period for both the SMA (Bollinger Bands midline) and Standard Deviation calculations.
Standard Deviation Multiplier — controls the width of the Bollinger Bands (e.g., 2.0 for ±2σ).
While simple, the Logit transformation represents an unexplored yet powerful mathematically grounded improvement to the classic RSI.
It offers traders a structured, intuitive, and statistically consistent way to use RSI across all timeframes.
I welcome your feedback, suggestions, and code improvements—especially regarding performance and efficiency. Your insights are greatly appreciated.
CMF, RSI, CCI, MACD, OBV, Fisher, Stoch RSI, ADX (+DI/-DI)Eight normalized indicators are used in conjunction with the CMF, CCI, MACD, and Stoch RSI indicators. You can track buy and sell decisions by tracking swings. The zero line is for reversal tracking at -20, +20, +50, and +80. You can use any of the nine indicators individually or in combination.
Timebender – 369 PivotsTimebender – 369 Pivots is a clean visual study that marks swing highs and lows with numeric “369-sequence” digits derived from time.
Each digit is automatically color-coded into Accumulation (1 – 3), Manipulation (4 – 6), and Distribution (7 – 9) phases, helping traders identify rhythm and symmetry in market structure.
Labels float above or below bars for clear visibility and never overlap price, allowing smooth zoom and multi-timeframe use.
This base model focuses on clarity, precision, and efficient plotting — no toggles, no clutter — a stable foundation for future Timebender builds.