CandlePressure_UtilitiesCandlePressure_Utilities is a lightweight Pine library for converting raw OHLC candle structure into a normalized candle-pressure score, buy/sell percentage estimates, oscillator output, and compact display helpers.
The library is designed for scripts that want a reusable candle-pressure layer without rebuilding the same CLV/body/wick math every time.
It centralizes the pieces that commonly repeat across pressure-based scripts:
• close-location value / CLV calculation
• candle body dominance
• upper-vs-lower wick imbalance
• deadzone-filtered wick pressure
• normalized pressure output from -1 to +1
• buy/sell percentage conversion
• pressure oscillator conversion from -100 to +100
• alternate body/wick buy-sell allocation
• compact volume and relative-volume formatting
• table/label size and table-position helpers
• small percent and black/white text helpers
On the example chart, the pressure candles, pressure oscillator, buy/sell split, CLV/body/wick breakdown, alternate body/wick comparison, and compact table values are all materially driven by this library.
This library is intentionally focused on pure candle structure. It does not confirm trend, detect pivots, calculate RSI/DMI/ATR context, decide trade direction, or choose final signal logic for the calling script. Those layers remain script-level decisions.
➖Quick Start➖
Import the library near the top of your script in global scope, alongside any other imports, before calling its helpers.
Typical placement:
//@version=6
indicator(...) or strategy(...)
import MYNAMEISBRANDON/CandlePressure_Utilities/1 as cp
Replace /1 with the latest published version if a newer version is available.
The main helper for most scripts is candlePressureMetrics(), which returns:
• pressure
• buyPct
• sellPct
Example:
= cp.candlePressureMetrics(
open,
high,
low,
close,
volume)
string splitText = cp.fmtBuySellSplit(
buyPct,
sellPct,
volume)
float pressureOsc = cp.pressureOsc(
pressure)
The library uses standard OHLCV argument order:
open, high, low, close, volume
➖What The Library Measures➖
The default candle-pressure model uses:
• Wick Deadzone = 0.02
• CLV Weight = 0.55
• Body Weight = 0.30
• Wick Weight = 0.15
CLV measures where the close finished inside the candle range. Body contribution measures open-to-close directional dominance. Wick contribution measures lower-wick vs upper-wick imbalance.
The final pressure score is a weighted blend of those components, normalized from -1 to +1.
That pressure score can then be converted into buy/sell percentage estimates, a -100 to +100 pressure oscillator, candle-overlay colors, table values, labels, or dashboard outputs.
➖Function Reference➖
These helpers are grouped by purpose.
Most scripts will only need:
• candlePressureMetrics()
• fmtBuySellSplit()
• pressureOsc()
More advanced scripts can use the full component helpers for tables, tooltips, debug output, or custom pressure models.
➖Model + Math Helpers➖
modelDefaults()
Returns the default candle-pressure model values used by this library.
Returns:
Wick deadzone, CLV weight, body weight, wick weight
clamp(v, lo, hi)
Restricts a value between a lower and upper bound.
Parameters:
v (float): Input value
lo (float): Lower bound
hi (float): Upper bound
Returns:
Clamped value
safeDiv(numerator, denominator, fallback)
Safely divides two values and returns the fallback when division is not valid.
Parameters:
numerator (float): Numerator value
denominator (float): Denominator value
fallback (float): Value returned when division is unsafe
Returns:
numerator / denominator, or fallback when unsafe
➖Display + UI Helpers➖
fmtCompact(val, sigFigs, naText)
Formats large values into compact display text such as 1.5k, 2.4m, or 1.2b.
Parameters:
val (float): Value to format
sigFigs (simple int): Significant figures to keep
naText (simple string): Text returned when val is na
Returns:
Compact formatted string
fmtBuySellSplit(buyPct, sellPct, volumeValue)
Formats buy/sell percentages into rounded split text such as 62/38.
Parameters:
buyPct (float): Buy percentage
sellPct (float): Sell percentage
volumeValue (float): Volume value used to handle missing or no-volume bars
Returns:
Formatted buy/sell split text
contrastText(bg)
Chooses black or white text based on background brightness.
Parameters:
bg (color): Background color
Returns:
Readable contrast text color
stripLeadingZero(txt)
Removes the leading zero from decimal text.
Parameters:
txt (string): Input text
Returns:
Adjusted text, such as 0.25 -> .25 or -0.25 -> -.25
fmtRelVol(val, naText)
Formats relative volume with two decimals and strips the leading zero.
Parameters:
val (float): Relative volume value
naText (string): Text returned when val is na
Returns:
Formatted relative-volume text
pctChange(currentValue, baseValue)
Returns the percent change from a base value.
Parameters:
currentValue (float): Current or projected value
baseValue (float): Comparison baseline
Returns:
Percent change
fmtPctWhole(val, naText)
Formats a percent value as rounded whole-percent text.
Parameters:
val (float): Percent value
naText (string): Text returned when val is na
Returns:
Rounded percent string
pctInt(pct)
Rounds and clamps a percentage into 0–100 integer form.
Parameters:
pct (float): Percent value
Returns:
Integer percent from 0 to 100
pctIntVol(pct, volumeValue)
Rounds and clamps a percentage into 0–100 integer form, returning 0 on no-volume bars.
Parameters:
pct (float): Percent value
volumeValue (float): Volume value
Returns:
Integer percent from 0 to 100
tableTextSize(sizeText)
Converts user-facing table-size text into Pine table text-size enums.
Parameters:
sizeText (string): Size text. Expected values: "Tiny", "Small", "Normal", or "Large"
Returns:
Pine table text-size enum
labelSize(sizeText)
Converts user-facing label-size text into Pine label-size enums.
Parameters:
sizeText (string): Size text. Expected values: "Tiny", "Small", "Normal", "Large", or "Huge"
Returns:
Pine label-size enum
tablePos(posText)
Converts user-facing table-position text into Pine table position enums.
Parameters:
posText (string): Table position text
Returns:
Pine table position enum
bw(useBlack)
Returns black text when the condition is true, otherwise white.
Parameters:
useBlack (bool): Whether black text should be used
Returns:
Black or white text color
➖Candle Pressure Helpers➖
candlePressurePartsFull(openValue, highValue, lowValue, closeValue, wickDeadzone, weightClv, weightBody, weightWick)
Converts OHLC candle structure into the full normalized pressure component set.
Parameters:
openValue (float): Candle open
highValue (float): Candle high
lowValue (float): Candle low
closeValue (float): Candle close
wickDeadzone (float): Wick imbalance threshold below which wick contribution is forced to 0
weightClv (float): Weight assigned to the CLV component
weightBody (float): Weight assigned to the body component
weightWick (float): Weight assigned to the wick component
Returns:
CLV, body % of range, signed body term, raw wick imbalance, deadzoned wick imbalance, final pressure
Note:
wickDeadzone, weightClv, weightBody, and weightWick are optional. If omitted, the library uses its default model:
Wick Deadzone 0.02 / CLV 0.55 / Body 0.30 / Wick 0.15
candlePressureParts(openValue, highValue, lowValue, closeValue, wickDeadzone, weightClv, weightBody, weightWick)
Converts OHLC candle structure into the compact pressure component set.
Parameters:
openValue (float): Candle open
highValue (float): Candle high
lowValue (float): Candle low
closeValue (float): Candle close
wickDeadzone (float): Wick imbalance threshold below which wick contribution is forced to 0
weightClv (float): Weight assigned to the CLV component
weightBody (float): Weight assigned to the body component
weightWick (float): Weight assigned to the wick component
Returns:
CLV, body % of range, raw wick imbalance, deadzoned wick imbalance, final pressure
Note:
wickDeadzone, weightClv, weightBody, and weightWick are optional. If omitted, the library uses its default model:
Wick Deadzone 0.02 / CLV 0.55 / Body 0.30 / Wick 0.15
pressureToBuySell(pressure, volumeValue)
Converts normalized pressure into buy/sell percentages.
Parameters:
pressure (float): Candle pressure in the -1..+1 range
volumeValue (float): Volume value used to handle missing or no-volume bars
Returns:
Buy %, Sell %
pressureOsc(pressure)
Converts normalized pressure into a -100..+100 oscillator value.
Parameters:
pressure (float): Candle pressure in the -1..+1 range
Returns:
Pressure oscillator value
candlePressureMetrics(openValue, highValue, lowValue, closeValue, volumeValue, wickDeadzone, weightClv, weightBody, weightWick)
One-call convenience wrapper for scripts that need final pressure, buy %, and sell %.
Parameters:
openValue (float): Candle open
highValue (float): Candle high
lowValue (float): Candle low
closeValue (float): Candle close
volumeValue (float): Volume value used to handle missing or no-volume bars
wickDeadzone (float): Wick imbalance threshold below which wick contribution is forced to 0
weightClv (float): Weight assigned to the CLV component
weightBody (float): Weight assigned to the body component
weightWick (float): Weight assigned to the wick component
Returns:
Pressure, Buy %, Sell %
Note:
wickDeadzone, weightClv, weightBody, and weightWick are optional. If omitted, the library uses its default model:
Wick Deadzone 0.02 / CLV 0.55 / Body 0.30 / Wick 0.15
bodyWickRateBuyPct(openValue, highValue, lowValue, closeValue)
Returns an alternate buy percentage using body/wick structure only.
Parameters:
openValue (float): Candle open
highValue (float): Candle high
lowValue (float): Candle low
closeValue (float): Candle close
Returns:
Buy percentage
bodyWickRateBuySell(openValue, highValue, lowValue, closeValue, volumeValue)
Returns alternate body/wick buy and sell percentages.
Parameters:
openValue (float): Candle open
highValue (float): Candle high
lowValue (float): Candle low
closeValue (float): Candle close
volumeValue (float): Volume value used to handle missing or no-volume bars
Returns:
Buy %, Sell %
➖Important Notes➖
Candle Pressure is not order flow.
The buy/sell split produced by this library is an estimate derived from candle structure. It is not true bid/ask volume, footprint data, or exchange-level order flow.
The pressure model is intentionally pure OHLC structure:
• CLV measures where the close finished inside the candle range.
• Body contribution measures open-to-close directional dominance.
• Wick contribution measures lower-wick vs upper-wick imbalance.
• Final pressure is a weighted blend of those components.
Momentum filters such as RSI, DMI, ATR, trend state, relative volume, or multi-timeframe context should be added by the calling script when needed.
This library provides the reusable candle-pressure foundation only.
➖Release Notes➖
v1
Initial release of CandlePressure_Utilities.
This release provides a focused candle-pressure utility layer for Pine scripts that need reusable OHLC pressure calculations, buy/sell percentage estimates, pressure oscillator output, compact display formatting, and small table/label helper functions.
Included in this release:
• default candle-pressure model values
• safe math helpers
• compact number formatting
• buy/sell split formatting
• relative-volume formatting
• table/label size and table-position helpers
• percent and bias display helpers
• full candle-pressure component output
• compact candle-pressure component output
• pressure-to-buy/sell conversion
• pressure oscillator conversion
• alternate body/wick buy-sell allocation
The library is designed to stay focused on reusable candle-pressure mechanics. It does not decide trend, trade direction, signal confirmation, pivot structure, RSI/DMI filters, ATR filters, or final color logic. Calling scripts remain responsible for their own signal model and visual interpretation.
Library

Sigma Structure [RWCS]What it is:
Sigma Structure is a confluence-based trading indicator that unifies three distinct analytical layers into a single, cohesive view: a Z-Score oscillator measuring price deviation from its 20 EMA, a normalized MACD histogram for momentum context, and an Order Block detection engine that identifies structural demand and supply zones directly on the price chart. The result is an indicator that tells you not just when price is statistically extended, but where that extension is occurring relative to meaningful price structure — giving every signal a location and every location a statistical weight.
How it works:
1. Z-Score layer: Price is measured as the number of standard deviations it sits above or below its 20-period EMA. This produces an oscillator that reads consistently across any asset or timeframe — a reading of +2 on Bitcoin means the same thing structurally as +2 on the S&P or EURUSD. The line color intensifies from faded to full aqua as it moves above zero, and faded to full fuchsia below, so the degree of extension is immediately legible at a glance. Fixed bands at ±1, ±2, and ±3 sigma define the statistical landscape.
2. MACD layer: A standard MACD histogram is computed normally, then linearly scaled so its rolling peak aligns with the ±3σ band. No calculation is modified — only the display axis is shared with the Z-Score. This means crossovers, divergences, and momentum shifts read identically to a standard MACD, but now live in the same visual space as the bands, letting you see momentum and mean-reversion context simultaneously.
3. Order Block layer: The indicator scans for order blocks using a sequential candle method — a bearish candle followed by a configurable number of consecutive bullish candles (demand), or a bullish candle followed by consecutive bearish candles (supply). Detected zones are drawn directly on the price chart as shaded regions with solid top boundaries and dashed bottom boundaries, color-coded aqua for demand and fuchsia for supply. Zones extend rightward bar by bar and self-invalidate the moment price closes through them, so what you see on the chart is always live and relevant.
4. Confluence signals: Two signal types fire when the Z-Score and Order Block layers align. An OB Reversal label appears when price is inside an Order Block while the Z-Score is at or beyond ±2σ — the statistical extension and the structural level are confirming each other as a fade opportunity. An OB Continuation label appears when price pulls back into an Order Block and the Z-Score reclaims zero — the trend is reasserting after a mean-reversion dip into demand or supply.
5. Volatility divergence: A background highlight layer compares price's rolling highs and lows against the rolling highs and lows of realized volatility (standard deviation of log returns). When price makes a new low without a corresponding expansion in realized volatility, a bullish divergence is flagged. The inverse flags bearish divergence. These are not entry signals on their own — they indicate moments where price action and volatility are telling different stories and warrant closer attention.
Possible ways to use it:
1. Reversal setups: When the Z-Score reaches ±2σ or beyond and price simultaneously tags an active Order Block zone, the statistical extension and structural level are aligned. The OB Reversal label marks these bars. Look for MACD histogram compression or a zero cross in the same window for additional confirmation before acting.
2. Trend continuation entries: In trending markets, price frequently pulls back into demand or supply zones and finds support exactly where it should. When the Z-Score crosses back through zero inside an active zone, the OB Continuation label fires — this is your structural retest with momentum confirmation.
3. Divergence as a filter: The volatility divergence highlights flag potential exhaustion in price moves that lack volatility confirmation. Use these as a reason to tighten risk or wait for the OB/Z-Score confluence before entering, rather than chasing the move.
4. EMA trend bias: The fast and slow EMA overlay on the price chart provides a quick structural read. Aligning your OB Reversal or Continuation signals in the direction of the EMA cross adds a higher-timeframe trend filter without requiring a second indicator.
5. Alert-driven scanning: Three configurable alerts cover the ±2σ Trade Zone cross, OB Reversal confluence, and OB Continuation setup. Set these across a watchlist to surface actionable conditions without manual chart monitoring.
Settings guide:
1. EMA / Std Dev Length: Both default to 20, matching a standard Bollinger Band configuration. Increase for smoother, slower signals on higher timeframes.
2. MACD Norm Lookback: Controls how far back the indicator looks to find the MACD histogram's peak for scaling. Higher values produce more stable scaling; lower values make the histogram more reactive to recent momentum.
3. Sequential Candles for OB: The number of consecutive candles required after the origin candle to confirm a block. Higher values produce fewer, higher-quality zones.
4. Max Active Zones: How many demand and supply zones can coexist on each side. Older zones are removed when the limit is reached.
5. Divergence Lookback: The rolling window for comparing price extremes against volatility extremes. Shorter values produce more frequent signals; longer values are more selective.
Disclaimer:
This indicator is published for educational and informational purposes only. Nothing presented here constitutes financial advice, a solicitation, or a recommendation to buy or sell any financial instrument. All trading involves risk, including the possible loss of principal. Past performance of any indicator or methodology is not indicative of future results. You are solely responsible for your own trading decisions. Always conduct your own research and consult a qualified financial professional before making any investment decisions. Indicator

Strategy Sensitivity MatrixThe Strategy Sensitivity Matrix is an institutional-grade backtesting tool designed to evaluate the robustness and parameter sensitivity of trend-following strategies. It enables users to compare the historical performance of a broad range of parameter combinations across multiple metrics to assess the overall stability of the selected strategy. The model displays the complete backtest landscape in a structured, color-coded matrix that allows investors to quickly identify robust parameter regions and evaluate historical performance stability across parameter combinations.
At its core, the matrix systematically evaluates a wide range of parameter combinations, where every individual cell represents the backtest result for one unique parameter configuration. Users can switch between volatility-based strategies and moving-average strategies. In volatility mode, the matrix rows represent volatility lengths and the matrix columns represent volatility factors. In crossover mode, the rows represent fast moving-average lengths and the columns represent slow moving-average lengths. Supported volatility types include the Average True Range (ATR), Standard Deviation (SD), and Mean Absolute Deviation (MAD). Supported moving-average types include the Exponential Moving Average (EMA), Simple Moving Average (SMA), Wilder’s Moving Average (RMA), and Weighted Moving Average (WMA). Supported display metrics include:
CAGR = Compounded Annual Growth Rate.
Sharpe = CAGR per unit of standard deviation.
Sortino = CAGR per unit of downside deviation.
Martin = CAGR relative to the Ulcer Index (UI).
Calmar = CAGR relative to maximum drawdown.
Max DD = Largest peak-to-trough decline in value.
Alpha (α) = Excess annualized risk-adjusted returns.
Expectancy = Average expected return per trade.
Profit Factor = Total gross profit per unit of losses.
Win Rate = Ratio of profitable trades to total trades.
Trades/Year = Average number of trades per year.
The matrix follows an intuitive percentile-based coloring framework that dynamically compares the relative performance and stability of all parameter combinations. Stronger values above or equal to the matrix median are highlighted in green, with bright green representing the top 10% of all parameter combinations. Weaker values below the matrix median are highlighted in orange, while red represents objectively weak performance based on the selected metric. Broad clusters of consistently strong results generally suggest lower parameter sensitivity and potentially greater robustness, while isolated peaks generally suggest elevated parameter sensitivity.
The summary table displayed above the matrix provides a broader distribution-level statistical overview of results across all parameter combinations. This structure allows investors to evaluate whether strong historical performance appears statistically widespread or narrowly concentrated across the parameter landscape. Stable parameter landscapes generally exhibit lower standard deviation, similar median and average values, and smaller performance gaps between the best and top 10% parameter combinations. The summary table includes the following sections:
Start = Start month and year of the selected backtest period.
End = End month and year of the selected backtest period.
Metric = Performance metric currently displayed in the matrix.
B&H = Buy-and-hold performance for the selected metric.
Best = Best-performing parameter combination in the matrix.
Top 10% = Average value of the top 10% parameter combinations.
Median = Median value across all parameter combinations.
Average = Average value across all parameter combinations.
Std Dev = Standard deviation of all parameter combinations.
≥ B&H = Percentage of combinations equal or better than B&H.
In summary, the Strategy Sensitivity Matrix is a powerful robustness analysis tool designed to help investors make data-driven decisions when evaluating parameter combinations across trend-following strategies. By evaluating the full parameter landscape, investors can quickly determine whether strong historical performance appears broadly distributed across stable parameter regions or narrowly concentrated within isolated parameter combinations. While historical robustness can provide valuable insight into past market behavior over the selected backtest period, users should remain mindful that market structures evolve over time and that historically stable parameter regions may not necessarily persist in future market conditions. Indicator

Indicator

Indicator

Neural Weight Oscillator (Zeiierman)█ Overview
The Neural Weight Oscillator (Zeiierman) is an adaptive multi-factor oscillator that combines structured decision-making with dynamic market learning.
The script analyzes three core market behaviors: Trend, Mean Reversion, and Momentum. Instead of treating these components equally, the oscillator uses the Best-Worst Method (BWM) to determine which market behavior should have the greatest influence under current market conditions.
An adaptive training layer then studies historical market reactions and gradually amplifies the features that have recently produced the strongest directional behavior.
The result is a hybrid oscillator that blends:
Human-defined market logic
Adaptive feature weighting
Multi-factor momentum analysis
Dynamic market learning
Unlike traditional oscillators that rely on static formulas, the Neural Weight Oscillator continuously adjusts its internal structure based on both trader-defined weighting preferences and changing market behavior.
█ How It Works
⚪ Market Structure Engine
The oscillator builds its analysis from three independent behavioral models: Trend, Mean Reversion, and Momentum.
The Trend component measures structural direction by comparing the fast EMA against the slow EMA, then adds the EMA slope to capture acceleration.
trendSpread = (emaFast - emaSlow) / atr
trendSlope = (emaFast - emaFast ) / atr
trendScore = normalize(trendSpread + trendSlope, -2.5, 2.5)
The Mean Reversion component measures stretched conditions using RSI exhaustion and statistical deviation from the market mean.
zScore = dev == 0 ? 0 : (close - basis) / dev
meanScore = (100 - rsi) * 0.5 + normalize(-zScore, -2.5, 2.5) * 0.5
The Momentum component measures directional acceleration using ROC, RSI momentum, and EMA velocity.
rocNorm = normalize(close / close - 1.0, -0.05, 0.05)
momentumScore = rocNorm * 0.45 + rsi * 0.35 + emaMomentum * 0.20
Each component produces its own normalized score before being blended into the final oscillator.
⚪ Best-Worst Method (BWM)
The core weighting system in the oscillator is based on the Best-Worst Method (BWM), a structured decision-making framework that creates balanced weighting relationships among multiple factors.
bestIdx = criterionIndex(bestCriterion)
worstIdx = criterionIndex(worstCriterion)
array.set(bo, bestIdx, 1.0)
array.set(ow, worstIdx, 1.0)
Instead of assigning arbitrary percentages manually, BWM allows the trader to define which market behavior matters most and which matters least. The script then automatically calculates balanced internal weights.
The process begins by selecting:
The “Best” factor → the market behavior trusted most
The “Worst” factor → the market behavior trusted least
relWeight = math.sqrt((aBW / boVal) * owVal)
The oscillator then compares all remaining factors relative to those two extremes and converts those relationships into normalized internal weights.
⚪ How To Think About The BWM Weights
The easiest way to think about BWM is:
“What type of market behavior do I trust most in the current environment?”
Different market conditions naturally favor different behaviors.
In strong directional trends , traders often prioritize Trend because structural continuation becomes the dominant force.
In choppy or range-bound markets , Mean Reversion may become more important because the market repeatedly returns back toward equilibrium.
During aggressive breakout environments , Momentum may deserve the highest weighting because acceleration becomes the primary driver.
The goal is not to find a “perfect” weight configuration, but rather to align the oscillator with the type of behavior currently dominating the market.
⚪ Adaptive Neural Training Layer
The oscillator includes an adaptive learning layer that learns how the market has recently reacted to the model’s internal features.
The script looks back at prior Trend, Mean Reversion, and Momentum feature values, then compares them to the future price reaction.
target = close / close - 1.0
targetDirection = target > 0 ? 1.0 : target < 0 ? -1.0 : 0.0
High-quality samples are ranked by how strong the move was relative to volatility.
sampleScore = math.abs(target) / qualityVol
The model then compares its internal prediction against the actual market direction and adjusts the learned feature weights over time.
pred = twTrend * s.trend + twMean * s.mean + twMomentum * s.momentum + tbias
err = pred - s.target
This allows the oscillator to gradually learn which features are producing the strongest directional behavior.
⚪ Adaptive Feature Amplification
The learned weights are converted into feature amplifiers.
trendAmplifier = 1.0 + learnTrend * blend
meanAmplifier = 1.0 + learnMean * blend
momentumAmplifier = 1.0 + learnMomentum * blend
This allows stronger features to gain more influence, while weaker features receive less influence.
█ How to Use
⚪ Reading the Oscillator
The oscillator operates between 0 and 100.
Values above 50 suggest bullish pressure dominates the market, while values below 50 suggest bearish pressure dominates.
As the oscillator moves farther away from the neutral 50 level, directional imbalance becomes stronger.
Readings above 70 typically indicate strong bullish expansion, while readings below 30 indicate strong bearish pressure. Extreme zones above 80 or below 20 may signal exhaustion conditions where reversals become more likely.
⚪ Using the BWM Weighting System
The BWM system allows traders to align the oscillator with current market behavior by controlling how much influence Trend, Mean Reversion, and Momentum should have inside the model.
Imagine the market is trending strongly upward.
You may believe:
Trend is the dominant market behavior.
Mean Reversion still matters during pullbacks.
Momentum should have the least influence.
In this case, you could choose:
Best = Trend
Worst = Momentum
You then control how strongly Trend dominates the other factors through the comparison inputs.
For example:
Best-to-Others:
Trend = 1
Mean = 3
Mom = 6
Relative-to-Worst:
Trend = 4
Mean = 2
Mom = 1
This tells the oscillator:
Trend is selected as the strongest market behavior.
Momentum is selected as the weakest market behavior.
Trend is 3x more important than Mean Reversion.
Trend is 6x more important than Momentum.
Mean Reversion is 2x more important than Momentum.
The script automatically converts these relationships into balanced internal weights.
As a result, the oscillator becomes more trend-sensitive while reducing the influence of short-term momentum fluctuations and weak counter-trend behavior.
If the market becomes highly rotational or range-bound, traders may instead increase the importance of Mean Reversion so the oscillator becomes more responsive to exhaustion and reversal conditions.
During aggressive breakout environments, increasing Momentum weighting can help the oscillator react faster to acceleration phases.
The weighting system is designed to adapt the oscillator’s personality to different market environments rather than forcing one static interpretation onto every condition.
█ Settings
Fast EMA: controls the responsiveness of the Trend and Momentum calculations.
Slow EMA: controls the structural trend baseline used throughout the oscillator.
Smoothing: controls the smoothness of the final oscillator line.
The Best and Worst: determine how the BWM weighting model prioritizes market behaviors.
Best-to-Others: define how strongly the selected Best factor dominates the remaining components.
Relative-to-Worst: define how much stronger each component is compared to the selected Worst factor.
Use Training: enables the adaptive learning layer.
Influence: controls how strongly the learned model amplifies features.
Line Impact: controls how much the adaptive model can directly influence the oscillator line itself.
-----------------
Disclaimer
The content provided in my scripts, indicators, ideas, algorithms, and systems is for educational and informational purposes only. It does not constitute financial advice, investment recommendations, or a solicitation to buy or sell any financial instruments. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
Indicator

Candle Box SystemThis indicator is a hybrid market structure tool based on a 3-candle triangle formation combined with EMA trend filtering and mirror-based noise reduction.
It detects short-term momentum shifts using structured price movement and validates signals with ATR-based volatility, strength comparison between candles, and EMA trend direction.
The system generates BUY and SELL signals only when multiple conditions align, ensuring higher-quality setups and reducing market noise.
🔺 Triangle Logic
Each signal is formed from a 3-candle structure that represents micro market flow. The triangle reflects short-term direction, momentum strength, and confirmation behavior.
📊 Reference Lines (Important Feature)
On every valid signal, the indicator draws reference lines on the box zone.
These lines act as dynamic support and resistance levels.
If price reacts to these levels and cannot break or hold them properly, the signal weakens or becomes invalid.
When price respects these lines as support or resistance and holds direction → the signal is considered strong BUY or SELL.
🪞 Mirror Filter Concept
The indicator uses a mirror-based EMA distance filter to eliminate fake signals caused by price noise around the trend line.
⚠️ Usage Note
This tool is designed for decision support only and should be used with proper risk management.
🇹🇷 TÜRKÇE AÇIKLAMA
Mirror EMA Triangle System V2
Bu gösterge, 3 mumluk üçgen formasyonu, EMA trend filtresi ve mirror (ayna) tabanlı gürültü azaltma mantığını birleştiren hibrit bir piyasa yapısı aracıdır.
Kısa vadeli momentum değişimlerini fiyat yapısı üzerinden tespit eder ve sinyalleri ATR volatilite filtresi, mumlar arası güç karşılaştırması ve EMA trend yönü ile doğrular.
Sistem, yalnızca birden fazla koşul aynı anda oluştuğunda BUY ve SELL sinyali üretir, böylece daha kaliteli işlem fırsatları sunar.
🔺 Üçgen Mantığı
Her sinyal 3 mumdan oluşan bir yapıdan gelir. Bu yapı piyasanın mikro hareket akışını temsil eder.
📊 Referans Çizgileri (ÖNEMLİ)
Sinyal oluştuğunda kutu bölgesi üzerinde referans çizgileri çizilir.
Bu çizgiler dinamik destek ve direnç seviyeleri gibi çalışır.
Eğer fiyat bu çizgileri destek veya direnç olarak test edip kıramazsa ve yönünü korursa → sinyal güçlü kabul edilir (güçlü AL / SAT).
🪞 Mirror Filtresi
EMA etrafındaki fiyat gürültüsünü filtrelemek için mirror mesafe mantığı kullanılır.
⚠️ Kullanım Notu
Bu gösterge sadece karar destek aracıdır ve risk yönetimi ile birlikte kullanılmalıdır. Indicator

Squeeze Box About This Script
The Squeeze Box indicator is designed to detect periods of price compression where volatility contracts and price begins to coil into a tight range. These areas often precede expansion moves, breakouts, trend continuation, or volatility events.
Unlike traditional squeeze indicators that rely mainly on Bollinger Bands or Keltner Channels, this script focuses directly on the structure of consolidation itself.
The indicator automatically identifies tight trading ranges and draws visual “squeeze boxes” around them, helping traders spot:
Volatility contraction
Quiet accumulation/distribution
VCP-style tightening
Darvas-like consolidation zones
Pre-breakout pressure buildup
Pause-and-go continuation patterns
The script includes two optional squeeze-detection engines:
ATR Range Compression
Measures whether the total height of the consolidation zone is small relative to ATR.
Regression Residual Compression
Measures how tightly price hugs its regression line, helping identify orderly compression rather than random chop.
These methods can be used individually or together to filter for higher-quality setups.
Features
Automatic squeeze box detection
Dynamic box extension while compression remains active
Optional midline display
Adjustable sensitivity settings
ATR-based compression filtering
Regression-based “tightness” filtering
Customizable colors and transparency
Control over how many historical boxes remain visible
Optional seed markers for early squeeze detection
Best Uses
This indicator works especially well for:
Momentum continuation setups
VCP (Volatility Contraction Pattern) style trading
Breakout traders
Episodic Pivot follow-through
Swing trading
Identifying low-risk consolidation areas before expansion
General Interpretation
Tight, narrow boxes often represent decreasing volatility and reduced selling pressure.
A breakout above the box may signal renewed momentum or institutional accumulation.
Failure to break out or rejection from the upper boundary may indicate unresolved supply.
The script is intended as a structure and pressure visualization tool rather than a standalone buy/sell system.
Suggested Settings
ATR Multiplier: ~0.6 to 1.2
Regression Multiplier: ~0.20 to 0.50
Minimum Bars in Box: 3+
Lower values create more selective squeezes, while higher values identify broader consolidation zones.
Seed Dots
Optional dots beneath price indicate early compression conditions before a full squeeze box is confirmed. These dots act as an early warning that volatility and price movement are beginning to tighten.
In many cases:
Seed Dot → Squeeze Box → Expansion
They are intended to help traders monitor developing consolidation structures and potential breakout setups.
Philosophy Behind the Indicator
Markets often move from:
Expansion → Contraction → Expansion
This script focuses on the contraction phase — the “quiet zone” where pressure builds before movement expands again.
The goal is not simply to find volatility squeezes, but to locate areas where price becomes compressed, orderly, and structurally tight before a potential directional move. Indicator

Index Futures Position Size Calculator V2A simple, free position size calculator for CME index futures traders.
Click Entry, click Stop Loss, pick your asset, get your contract size instantly. Built for fast NY session execution — no spreadsheets, no manual maths, no noise.
This is the updated version. The first release was a bare-bones calculator showing contract size only with a fixed SL buffer. This version is a full rebuild — every feature below came from real trading feedback, not theory.
═══════════════════════════════════
✦ SUPPORTED INSTRUMENTS
MNQ · MES · NQ · ES — all CME tick values hardcoded. No manual lookup, no mistakes.
═══════════════════════════════════
✦ WHAT IS NEW IN THIS VERSION
→ SL buffer is now a toggle — switch the auto ±1 handle offset on or off anytime from settings. When on, the SL label shows +1H so you always know what was calculated
→ Panel now shows four live values — asset, contract size, real USD risk after rounding, and full stop distance in points
→ Direction arrow — ▲ Buy or ▼ Sell auto-detected from your Entry and SL position
→ Panel size control — choose Small, Medium, Large or XL to fit any screen or preference
→ Lines now start exactly at your click point and extend right — no more lines appearing from far left
→ Price labels on both lines — see your exact Entry and adjusted SL price at a glance
→ Ghost line bug fixed — no more phantom line appearing at the bottom when switching timeframes
→ Dark PulseWire-native panel design — colour-coded values, clean two-column layout, easy to read at a glance during live sessions
═══════════════════════════════════
✦ FEATURES
→ One-click Entry and Stop Loss directly on the chart
→ Optional auto ±1 handle SL buffer — structural protection against wick hunts built in
→ Asset dropdown — MNQ, MES, NQ, ES with correct tick value loading automatically
→ Smart rounding — fractional contracts of 0.75 or higher round up, otherwise round down
→ Green Entry line and Red SL line from your exact click, both extending right
→ Live panel updates instantly when you move Entry or SL
═══════════════════════════════════
✦ HOW TO USE
Add to chart → click Entry → click Stop Loss → pick asset → set Account Size and Risk %. Read your size from the top-right panel. Three clicks and you are sized.
═══════════════════════════════════
✦ PROP FIRM CHALLENGE SIZING
Two clean methods to work within your max drawdown limit.
Method 1 — Loss budget split Divide your max loss by how many consecutive losses you can afford. Enter the result as Account Size with Risk at 100%. Example: $2,000 max loss ÷ 5 losses → Account Size $400 · Risk 100%
Method 2 — Direct percentage Enter your full max loss as Account Size and set your per-trade percentage. Example: $2,000 max loss, 20% per trade → Account Size $2,000 · Risk 20%
Both give the same result — use whichever feels natural.
═══════════════════════════════════
✦ A NOTE FROM THE AUTHOR
Built together with Claude AI through real iterative development — every single feature in this indicator exists because a real trade needed it.
This is 100% free and open source. No Discord, no course, no affiliate links, nothing to buy — ever.
You are completely free to copy this, modify it, rename it, improve it and republish it as your own. Seriously — go ahead. If you build something better on top of this, that is exactly the point. Clean tools should be free and open to everyone.
If it helps even one trader size their positions properly and protect their capital, it was worth sharing.
═══════════════════════════════════
✦ DISCLAIMER
Educational tool only. I do not take any responsibility when you use this indicator in your trading — always check the calculations before use. Futures trading carries substantial risk of loss. Not financial advice.
Built with ❤️ by REDz and Claude Indicator

Hawkes Flow Ignite [forexobroker]Hawkes Flow Ignite models order-flow clustering with a self-exciting Poisson (Hawkes) process. Each volume burst raises the intensity lambda(t), which then decays exponentially with user-set half-life. Sustained activity = sustained intensity. Signals fire on strong directional bars within a cluster regime.
🔶 ALGORITHM
1. Burst event: volume > sma(volume, N) + k * stdev(volume, N).
2. Intensity update: lambda = decay * lambda + (burst ? 1 : 0), where decay = exp(-ln(2) / halflife).
3. Cluster regime active when lambda > sma(lambda, 100) + k * stdev(lambda, 100).
4. Strong bar detection: |close - open| > k * ATR, with sign giving direction.
🔶 SIGNAL LOGIC
- Buy: cluster active AND (close - open) > k * ATR AND not already long AND cooldown elapsed AND barstate.isconfirmed.
- Sell: cluster active AND (close - open) < -k * ATR.
- Position-lock state machine.
🔶 INPUTS
- Volume Window (default 20)
- Burst k (default 1.5 sigma)
- Decay Half-Life (default 15 bars)
- Intensity Threshold k (default 1.0)
- Bar Strength x ATR (default 0.30)
- Cooldown Bars (default 4)
- Visual: dashboard, glow, buy / sell colors
🔶 ALERTS
HFI Buy, HFI Sell, HFI Any Signal, HFI Cluster Start, HFI Cluster End, HFI Burst, HFI Strong Up Bar, HFI Strong Dn Bar, HFI Webhook JSON.
🔶 LIMITATIONS
- Forex tick volume is broker-aggregated and noisy; performance is best on instruments with reliable volume (futures, crypto, equities).
- Half-life is a fixed parameter; real Hawkes processes use a learned kernel that varies by event type.
- Cluster gate plus strong-bar gate is conservative; for higher cadence reduce bar-strength k.
- Burst threshold uses fixed sigma; some sessions naturally have higher z-scores than others.
Indicator

S&P 500 Weighted Advance/ DeclineThis indicator reads the internal health of the S&P 500 by tracking all 11 State Street sector ETFs (XLK, XLF, XLV, etc.) in real time. Instead of just watching price, it tells you who is driving the market and how broad the move really is.
The Two Lines
Histogram (teal/red bars) = "Big Companies that drive the market"
This is a cap-weighted view of all 11 sectors. Each sector is weighted by how big it is in the S&P 500 — so Tech (XLK) at ~31% carries far more influence than Materials (XLB) at ~2%. When the bars are teal, the cap-weighted market is positive from today's open. When red, it's negative. This tells you what the index itself is doing.
White Line = "All sectors get equal vote" This is a simple average of all 11 sectors with equal weight — every sector gets one vote. This tells you what the average sector is doing, regardless of size. This is your breadth reading.
Divergence Line (aqua/orange thin line) = The Gap
This plots the difference between weighted and Unweighted. When it's positive, the weighted are outpacing the unweighted — the index is being carried by a few large sectors. When it's near zero, everything is moving together.
How To Read It
✅ Healthy rally — Histogram is teal AND white line is also above zero, both close together. Broad participation. Safe to be long and trade in the direction of the move.
⚠️ Narrow rally (warning sign) — Histogram is teal but the white line is lagging below it. Only the big sectors (usually Tech or Financials) are carrying the index. The rally lacks breadth and is fragile. Avoid chasing breakouts.
🔄 Rotation signal — Divergence line flips from positive to negative. Money is likely rotating from growth/tech into smaller or defensive sectors. Watch for a trend change.
🔴 Healthy selloff — Histogram is red AND white line is also below zero, both close together. Everything is selling off uniformly. High conviction bearish environment. Avoid longs.
Important Notes
This is an intraday tool. All readings are based on % change from today's open, so the slate resets every session. Apply it to any chart (SPY, SPX, ES). The indicator ignores the chart symbol — it always pulls data from the 11 sector ETFs.
Use it as confirmation, not a trigger. A long setup from your own strategy is stronger when both generals and soldiers are positive. A setup where only generals are positive deserves caution.
On big gap days, the histogram will open far from zero. Focus on whether it's expanding or contracting as the day progresses, not the absolute level.
The single most important thing to watch is the relationship between the histogram and the white line. When they agree, trust the move. When they diverge, be skeptical.
Teal Above zero, close Strong broad rally — trust it
Teal Below zero or lagging Narrow, fragile rally — be careful
Red Below zero, close Broad selloff — stay defensive
Red Above zero Only large caps selling — possible rotation
Either Divergence line widening Breadth breaking down — watch for reversal Indicator

Indicator

Indicator

HAP + Sniper Combined trend regime filtering with normalized price positioning.
The first component, the EMA Cage, is built using three exponential moving averages (14, 50, and 100 periods). It defines dynamic trend zones based on the relative alignment of short, medium, and long-term EMAs. When the EMAs are aligned upward or downward, the structure highlights directional trend phases through adaptive coloring and band visualization.
The second component, the Sniper Band, transforms price behavior into normalized oscillatory values using both range-based and mean-reversion calculations. It compares short-term price distribution against a smoothed percentage deviation from a moving average. These two normalized signals are then mapped back onto the price scale to create a structured dual-band system.
The interaction between these two lines defines market state:
When both normalized components converge closely, it indicates equilibrium or compression zones.
When separation increases, it reflects directional expansion and trend development.
Color transitions represent relative dominance between the two normalized measures.
This combined structure is designed to visualize both trend direction (EMA Cage) and internal price pressure (Sniper Band) within the same framework, enabling clearer identification of market phases such as consolidation, expansion, and directional bias shifts. Indicator

GBM Projection Cone (Ito)GBM Projection Cone (Itō)
A geometric Brownian motion probability cone derived analytically from Itō's lemma — no random simulation required, no path-to-path variance, identical output on every reload. The cone shows where price should be in the future under a GBM model fitted to the recent log-return distribution.
The output is three concentric ±σ bands (68%, 95%, 99.7%), the arithmetic-mean path, and the Itō-corrected median path. The visible gap between mean and median is the Jensen gap — the systematic divergence that pure-arithmetic forecasting hides and lognormal compounding requires you to acknowledge.
How it works
Applying Itō's lemma to f(S, t) = ln(S):
d(ln S) = (μ − σ²/2) dt + σ dW
so under GBM the log-price is normally distributed:
ln(S_t) ~ N(ln S₀ + (μ − σ²/2)·t, σ²·t)
Drift μ and volatility σ are estimated from the most recent N bars of log-returns (sample mean and sample standard deviation). Percentile bands at ±kσ come straight out of the normal CDF in log-space and exponentiate back to price-space, giving the asymmetric cone characteristic of GBM.
Two center lines are computed because they answer different questions:
Arithmetic mean path — E = S₀·exp(μ·t). The ensemble average across all GBM paths.
Itō-corrected median path — S₀·exp((μ − σ²/2)·t). The most probable single trajectory.
The mean is always above the median by Jensen's inequality, with the gap widening as volatility rises. Both are plotted so the gap is always visible.
An optional Monte Carlo overlay simulates independent GBM paths via Box-Muller normal sampling. It's there for pedagogical comparison against the closed form, not for production analysis — Monte Carlo paths re-roll on every reload. Off by default.
How to read it
The cone shows the analytical confidence regions of the projected price distribution:
±1σ (68.3%) — the central body of likely outcomes
±2σ (95.4%) — out to the edge of normal-regime expectations
±3σ (99.7%) — beyond which an excursion would be unusually extreme under the assumed GBM dynamics
Inner bands are drawn thicker and more saturated; outer bands are thin and translucent. Endpoint labels at the right edge mark the projected price at each ±σ level at the cone's terminal bar.
The two center paths — mean (default amber) and median (default off-white) — diverge as time and volatility accumulate. Reading the divergence: a wide Jensen gap means the asset is in a high-volatility regime where ensemble-average forecasts overstate where any individual trajectory is likely to land. The median is the more honest answer for a single realised path.
The bottom-right parameter table reports estimated μ, σ, the Itō correction (−σ²/2), and the resulting Itō drift (μ − σ²/2). When the Itō drift turns negative while μ is still positive, volatility drag is overwhelming directional drift — the asset is positive-EV in expectation but negative-EV in the most-probable case.
Inputs
Estimation window — bars used to estimate μ and σ from observed log-returns. Default 20. Smaller windows track the recent regime; larger smooth out noise.
Projection bars — how many bars ahead to project. Default 20. Cone width grows with σ√t — longer horizons fan out faster under high volatility.
Bands — toggle ±1σ, ±2σ, ±3σ independently. Defaults: 1σ and 2σ on, 3σ off.
Mean path — show the arithmetic expected-value path. Default on.
Median path — show the Itō-corrected median path. Default on.
Endpoint labels — price labels at the right edge of each band. Default on.
Parameter table — bottom-right μ/σ/Itō readout. Default on.
Monte Carlo overlay — draw N random GBM realisations for comparison. Default off, non-deterministic.
Path count — number of MC paths when overlay is on. Default 20.
Colors — cone, mean path, median path.
Built-in alerts
Volatility spike — σ rises above 1.5× its rolling average
Drift turned negative — μ crosses below zero
Drift turned positive — μ crosses above zero
Itō drift crossed below zero — μ − σ²/2 turns negative (volatility drag now outpaces drift)
Itō drift crossed above zero — μ − σ²/2 recovers above zero
The Itō-drift alerts are the more practically useful pair. A positive arithmetic μ with negative Itō drift describes the textbook scenario where a volatile asset has positive expected return but a negative typical return — the regime where naïve EV calculations mislead position sizing.
Notes
GBM is a model. Real returns aren't truly lognormal — they exhibit fat tails, autocorrelation, and volatility clustering that GBM's i.i.d. assumption can't capture. The cone is calibrated to what the recent N bars would project forward if returns continued behaving as estimated; the more the underlying violates the model's assumptions, the less the cone reflects realised probabilities.
That said, GBM remains useful as a baseline. Most options-pricing intuition, microstructure tooling, and risk-management frameworks assume GBM-like dynamics. The cone gives you the model's own opinion about where price is likely to go — informative even when the model is wrong, because the direction and magnitude of disagreement between cone and realised price is itself signal.
The closed-form derivation is deterministic on purpose. Two reloads of the same chart produce identical cones; two reloads with the Monte Carlo overlay produce visibly different paths. For production analysis, leave Monte Carlo off. To teach yourself how MC converges to the closed form, turn it on and watch the random paths fill the bands as you increase path count.
The Itō correction (−σ²/2) is small for low-volatility assets and dominant for high-volatility ones. On a daily chart of a major equity index it's a fraction of a basis point per day; on a high-frequency crypto chart it can outweigh the directional drift entirely. The parameter table makes this visible.
This is a diagnostic tool, not a signal generator. It tells you what GBM thinks the next N bars look like.
Five years of work on a trading system left me with dozens of indicators that ultimately didn't earn a place in the final build. They're not failures — they're tools that solved problems I no longer needed solved. So instead of shelving them, I'm publishing the majority of them open-source.
If you're a discretionary trader, take what's useful. If you're a systems builder, the source is yours to dissect, modify, and improve. The best return on five years of work is for it to keep working — for someone.
If you use this script — or part of it — in your own work, please credit the original with a link back to my profile.
Note: these indicators have been updated to Pine Script v6 — some manually, some with AI assistance. Indicator

iFCPO MYR ContextiFCPO MYR Context — USDMYR strength gauge + 30-day FCPO↔USDMYR correlation flag for Bursa Crude Palm Oil Futures.
WHY IT MATTERS
The Malaysian ringgit drives FCPO export competitiveness. Soft MYR (USDMYR rising) makes Malaysian palm oil cheaper for foreign buyers — bullish FCPO. Strong MYR (USDMYR falling) hurts exporters — bearish FCPO. But the FCPO/MYR relationship isn't always live: when correlation is decoupled (|r| < 0.3), the MYR signal is noise. This indicator gauges both USDMYR strength AND tells you when to listen.
HOW TO USE
- USDMYR > 30-day MA by +0.5%: Soft MYR — FCPO tailwind (bullish bias)
- USDMYR < 30-day MA by −0.5%: Strong MYR — FCPO headwind (bearish bias)
- |corr| > 0.5: Relationship is live — apply MYR bias
- |corr| < 0.3: Decoupled — IGNORE the MYR signal entirely
This is a SIZE / SL MODIFIER — it adjusts conviction, not entries. Pair with iFCPO Wick Hunter (entries) + iFCPO Regime Meter (regime) + iFCPO Session Law (timing).
KPIs
- Lookback: 30 daily bars (configurable)
- Strong correlation threshold: |r| ≥ 0.5
- Default symbol: FX_IDC:USDMYR (free TV symbol)
OUTPUTS
USDMYR daily, % deviation vs 30-day MA, 30-day FCPO↔USDMYR correlation, color-graded line (green soft / red strong / grey neutral), full status table top-right (USDMYR, deviation %, correlation strength, bias, pair-with).
Open-source. Part of the iFCPO free hero stack. Indicator

iFCPO Soyoil SpreadiFCPO Soyoil Spread — z-score divergence between FCPO (Bursa Crude Palm Oil Futures) and CBOT soybean oil (ZL/BO).
WHY IT MATTERS
FCPO and soybean oil are 0.85+ correlated long-run (substitute oils in the global vegetable-oil complex). When the FCPO/BO ratio z-score blows out beyond ±2σ over a 50-day lookback, FCPO is statistically rich or cheap vs the global benchmark. Mean-reversion bias kicks in.
HOW TO USE
- z > +2: FCPO over-extended vs BO — bias short / fade longs
- z < −2: FCPO cheap vs BO — bias long / fade shorts
- |z| < 1: ignore — pairs are tracking normally
- 1 < |z| < 2: stretched, watch for reversal
This is a CONTEXT layer — it modifies conviction. NEVER trade z alone. Pair with iFCPO Wick Hunter (entries) + iFCPO Regime Meter (regime) + iFCPO Session Law (timing).
KPIs
- Lookback: 50 daily bars (configurable)
- Extreme threshold: ±2σ (configurable)
- Symbol: CBOT:ZL1! (PulseWire's continuous front-month soybean oil)
OUTPUTS
Dimensionless ratio z (FCPO close / BO close), mean / ±1σ / ±2σ hlines, color-graded line (red rich / green cheap / amber stretched), tinted background at extremes, full status table top-right (FCPO, BO, z, state, pair-with).
Open-source. Part of the iFCPO free hero stack. Indicator

Indicator

Index Futures Position Size Calculator with valuesA simple, free position size calculator for CME index futures traders.
Click Entry, click Stop Loss, pick your asset, get your contract size instantly. Built for fast NY session execution — no spreadsheets, no manual maths, no noise.
═══════════════════════════════════
✦ SUPPORTED INSTRUMENTS
MNQ · MES · NQ · ES — all CME tick values hardcoded. No manual lookup, no mistakes.
═══════════════════════════════════
✦ FEATURES
→ One-click Entry and Stop Loss directly on the chart
→ Auto 1-handle SL buffer — stop shifts 1 full point beyond your click, protecting against wick hunts
→ Asset dropdown — correct tick value loads automatically, zero manual entry
→ Smart rounding — fractional contracts of 0.75 or higher round up, otherwise round down
→ Green Entry line and Red SL line — both start at your exact click and extend right
→ Price labels on both lines — confirm your exact adjusted levels instantly
→ Direction arrow — ▲ Buy or ▼ Sell auto-detected from your Entry and SL position
→ Live dark panel — asset name, contract size, real USD risk and stop distance, all updating in real time
═══════════════════════════════════
✦ HOW TO USE
Add to chart → click Entry → click Stop Loss → pick asset → set Account Size and Risk %. Read your size from the top-right panel. Three clicks and you are sized.
═══════════════════════════════════
✦ PROP FIRM CHALLENGE SIZING
Two clean methods to work within your max drawdown limit.
Method 1 — Loss budget split
Divide your max loss by how many consecutive losses you can afford. Enter that result as Account Size with Risk at 100%.
Example: $2,000 max loss ÷ 5 losses → Account Size $400, Risk 100%
Method 2 — Direct percentage
Enter your full max loss as Account Size and set your per-trade risk percentage directly.
Example: $2,000 max loss, 20% per trade → Account Size $2,000, Risk 20%
Both give the same result — use whichever feels natural.
═══════════════════════════════════
✦ HOW THIS WAS BUILT
Developed step by step through real trading feedback, not theory.
Started as a basic calculator with manual tick inputs. Then came the asset dropdown with hardcoded CME values, smart rounding, exact click-point line rendering, the auto 1-handle SL buffer with price labels, real-time USD risk display, stop distance row, and finally a full dark panel redesign with colour-coded values and direction detection.
Every feature exists because a real trade needed it.
═══════════════════════════════════
✦ A NOTE FROM THE AUTHOR
Built together with Claude AI through real iterative development. Sharing it free because clean tools should not be locked behind paywalls. No Discord, no course, no affiliate links, nothing to buy. Copy it, modify it, build something better — it is yours.
═══════════════════════════════════
✦ DISCLAIMER
Educational tool only. I do not take any responsibility when you use this indicator in your trading — always check the calculations before use. Futures trading carries substantial risk of loss. Not financial advice.
Built with ❤️ by REDz and Claude Indicator

Indicator

Blood Moons Spectrum | Astral Vision 🌑 Blood Moons ❤️🔥 | Astral Vision 🌠💠
A Blood Moon occurs during a total lunar eclipse, when Earth's shadow fully covers the Moon and the only light reaching it is refracted through Earth's atmosphere, filtering out shorter wavelengths and casting the Moon in deep red.
These events follow predictable astronomical cycles and have historically captured significant cultural and psychological attention across civilizations.
This indicator maps every Blood Moon and total lunar eclipse event from 2015 through 2029 onto the Bitcoin price chart, marking each event with a vertical line, a background highlight window, and a labeled annotation.
The dataset includes named events (the 2015 Tetrad completion, the 2018 Super Blue Blood Moon, the 2018 record-length eclipse of the 21st century) alongside all standard Blood Moons, with duration and date displayed directly on the chart.
Future events through 2029 are projected forward, making the indicator active across the current and next cycle.
Calculation ⚙️
All event timestamps are hardcoded to their precise astronomical dates. The background highlight activates within a ±10-day window around each event, capturing the price behavior in the days immediately surrounding each eclipse. The label and line are rendered at the exact event date. No mathematical transformation is applied — the indicator is a temporal annotation layer mapped to astronomical data.
Plots 📊
Vertical line at each Blood Moon date, extended across the full chart (toggleable)
Background highlight on the price chart for a 10-day window around each event (toggleable)
Label at each event bar displaying the event name, date, and eclipse duration (toggleable)
Inputs 🎛️
`Show Background` toggles the ±10-day highlight window around each event
`Plot Labels` toggles the annotation labels at each event date
`Plot Lines` toggles the full-height vertical lines at each event date
Colors 🎨
5 Astral Vision presets + custom override. Default: Inferno. Positive color applies to vertical lines and background highlights; negative color applies to label backgrounds.
Purpose 🎯
Bitcoin price history contains a disproportionate number of notable moves, both tops and bottoms,in proximity to Blood Moon events, a pattern that has attracted consistent attention from on-chain analysts and cycle researchers. Whether the correlation reflects genuine market psychology, confirmation bias, or coincidence, the events are astronomically fixed and objectively dateable, making them worth tracking as potential behavioral anchors.
This indicator provides the complete historical and forward-looking Blood Moon calendar overlaid directly on the price chart, eliminating the need to cross-reference external astronomical sources. The 10-day background window contextualizes price behavior in the event's immediate vicinity, and the duration annotation distinguishes short penumbral grazes from the long total eclipses that have historically drawn the most attention. Future events through 2029 allow the current cycle to be tracked against the same framework in real time.
Disclaimer ⭕️
It is not financial advice, not an investment recommendation, and not affiliated with any financial institution, research firm, or organization of any kind. All content is provided for educational and informational purposes only. Always conduct your own research before making any financial decision. Indicator

Bitcoin CAGR Analysis | Astral Vision Bitcoin CAGR Analysis | Astral Vision 🌠💠
The Compound Annual Growth Rate expresses Bitcoin's return over any rolling window as an annualized percentage, normalizing for the length of the period being measured.
Unlike raw percentage returns, CAGR makes every rolling window directly comparable regardless of its duration, a 6-month and a 2-year window both output an annualized rate, allowing the current growth pace to be read in consistent units across the entire price history.
This indicator computes rolling CAGR over a configurable lookback, then offers two analytical layers.
Raw CAGR plots the annualized return directly, revealing how Bitcoin's structural growth rate has evolved across cycles.
Z-Score mode standardizes the CAGR against its own rolling distribution, identifying when the current annualized return is statistically extreme relative to historical norms, either overheated or deeply compressed.
A slope-based trend mode colors by whether CAGR is accelerating or decelerating over a secondary lookback, independent of absolute level.
Calculation ⚙️
`CAGR = (close / close )^(365 / days elapsed) − 1`
Days elapsed is derived from the actual timestamp difference rather than a fixed bar count, ensuring accuracy regardless of gaps or non-trading days in the data.
`Z-Score = (CAGR − SMA(CAGR, length)) / StdDev(CAGR, length)`
In Trend mode, the slope is computed as the difference between the current value and its value N bars ago, coloring by whether the CAGR (or its Z-Score) is rising or falling irrespective of its absolute level.
Plots 📊
CAGR or Z-Score line in the indicator panel, colored by active regime
Zero baseline
High and low threshold lines in Z-Score Extremes mode
Fill between the signal line and the breached threshold in Z-Score Extremes mode
Candle coloring on the price chart by active regime (Z-Score modes only)
Background highlight on the price chart when a threshold is breached in Z-Score Extremes mode
Inputs 🎛️
`Mode`: Raw CAGR (annualized return) or Z-Score (standardized CAGR)
`Visualization`: Extremes (threshold-based coloring) or Trend (slope-based directional coloring)
`Z-Score Length`: rolling window for both CAGR calculation and Z-Score normalization (default 730)
`Threshold High`: Z-Score level marking overheated growth (default 3.0)
`Threshold Low`: Z-Score level marking compressed or negative growth (default −1.5)
`Slope Length`: bar offset used to compute CAGR acceleration in Trend mode (default 34)
`Show Background`: toggles price chart background highlighting at Z-Score extremes
Colors 🎨
5 Astral Vision presets + custom override. Default: Infinito. In Extremes mode, positive color activates below the low threshold and negative above the high threshold. In Trend mode, positive color applies when the signal is rising and negative when falling. Raw CAGR mode uses positive color throughout.
Purpose 🎯
Raw price charts and standard momentum indicators express returns as absolute price levels or bounded oscillators, neither of which answers the question of what annualized return Bitcoin is currently delivering relative to its own historical pace.
CAGR makes that question answerable directly.
The Z-Score layer adds statistical context: rather than judging whether a 200% annualized return is "high" by intuition, the Z-Score places it in the distribution of all historical CAGR values over the same window, making the assessment rigorous and cycle-independent.
The Trend visualization mode repurposes the same calculation as a momentum direction indicator, identifying inflection points in the growth rate before they become obvious in price. The two modes together cover both valuation positioning and tactical momentum within a single indicator.
Disclaimer ⭕️
It is not financial advice, not an investment recommendation, and not affiliated with any financial institution, research firm, or organization of any kind. All content is provided for educational and informational purposes only. Always conduct your own research before making any financial decision. Indicator

Indicator
