SMA Lines📊 SMA Lines Indicator - Complete Trading System
Professional multi-feature indicator for Bursa Malaysia combining moving averages, breakout detection, smart money tracking, and visual market participant identification.

🎯 Core Components:
1. Four Simple Moving Averages
• 🟡 SMA 7 (Yellow) - Very short-term trend
• 🔴 SMA 20 (Red) - Short-term trend
• 🔵 SMA 50 (Blue) - Medium-term trend
• ⚫ SMA 200 (Black) - Long-term trend
2. Bollinger Bands
• 20-period, 2.0 std deviation
• Oversold/overbought detection
• Mean reversion opportunities
3. 10-Priority Candlestick Colors
1. 🔵 BLUE - All-Time High breakout (STRONGEST BUY)
2. ⚫ BLACK - All-Time Low breakdown (EXTREME WARNING)
3. 🟡 YELLOW - Open & Close < BB Lower (Extreme oversold)
4. 🟣 PURPLE - Close < BB Lower (Oversold)
5. 🔷 AQUA - 52-Week High breakout
6. 🟢 LIME - Bullish breakout (20-period)
7. 🟠 ORANGE - 52-Week Low breakdown
8. 🟪 FUCHSIA - Bearish breakdown
9. 🟩 GREEN - Normal bullish (Close > Open)
10. 🔴 RED - Normal bearish (Close < Open)
4. Animal Emoji Market Participants
Shows WHO controls the market (one emoji max per bar):
• 🐊 CROCODILE - Smart money/operators at major breakouts (52W/ATH + volume 2x+)
• 🐘 ELEPHANT - Big institutions (volume 4x+ & large candle 2x ATR)
• 🦈 SHARK - Liquidity hunters (volume 2.5x+ on breakouts)
• 🐂 BULL - Strong buyers (SMA alignment + rising 3 bars + volume + 1.2x ATR candle)
• 🐻 BEAR - Strong sellers (SMA reversed + falling 3 bars + volume + 1.2x ATR candle)
• 🐑 SHEEP - Weak retail (volume <0.5x, small candle, no conviction)
Priority System: Crocodile > Elephant > Shark > Bull > Bear > Sheep (no overlap)

📍 Detection Systems:
Three Breakout Levels:
• 20-Period - Short-term breakouts
• 52-Week (252 days) - Yearly resistance/support
• All-Time High/Low - Historical extremes
Volume Confirmation:
• All breakouts require 1.5x+ volume spike
• Filters false signals

⚙️ Key Settings:
• Moving Averages: Customizable periods
• Bollinger Bands: Length & std dev adjustable
• Breakout Period: Default 20 bars
• Volume Multiplier: Default 1.5x
• Toggle Controls: Enable/disable any feature

🎯 Best Trading Strategies:
1. ATH Blue Sky Breakout 🔵
• Entry: Blue candle with 🐊/🐘 emoji
• Target: Open (trail with stop)
• Position: 3-5% (highest conviction)
2. Smart Money Follow 🐊🦈🐘
• Entry: On emoji signal
• Exit: Volume normalizes
• Position: 3-4%
3. Oversold Bounce 🟡🟣
• Entry: Yellow/Purple in uptrend
• Target: BB Middle/Upper (2-3:1 RR)
• Position: 2-3%
4. Trend Following 🐂
• Entry: Bull emoji with SMA alignment
• Trail: SMA 7 or SMA 20
• Exit: Bear emoji appears

⚠️ Key Rules:
✅ Follow: Blue (ATH), Crocodile, Elephant, Bull in uptrend
❌ Avoid: Black (ATL), Sheep signals, counter-trend trades
⚡ Volume Required: All signals need volume confirmation
📊 Risk: 2-5% per trade maximum

💡 Unique Features:
• Non-overlapping emojis - Priority system ensures clean chart
• 10-level color hierarchy - Instant visual analysis
• Smart money detection - See institutional activity
• Real-time labels - Current SMA values displayed
• Professional design - Clean, no clutter

Target Market: Bursa Malaysia (LONG only)
Best Timeframes: Daily, 4H, 1H
Skill Level: Beginner to Advanced
Complete professional system combining technical analysis with behavioral market participant tracking for data-driven trading decisions! 🚀📈
Padrões gráficos
Structure + MTF + Failed 2U/2D + PDH/PDL Sweeps (Toolkit)How this behaves (so you are not guessing)
1) Liquidity sweeps (PDH/PDL)
PDH Sweep: price trades above yesterday’s high, then (by default) closes back below PDH
PDL Sweep: price trades below yesterday’s low, then closes back above PDL
You can allow wick-only sweeps via the input if you want more signals (and more noise, because humans love noise).
2) Failed 2U / Failed 2D
Failed 2U: candle takes prior high but closes back below it (failure)
Failed 2D: candle takes prior low but closes back above it
If you enable confirmation, the script triggers the “confirmed” entry only when the next candle breaks the fail candle in the intended direction.
3) FTFC strength meter (0–3)
Uses 3 higher timeframes you pick (defaults 15, 60, 240).
Strength = how many of those TF candles are bullish or bearish.
“Aligned” means 2 or 3 agree.
4) Consolidation filter
Flags consolidation when:
You have an inside-bar streak (default 2+) and/or
ATR is compressed vs its own SMA (default threshold 0.80)
Then it can block entries if you enable “Avoid entries during consolidation”.
5) “Setup Ready” alert
Triggers before entries when:
Sweep/rejection context exists (PDH/PDL)
Structure signal is forming (failed or reversal pattern)
Consolidation filter allows it
That’s your “stop chasing every candle” mechanism.
Gamma Hedging Pressure 🧠 HOW TO USE THIS (TRADING RULES):
🔴 NEGATIVE GAMMA (Red)
✔ Trade breakouts
✔ Hold winners
✔ Avoid fading moves
✔ Best for trend days
🟢 POSITIVE GAMMA (Green)
✔ Trade mean reversion
✔ Fade extremes
✔ Take profits quickly
✔ Best for scalping
⚪ NEUTRAL
❌ Reduce size
❌ Avoid forcing trades
Sarina - 2EMA Dynamic & BB - 01132026Here is a concise and professional description of your indicator in English, designed to be shared with others. It highlights the logic of "Dynamic Adaptation" and the "Anti-Noise" system without being overly technical.
Indicator Description: EMA Dynamic - Pro Adaptive System
This indicator is a high-performance trend-following tool designed to filter market noise and adapt to real-time price volatility. Unlike standard EMAs that use a fixed length, this system uses a Computational Logic that expands or contracts its period based on price momentum and distance.
Key Features:
Dynamic EMA Core: The lengths (c1 & c2) are not static. They increase or decrease dynamically as price moves, allowing the indicator to "speed up" during breakouts and "slow down" during consolidations.
Shock-Absorber (Stability Logic): To prevent "false signals" during sudden spikes, the indicator includes a stabilization filter (No-Shock). It only confirms a trend change after the price maintains its position relative to the EMAs for a specified number of bars.
Volatility-Linked Bollinger Bands: The Bollinger Bands are anchored to the Dynamic EMA 1, meaning the volatility channels expand and contract in perfect harmony with the adaptive core of the system.
Dual-Layer Signal System: Includes S-Signals (Fast/Scalp) and P-Signals (Pro/Trend) to identify different layers of market entry and exit points.
Visual Efficiency: Designed for clean charts. Works best with "Wick-only" candlestick views to focus strictly on price rejection and dynamic trend structures.
Best Used For: Identifying the "Safe Middle" of a move and avoiding the traps set by market makers during choppy price action.
Would you like me to create a separate Readme file or a Setup Guide for users who want to know exactly how to tune the "Step Inc/Dec" settings?
Capital Rotational Event (CRE)What is a Capital Rotational Event (CRE)?
A Capital Rotational Event is when money shifts from one asset to another — e.g., rotation from stocks into bonds, from tech into commodities, or from one sector into another.
In technical terms it typically shows:
✔ Divergence between two asset price series
✔ Relative strength switching direction
✔ Volume/flow confirming rotation
✔ Often precedes trend acceleration in the “receiver” asset
MES ORB Fakeout Alert - No RSIVWAP Integration: In 2025/2026 trading, price action often "reverses" to the VWAP. If the MES breaks the ORB High but stays below the VWAP, it’s a high-probability fakeout. This script catches that.
Relative Volume (Effort vs. Result): Instead of RSI, it looks at the Volume SMA. If the market tries to break a level with less volume than the 20-candle average, the "effort" isn't there, and the "result" (the breakout) is likely a lie.
Automatic Session Handling: It specifically looks at America/New_York time to ensure the 9:30 AM open is captured correctly regardless of where you are located.
eBacktesting - Learning: InducementeBacktesting - Learning: Inducement
Inducement is the “trap” move that often shows up right before a real push. Price briefly takes an internal swing level (a small high/low), pulls traders in the wrong direction, and then snaps back — usually right before continuing toward the larger objective.
How to study it:
- First, get a simple trend bias (are we making higher highs/higher lows, or lower highs/lower lows?).
- Watch the most recent internal swing level inside that trend.
- An inducement often looks like a quick sweep through that internal level, followed by a close back on the “correct” side.
These indicators are built to pair perfectly with the eBacktesting extension, where traders can practice these concepts step-by-step. Backtesting concepts visually like this is one of the fastest ways to learn, build confidence, and improve trading performance.
Educational use only. Not financial advice.
Gold Buy/Sell with BoxesKey Features of This Update
Box-Style Labels: Instead of small icons, this uses label.new to create larger, text-based boxes that provide immediate confirmation ("GOLD BUY CONFIRMED").
Dynamic Positioning: Labels are automatically placed at the high or low of the signal bar to avoid cluttering the price candles.
Multi-Indicator Filter: Signals only trigger when both a Moving Average crossover occurs and momentum (RSI) is in the correct zone, reducing "noise" or false signals in sideways markets.
Alert Ready: You can set mobile or desktop notifications in TradingView by selecting these specific Buy/Sell conditions in the "Create Alert" menu.
RSI Swing Camarilla s3 r3+ PDH/PDL+CPR - v1.0This script provide the follwing -
1. Daily CPR level
2. Camarilla S3/R3
3. Previous Day High/Low (PDH/PDL)
4. Dynamic VWAP
5. Dynamic EMA 20/200
6. Dynamic RSi Swing
Dec 10
Release Notes
This script provide the follwing -
1. Daily CPR level
2. Camarilla S3/R3
3. Previous Day High/Low (PDH/PDL)
4. Dynamic VWAP
5. Dynamic EMA 20/200/36
6. Dynamic RSi Swing
Which is better: 36 EMA or 36 SMA for Support/Resistance?
✔ 36 EMA (Exponential Moving Average)
Better for intraday, short-term trading, scalping, and momentum trading.
Why?
Reacts faster to price.
Captures trend shifts early.
Works great when market is trending or volatile.
Most traders use EMA for dynamic support/resistance → works better because of crowd behavior.
Ideal for:
NIFTY, BANKNIFTY, FINNIFTY intraday | Options entries | Trend continuation trades.
Why 20 EMA is Important
The 20 EMA is one of the most widely used moving averages for intraday, swing, and positional trading because it captures short-term trend strength and momentum.
📌 20 EMA Works Best For
✔ Intraday trend identification
✔ Momentum continuation entries
✔ Dynamic support/resistance
✔ Quick reversal detection
✔ Options trading (NIFTY/BNF)
✔ Breakout & pullback trades
EMA 200 – Why It’s Extremely Important
The 200 EMA represents the long-term trend and is respected by:
Institutions
Algo systems
Big traders
Swing traders
Index traders
It acts like a major wall of support or resistance.
💡 What EMA 200 Tells You
✔ Long-term trend direction
Price above 200 EMA → Long-term uptrend
Price below 200 EMA → Long-term downtrend
✔ Strong trend reversal signals
When price crosses the 200 EMA on 15m/1h/1D charts → a deeper trend change is possible.
✔ Institutional support/resistance
Very powerful bounce/rejection zones
Many markets reverse exactly at 200 EMA
What is Previous Day High (PDH)?
The highest price the market reached in the previous trading session.
Why PDH is Important?
Acts as strong resistance
Breakout level for uptrend
Sellers often defend this zone
If broken with volume → strong bullish momentum
🔴 What is Previous Day Low (PDL)?
The lowest price the market reached in the previous trading session.
Why PDL is Important?
Acts as strong support
Breakdown level for downtrend
Buyers defend this level
If broken with volume → strong bearish trend
📌 How PDH/PDL Help in Intraday Trading
1️⃣ Range Breakout Trades
If price breaks PDH → bullish breakout (Buy CE)
If price breaks PDL → bearish breakdown (Buy PE)
What is Camarilla R3?
R3 = Resistance Level 3 in the Camarilla Pivot system.
Why R3 is important?
Acts as a major intraday resistance
Price often reverses from R3
If broken with force → strong uptrend starts
Many traders use R3 as a decision zone
Typical Market Behavior at R3
Rejection from R3 → Sell/PE opportunity
Break + Retest above R3 → CE opportunity
🔴 What is Camarilla S3?
S3 = Support Level 3 in the Camarilla Pivot system.
Why S3 is important?
Acts as a major intraday support
Buyers defend this zone
Breakdown of S3 → strong fall
S3 is often a bounce zone in the morning
Typical Market Behavior at S3
Bounce from S3 → Buy/CE opportunity
Break + Retest below S3 → PE opportunity
📌 Trader Logic: R3 & S3 Zones
⭐ 1. Range Reversal Strategy (Most Popular)
At R3 → Sell/PE
At S3 → Buy/CE
What is VWAP?
VWAP = Volume Weighted Average Price
It shows the average price at which most trading has happened during the day, based on both price and volume.
It resets every day at market open.
🔥 Why VWAP Is So Powerful?
VWAP is used by:
Institutions
Algo traders
Scalpers
Intraday traders
Dec 10
Release Notes
This script provide the follwing -
1. Daily CPR level
2. Camarilla S3/R3
3. Previous Day High/Low (PDH/PDL)
4. Dynamic VWAP
5. Dynamic EMA 20/200
6. Dynamic RSi Swing
3 hours ago
Release Notes
This script provide the follwing -
1. Daily CPR level
2. Camarilla S3/R3
3. Previous Day High/Low (PDH/PDL)
4. Dynamic VWAP
5. Dynamic EMA 20/200/36
6. Dynamic RSi Swing
Which is better: 36 EMA or 36 SMA for Support/Resistance?
✔ 36 EMA (Exponential Moving Average)
Better for intraday, short-term trading, scalping, and momentum trading.
Why?
Reacts faster to price.
Captures trend shifts early.
Works great when market is trending or volatile.
Most traders use EMA for dynamic support/resistance → works better because of crowd behavior.
Ideal for:
NIFTY, BANKNIFTY, FINNIFTY intraday | Options entries | Trend continuation trades.
Why 20 EMA is Important
The 20 EMA is one of the most widely used moving averages for intraday, swing, and positional trading because it captures short-term trend strength and momentum.
📌 20 EMA Works Best For
✔ Intraday trend identification
✔ Momentum continuation entries
✔ Dynamic support/resistance
✔ Quick reversal detection
✔ Options trading (NIFTY/BNF)
✔ Breakout & pullback trades
EMA 200 – Why It’s Extremely Important
The 200 EMA represents the long-term trend and is respected by:
Institutions
Algo systems
Big traders
Swing traders
Index traders
It acts like a major wall of support or resistance.
💡 What EMA 200 Tells You
✔ Long-term trend direction
Price above 200 EMA → Long-term uptrend
Price below 200 EMA → Long-term downtrend
✔ Strong trend reversal signals
When price crosses the 200 EMA on 15m/1h/1D charts → a deeper trend change is possible.
✔ Institutional support/resistance
Very powerful bounce/rejection zones
Many markets reverse exactly at 200 EMA
What is Previous Day High (PDH)?
The highest price the market reached in the previous trading session.
Why PDH is Important?
Acts as strong resistance
Breakout level for uptrend
Sellers often defend this zone
If broken with volume → strong bullish momentum
🔴 What is Previous Day Low (PDL)?
The lowest price the market reached in the previous trading session.
Why PDL is Important?
Acts as strong support
Breakdown level for downtrend
Buyers defend this level
If broken with volume → strong bearish trend
📌 How PDH/PDL Help in Intraday Trading
1️⃣ Range Breakout Trades
If price breaks PDH → bullish breakout (Buy CE)
If price breaks PDL → bearish breakdown (Buy PE)
What is Camarilla R3?
R3 = Resistance Level 3 in the Camarilla Pivot system.
Why R3 is important?
Acts as a major intraday resistance
Price often reverses from R3
If broken with force → strong uptrend starts
Many traders use R3 as a decision zone
Typical Market Behavior at R3
Rejection from R3 → Sell/PE opportunity
Break + Retest above R3 → CE opportunity
🔴 What is Camarilla S3?
S3 = Support Level 3 in the Camarilla Pivot system.
Why S3 is important?
Acts as a major intraday support
Buyers defend this zone
Breakdown of S3 → strong fall
S3 is often a bounce zone in the morning
Typical Market Behavior at S3
Bounce from S3 → Buy/CE opportunity
Break + Retest below S3 → PE opportunity
📌 Trader Logic: R3 & S3 Zones
⭐ 1. Range Reversal Strategy (Most Popular)
At R3 → Sell/PE
At S3 → Buy/CE
What is VWAP?
VWAP = Volume Weighted Average Price
It shows the average price at which most trading has happened during the day, based on both price and volume.
It resets every day at market open.
🔥 Why VWAP Is So Powerful?
VWAP is used by:
Institutions
Algo traders
Scalpers
Intraday traders
CRE Multi Pair Scanner
✔ 1 lead asset (capital source)
✔ Multiple receiver assets
✔ CRE signal fires per asset
✔ Table + labels show rotation winner
Attended candles - lines and infobox another updateAttended candles draw liquidity from the area above the high/below the low of the previous candle and close in the opposite direction; i.e., red candles draw liquidity above the previous candle and close in the short direction.
Green attended candles draw liquidity below the previous candle and close in the long direction.
OXS for GC A Share MarketThis is a dummy indicator for selecting shares from GC A share market based on momentum thoery
Bullish Diamond (Current TF)To ensure the Blue Diamond only appears based on the current timeframe's bullish momentum and ignores any signals during a downtrend, we will use a logic that checks two things:
Trend Filter: Is the current price above a major Moving Average (the 200-period)?
Crossover: Did a fast Moving Average just cross above a slow one on the specific bars you are looking at?
Blue Diamond SignalPlace Blue Diamond when RSI is 30. This will be very useful to find oversold tickers
QUARTERS THEORY XAUUSDThe “Quarter Theory XAUUSD” indicator on TradingView is designed to automatically plot horizontal price levels in $25 increments on your chart, providing traders with a clear visual representation of key psychological and technical price points. These levels are particularly useful for instruments like XAU/USD, where price often reacts to round numbers, forming support and resistance zones that can be leveraged for both scalping and swing trading strategies. By showing all $25 increments as horizontal white lines, the indicator ensures that traders can quickly identify potential entry and exit points, without the need for manual drawing or repeated calculations.
The indicator works by calculating the nearest $25 multiple relative to the current market price and then drawing horizontal lines across the chart for all increments within a defined range. This range can be customized to suit the instrument being traded; for example, for gold (XAU/USD), a typical range might extend from 0 to 5000, covering all practical price levels that could be relevant in both high and low market conditions. By using Pine Script’s persistent variables, the indicator efficiently creates these lines only once at the start of the chart, avoiding unnecessary resource usage and preventing TradingView from slowing down, which can happen if lines are redrawn every bar.
From a trading perspective, these levels serve multiple purposes. For scalpers, the $25 increments act as micro support and resistance points, helping to determine short-term price reactions and potential breakout zones. Scalpers can use these levels to enter positions with tight stop-loss orders just beyond a level and take profits near the next $25 increment, which aligns with common price behavior patterns in highly liquid instruments. For swing traders, the same levels provide broader context, allowing them to identify areas where price might pause or reverse over several days. Swing traders can use these levels to align trades with the prevailing trend, particularly when combined with other indicators such as moving averages or trendlines.
Another key advantage of the Quarterly Levels indicator is its simplicity and visual clarity. By plotting lines in a uniform white color and extending them to the right, the chart remains clean and easy to read, allowing traders to focus on price action and market dynamics rather than cluttered technical drawings. This visual consistency also helps in backtesting and strategy development, as traders can quickly see how price interacts with each level over time. Additionally, the use of round-number increments leverages the psychological tendencies of market participants, as many traders place stop orders or entry points near these levels, making them natural zones of interest.
Overall, the Quarterly Levels indicator combines efficiency, clarity, and practical trading utility into a single tool. It streamlines chart analysis, highlights meaningful price zones, and supports both scalping and swing trading approaches, making it an essential addition to a trader’s toolkit. By understanding how to integrate these levels into trading strategies, traders can make more informed decisions, manage risk effectively, and identify high-probability trade setups across various market conditions.
TJR asia session sweep//@version=5
strategy("TJR asia session sweep", "TJR Asia Sweep", overlay=true, max_lines_count=500, max_labels_count=500)
// Input settings
show_asian = input.bool(true, "Show Asian Session", group="Visual Settings")
show_london = input.bool(true, "Show London Session", group="Visual Settings")
show_swing_points = input.bool(true, "Show Asian Swing Points", group="Visual Settings")
show_market_structure = input.bool(true, "Show Market Structure", group="Visual Settings")
show_bos = input.bool(true, "Show Break of Structure", group="Visual Settings")
// Session Time Settings
asian_start_hour_input = input.int(22, "Asian Session Start Hour", minval=0, maxval=23, group="Session Times")
asian_end_hour_input = input.int(3, "Asian Session End Hour", minval=0, maxval=23, group="Session Times")
london_start_hour_input = input.int(3, "London Session Start Hour", minval=0, maxval=23, group="Session Times")
london_end_hour_input = input.int(8, "London Session End Hour", minval=0, maxval=23, group="Session Times")
session_timezone = input.string("America/New_York", "Session Timezone", options= , group="Session Times")
// Risk Management Settings
use_atr_sl = input.bool(false, "Use ATR Multiplier for Stop Loss", group="Risk Management")
atr_length = input.int(14, "ATR Length", minval=1, maxval=50, group="Risk Management")
atr_multiplier = input.float(2.0, "ATR Multiplier for Stop Loss", minval=0.5, maxval=10.0, group="Risk Management")
force_london_close = input.bool(true, "Force Close at London Session End", group="Risk Management")
cutoff_minutes = input.int(60, "Minutes Before Session End to Stop New Trades", minval=0, maxval=300, group="Risk Management")
// Position Sizing Settings
position_sizing_method = input.string("USD Risk", "Position Sizing Method", options= , group="Position Sizing")
usd_risk_per_trade = input.float(100.0, "USD Risk Per Trade", minval=1.0, maxval=10000.0, group="Position Sizing")
fixed_contracts = input.float(1.0, "Fixed Number of Contracts", minval=0.01, maxval=1000.0, step=0.01, group="Position Sizing")
// Color settings
asian_color = input.color(color.red, "Asian Session Color")
london_color = input.color(color.blue, "London Session Color")
swing_high_color = input.color(color.orange, "Swing High Color")
swing_low_color = input.color(color.lime, "Swing Low Color")
bullish_structure_color = input.color(color.green, "Bullish Structure Color")
bearish_structure_color = input.color(color.red, "Bearish Structure Color")
bos_color = input.color(color.orange, "Break of Structure Color")
// Line settings
line_width = input.int(2, "Line Width", minval=1, maxval=5)
// ATR calculation for stop loss
atr = ta.atr(atr_length)
// Position size calculation function
calculate_position_size(entry_price, stop_loss_price) =>
var float position_size = na
if position_sizing_method == "Fixed Contracts"
position_size := fixed_contracts
else // USD Risk method
stop_distance = math.abs(entry_price - stop_loss_price)
if stop_distance > 0
// Calculate position size based on USD risk per trade
// For forex: position_size = risk_amount / (stop_distance * point_value)
// For most forex pairs, point value = 1 (since we're dealing with price differences directly)
position_size := usd_risk_per_trade / stop_distance
else
position_size := fixed_contracts // Fallback to fixed contracts if stop distance is 0
position_size
// Session time definitions (using input variables)
asian_start_hour = asian_start_hour_input
asian_end_hour = asian_end_hour_input
london_start_hour = london_start_hour_input
london_end_hour = london_end_hour_input
// Get current hour using selected timezone
current_hour = hour(time, session_timezone)
// Previous hour for transition detection
prev_hour = hour(time , session_timezone)
// Session transition detection
asian_start = current_hour == asian_start_hour and prev_hour != asian_start_hour
asian_end = current_hour == asian_end_hour and prev_hour != asian_end_hour
london_start = current_hour == london_start_hour and prev_hour != london_start_hour
london_end = current_hour == london_end_hour and prev_hour != london_end_hour
// Session activity detection
asian_active = (current_hour >= asian_start_hour) or (current_hour < asian_end_hour)
london_active = (current_hour >= london_start_hour) and (current_hour < london_end_hour)
// Session boxes - keep previous sessions visible
var box asian_session_box = na
var box london_session_box = na
// Create Asian session box
if show_asian and asian_start
// Create new box at session start (previous box remains visible)
asian_session_box := box.new(bar_index, high, bar_index + 1, low,
border_color=asian_color, bgcolor=color.new(asian_color, 90),
border_width=2, border_style=line.style_solid)
// Pre-calculate session highs and lows for consistency
asian_session_length = asian_active and not na(asian_session_box) ? bar_index - box.get_left(asian_session_box) + 1 : 1
current_asian_high = ta.highest(high, asian_session_length)
current_asian_low = ta.lowest(low, asian_session_length)
// Update Asian session box continuously during session
if show_asian and asian_active and not na(asian_session_box)
box.set_right(asian_session_box, bar_index)
// Update box to contain session highs and lows
box.set_top(asian_session_box, current_asian_high)
box.set_bottom(asian_session_box, current_asian_low)
// Create London session box
if show_london and london_start
// Create new box at session start (previous box remains visible)
london_session_box := box.new(bar_index, high, bar_index + 1, low,
border_color=london_color, bgcolor=color.new(london_color, 90),
border_width=2, border_style=line.style_solid)
// Pre-calculate London session highs and lows for consistency
london_session_length = london_active and not na(london_session_box) ? bar_index - box.get_left(london_session_box) + 1 : 1
current_london_high = ta.highest(high, london_session_length)
current_london_low = ta.lowest(low, london_session_length)
// Update London session box continuously during session
if show_london and london_active and not na(london_session_box)
box.set_right(london_session_box, bar_index)
// Update box to contain session highs and lows
box.set_top(london_session_box, current_london_high)
box.set_bottom(london_session_box, current_london_low)
// Asian Session Swing Points Detection
var float asian_session_high = na
var float asian_session_low = na
var int asian_high_bar = na
var int asian_low_bar = na
// Asian Session Absolute High/Low for TP levels
var float asian_absolute_high = na
var float asian_absolute_low = na
var line asian_high_line = na
var line asian_low_line = na
var label asian_high_label = na
var label asian_low_label = na
var bool high_broken = false
var bool low_broken = false
// London Session High/Low tracking for stop loss
var float london_session_high = na
var float london_session_low = na
// Market structure tracking variables
var string breakout_direction = na // "bullish" or "bearish"
var float last_hh_level = na // Last Higher High level
var float last_hl_level = na // Last Higher Low level
var float last_ll_level = na // Last Lower Low level
var float last_lh_level = na // Last Lower High level
var int structure_count = 0
var string last_structure_type = na // "HH", "HL", "LL", "LH"
// Legacy variables for compatibility
var float last_swing_high = na
var float last_swing_low = na
var int last_high_bar = na
var int last_low_bar = na
// Market structure state tracking
var float pending_high = na
var float pending_low = na
var int pending_high_bar = na
var int pending_low_bar = na
var bool waiting_for_confirmation = false
// Break of Structure tracking variables
var float most_recent_hl = na
var float most_recent_lh = na
var int most_recent_hl_bar = na
var int most_recent_lh_bar = na
var bool bos_detected = false
// Trading variables
var bool trade_taken = false
// Trade visualization boxes (based on Casper strategy approach)
var box current_profit_box = na
var box current_sl_box = na
// Update swing points during Asian session
if asian_active and show_swing_points
// Always track absolute high/low for both TP levels and breakout detection
if na(asian_absolute_high) or high > asian_absolute_high
asian_absolute_high := high
if na(asian_absolute_low) or low < asian_absolute_low
asian_absolute_low := low
// Use absolute high/low for breakout levels (simplified logic)
if na(asian_session_high) or high > asian_session_high
asian_session_high := high
asian_high_bar := bar_index
if na(asian_session_low) or low < asian_session_low
asian_session_low := low
asian_low_bar := bar_index
// Track London session high/low for stop loss levels
if london_active
if na(london_session_high) or high > london_session_high
london_session_high := high
if na(london_session_low) or low < london_session_low
london_session_low := low
// Draw initial lines when Asian session ends
if asian_end and show_swing_points
if not na(asian_session_high) and not na(asian_high_bar)
// Draw extending line for high
asian_high_line := line.new(asian_high_bar, asian_session_high, bar_index + 200, asian_session_high,
color=swing_high_color, width=2, style=line.style_dashed, extend=extend.right)
asian_high_label := label.new(bar_index + 5, asian_session_high, "Asian High: " + str.tostring(asian_session_high, "#.####"), style=label.style_label_left, color=swing_high_color, textcolor=color.white, size=size.small)
if not na(asian_session_low) and not na(asian_low_bar)
// Draw extending line for low
asian_low_line := line.new(asian_low_bar, asian_session_low, bar_index + 200, asian_session_low,
color=swing_low_color, width=2, style=line.style_dashed, extend=extend.right)
asian_low_label := label.new(bar_index + 5, asian_session_low, "Asian Low: " + str.tostring(asian_session_low, "#.####"), style=label.style_label_left, color=swing_low_color, textcolor=color.white, size=size.small)
// Reset break flags for new session
high_broken := false
low_broken := false
// Check for breakouts during London session
if london_active and show_swing_points and not na(asian_session_high) and not na(asian_session_low)
// Check if Asian high is broken
if not high_broken and not low_broken and high > asian_session_high
high_broken := true
// Update high line to end at break point
if not na(asian_high_line)
line.set_x2(asian_high_line, bar_index)
line.set_extend(asian_high_line, extend.none)
// Remove the low line (first break wins)
if not na(asian_low_line)
line.delete(asian_low_line)
if not na(asian_low_label)
label.delete(asian_low_label)
// Add break marker
label.new(bar_index, asian_session_high * 1.001, "HIGH BREAK!",
style=label.style_label_down, color=color.red, textcolor=color.white, size=size.normal)
// Set breakout direction and initialize structure tracking
breakout_direction := "bullish"
last_swing_high := asian_session_high
last_swing_low := asian_session_low
last_high_bar := bar_index
structure_count := 0
// Check if Asian low is broken
if not low_broken and not high_broken and low < asian_session_low
low_broken := true
// Update low line to end at break point
if not na(asian_low_line)
line.set_x2(asian_low_line, bar_index)
line.set_extend(asian_low_line, extend.none)
// Remove the high line (first break wins)
if not na(asian_high_line)
line.delete(asian_high_line)
if not na(asian_high_label)
label.delete(asian_high_label)
// Add break marker
label.new(bar_index, asian_session_low * 0.999, "LOW BREAK!",
style=label.style_label_up, color=color.red, textcolor=color.white, size=size.normal)
// Set breakout direction and initialize structure tracking
breakout_direction := "bearish"
last_swing_high := asian_session_high
last_swing_low := asian_session_low
last_low_bar := bar_index
structure_count := 0
// Stop extending lines when London session ends (if not already broken)
if london_end and show_swing_points
if not high_broken and not na(asian_high_line)
line.set_x2(asian_high_line, bar_index)
line.set_extend(asian_high_line, extend.none)
if not low_broken and not na(asian_low_line)
line.set_x2(asian_low_line, bar_index)
line.set_extend(asian_low_line, extend.none)
// Force close all trades at London session end (if enabled)
if london_end and force_london_close
if strategy.position_size != 0
// Extend boxes immediately before session close to prevent timing issues
if not na(current_profit_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_profit_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_profit_box, final_right)
current_profit_box := na // Clear reference after extending
if not na(current_sl_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_sl_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_sl_box, final_right)
current_sl_box := na // Clear reference after extending
strategy.close_all(comment="London Close")
trade_taken := false // Reset trade flag for next session
// Market structure detection after breakout (only during London session and before first BoS)
if show_market_structure and not na(breakout_direction) and london_active and not bos_detected
// Bullish structure tracking (HH, HL alternating)
if breakout_direction == "bullish"
// Check for Higher High pattern: Bullish candle followed by bearish candle
pattern_high = math.max(high , high)
prev_hh = na(last_hh_level) ? last_swing_high : last_hh_level
// HH Detection: Only if we expect HH next (no last structure or last was HL)
if (na(last_structure_type) or last_structure_type == "HL") and close > open and close < open and pattern_high > prev_hh and close > prev_hh
// Check consolidation
is_too_close = not na(last_high_bar) and (bar_index - last_high_bar) <= 4
should_create_hh = true
if is_too_close and structure_count > 0 and pattern_high <= last_hh_level
should_create_hh := false
if should_create_hh
structure_count := structure_count + 1
label.new(bar_index - 1, high + (high * 0.0003), "HH" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_hh_level := pattern_high
last_swing_high := pattern_high
last_high_bar := bar_index
last_structure_type := "HH"
// HL Detection: Only if we expect HL next (last was HH)
pattern_low = math.min(low , low)
prev_hl = na(last_hl_level) ? last_swing_low : last_hl_level
if last_structure_type == "HH" and close < open and close > open and pattern_low > prev_hl and close > prev_hl
// Check consolidation
is_too_close = not na(last_low_bar) and (bar_index - last_low_bar) <= 4
should_create_hl = true
if is_too_close and pattern_low <= last_hl_level
should_create_hl := false
if should_create_hl
structure_count := structure_count + 1
label.new(bar_index - 1, low - (low * 0.0003), "HL" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_hl_level := pattern_low
most_recent_hl := pattern_low // Update most recent HL for BoS detection
most_recent_hl_bar := bar_index - 1 // Store HL bar position
last_low_bar := bar_index
last_structure_type := "HL"
// Bearish structure tracking (LL, LH alternating)
if breakout_direction == "bearish"
// Check for Lower Low pattern: Bearish candle followed by bullish candle
pattern_low = math.min(low , low)
prev_ll = na(last_ll_level) ? last_swing_low : last_ll_level
// LL Detection: Only if we expect LL next (no last structure or last was LH)
if (na(last_structure_type) or last_structure_type == "LH") and close < open and close > open and pattern_low < prev_ll and close < prev_ll
// Check consolidation
is_too_close = not na(last_low_bar) and (bar_index - last_low_bar) <= 4
should_create_ll = true
if is_too_close and structure_count > 0 and pattern_low >= last_ll_level
should_create_ll := false
if should_create_ll
structure_count := structure_count + 1
label.new(bar_index - 1, low - (low * 0.0003), "LL" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_ll_level := pattern_low
last_swing_low := pattern_low
last_low_bar := bar_index
last_structure_type := "LL"
// LH Detection: Only if we expect LH next (last was LL)
pattern_high = math.max(high , high)
prev_lh = na(last_lh_level) ? last_swing_high : last_lh_level
if last_structure_type == "LL" and close > open and close < open and pattern_high < prev_lh and close < prev_lh
// Check consolidation
is_too_close = not na(last_high_bar) and (bar_index - last_high_bar) <= 4
should_create_lh = true
if is_too_close and pattern_high >= last_lh_level
should_create_lh := false
if should_create_lh
structure_count := structure_count + 1
label.new(bar_index - 1, high + (high * 0.0003), "LH" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_lh_level := pattern_high
most_recent_lh := pattern_high // Update most recent LH for BoS detection
most_recent_lh_bar := bar_index - 1 // Store LH bar position
last_high_bar := bar_index
last_structure_type := "LH"
// Check if we're within the cutoff period before London session end
current_minute = minute(time, session_timezone)
london_end_time_minutes = london_end_hour * 60 // Convert London end hour to minutes
current_time_minutes = current_hour * 60 + current_minute // Current time in minutes
// Calculate minutes remaining in London session
london_session_minutes_remaining = london_end_time_minutes - current_time_minutes
// Handle day rollover case (e.g., if london_end is 8:00 (480 min) and current is 23:30 (1410 min))
if london_session_minutes_remaining < 0
london_session_minutes_remaining := london_session_minutes_remaining + (24 * 60) // Add 24 hours in minutes
// Only allow trades if more than cutoff_minutes remaining in London session
allow_new_trades = london_session_minutes_remaining > cutoff_minutes
// Break of Structure (BoS) Detection and Trading Logic - Only first BoS per London session and outside cutoff period
if show_bos and london_active and show_market_structure and not bos_detected and not trade_taken and allow_new_trades
// Bullish BoS: Price closes below the most recent HL (after bullish breakout) - SELL SIGNAL
if breakout_direction == "bullish" and not na(most_recent_hl) and not na(most_recent_hl_bar)
// Check minimum distance requirement (at least 4 candles between BoS and HL)
if close < most_recent_hl and (bar_index - most_recent_hl_bar) >= 4
// Draw dotted line from HL position to BoS point
line.new(most_recent_hl_bar, most_recent_hl, bar_index, most_recent_hl,
color=bos_color, width=2, style=line.style_dotted, extend=extend.none)
// Calculate center position for BoS label
center_bar = math.round((most_recent_hl_bar + bar_index) / 2)
// Draw BoS label below the line for HL break
label.new(center_bar, most_recent_hl - (most_recent_hl * 0.0005), "BoS",
style=label.style_none, color=color.new(color.white, 100),
textcolor=bos_color, size=size.normal)
// SELL ENTRY
if not na(london_session_high) and not na(asian_absolute_low)
// Calculate stop loss based on settings
stop_loss_level = use_atr_sl ? close + (atr * atr_multiplier) : london_session_high
take_profit_level = asian_absolute_low
entry_price = close
// Calculate position size based on user settings
position_size = calculate_position_size(entry_price, stop_loss_level)
strategy.entry("SELL", strategy.short, qty=position_size, comment="BoS Sell")
strategy.exit("SELL EXIT", "SELL", stop=stop_loss_level, limit=take_profit_level, comment="SL/TP")
// Create trade visualization boxes (TradingView style) - minimum 8 bars width
// Blue profit zone box (from entry to take profit)
current_profit_box := box.new(left=bar_index, top=take_profit_level, right=bar_index + 8, bottom=entry_price,
bgcolor=color.new(color.blue, 70), border_width=0)
// Red stop loss zone box (from entry to stop loss)
current_sl_box := box.new(left=bar_index, top=entry_price, right=bar_index + 8, bottom=stop_loss_level,
bgcolor=color.new(color.red, 70), border_width=0)
trade_taken := true
bos_detected := true // Mark BoS as detected for this session
// Bearish BoS: Price closes above the most recent LH (after bearish breakout) - BUY SIGNAL
if breakout_direction == "bearish" and not na(most_recent_lh) and not na(most_recent_lh_bar)
// Check minimum distance requirement (at least 4 candles between BoS and LH)
if close > most_recent_lh and (bar_index - most_recent_lh_bar) >= 4
// Draw dotted line from LH position to BoS point
line.new(most_recent_lh_bar, most_recent_lh, bar_index, most_recent_lh,
color=bos_color, width=1, style=line.style_dotted, extend=extend.none)
// Calculate center position for BoS label
center_bar = math.round((most_recent_lh_bar + bar_index) / 2)
// Draw BoS label above the line for LH break
label.new(center_bar, most_recent_lh + (most_recent_lh * 0.0005), "BoS",
style=label.style_none, color=color.new(color.white, 100),
textcolor=bos_color, size=size.normal)
// BUY ENTRY
if not na(london_session_low) and not na(asian_absolute_high)
// Calculate stop loss based on settings
stop_loss_level = use_atr_sl ? close - (atr * atr_multiplier) : london_session_low
take_profit_level = asian_absolute_high
entry_price = close
// Calculate position size based on user settings
position_size = calculate_position_size(entry_price, stop_loss_level)
strategy.entry("BUY", strategy.long, qty=position_size, comment="BoS Buy")
strategy.exit("BUY EXIT", "BUY", stop=stop_loss_level, limit=take_profit_level, comment="SL/TP")
// Create trade visualization boxes (TradingView style) - minimum 8 bars width
// Blue profit zone box (from entry to take profit)
current_profit_box := box.new(left=bar_index, top=entry_price, right=bar_index + 8, bottom=take_profit_level,
bgcolor=color.new(color.blue, 70), border_width=0)
// Red stop loss zone box (from entry to stop loss)
current_sl_box := box.new(left=bar_index, top=stop_loss_level, right=bar_index + 8, bottom=entry_price,
bgcolor=color.new(color.red, 70), border_width=0)
trade_taken := true
bos_detected := true // Mark BoS as detected for this session
// Position close detection for extending boxes (based on Casper strategy)
if barstate.isconfirmed and strategy.position_size == 0 and strategy.position_size != 0
// Extend trade visualization boxes to exact exit point when position closes
if not na(current_profit_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_profit_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_profit_box, final_right)
current_profit_box := na // Clear reference after extending
if not na(current_sl_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_sl_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_sl_box, final_right)
current_sl_box := na // Clear reference after extending
// Backup safety check - extend boxes if position is closed but boxes still active
if not na(current_profit_box) and strategy.position_size == 0
box_left = box.get_left(current_profit_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_profit_box, final_right)
current_profit_box := na
if not na(current_sl_box) and strategy.position_size == 0
box_left = box.get_left(current_sl_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_sl_box, final_right)
current_sl_box := na
// Reset everything when new Asian session starts
if asian_start and show_swing_points
asian_session_high := na
asian_session_low := na
asian_high_bar := na
asian_low_bar := na
// Reset absolute levels
asian_absolute_high := na
asian_absolute_low := na
asian_high_line := na
asian_low_line := na
asian_high_label := na
asian_low_label := na
high_broken := false
low_broken := false
// Reset London session levels
london_session_high := na
london_session_low := na
// Reset market structure tracking
breakout_direction := na
last_hh_level := na
last_hl_level := na
last_ll_level := na
last_lh_level := na
last_swing_high := na
last_swing_low := na
last_high_bar := na
last_low_bar := na
structure_count := 0
last_structure_type := na
pending_high := na
pending_low := na
pending_high_bar := na
pending_low_bar := na
waiting_for_confirmation := false
// Reset BoS tracking
most_recent_hl := na
most_recent_lh := na
most_recent_hl_bar := na
most_recent_lh_bar := na
bos_detected := false
// Reset trading
trade_taken := false
// Reset current trade boxes
current_profit_box := na
current_sl_box := na
// Debug info (optional)
show_debug = input.bool(false, "Show Debug Info")
if show_debug
var table debug_table = table.new(position.top_right, 2, 3, bgcolor=color.white, border_width=1)
if barstate.islast
table.cell(debug_table, 0, 0, "Current Hour:", text_color=color.black)
table.cell(debug_table, 1, 0, str.tostring(current_hour), text_color=color.black)
table.cell(debug_table, 0, 1, "Asian Active:", text_color=color.black)
table.cell(debug_table, 1, 1, str.tostring((current_hour >= asian_start_hour) or (current_hour < asian_end_hour)), text_color=color.black)
table.cell(debug_table, 0, 2, "London Active:", text_color=color.black)
table.cell(debug_table, 1, 2, str.tostring((current_hour >= london_start_hour) and (current_hour < london_end_hour)), text_color=color.black)
0.06% Price ChangePower indicator candle - Ideal for IntraDay Bank Nifty
Optiions Buying indicator - Trade after this candle + Doji + Continuity
Multi TF Volume ATRThis indicator measures volatility using ATR applied to volume across multiple timeframes. It helps identify when real momentum enters the market by showing volume spikes on 1h, 4h, 12h, and Daily charts. When several timeframes spike at the same time, it often signals strong moves, breakouts, or major shifts in volatility.
The script calculates Volume ATR for 1h, 4h, 12h, and 1D. Each timeframe generates its own spike condition. The indicator then checks for alignment between timeframes. The 1h histogram changes color based on the strength of the signal.
Red means multi timeframe alignment. This is the strongest signal and shows that several timeframes are spiking together.
Yellow means a 1h spike only. This is an early warning of local volatility.
Blue means no spike.
The indicator also plots higher timeframe ATR lines for context. These include 4h ATR, 12h ATR, and 1D ATR. When these lines rise together, volatility is building. Spike markers appear at the top of the pane when higher timeframes trigger.
You can choose how strict the alignment should be. Options include all three timeframes (1h, 4h, 12h), at least two timeframes, or including the daily timeframe for even stronger confirmation.
The script includes alert conditions for 1h spikes, multi timeframe alignment spikes, and daily spikes. These alerts help you stay ahead of volatility without watching charts constantly.
This indicator is useful for many trading styles. Breakout traders use red bars to confirm momentum. Mean reversion traders use daily spikes to confirm volatility conditions. Trend traders watch rising 4h and 12h ATR lines. Scalpers use yellow bars as early warnings.
Volume ATR shows how quickly volume is expanding. When several timeframes spike together, it often signals institutional activity, liquidity events, volatility shifts, breakouts, or reversals. This provides information that price alone cannot show.
Engulfing + EMA + WMA + ICT Alejandradetector de velas engulfing
7 emas disponibles
wma
detector de bos y choch
Sarina - EMA Dynamic -BB - 01132026Here is a concise and professional description of your indicator in English, designed to be shared with others. It highlights the logic of "Dynamic Adaptation" and the "Anti-Noise" system without being overly technical.
Indicator Description: EMA Dynamic - Pro Adaptive System
This indicator is a high-performance trend-following tool designed to filter market noise and adapt to real-time price volatility. Unlike standard EMAs that use a fixed length, this system uses a Computational Logic that expands or contracts its period based on price momentum and distance.
Key Features:
Dynamic EMA Core: The lengths (c1 & c2) are not static. They increase or decrease dynamically as price moves, allowing the indicator to "speed up" during breakouts and "slow down" during consolidations.
Shock-Absorber (Stability Logic): To prevent "false signals" during sudden spikes, the indicator includes a stabilization filter (No-Shock). It only confirms a trend change after the price maintains its position relative to the EMAs for a specified number of bars.
Volatility-Linked Bollinger Bands: The Bollinger Bands are anchored to the Dynamic EMA 1, meaning the volatility channels expand and contract in perfect harmony with the adaptive core of the system.
Dual-Layer Signal System: Includes S-Signals (Fast/Scalp) and P-Signals (Pro/Trend) to identify different layers of market entry and exit points.
Visual Efficiency: Designed for clean charts. Works best with "Wick-only" candlestick views to focus strictly on price rejection and dynamic trend structures.
Best Used For: Identifying the "Safe Middle" of a move and avoiding the traps set by market makers during choppy price action.
Would you like me to create a separate Readme file or a Setup Guide for users who want to know exactly how to tune the "Step Inc/Dec" settings?
30d Rolling TWAP (Hourly)code:
//@version=5
indicator("30d Rolling TWAP (Hourly)", overlay=true)
// Calculation: (High + Low + Close) / 3
typicalPrice = hlc3
// 30 days * 24 hours = 720 bars
length = 720
twap30 = ta.sma(typicalPrice, length)
// Plotting
plot(twap30, color=color.new(#2962FF, 0), title="30d Hourly TWAP", linewidth=2)
// Optional: Background highlight
fillColor = close > twap30 ? color.new(color.green, 90) : color.new(color.red, 90)
bgcolor(fillColor)
Crypto Camp Day Key LevelsDaily key levels Daily key levels Daily key levels Daily key levels Daily key levels Daily key levels
MACD Trend Count ScoreThis indicator is designed to confirm potential future trends in an asset’s price by analyzing the MACD histogram in the past. It works by counting positive and negative MACD bars within the selected chart timeframe to calculate a Strength Index, which reflects the past trend direction and intensity.
Summarizing the predominance of positive or negative bars across higher timeframes in the past such as daily, weekly, bi-weekly, and quarterly, it provides insight to anticipate how the trend may evolve in upcoming periods, according to the predetermined range scales Strong Bullish, Moderate Bullish, Neutral, Moderate Bearish and Strong Bearish.
Additionally, a dedicated module linked to the strength index is optimized for short-term charts (2-minute, 5-minute and 15-minute timeframes), making it a valuable tool for day trading strategies.






















