Santo Graal LentoSanto Graal Lento — Indicator Description (English)
Santo Graal Lento is a trend-following indicator designed to identify high-probability market movements by combining price structure, volatility behavior, and dynamic support/resistance zones. Instead of reacting quickly to short-term noise, this tool focuses on slower, more reliable signals, helping traders stay aligned with the dominant trend while avoiding premature entries.
The indicator highlights optimal “Holy Grail–style” setups by detecting pullbacks within strong trends, offering visual cues for potential continuation points. It also adapts to market conditions by smoothing signals and reducing false alerts, making it suitable for swing traders and position traders looking for cleaner, more consistent market reads.
Use Santo Graal Lento to:
Identify trend direction with improved stability
Spot high-probability pullback entries
Filter out short-term noise
Support decision-making in trending markets
Whether you’re trading Forex, crypto, indices, or stocks, Santo Graal Lento helps you focus on quality setups and maintain discipline through clearer trend visualization.
지표 및 전략
HTF Candle overlayOverview
This Pine Script indicator overlays three separate Mini Charts onto the right side of your main chart area. These mini charts display price action from Higher Timeframes (HTF), allowing traders to monitor multi-timeframe market structure and trends without switching screens. Each mini chart is overlaid with up to 5 customizable EMA (Exponential Moving Average) Clouds.
Key Features
1. Three Independent Mini Charts
Users can select three distinct higher timeframes (e.g., 1 Hour, 4 Hours, 1 Day).
The script automatically checks to ensure the selected timeframe is higher than the current chart's timeframe.
Displays up to 10 historical candles per mini chart (limited to optimize Pine Script drawing resources).
2. Smart Data Handling (RTH vs. ETH)
Daily, Weekly, Monthly: For timeframes of 1 Day or higher, the script forces Regular Trading Hours (RTH) data. This ensures daily candles look standard and aren't distorted by pre/post-market low volume ticks.
Intraday (e.g., 1H, 4H): For timeframes below 1 Day, the script uses Extended Trading Hours (ETH) data, ensuring you see the full picture of pre-market and after-hours moves.
Ticker Cleaning: The script automatically sanitizes ticker IDs to prevent "Symbol Resolve Errors" when used on charts with complex session settings.
3. Comprehensive EMA Clouds
5 Customizable Clouds: Each mini chart can display up to 5 different EMA Clouds (pairs of Short and Long Moving Averages).
Full Color Control: Users can individually customize:
Line Colors: Distinct colors for Short and Long EMA lines.
Cloud Fill: Distinct colors and transparency for Bullish and Bearish trends.
Toggle Visibility: Each of the 5 clouds can be turned On or Off via settings.
Source Selection: Users can calculate EMAs based on Close, Open, High, Low, HL2, HLC3, or OHLC4.
4. Custom Visuals & Positioning
Candle Aesthetics: Users can define Bull/Bear candle colors, transparency, and Candle Width (thickness).
Positioning:
Horizontal Offset: Shift the entire dashboard left or right to avoid overlapping with current price action.
Spacing: Adjust the gap between the three mini charts.
Assistance Lines: Optional Support/Resistance lines (Fibonacci or Range High/Low) can be drawn extending from the mini charts.
How it Works (Technical Summary)
The script utilizes request.security to fetch OHLC data and Moving Average data from the specified higher timeframes. It stores this data in Matrices and Arrays to manage history. It then uses Pine Script's line.new and label.new functions to manually draw the candles and EMA lines onto the main chart canvas, relative to the current bar_index. It includes logic to handle dynamic array resizing and garbage collection to stay within Pine Script's execution limits.
Magic Color-Changing EMA (Stateful) + Buy/SellThis indicator is a state-based, adjustable EMA crossover engine designed to expose real momentum shifts at the earliest statistically valid moment. It uses a user-defined Fast EMA and Slow EMA (default 8 & 21) and tracks how their directional behavior changes over time. Instead of reacting to candle color or price position alone, it measures directional acceleration and structural regime change, allowing traders to clearly see when the market transitions from bearish momentum to bullish momentum and vice versa.
The core of the system operates as a three-state market engine. When bullish acceleration is confirmed, the EMA turns green. When bearish acceleration is confirmed, it turns red. When neither condition is clearly valid, the EMA enters a neutral (black) state. A built-in two-bar debounce filter prevents one-bar fakeouts and random noise from triggering false transitions, ensuring that color changes only occur when momentum is actually stabilizing in a new direction.
Buy and Sell signals are generated using a non-repainting state transition model. A Buy signal is only issued when the market transitions from a confirmed bearish state into a confirmed bullish state. A Sell signal is only issued when the market transitions from a confirmed bullish state into a confirmed bearish state. This prevents repetitive signals in the same direction and ensures that each tag marks a true regime change, not simple continuation noise.
Each Buy and Sell label is intentionally offset back one candle, placing it directly on the bar where the transition actually became structurally valid, not the reaction bar afterward. A matching vertical confirmation line is drawn through that candle to visually anchor the exact moment when momentum flipped. This makes trade review, execution timing, and historical analysis extremely precise.
Because the Fast EMA and Slow EMA lengths are fully user-adjustable, this indicator can function as a scalping engine, intraday trend detector, or higher-timeframe swing system simply by changing the EMA lengths. Shorter values increase responsiveness and frequency, while larger values increase trend filtering and reduce noise. This adaptability allows the same tool to be used across crypto, futures, forex, metals, and equities without redesigning the strategy.
This indicator does not attempt to predict price. It is a state confirmation and momentum transition detector. It performs best during volatility expansion, trending sessions, and institutional liquidity windows. Like all momentum systems, it should be used with caution during low-volatility ranges, overnight compression, and pre-news conditions.
FRAN CRASH PLAY RULESA script with purely descriptive nature is one that:
• Only describes actions, settings, characters, and events.
• Contains no dialogue, commands, or instructions for execution.
• Does not specify plot decisions, logic, or interactive elements.
• Reads like a detailed narrative blueprint, focusing on what exists or happens rather than what anyone should do.
SuperTrend Oscillator [ChartPrime]⯁ OVERVIEW
The SuperTrend Oscillator is a hybrid momentum–trend indicator that transforms the classic SuperTrend into a full-strength oscillator.
Instead of simply plotting SuperTrend direction on the chart, this tool measures the distance between price and SuperTrend, normalizes it by volatility, and converts it into a dynamic oscillator that highlights trend strength, momentum extremes, and high-precision reversal points.
⯁ CONCEPTS
SuperTrend Engine: The indicator extracts the SuperTrend baseline and direction using ATR-based volatility. This acts as the core structure from which the oscillator is built.
Volatility-Adjusted Oscillation: (close − SuperTrend) is divided by ATR to standardize momentum across all markets and timeframes.
Adaptive Oscillator Types: The signal can be transformed using HMA, EMA, or SMA smoothing for varying responsiveness.
Momentum Extremes: Values above +1.7 or below −1.7 signal stretched price conditions where reversals are more likely.
Reversal Logic: The oscillator compares its current value with its value three bars ago. Large positive or negative pivots indicate momentum shifts.
⯁ FEATURES
Trend-Colored SuperTrend Line
The SuperTrend line shifts color based on direction, giving immediate context for oscillator readings.
Full Oscillator Transformation
Converts price–SuperTrend distance into a normalized oscillator, showing when momentum is expanding, contracting, or reaching exhaustion.
Gradient Momentum Coloring
The oscillator line and candles are colored using a two-sided gradient:
• Red tones for bearish momentum
• Orange/cream tones for bullish momentum
• Gray tones for low momentum
This makes strength visually intuitive.
Extreme Zones (±1.7 Bands)
Built-in upper and lower thresholds highlight zones where price is statistically overextended.
Dual Fill Layers
The area above/below zero is filled in different colors to emphasize bullish or bearish oscillator regime.
Reversal Diamonds
The script highlights significant reversals when:
• Momentum shifts downward from high values (bearish pivot)
• Momentum shifts upward from deep lows (bullish pivot)
These diamonds help pinpoint exhaustion-based turning points.
⯁ HOW TO USE
Identify Trend Strength:
A rising oscillator above 0 confirms bullish SuperTrend conditions; falling below 0 confirms bearish ones.
Spot Momentum Extremes:
Readings above +1.7 or below −1.7 often signal overextended price moves.
Use Reversal Diamonds as Pivot Alerts:
Diamond markers indicate high-probability turning points when momentum sharply reverses from extreme zones.
Confirm Trend Shifts with Color Changes:
Candle and oscillator colors shift based on momentum direction, providing clean visual alignment with SuperTrend direction.
Combine with Structure or OB Zones:
Reversal signals become more reliable when they occur at key S/R, order blocks, or liquidity sweeps.
⯁ CONCLUSION
The SuperTrend Oscillator modernizes the SuperTrend by transforming it into a volatility-aware oscillator with clear reversal markers, trend coloring, and momentum normalization.
This tool is ideal for traders who want both trend context and precise timing signals, blending SuperTrend’s reliability with the dynamics of a professional-grade momentum oscillator.
Santo Graal Tendência🌟 Holy Grail Trend – Clarity in the Flow of the Market
Introducing Holy Grail Trend, a smart trend-following indicator designed for traders who want to ride strong moves while avoiding noise and false breakouts. By blending adaptive cycle analysis, smoothed momentum, and dynamic support/resistance logic, this tool highlights the true underlying trend—not just price noise.
Whether you're a swing trader, position trader, or intraday momentum seeker, Holy Grail Trend helps you stay aligned with the market’s dominant direction while filtering out choppy, sideways phases.
🔍 Key Features:
✅ Clean, color-coded trend visualization (bullish / bearish)
✅ Adaptive sensitivity based on current market cycle length
✅ Dynamic trend bands that adjust to volatility and price structure
✅ Minimal lag and no repainting — reliable in real-time
✅ Works across all assets and timeframes (forex, stocks, crypto, indices)
✅ Lightweight and chart-friendly
💡 How to Use:
Go long when the trend turns green and price is above the dynamic band
Go short when the trend turns red and price is below the band
Stay flat or reduce exposure during neutral (gray) or conflicting phases
The “Holy Grail” isn’t about chasing every move—it’s about trading with the tide, not against it. Combine this indicator with your risk management rules, and you’ll have a powerful ally in your trading journey.
Volume detection trigger📌 Indicator Overview ** Capture a Moment of Market Attention **
This indicator combines abnormal volume (volume explosion) and price reversal patterns to capture a “signal-flare moment.”
In other words, it is designed to detect moments when strong activity enters the market and a trend reversal or the start of a major uptrend/downtrend becomes likely.
✅ Strengths (Short Summary)
Detects meaningful volume spikes rather than random volume increases
Includes bottoming patterns such as long lower wicks & liquidity sweep lows
Filters with EMA alignment / RSI / Stochastic to avoid overheated signals → catches early entries rather than tops
4H/Daily timing filter to detect signals only during high-liquidity market windows
Designed as a rare-signal model for high reliability, not a noisy alert tool
➡ Summary: “The indicator fires only when volume, price structure, momentum, and timing align perfectly at the same moment.”
🎯 How to Use
A signal does not mean you should instantly buy or sell.
Treat it as a sign that “the market’s attention is now concentrated here.”
After a signal appears, check:
Whether price stays above EMA21
Whether there is room to the previous high (upside space)
Whether a minor pullback or retest finds support
🔍 Practical Applications
Use Case Description
Swing Trading Detecting early-stage trend reversals
Day Trading Spotting volume-driven shift points
🧠 Core Summary
📌 “A signal-flare indicator that automatically detects the exact moment when real volume hits the market.”
→ Not a tool to predict direction
→ A tool to recognize timing and concentration zones where major movement is likely to form
⚠ Important Note
A surge in volume or a positive delta does NOT necessarily mean institutions are buying.
The “institution/whale inflow” in the indicator is a model-based estimation, and it cannot identify buyers and sellers with 100% certainty.
Volume, delta, cumulative flow, and VWAP breakout may all imply “strong participation,”
but in some cases, the dominant side may still be sellers, such as:
High volume at a peak (distribution)
Heavy selling into strength
Long upper wick after high delta
Price failing to advance despite massive orders
Santo Graal SinaisHoly Grail Signals – The Balance Between Precision and Simplicity
Welcome to Holy Grail Signals, an indicator crafted for traders seeking clarity amid market volatility. Inspired by principles of cyclic analysis, adaptive relative strength, and intelligent noise filtering, this script merges robust logic with intuitive visualization to deliver highly reliable entry and exit signals.
🔍 Key Features:
✅ Clear visual signals (buy and sell) based on cycle inflection points and momentum
✅ Dynamic bands that adapt to volatility and recent price behavior
✅ Anti-noise filters that reduce false triggers in ranging markets
✅ Compatible with multiple assets and timeframes — from scalping to swing trading
✅ Lightweight and optimized to avoid overloading your chart
The “Holy Grail” isn’t a promise of easy profits—it’s the result of rigorous testing, sound market logic, and the understanding that the best strategy is the one you truly comprehend and can execute with discipline.
Std Dev Reversal LevelsPlots standard deviation bands around a central mean to identify statistically extreme price levels where reversals are likely.
How It Works
Price statistically tends to stay within predictable ranges around its mean. This indicator plots sigma (σ) levels showing where price becomes statistically extended.
Green lines: Levels above the mean (+1σ to +5σ)
Red lines: Levels below the mean (-1σ to -5σ)
White line: Center/mean (optional)
How To Use
Set timeframe to 1D or 4H
Use Statistical method with 20-30 lookback
Watch for price touching ±3σ levels
Look for reversal confirmation at these extremes
Target the center line for mean reversion plays
Santo Graal Força RelativaThe RSI Indicator (RSI) represents a qualitative leap in the evolution of classic oscillators. While the traditional RSI has already been established for decades as one of the most reliable tools...
Auto 5-Wave Fixed Channel + Wave 5 Top / Wave 2-ABC BottomAuto 5-Wave Fixed Channel + Wave 5 Top / Wave 2-ABC Bottom
by Ron999
1. What this indicator does
This tool automatically hunts for bullish 5-wave impulse structures and then:
Labels the waves: W1, W2, W3, W4, W5
Draws a fixed “acceleration” channel based on the wave structure
Projects a Wave-5 target zone using a 1.618 extension
Marks the Wave-2 level as an ABC correction target
Triggers optional alerts when:
A new Wave-5 top completes
An ABC bottom forms back near the Wave-2 low
It’s designed as a mechanical, rule-based approximation of Elliott 5-wave impulses – built for traders who like the idea of wave structure but want something objective and programmable.
2. How the wave logic works
The script continuously scans for pivot highs and lows using a user-defined Pivot Length.
It only keeps the last 5 alternating pivots (high → low → high → low → high).
When those last 5 pivots form this pattern:
Pivot 1 → High (W1)
Pivot 2 → Low (W2)
Pivot 3 → High (W3)
Pivot 4 → Low (W4)
Pivot 5 → High (W5)
…the indicator treats this as a bullish 5-wave impulse.
When such a structure is detected, it “locks in” the wave prices and bars and draws the channels and labels.
Note: Pivots are only confirmed after Pivot Length bars, so swings are slightly delayed by design (standard pivot logic).
3. Channels & levels
Once a valid bullish 5-wave structure is found, the script builds three key pieces:
a) Base Acceleration Channel (Blue)
Anchored from Wave-2 low toward Wave-3 high.
This forms a rising acceleration channel that represents the impulse leg.
The channel extends to the right, so you can see how price interacts with it after W3–W5.
b) Wave-5 Target Line (Red, dashed)
Uses the height from Wave-2 low to Wave-3 high.
Projects a 1.618 extension of that height above Wave-3.
This line acts as a potential Wave-5 exhaustion zone (take-profit / reversal watch area).
c) Wave-2 / ABC Bottom Level (Green, dotted)
Horizontal line drawn at the Wave-2 low.
This acts as a retest / corrective target for the ABC correction after the impulse completes.
When price later revisits this area (within a tolerance), the script can mark it as a potential ABC bottom.
4. Labels & signals
If labels are enabled:
W1, W2, W3, W4, W5 are plotted directly on their corresponding pivot bars.
When an ABC-style retest is detected near the Wave-2 level, an “ABC” label is printed at that low.
Wave-5 Top Event
Triggered when a new valid bullish 5-wave structure is completed.
The last pivot high in the pattern is flagged as Wave-5.
ABC Bottom Event
After a Wave-5 impulse, the script watches for new low pivots.
If a new low forms within ABC Bottom Proximity (%) of the Wave-2 price, it is treated as an ABC bottom near Wave-2 and marked on the chart.
5. Inputs & customization
Show Fixed Channels
Toggle all channel drawing on/off.
Label Waves
Toggle plotting of W1–W5 and ABC labels.
Alerts: Wave-5 Top & ABC Bottom
Master switch for enabling the script’s alert conditions.
Pivot Length
Controls how “swingy” the detection is.
Smaller values → more frequent, smaller waves
Larger values → fewer, larger structural waves
ABC Bottom Proximity (%)
Allowed percentage distance between the ABC low and the Wave-2 price.
Example: 5% means any ABC low within ±5% of Wave-2 is considered valid.
6. Alerts (how to use them)
The script exposes two alertcondition() events:
Wave-5 Top (Bullish Impulse)
Fires when a new 5-wave bullish structure completes.
Use this to watch for potential exhaustion tops or to tighten stops.
ABC Bottom near Wave-2 Low
Fires when an ABC-style correction prints a low near the Wave-2 level.
Use this to stalk potential end-of-correction entries in the direction of the original impulse.
On TradingView, add an alert to the script and choose the desired condition from the dropdown.
7. How to use it in your trading
This tool is best used as a structural context layer, not a standalone system:
Identify bullish impulsive trends when a Wave-5 structure completes.
Use the Wave-5 target line as a potential area for:
Scaling out
Watching for exhaustion / divergences / reversal patterns
Use the Wave-2/ABC level and ABC Bottom signal:
To look for end of correction entries back in the trend direction
To align with your own confluence (support/resistance, volume, RSI, etc.)
It works well on crypto, FX, indices, and stocks, especially on higher timeframes where structure is cleaner.
8. Limitations & notes
This is a mechanical approximation of Elliott 5-wave theory — it will not match every analyst’s discretionary count.
Pivots are confirmed after Pivot Length bars, so signals are not instant; they’re based on completed swings.
The indicator currently focuses on bullish impulses (upward 5-wave structures).
As always, this is not financial advice. Combine it with your own strategy, risk management, and confirmation tools.
Created & coded by: Ron999
Built for traders who want wave structure + fixed channels, without the subjective Elliott argument on every chart. files.catbox.moe
Bappa - Dynamic VWAP Simple Vwap, just dynamic colour Coding added to sense whether VWAP is in uptrend or downtrend. Refer to colour code to enter Call side or Put side, it never disappoints you at any timeframe. Enjoy & happy Trading!!
Better results if used in conjuction with Pivots/ fractals indicator, named as Bappa EMA + BBW (V2) indicator.
Best Metal to Sell → More BTCWhichever precious metal has outperformed Bitcoin the most over the last 21 days (by >4%) is showing short-term strength → sell a small slice of that metal and rotate into BTC.
Orange = trim some gold → buy BTC
Grey = trim some silver → buy BTC
Black = no clear edge → hold
This is a gradual, disciplined rebalancing tool for anyone holding physical gold & silver who wants to slowly increase their BTC exposure on relative strength spikes — without ever going “all-in”.
You decide the pace: 1% per signal, pause anytime, or stop when you’ve reached your personal comfort level of BTC allocation.
2020–2025 backtest (weekly 1% rotations):
$200k metals → 18.4 BTC + $0 metals left = $1.68 million
HODL metals only = $320k
HODL BTC from day one = ~$1.4 million
It’s not about beating BTC every cycle — it’s about turning stagnant metals into more sats, at your own pace.
HoneG_BJVH 軽量化版v11VJBH v11 is a tool that displays volatility and range reference tables tailored for one-touch options trading, organized by currency and trading time.
Try applying it to any chart you like, whether it's a 1-minute chart or a 15-second chart.
Volatility levels are divided into four stages from 0 to 4, and you can set alerts for specific stages.
Internally, it monitors second-based charts, so even when used on a 1-minute chart, a Premium or higher grade is required.
ザオプションのワンタッチ取引向けに作ったボラや通貨毎・取引時間毎の幅の目安表を表示するツール VJBH v11 です。
1分足チャートでも、15秒足チャートでも、お好きなチャートに適用してお試しください。
ボラのレベルは0~4の4段階に分けてまして、段階を選んでアラートを出せます。
内部的には秒足を見ているので、1分足チャートで使う場合でも、Premium以上のグレードが必要になります。
HoneG_ヒゲヒゲ067ALT_v2
HigeHige is a tool that displays the wick ratio for one-touch trading on The Option.
Try applying it to your preferred chart, whether it's a 1-minute chart or a 15-second chart.
ザオプションのワンタッチ取引向けにヒゲ比率を表示するツール ヒゲヒゲ です。
1分足チャートでも、15秒足チャートでも、お好きなチャートに適用してお試しください。
RSI + BB + RSI Advanced MTF Panel//@version=6
indicator(title="RSI + BB + RSI Advanced MTF Panel", shorttitle="RSI + BB + RSI Advance MTF Panel", format=format.price, precision=2, overlay=false)
bb_group = "BB (Price Overlay)"
bb_length = input.int(50, minval=1, group = bb_group)
bb_maType = input.string("SMA", "Basis MA Type", options = , group = bb_group)
bb_src = input.source(close, title="Source", group = bb_group)
bb_mult = input.float(0.2, minval=0.001, maxval=50, title="StdDev", group = bb_group)
BasisColor = input.color(color.rgb(163, 41, 245), "Basis Color", group = bb_group, display = display.none)
UpperColor = input.color(color.rgb(120, 156, 202,100), "Upper Color", group = bb_group, display = display.none)
LowerColor = input.color(color.rgb(120, 156, 202,100), "Lower Color", group = bb_group, display = display.none)
offset = input.int(0, "Offset", minval = -500, maxval = 500, display = display.data_window, group = bb_group)
ma(source, bb_length, _type) =>
switch _type
"SMA" => ta.sma(source, bb_length)
"EMA" => ta.ema(source, bb_length)
"SMMA (RMA)" => ta.rma(source, bb_length)
"WMA" => ta.wma(source, bb_length)
"VWMA" => ta.vwma(source, bb_length)
basis = ma(bb_src, bb_length, bb_maType)
dev = bb_mult * ta.stdev(bb_src, bb_length)
upper = basis + dev
lower = basis - dev
plot(basis, "Basis", color=BasisColor, offset = offset, force_overlay = true)
p1 = plot(upper, "Upper", color=UpperColor, offset = offset, force_overlay = true)
p2 = plot(lower, "Lower", color=LowerColor, offset = offset, force_overlay = true)
fill(p1, p2, title = "Background", color=color.rgb(163, 41, 245, 90))
rsiLengthInput = input.int(30, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
calculateDivergence = input.bool(false, title="Calculate Divergence", group="RSI Settings", display = display.data_window, tooltip = "Calculating divergences is needed in order for divergence alerts to fire.")
SignalDot = input.bool(false, title="Signal Dot", group="Smoothing", display = display.data_window, tooltip = "Signal for possible entry")
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiPlot = plot(rsi, "RSI", color= rsi >= 51 ? color.rgb(13, 197, 230) : color.red)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
midline = hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
midLinePlot = plot(50, color = na, editable = false, display = display.none)
fill(rsiPlot, midLinePlot, 100, 70, top_color = color.new(color.green, 0), bottom_color = color.new(color.green, 100), title = "Overbought Gradient Fill")
fill(rsiPlot, midLinePlot, 30, 0, top_color = color.new(color.red, 100), bottom_color = color.new(color.red, 0), title = "Oversold Gradient Fill")
GRP = "Smoothing"
TT_BB = "Only applies when 'SMA + Bollinger Bands' is selected. Determines the distance between the SMA and the bands."
maTypeInput = input.string("SMA", "Type", options = , group = GRP, display = display.data_window)
maLengthInput = input.int(14, "Length", group = GRP, display = display.data_window)
bbMultInput = input.float(2.0, "BB StdDev", minval = 0.001, maxval = 50, step = 0.5, tooltip = TT_BB, group = GRP, display = display.data_window)
var enableMA = maTypeInput != "None"
var isBB = maTypeInput == "SMA + Bollinger Bands"
smoothma(source, length, MAtype) =>
switch MAtype
"SMA" => ta.sma(source, length)
"SMA + Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
smoothingMA = enableMA ? smoothma(rsi, maLengthInput, maTypeInput) : na
smoothingStDev = isBB ? ta.stdev(rsi, maLengthInput) * bbMultInput : na
plot(smoothingMA, "RSI-based MA", color=color.yellow, display = enableMA ? display.all : display.none, editable = enableMA)
bbUpperBand = plot(smoothingMA + smoothingStDev, title = "Upper Bollinger Band", color=color.green, display = isBB ? display.all : display.none, editable = isBB)
bbLowerBand = plot(smoothingMA - smoothingStDev, title = "Lower Bollinger Band", color=color.green, display = isBB ? display.all : display.none, editable = isBB)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill", display = isBB ? display.all : display.none, editable = isBB)
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5
bearColor = color.red
bullColor = color.green
textColor = color.white
noneColor = color.new(color.white, 100)
_calcBarsSince(cond) =>
ta.barssince(cond)
rsiLBR = rsi
// 1. Calculate Pivots Unconditionally
plFound = not na(ta.pivotlow(rsi, lookbackLeft, lookbackRight))
phFound = not na(ta.pivothigh(rsi, lookbackLeft, lookbackRight))
// 2. Calculate History Unconditionally
barsSincePL = _calcBarsSince(plFound )
barsSincePH = _calcBarsSince(phFound )
// 3. Check Ranges Unconditionally
inRangePL = rangeLower <= barsSincePL and barsSincePL <= rangeUpper
inRangePH = rangeLower <= barsSincePH and barsSincePH <= rangeUpper
// 4. Calculate Conditions
var bool bullCond = false
var bool bearCond = false
if calculateDivergence
rsiHL = rsiLBR > ta.valuewhen(plFound, rsiLBR, 1) and inRangePL
lowLBR = low
priceLL = lowLBR < ta.valuewhen(plFound, lowLBR, 1)
bullCond := priceLL and rsiHL and plFound
rsiLH = rsiLBR < ta.valuewhen(phFound, rsiLBR, 1) and inRangePH
highLBR = high
priceHH = highLBR > ta.valuewhen(phFound, highLBR, 1)
bearCond := priceHH and rsiLH and phFound
else
bullCond := false
bearCond := false
plot(plFound ? rsiLBR : na, offset = -lookbackRight, title = "Regular Bullish", linewidth = 2, color = (bullCond ? bullColor : noneColor), display = display.pane, editable = calculateDivergence)
plotshape(bullCond ? rsiLBR : na, offset = -lookbackRight, title = "Regular Bullish Label", text = " Bull ", style = shape.labelup, location = location.absolute, color = bullColor, textcolor = textColor, display = display.pane, editable = calculateDivergence)
plot(phFound ? rsiLBR : na, offset = -lookbackRight, title = "Regular Bearish", linewidth = 2, color = (bearCond ? bearColor : noneColor), display = display.pane, editable = calculateDivergence)
plotshape(bearCond ? rsiLBR : na, offset = -lookbackRight, title = "Regular Bearish Label", text = " Bear ", style = shape.labeldown, location = location.absolute, color = bearColor, textcolor = textColor, display = display.pane, editable = calculateDivergence)
alertcondition(bullCond, title='Regular Bullish Divergence', message="Found a new Regular Bullish Divergence.")
alertcondition(bearCond, title='Regular Bearish Divergence', message='Found a new Regular Bearish Divergence.')
// --- Panel Options (General) ---
g_panel = 'MTF 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 Colors (Conditional Formatting) ---
g_rsi = 'MTF 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')
// --- Individual RSI Settings (MTF Sources) ---
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(30, '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(30, '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(30, '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(30, '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(30, '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(30, '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(30, '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(30, '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(30, '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(30, '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
// --- Panel Helper Functions ---
// Function 4: String Position to Constant (Indentation cleaned)
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
// Function 5: Timeframe to Human Readable (Indentation cleaned)
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 1: Increment Column (Indentation cleaned)
method incCol(TPanel _panel) =>
if _panel.vertical_orientation
_panel.col += 1
else
_panel.row += 1
// Method 2: Increment Row (Indentation cleaned)
method incRow(TPanel _panel) =>
if not _panel.vertical_orientation
_panel.col += 1
_panel.row := 0
else
_panel.row += 1
_panel.col := 0
// Method 3: Add Cell (Indentation cleaned)
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()
// Function 6: Background Color
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
// Function 7: Text Color
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')
// --- Panel Execution Logic ---
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)
// Using a tuple array for debugging colors demo
// Final Syntax Correction: Use array.new() and array.set() to avoid 'tuple()' function reference error
v_rows = 5 // We know we have 5 elements
demo = array.new(v_rows, '') // Initialize array with 5 string elements, will hold string representation of the tuple
// We will push the elements as a *string* representation of the tuple, as Pine v6 allows
// and then parse them inside the loop if necessary.
// To preserve the structure (string, float) without the tuple() function:
// We must define two separate arrays if the 'tuple' function is truly unavailable.
tf_array = array.new(v_rows)
rsi_array = array.new(v_rows)
// Populate the arrays
array.set(tf_array, 0, 'Overbought')
array.set(rsi_array, 0, float(i_threshold_ob))
array.set(tf_array, 1, 'Uptrend')
array.set(rsi_array, 1, float(i_threshold_uptrend))
array.set(tf_array, 2, 'No Trend')
array.set(rsi_array, 2, 50.0)
array.set(tf_array, 3, 'Downtrend')
array.set(rsi_array, 3, float(i_threshold_downtrend))
array.set(tf_array, 4, 'Oversold')
array.set(rsi_array, 4, float(i_threshold_os))
// Iterate over the arrays using a simple index
for i = 0 to v_rows - 1
tf = array.get(tf_array, i)
rsi = array.get(rsi_array, i)
v_panel2.add(tf, i_color_tf_bg, i_color_tf_text, f_formatRsi(rsi), f_bg(rsi), f_rsi_text_color(rsi))
Goldsky - Gold Market SpecialistGoldsky is a sophisticated TradingView Pine Script indicator designed exclusively for XAUUSD (Gold) trading. It features adaptive parameter adjustment, session-based optimization, market regime detection, news event filtering, multi-timeframe analysis, and intelligent risk management specifically calibrated for gold's unique market characteristics.
Features
Adaptive System: Parameters adjust automatically based on market conditions
Session-Based Optimization: Different strategies for Asian/European/American/Overlap sessions
Market Regime Detection: TRENDING/RANGING/BREAKOUT/NEUTRAL market analysis
News Event Filter: Automatic detection and protection during high volatility
Multi-Timeframe Analysis: H1 trend + M15 structure + M5 execution confluence
RSI Integration: Advanced RSI filtering for entries and exits
Bollinger Bands Integration: Volatility analysis and extreme value detection
Risk Management: Gold-specific risk parameters and position sizing
LJ Parsons Adjustable expanding MRT Fibpapers.ssrn.com
Market Resonance Theory (MRT) reinterprets financial markets as structured multiplicative, recursive systems rather than linear, dollar-based constructs. By mapping price growth as a logarithmic lattice of intervals, MRT identifies the deep structural cycles underlying long-term market behaviour. The model draws inspiration from the proportional relationships found in musical resonance, specifically the equal temperament system, revealing that markets expand through recurring octaves of compounded growth. This framework reframes volatility, not as noise, but as part of a larger self-organising structure.
RKY MAGIC Levels (Daily Fixed)This Pine Script indicator generates one fixed Buy Pivot Point and one fixed Sell Pivot Point every day, exclusively for intraday trading. These pivot points remain unchanged throughout the session and act as key decision zones for traders.
Traders can set their Stop Loss and Targets based on their individual risk capacity, and once the trade moves into profit, they can trail the Stop Loss to protect gains.
A powerful feature of this indicator is its built-in trend continuation logic:
👉 If the Buy Pivot Point or Sell Pivot Point is broken and the price sustains above or below that level for 30 minutes, it signals a high-probability trend continuation.
This makes the indicator highly effective for identifying breakout strength and avoiding false signals. It is suitable for all types of intraday trading styles—scalping, momentum, and trend-following.
RSI cyclic smoothed ProCyclic Smoothed Relative Strength Indicator - Pro Version
The cyclic smoothed RSI indicator is an enhancement of the classic RSI, adding
additional smoothing according to the market vibration,
adaptive upper and lower bands according to the cyclic memory and
using the current dominant cycle length as input for the indicator.
The cRSI is used like a standard indicator. The chart highlights trading signals where the signal line crosses above or below the adaptive lower/upper bands. It is much more responsive to market moves than the basic RSI.
The indicator uses the dominant cycle as input to optimize signal, smoothing and cyclic memory. To get more in-depth information on the cyclic-smoothed RSI indicator, please read Chapter 4 "Fine tuning technical indicators" of the book "Decoding the Hidden Market Rhythm, Part 1" available at your favorite book store.
Info: Pro Version
This is the actively maintained and continuously enhanced edition of my free, open-source indicator “RSI Cyclic Smoothed v2” which was recognized with a TradingView Editors’ Pick. The Pro Version will remain fully up to date with the latest Pine Script standards and will receive ongoing refinements and feature improvements, all while preserving the core logic and intent of the original tool. The legacy version will continue to be available for code review and educational purposes, but it will no longer receive updates. The legacy open-source version is here
Pro Features V1:
1) Leveraging multi-timeframe analysis
Indicator can be used on one chart by using different time frames at the same time. Read more on TradingView here .
2) Scoring feature added for scanning and filtering
This indicator now provides four distinct scoring states for both bullish and bearish conditions, making it fully compatible with the TradingView Screener .
Each score reflects a specific market phase based on RSI behavior, slope, and crossover signals.
Bullish States (Positive Scores)
+1 – Bull Exhaustion: Price is above the upper threshold and still rising (upsloping).
+2 – Bull Fatigue: Price is above the upper threshold but losing momentum (downsloping).
+3 – Bull Exit: A fresh downward crossover has occurred.
+4 – Recent Bull Exit: A downward crossover occurred within the recent lookback window.
Bearish States (Negative Scores)
–1 – Bear Exhaustion: Price is below the lower threshold and still declining (downsloping).
–2 – Bear Fatigue: Price is below the lower threshold but starting to turn upward (upsloping).
–3 – Bear Exit: A fresh upward crossover has occurred.
–4 – Recent Bear Exit: An upward crossover occurred within the recent lookback window.
The scoring states are shown in the indicator status panel when plotting the indicator on the chart. For a Screener run, use a generic cycle length setting.
How to determine the current active cycle length?
You can use the following additional tools to fine-tune the current dominant cycle length:
1. The advanced dyanmic Cycle Spectrum Scanner
2. The free Detremded Market Rhythm Oscillator
Daily MA Rank LadderThis script plots six daily moving averages on any timeframe and tracks them in a live ladder in the top right of the chart. All moving averages are calculated from the daily close, no matter which timeframe you are looking at.
Included moving averages
• SMA 200 based on daily close
• SMA 100 based on daily close
• SMA 50 based on daily close
• EMA 20 based on daily close
• EMA 10 based on daily close
• EMA 5 based on daily close
The table shows
• Current price and all six daily moving averages
• Levels sorted from high to low so price walks up the ladder as it breaks each average
• A direction column with arrows based on change versus the previous daily value
• Double arrow when the move is at least 5 percent
• Single arrow when the move is smaller than 5 percent
Use it to see at a glance where price sits relative to the 200, 100, 50 SMA and the 20, 10, 5 EMA and how fast each level is moving.
Algo ۞ Halo 7MAs WonderA complete trend following and important MA crossing tool.
The indicator is self-explanatory. You decide where you want the triggers to go.
Enjoy!
Combined Up down with volumeIndicates the day with a purple dot where price moved up or down by 5% or more






















