DodgyDD IndicatorIFVG setup indicator. I have not added support for IFVG with major liquidity sweep. The idea is if the price breaks previous swing and the quickly retract forming IFVG it will notify
차트 패턴
Up/Down Days, Volume & Price Change SummaryThis scripts helps you to see the up days and down days over the look back period defined by you .
One of the most important concept in judging the strength of the stock.
Use it
Distance from 50 SMA in ADR TermsIndicator produces a multiple of ADR% from the 50-day simple moving average to determine is a stock or etf is extended.
Relative Strength with CNX500This indicator compares the relative strength of the stock with respect to a wider benchmark index Nifty 500
Market Pulse Dip RadarThis indicator is designed to help traders spot meaningful dips in price and then evaluate whether those dips are worth trading or not. It doesn’t just mark a dip; it also helps with risk management, trade planning, and filtering out weak signals.
Here’s how it works:
First, it looks at the recent high price and checks how much the market has dropped from that high. If the drop is larger than the minimum percentage you set, it marks it as a potential dip.
Next, it checks the trend structure by using two moving averages (a fast one and a slow one). If the fast average is below the slow average, it means the market is in a weaker structure, and that dip is considered more valid.
On top of that, you can enable a multi-timeframe filter. For example, if you are trading on the 15-minute chart, you can ask the indicator to confirm that the 1-hour trend is also supportive before showing you a dip. This helps avoid trading against the bigger trend.
Risk management is built in. The indicator automatically suggests a stop-loss by combining volatility (ATR) and recent swing lows. It then draws three profit target levels (1x risk, 2x risk, and 3x risk). This makes it easier to plan where to exit if the trade works.
A key part of this tool is the confidence score. Each dip signal is rated from 0 to 100. The score depends on how deep the dip is, how far apart the moving averages are, how healthy volatility is, and whether the higher timeframe supports the trade. The score is then labeled as High, Medium, Low, or Wait. This helps traders focus only on the stronger setups.
On the chart, dip signals are marked with a diamond shape under the bars. The color of the diamond tells you if it’s high, medium, or low quality. When a signal appears, the indicator also plots horizontal lines for the entry, stop, and targets.
To make it easier to read, there is also a dashboard box that shows the current score, quality, dip percentage, and suggested stop-loss. This means you don’t have to calculate or check different things yourself – everything is visible in one place.
Finally, it comes with alerts. You can set alerts for when a dip signal happens, or when it’s medium or high confidence. This way, you don’t need to stare at charts all day; TradingView can notify you.
So in short, this tool:
• Finds dips based on your rules.
• Filters them using structure, volatility, and higher timeframe trend.
• Suggests stop-loss and profit targets.
• Rates each dip with a confidence score.
• Shows all this info in a clean dashboard and alerts you when it happens.
👉 Do you want me to now explain how a trader would actually use it in practice (step by step, from signal to trade)?
P/E Ratio vs Median + Bollinger Band- 📝 This indicator highlights potential buying opportunities by analyzing the Price-to-Earnings (P/E) ratio in relation to Bollinger Bands and its historical median.
- 🎯 The goal is to provide a visually intuitive signal for value-oriented entries, especially when valuation compression aligns with historical context.
- 💡 Vertical green shading is applied when the P/E ratio drops below the lower Bollinger Band, which is calculated directly from the P/E ratio itself — not price. This condition often signals the ticker may be oversold.
- 🟢 Lighter green appears when the ratio is below the lower band but above the median, suggesting a possible shorter-term entry with slightly more risk.
- 🟢 Darker green appears when the ratio is both below the lower band and below the median, pointing to a potentially stronger, longer-term value entry.
- ⚠️ This logic was tested using 1 and 2-day time frames. It may not be as helpful in longer time frames, as the financial data TradingView pulls in begins in Q4 2017.
- ⚠️ Note: This script relies on financial data availability through TradingView. It may not function properly with certain tickers — especially ETFs, IPOs, or thinly tracked assets — where P/S ratio data is missing or incomplete.
- ⚠️ This indicator will not guarantee successful results. Use in conjunction with other indicators and do your due diligence.
- 🤖 This script was iteratively refined with the help of AI to ensure clean logic, minimalist design, and actionable signal clarity.
- 📢 Idea is based on the script "Historical PE ratio vs median" by haribotagada
- 💬 Questions, feedback, or suggestions? Drop a comment — I’d love to hear how you’re using it or what you'd like to see changed.
Premarket Breakout Painter (08:00-09:29 ET) — First Break Only**Pre-Market Breakout Indicator**
This indicator is designed to help traders identify and trade **pre-market breakout levels**. It automatically marks the pre-market high and low range, then extends those levels into the regular session so you can see when price breaks above or below them.
---
## 🔑 **How It Works**
1. **Pre-Market Range**
* During extended hours (before the 09:30 ET open), the indicator tracks the **highest high** and **lowest low**.
* These levels form the **pre-market range**.
2. **Breakout Levels**
* At the market open, the pre-market high and low are plotted as horizontal lines.
* When price breaks above the pre-market high → potential **bullish breakout**.
* When price breaks below the pre-market low → potential **bearish breakout**.
3. **Optional Midline / VWAP**
---
🎨 **Visuals**
* **Horizontal lines** marking pre-market high and low.
* Lines extend into the regular session for easy tracking.
* Colors can be customized for bullish/bearish clarity.
---
⚙️ **Inputs**
* **Session Times** (default: 04:00–09:30 ET for U.S. equities).
* **Show/Hide Midline** (optional).
* **Line Styles & Colors**.
* **Alerts** (optional, e.g., alert when price crosses pre-market high or low).
---
🚨 **Practical Use**
* Look for **high volume breakouts** through pre-market high/low after the bell.
* Use levels as **support/resistance** for pullback entries.
* Combine with EMA trend filters, VWAP, or market internals for confirmation.
---
✅ This indicator doesn’t give buy/sell signals on its own — it’s a **visual framework** to highlight where the market may make its first decisive move of the day.
HTF HV Lines + Exceptional + Nearest Breakout (core only)Non-repainting breakout tool that maps high-volume (HV) levels from a higher timeframe (Daily by default) onto any intraday chart. It detects new HV bars only when the higher-timeframe candle closes, then draws persistent horizontal lines at that bar’s high and low. Optionally color “exceptional” volume events. On the trading timeframe, the script watches the nearest HV line and flags breakouts using OHLC quality checks: ATR-scaled close distance, minimum real body, and small opposite wick. Inputs let you cap stored events, tune strictness, ignore stale lines, and manage visual style easily.
Third Eye ORB Pro (0915-0930 IST, no-plot)Third Eye ORB Pro (Opening Range Breakout + Range Mode)
This indicator is designed specifically for Indian stocks and indices (NIFTY, BANKNIFTY, FINNIFTY, MIDCAP, etc.) to track the Opening Range (09:15–09:30 IST) and generate actionable intraday trade signals. It combines two key modes — Range Mode (mean reversion inside the opening range) and Breakout Mode (momentum trading beyond the range).
1. Opening Range Framework (09:15–09:30 IST)
The indicator automatically plots the Opening Range High (ORH) and Opening Range Low (ORL) after the first 15 minutes of market open.
The area between ORH and ORL acts as the intraday battlefield where most price action occurs (historically ~70–80% of the day is spent inside this zone).
A shaded box and horizontal lines mark this range, serving as a visual reference for support and resistance throughout the day.
2. Range Mode (Mean Reversion Inside OR)
When price trades inside the Opening Range, the indicator looks for edge rejections to capture range-bound trades.
Range BUY (RB): Triggered near ORL when a bullish rejection candle forms (strong body + long lower wick).
Range SELL (RS): Triggered near ORH when a bearish rejection candle forms (strong body + long upper wick).
Optional filters (toggleable in settings):
RSI Filter: Only allow range buys if RSI is oversold (≤45) and range sells if RSI is overbought (≥55).
VWAP Filter: Only allow range trades if price is not too far from VWAP (distance ≤ X% of OR size).
Labels show suggested Stop Loss (just outside the OR band) and Target (midline/VWAP).
Cooldown logic prevents consecutive whipsaw signals.
3. Breakout Mode (Directional Moves Beyond OR)
When price closes strongly outside the ORH/ORL with momentum, the indicator confirms a breakout/breakdown trade.
Buffers are applied to avoid false breakouts:
ATR Buffer: Price must extend at least ATR × multiplier beyond the range edge.
% Buffer: Price must extend at least a percentage of OR size (default 10%).
Confirmation Filters:
Candle must have a strong body (≥60% of total bar range).
Optional “two closes” rule: price must close outside the range for 2 consecutive candles.
BUY BO: Trigger when price closes above ORH + buffer with momentum.
SELL BD: Trigger when price closes below ORL – buffer with momentum.
Labels and alerts are plotted for quick action.
4. Practical Usage
Works best on 5-minute charts for intraday trading.
Designed to help traders capture both:
Range-bound moves during the day (mean reversion plays).
Strong directional breakouts when institutions push price beyond the opening range.
Particularly effective on expiry days, trending sessions, and major news days when breakouts are more likely.
On sideways days, Range Mode provides reliable scalp opportunities at the OR edges.
5. Features
Auto-plots Opening Range High, Low, Midline.
Box + line visuals (no repainting).
Buy/Sell labels for both Range Mode and Breakout Mode.
Customizable buffers (ATR, % of range) to suit volatility.
Alerts for all signals (breakouts and range plays).
Built with risk management in mind (suggested SL and TP shown on chart).
Pump/Dump Detector [Modular]//@version=5
indicator("Pump/Dump Detector ", overlay=true)
// ————— Inputs —————
risk_pct = input.float(1.0, "Risk %", minval=0.1)
capital = input.float(100000, "Capital")
stop_multiplier = input.float(1.5, "Stop Multiplier")
target_multiplier = input.float(2.0, "Target Multiplier")
volume_mult = input.float(2.0, "Volume Spike Multiplier")
rsi_low_thresh = input.int(15, "RSI Oversold Threshold")
rsi_high_thresh = input.int(85, "RSI Overbought Threshold")
rsi_len = input.int(2, "RSI Length")
bb_len = input.int(20, "BB Length")
bb_mult = input.float(2.0, "BB Multiplier")
atr_len = input.int(14, "ATR Length")
show_signals = input.bool(true, "Show Entry Signals")
use_orderflow = input.bool(true, "Use Order Flow Proxy")
use_ml_flag = input.bool(false, "Use ML Risk Flag")
use_session_filter = input.bool(true, "Use Volatility Sessions")
// ————— Symbol Filter (Optional) —————
symbol_nq = input.bool(true, "Enable NQ")
symbol_es = input.bool(true, "Enable ES")
symbol_gold = input.bool(true, "Enable Gold")
is_nq = str.contains(syminfo.ticker, "NQ")
is_es = str.contains(syminfo.ticker, "ES")
is_gold = str.contains(syminfo.ticker, "GC")
symbol_filter = (symbol_nq and is_nq) or (symbol_es and is_es) or (symbol_gold and is_gold)
// ————— Calculations —————
rsi = ta.rsi(close, rsi_len)
atr = ta.atr(atr_len)
basis = ta.sma(close, bb_len)
dev = bb_mult * ta.stdev(close, bb_len)
bb_upper = basis + dev
bb_lower = basis - dev
rolling_vol = ta.sma(volume, 20)
vol_spike = volume > volume_mult * rolling_vol
// ————— Session Filter (EST) —————
est_offset = -5
est_hour = (hour + est_offset + 24) % 24
session_filter = (est_hour >= 18 or est_hour < 6) or (est_hour >= 14 and est_hour < 17)
session_ok = not use_session_filter or session_filter
// ————— Order Flow Proxy —————
mfi = ta.mfi(close, 14)
buy_imbalance = ta.crossover(mfi, 50)
sell_imbalance = ta.crossunder(mfi, 50)
reversal_candle = close > open and close > ta.highest(close , 3)
// ————— ML Risk Flag (Placeholder) —————
ml_risk_flag = use_ml_flag and (ta.sma(close, 5) > ta.sma(close, 20))
// ————— Entry Conditions —————
long_cond = symbol_filter and session_ok and vol_spike and rsi < rsi_low_thresh and close < bb_lower and (not use_orderflow or (buy_imbalance and reversal_candle)) and (not use_ml_flag or ml_risk_flag)
short_cond = symbol_filter and session_ok and vol_spike and rsi > rsi_high_thresh and (not use_orderflow or sell_imbalance) and (not use_ml_flag or ml_risk_flag)
// ————— Position Sizing —————
risk_amt = capital * (risk_pct / 100)
position_size = risk_amt / atr
// ————— Plot Signals —————
plotshape(show_signals and long_cond, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(show_signals and short_cond, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// ————— Alerts —————
alertcondition(long_cond, title="Long Entry Alert", message="Pump fade detected: Long setup triggered")
alertcondition(short_cond, title="Short Entry Alert", message="Dump detected: Short setup triggered")
EMA Slopes Table (10/20/50/200)Gives you a box of 10,20,50 and 200 ema and indicates its sloping nature. If its in uptrend or downtrend.
1. Look for reversals when 200 is flat. Applies for both bearishness and bullishness
2. Look for 10,20 and 50 to be in sync always for powerful moves
MCL - Real Price (KRW/USD) - PUBLICThis indicator was developed by the chart analysis specialist team at the YouTube channel Money Copy Lab.
This indicator reflects the exchange rate between the US dollar and the South Korean won, enabling you to view domestic stock and domestic stock index charts correctly from an American investor's perspective.
As foreign investors, particularly American investors, participate heavily in domestic stocks, such exchange rate-reflected charts are highly significant.
Price Difference Between Two Correlated Symbols//@version=5
indicator("Price Difference Between Two Symbols", overlay=true)
// === User Inputs ===
symbol1 = input.symbol("Pepperstone:US500", "Symbol 1")
symbol2 = input.symbol("CME_MINI:ES1!", "Symbol 2")
tf = input.timeframe("", "Resolution (leave blank to use chart TF)")
// === Price Feeds ===
price1 = request.security(symbol1, tf == "" ? timeframe.period : tf, close)
price2 = request.security(symbol2, tf == "" ? timeframe.period : tf, close)
// === Difference Calculation ===
difference = price1 - price2
// === Plotting ===
plot(difference, title="Price Difference", color=color.new(color.teal, 0), linewidth=2)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)
// === Debug Info (Optional) ===
// label.new(bar_index, na, text="Price1: " + str.tostring(price1) + " Price2: " + str.tostring(price2), style=label.style_label_left, yloc=yloc.abovebar)
Luxy trend & Momentum Indicators Suit V2Luxy Trend & Momentum Indicator Suite V2
The Luxy Trend & Momentum Suite V2 is a multi-purpose technical analysis tool designed to help traders quickly identify high-probability trend-following and momentum-based entries across timeframes.
This tool combines the most battle-tested market filters (EMAs, VWAP, MACD, ZLSMA, Supertrend, UT Bot, Volume/ADX/RSI filters) into a unified signal framework — backed by an optional Bias Table that displays alignment across methods and timeframes.
BACKGROUND — ABOUT THIS METHOD
This Indicators Suite is based on momentum-trend alignment , a trading methodology that:
* Confirms trend structure using moving averages (EMA crossovers & price vs EMA-200),
* Validates trend strength using MACD separation, volume pressure, and ADX confirmation,
* Confirms timing using momentum oscillators (RSI pullbacks), VWAP positioning, and trend filters,
* Optionally delays entries using the UT Bot trailing confirmation or Supertrend .
It's a multi-layered filtering helps reduce false signals, especially in choppy conditions.
USAGE
This indicator is best suited for:
Intraday trend trading (scalping or day trading),
Swing trading based on HTF confirmation (1D/1W),
Combining bias + technical signal + volume + price context for cleaner entries.
It is especially powerful on assets with well-defined structure (e.g., crypto, indices, high-volume stocks).
Signal Labels
The script plots `LONG` (green) or `SHORT` (red) labels when all your configured filters align.
✅ To use these labels effectively:
Only take LONG signals when the bias table shows green ("BULLISH"),
Only take SHORT when the bias table shows red ("BEARISH"),
Avoid signals on NEUTRAL bias (gray), or consider smaller positions.
Bias Table Panel
The indicator features a compact Bias summary table , showing the current directional bias from:
Timeframe trends (1H, 4H, 1D)
Indicator states (EMA cross, EMA200, VWAP, MACD, ZLSMA, UT Bot, Supertrend)
Each cell is color-coded:
🟢 Green = Bullish
🔴 Red = Bearish
⚪ Gray = Neutral
Trend Filters
These are the primary trend components:
EMA Short vs Long : Fast/Slow structure
EMA-200 : Long-term bias
ZLSMA : Zero-lag regression slope
Supertrend : Dynamic trendline with noise-filtering
UT Bot : ATR-based trailing signal with optional filters (swing, %change, delay)
Momentum & Entry Filters
The indicator offers several modular filters to refine entry signals:
✅ MACD Separation : Requires a minimum spread between MACD and Signal line (adjustable in ATR units).
✅ VWAP Filter : Confirms that price is above/below anchored VWAP.
✅ RSI Pullback Zone : Only triggers signals when RSI is between configured pullback ranges.
✅ Volume Strength : Only confirms signals when current volume is above SMA × factor (e.g. 1.2×).
✅ ADX/DI Filter : Enforces trend strength requirements based on ADX, DI+ and DI-.
RECOMMENDED WORKFLOWS
🔹 Intraday Trend Trading
Primary TF: "1H"
Confirmation: "4H"
Bias method: EMA(20/50) or ZLSMA
Lookback: 5 bars
VWAP: Session anchor
UT Bot: Enabled with 1.3 sensitivity, ATR=10
🔹 Swing Trading
Primary TF: "1D"
Confirmation: "1W"
Bias method: EMA(20/50) or MACD
Lookback: 10–20
VWAP: Weekly or Monthly
UT Bot: Disabled or conservative (1.7 key, ATR=14)
🔹 Position Trading
Primary: "1W"
Confirmation: "1M"
Bias method: EMA(50/200)
Filters: Strong MACD + Volume + ADX
UT: Disabled
SETTINGS
You can customize:
All EMA lengths (short, long, very long)
MACD periods and buffer thresholds
VWAP anchor and bands mode (Std Dev or %)
ZLSMA length and offset
UT Bot sensitivity, ATR, and filters
Supertrend ATR logic and neutral bars
Volume, ADX, RSI, and Donchian breakouts
Table text size, position, and visibility
Each input includes tooltips with suggested ranges and explanations.
🔶 LIMITATIONS
This is an **indicator**, not a strategy. It does **not place orders**.
UT Bot and Bias alignment work better on assets with structure and volume.
Repainting is avoided by using bar close logic where possible.
Corporate-event VWAPs (Earnings, Dividends) depend on data availability.
Always backtest , adjust filters per asset, and confirm entries with price action and context.
📧 Feedback & improvement requests:
Day Label-WeeklyProfile-AdrianFx94This indicator is designed for Daily charts.
It writes a small label (like “L, M, G, V”) inside each candle’s body, exactly in the middle between the open and close.
Each label tells you which weekday closed that candle:
L → Monday
M → Tuesday
M/ME → Wednesday
G → Thursday
V → Friday
(Saturday and Sunday aren’t marked.)
Why it’s useful
It gives you a quick visual map of the week’s progression, day by day.
You immediately see the sequence of daily closes inside a week.
You can spot when the market trended cleanly through the week (labels step up or down neatly).
You notice when there’s choppy or balanced behavior (labels are mixed, up and down).
You can identify which day was the turning point or initiative day (a single label much higher or lower than the rest).
It’s a simple way to read the weekly profile of price action without having to remember which candle is which day.
Controls you have
You can change the letters (for example, instead of “L” you could write “Mo”).
You can change the text size, color, and add a background.
You can choose to show:
All weeks
Only this week
Only last week
That helps when you want to focus on a single week’s structure.
Important notes
It only works on Daily charts. On smaller timeframes it will just warn you.
The label sticks to the candle’s body, so even if you zoom or pan, it stays anchored where that day closed.
It’s not a volume profile or TPO — it’s purely about the closing position of each day.
👉 In short: this indicator is like a weekly diary on your chart — each candle is marked with the day of the week, so you can quickly analyze how the market behaved across past weeks, which days carried strength, and where momentum shifted.
This indicator shows a short label for each weekday directly inside the daily candle.
The nice part is: you can choose the letters yourself.
For example, if you are Italian, you might want:
Monday → L (Lunedì)
Tuesday → M (Martedì)
Wednesday → ME (Mercoledì)
Thursday → G (Giovedì)
Friday → V (Venerdì)
If you prefer English, you could set:
Monday → M
Tuesday → T
Wednesday → W
Thursday → Th
Friday → F
If you want very short codes, you could just write 1, 2, 3, 4, 5.
So the indicator is language-neutral — you adapt it to your country, your style, or even your personal system of marks.
3Signal Strategy+// This source code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// Script combining Support Resistance Strategy and Buy/Sell Filter with 3 Moving Averages 3Signal Strategy+ by InteliCryptos
//@version=6
indicator("3Signal Strategy+", overlay=true, max_lines_count=500)
// ====== Inputs Section ======
// HHLL Strategy Inputs
lb = input.int(3, title="Support HL", minval=1)
rb = input.int(4, title="Resistance LH", minval=1)
showsupres = input.bool(true, title="Support/Resistance", inline="srcol")
supcol = input.color(color.red, title="", inline="srcol")
rescol = input.color(color.lime, title="", inline="srcol")
srlinestyle = input.string("solid", title="Line Style", options= , inline="style")
srlinewidth = input.int(1, title="Line Width", minval=1, maxval=5, inline="style")
changebarcol = input.bool(true, title="Change Bar Color", inline="bcol")
bcolup = input.color(color.yellow, title="", inline="bcol")
bcoldn = input.color(color.black, title="", inline="bcol")
// Twin Range Filter Inputs
source = input(close, title="Source")
per1 = input.int(27, minval=1, title="Fast Period")
mult1 = input.float(1.6, minval=0.1, title="Fast Range")
per2 = input.int(55, minval=1, title="Slow Period")
mult2 = input.float(2, minval=0.1, title="Slow Range")
// Moving Average Inputs
ma_type1 = input.string("EMA", "MA 1 Type (Fast)", options= , group="Moving Averages")
ma_length1 = input.int(12, "MA 1 Length", minval=1, group="Moving Averages")
ma_color1 = input.color(color.blue, "MA 1 Color", group="Moving Averages")
ma_type2 = input.string("EMA", "MA 2 Type (Medium)", options= , group="Moving Averages")
ma_length2 = input.int(50, "MA 2 Length", minval=1, group="Moving Averages")
ma_color2 = input.color(color.yellow, "MA 2 Color", group="Moving Averages")
ma_type3 = input.string("EMA", "MA 3 Type (Slow)", options= , group="Moving Averages")
ma_length3 = input.int(200, "MA 3 Length", minval=1, group="Moving Averages")
ma_color3 = input.color(color.purple, "MA 3 Color", group="Moving Averages")
ma_timeframe = input.string("", "MA Timeframe (e.g., 1m, 5m, 1H, D)", group="Moving Averages")
// ====== HHLL Strategy Logic ======
ph = ta.pivothigh(lb, rb)
pl = ta.pivotlow(lb, rb)
hl = not na(ph) ? 1 : not na(pl) ? -1 : na
zz = not na(ph) ? ph : not na(pl) ? pl : na
// Boolean conditions for ta.valuewhen
is_hl_minus1 = hl == -1
is_hl_plus1 = hl == 1
is_zz_valid = not na(zz)
prev_hl = ta.valuewhen(is_hl_minus1 or is_hl_plus1, hl, 1)
prev_zz = ta.valuewhen(is_zz_valid, zz, 1)
zz := not na(pl) and hl == -1 and prev_hl == -1 and pl > prev_zz ? na : zz
zz := not na(ph) and hl == 1 and prev_hl == 1 and ph < prev_zz ? na : zz
hl := hl == -1 and prev_hl == 1 and zz > prev_zz ? na : hl
hl := hl == 1 and prev_hl == -1 and zz < prev_zz ? na : hl
zz := na(hl) ? na : zz
findprevious() =>
ehl = hl == 1 ? -1 : 1
loc1 = 0.0, loc2 = 0.0, loc3 = 0.0, loc4 = 0.0
xx = 0
for x = 1 to 1000
if hl == ehl and not na(zz )
loc1 := zz
xx := x + 1
break
ehl := hl
for x = xx to 1000
if hl == ehl and not na(zz )
loc2 := zz
xx := x + 1
break
ehl := hl == 1 ? -1 : 1
for x = xx to 1000
if hl == ehl and not na(zz )
loc3 := zz
xx := x + 1
break
ehl := hl
for x = xx to 1000
if hl == ehl and not na(zz )
loc4 := zz
break
// Calling findprevious on each bar
= findprevious()
var float a = na
var float b = na
var float c = na
var float d = na
var float e = na
if not na(hl)
a := zz
b := loc1
c := loc2
d := loc3
e := loc4
// ====== Twin Range Filter Logic ======
smoothrng(x, t, m) =>
wper = t * 2 - 1
avrng = ta.ema(math.abs(x - x ), t)
smoothrng = ta.ema(avrng, wper) * m
smoothrng
smrng1 = smoothrng(source, per1, mult1)
smrng2 = smoothrng(source, per2, mult2)
smrng = (smrng1 + smrng2) / 2
rngfilt(x, r) =>
var float rngfilt = x
rngfilt := x > nz(rngfilt ) ? (x - r < nz(rngfilt ) ? nz(rngfilt ) : x - r) :
(x + r > nz(rngfilt ) ? nz(rngfilt ) : x + r)
rngfilt
filt = rngfilt(source, smrng)
var float upward = 0.0
var float downward = 0.0
upward := filt > filt ? nz(upward ) + 1 : filt < filt ? 0 : nz(upward )
downward := filt < filt ? nz(downward ) + 1 : filt > filt ? 0 : nz(downward )
// ====== Moving Average Logic ======
ma_source = ma_timeframe == "" ? close : request.security(syminfo.tickerid, ma_timeframe, close, lookahead=barmerge.lookahead_on)
ma1 = ma_type1 == "EMA" ? ta.ema(ma_source, ma_length1) :
ma_type1 == "SMA" ? ta.sma(ma_source, ma_length1) :
ta.wma(ma_source, ma_length1)
ma2 = ma_type2 == "EMA" ? ta.ema(ma_source, ma_length2) :
ma_type2 == "SMA" ? ta.sma(ma_source, ma_length2) :
ta.wma(ma_source, ma_length2)
ma3 = ma_type3 == "EMA" ? ta.ema(ma_source, ma_length3) :
ma_type3 == "SMA" ? ta.sma(ma_source, ma_length3) :
ta.wma(ma_source, ma_length3)
// ====== Combined Strategy Conditions ======
_hh = not na(zz) and (a > b and a > c and c > b and c > d)
_ll = not na(zz) and (a < b and a < c and c < b and c < d)
_hl = not na(zz) and ((a >= c and (b > c and b > d and d > c and d > e)) or (a < b and a > c and b < d))
_lh = not na(zz) and ((a <= c and (b < c and b < d and d < c and d < e)) or (a > b and a < c and b > d))
hband = filt + smrng
lband = filt - smrng
longCond = source > filt and source > source and upward > 0 or source > filt and source < source and upward > 0
shortCond = source < filt and source < source and downward > 0 or source < filt and source > source and downward > 0
var int CondIni = 0
CondIni := longCond ? 1 : shortCond ? -1 : nz(CondIni )
long = longCond and CondIni == -1
short = shortCond and CondIni == 1
// ====== Plotting Section ======
var float res = na
var float sup = na
res := _lh ? zz : res
sup := _hl ? zz : sup
var int trend = na
trend := close > res ? 1 : close < sup ? -1 : nz(trend )
res := (trend == 1 and _hh) or (trend == -1 and _lh) ? zz : res
sup := (trend == 1 and _hl) or (trend == -1 and _ll) ? zz : sup
rechange = res != res
suchange = sup != sup
var line resline = na
var line supline = na
if showsupres
if rechange
line.set_x2(resline, bar_index)
line.set_extend(id=resline, extend=extend.none)
resline := line.new(bar_index - rb, res, bar_index, res, color=rescol, extend=extend.right, style=srlinestyle == "solid" ? line.style_solid : srlinestyle == "dashed" ? line.style_dashed : line.style_dotted, width=srlinewidth)
if suchange
line.set_x2(supline, bar_index)
line.set_extend(id=supline, extend=extend.none)
supline := line.new(bar_index - rb, sup, bar_index, sup, color=supcol, extend=extend.right, style=srlinestyle == "solid" ? line.style_solid : srlinestyle == "dashed" ? line.style_dashed : line.style_dotted, width=srlinewidth)
// Plot HHLL signals
plotshape(_hl, text="HL", title="Higher Low", style=shape.labelup, color=color.lime, textcolor=color.black, location=location.belowbar, offset=-rb)
plotshape(_hh, text="HH", title="Higher High", style=shape.labeldown, color=color.lime, textcolor=color.black, location=location.abovebar, offset=-rb)
plotshape(_ll, text="LL", title="Lower Low", style=shape.labelup, color=color.red, textcolor=color.white, location=location.belowbar, offset=-rb)
plotshape(_lh, text="LH", title="Lower High", style=shape.labeldown, color=color.red, textcolor=color.white, location=location.abovebar, offset=-rb)
// Plot Range Filter signals
plotshape(long, title="Long", text="Long", style=shape.labelup, textcolor=color.black, size=size.tiny, location=location.belowbar, color=color.new(color.lime, 0))
plotshape(short, title="Short", text="Short", style=shape.labeldown, textcolor=color.white, size=size.tiny, location=location.abovebar, color=color.new(color.red, 0))
// Plot Moving Averages
plot(ma1, title="MA Fast (12)", color=ma_color1, linewidth=2)
plot(ma2, title="MA Medium (50)", color=ma_color2, linewidth=2)
plot(ma3, title="MA Slow (200)", color=ma_color3, linewidth=2)
barcolor(changebarcol ? (trend == 1 ? bcolup : bcoldn) : na)
// ====== Alerts Section ======
alertcondition(long, title="Long", message="Long")
alertcondition(short, title="Short", message="Short")
RVM LLS Indicator and Low cheat Set upLow cheat set up. The indicator helps for a low stop loss entry. Risk reward should be well managed. Use it at your own risk. Enjoy.
Yaso- Structural Signals: Buy/Sell (Clean v5)//@version=5
indicator("Structural Signals: Buy/Sell (Clean v5)", overlay=true)
//===================== Inputs =====================
grpCtx = "Context (Structure)"
lenDon = input.int(20, "Donchian Lookback (S/R proxy)", minval=5, group=grpCtx)
ema20On = input.bool(true, "Show EMA 20", group=grpCtx)
ema50On = input.bool(true, "Show EMA 50", group=grpCtx)
ema200On = input.bool(true, "Show EMA 200", group=grpCtx)
grpVol = "Volume Confirmation"
volLen = input.int(20, "Volume SMA Length", minval=2, group=grpVol)
volMult = input.float(1.5, "Volume Spike × SMA", minval=1.0, step=0.1, group=grpVol)
grpCand = "Candlestick Reversal (at Structure)"
useHammer = input.bool(true, "BUY: Hammer/Bottoming Tail near Support", group=grpCand)
useStar = input.bool(true, "SELL: Shooting Star/Topping Tail near Resistance", group=grpCand)
srNearPct = input.float(0.004, "‘Near’ S/R tolerance (0.004=0.4%)", step=0.001, minval=0.0, group=grpCand)
grpBreak = "Breakouts / Breakdowns"
useBO = input.bool(true, "BUY: Breakout above Resistance (Donchian High)", group=grpBreak)
useBD = input.bool(true, "SELL: Breakdown below Support (Donchian Low)", group=grpBreak)
grpPats = "Double Tops / Bottoms (pivots)"
useDB = input.bool(true, "BUY: Double Bottom / Higher Low", group=grpPats)
useDT = input.bool(true, "SELL: Double Top / Lower High", group=grpPats)
pvLeft = input.int(3, "Pivot Left Bars", minval=2, group=grpPats)
pvRight = input.int(3, "Pivot Right Bars", minval=2, group=grpPats)
matchTolPct = input.float(0.0075, "Price Match Tolerance (0.75%)", step=0.0005, minval=0.0, group=grpPats)
grpXover = "Trend Filters (Crosses)"
useGolden = input.bool(true, "BUY: Golden Cross (EMA50 > EMA200)", group=grpXover)
useDeath = input.bool(true, "SELL: Death Cross (EMA50 < EMA200)", group=grpXover)
grpGap = "Gap Fills (Daily preferred)"
useGapUpRev = input.bool(true, "SELL: Gap-Up Fill & Reversal (close < prior close)", group=grpGap)
useGapDnRev = input.bool(true, "BUY: Gap-Down Fill & Reversal (close > prior close)", group=grpGap)
minGapPct = input.float(0.01, "Min Gap % (1% = 0.01)", minval=0.0, step=0.001, group=grpGap)
grpAgg = "Alert Controls"
aggregateAlerts = input.bool(true, "Enable Aggregate BUY/SELL Alerts", group=grpAgg)
//===================== Context =====================
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
donHi = ta.highest(high, lenDon)
donLo = ta.lowest(low, lenDon)
plot(ema20On ? ema20 : na, "EMA 20", color=color.new(color.teal, 0), linewidth=2)
plot(ema50On ? ema50 : na, "EMA 50", color=color.new(color.orange, 0), linewidth=2)
plot(ema200On ? ema200 : na, "EMA 200", color=color.new(color.blue, 0), linewidth=2)
plot(donHi, "Donchian High", color=color.new(color.red, 40))
plot(donLo, "Donchian Low", color=color.new(color.green,40))
volSMA = ta.sma(volume, volLen)
volSpike = volume > volSMA * volMult
//===================== Helpers =====================
near(val, ref, pct) =>
// true if |val - ref| / ref <= pct (with nz guard)
math.abs(val - ref) / nz(ref, val) <= pct
lowerWick() =>
(open < close ? open : close) - low
upperWick() =>
high - (open > close ? open : close)
bodySize() =>
math.abs(close - open)
isHammer() =>
lw = lowerWick()
uw = upperWick()
bd = bodySize()
lw >= bd * 2 and uw <= bd * 0.6 and close > open
isShootingStar() =>
lw = lowerWick()
uw = upperWick()
bd = bodySize()
uw >= bd * 2 and lw <= bd * 0.6 and close < open
nearSupport = near(low, donLo, srNearPct) or near(low, ema200, srNearPct)
nearResist = near(high, donHi, srNearPct) or near(high, ema200, srNearPct)
//===================== Signals =====================
// Breakouts / Breakdowns
buyBreakout = useBO and ta.crossover(close, donHi ) and (volSpike or close > donHi )
sellBreakdown = useBD and ta.crossunder(close, donLo ) and (volSpike or close < donLo )
// Pivots → Double Bottom / Top
pL = ta.pivotlow(low, pvLeft, pvRight)
pH = ta.pivothigh(high, pvLeft, pvRight)
lastLow = ta.valuewhen(pL, low , 0)
prevLow = ta.valuewhen(pL, low , 1)
lastHigh = ta.valuewhen(pH, high , 0)
prevHigh = ta.valuewhen(pH, high , 1)
priceMatch(a, b, tol) =>
not na(a) and not na(b) and math.abs(a - b) / b <= tol
doubleBottom = useDB and priceMatch(lastLow, prevLow, matchTolPct) and nz(lastLow) > nz(prevLow)
doubleTop = useDT and priceMatch(lastHigh, prevHigh, matchTolPct) and nz(lastHigh) < nz(prevHigh)
// Crosses (trend)
goldenCross = useGolden and ta.crossover(ema50, ema200)
deathCross = useDeath and ta.crossunder(ema50, ema200)
// Gap fill reversals (daily)
isDaily = timeframe.isdaily
gapUp = isDaily and open > close * (1 + minGapPct)
gapDown = isDaily and open < close * (1 - minGapPct)
gapUpFillRev = useGapUpRev and gapUp and high >= close and close < close
gapDnFillRev = useGapDnRev and gapDown and low <= close and close > close
// Candles at structure
hammerAtSupport = useHammer and isHammer() and nearSupport
starAtResist = useStar and isShootingStar() and nearResist
// Aggregate booleans (no arrays, no loops)
anyBuy = hammerAtSupport or buyBreakout or doubleBottom or goldenCross or gapDnFillRev
anySell = starAtResist or sellBreakdown or doubleTop or deathCross or gapUpFillRev
//===================== Plots =====================
plotshape(hammerAtSupport, title="BUY: Hammer @ Support", style=shape.triangleup, color=color.new(color.lime, 0), size=size.tiny, location=location.belowbar, text="Hammer@S")
plotshape(buyBreakout, title="BUY: Breakout", style=shape.triangleup, color=color.new(color.green, 0), size=size.tiny, location=location.belowbar, text="BO")
plotshape(doubleBottom, title="BUY: Double Bottom", style=shape.triangleup, color=color.new(color.teal, 0), size=size.tiny, location=location.belowbar, text="DB")
plotshape(goldenCross, title="BUY: Golden Cross", style=shape.triangleup, color=color.new(color.aqua, 0), size=size.tiny, location=location.belowbar, text="GC")
plotshape(gapDnFillRev, title="BUY: Gap-Down Reversal",style=shape.triangleup, color=color.new(color.fuchsia,0), size=size.tiny, location=location.belowbar, text="GapDnREV")
plotshape(starAtResist, title="SELL: Star @ Resistance",style=shape.triangledown, color=color.new(color.red, 0), size=size.tiny, location=location.abovebar, text="Star@R")
plotshape(sellBreakdown, title="SELL: Breakdown", style=shape.triangledown, color=color.new(color.maroon, 0), size=size.tiny, location=location.abovebar, text="BD")
plotshape(doubleTop, title="SELL: Double Top", style=shape.triangledown, color=color.new(color.orange, 0), size=size.tiny, location=location.abovebar, text="DT")
plotshape(deathCross, title="SELL: Death Cross", style=shape.triangledown, color=color.new(color.purple, 0), size=size.tiny, location=location.abovebar, text="DC")
plotshape(gapUpFillRev, title="SELL: Gap-Up Reversal", style=shape.triangledown, color=color.new(color.yellow, 0), size=size.tiny, location=location.abovebar, text="GapUpREV")
plotshape(aggregateAlerts and anyBuy, title="BUY (Aggregate)", style=shape.labelup, color=color.new(color.green, 70), textcolor=color.black, text="BUY", location=location.belowbar, size=size.tiny)
plotshape(aggregateAlerts and anySell, title="SELL (Aggregate)", style=shape.labeldown, color=color.new(color.red, 70), textcolor=color.black, text="SELL", location=location.abovebar, size=size.tiny)
//===================== Alerts =====================
alertcondition(hammerAtSupport, "BUY: Hammer @ Support", "Hammer/Bottoming Tail at support on {{ticker}} {{interval}}")
alertcondition(buyBreakout, "BUY: Breakout", "Breakout above Donchian High on {{ticker}} {{interval}}")
alertcondition(doubleBottom, "BUY: Double Bottom", "Double Bottom/Higher Low on {{ticker}} {{interval}}")
alertcondition(goldenCross, "BUY: Golden Cross", "EMA50 crosses above EMA200 on {{ticker}} {{interval}}")
alertcondition(gapDnFillRev, "BUY: Gap-Down Reversal","Gap-down filled & reversed on {{ticker}} {{interval}}")
alertcondition(starAtResist, "SELL: Star @ Resistance","Shooting Star/Topping Tail at resistance on {{ticker}} {{interval}}")
alertcondition(sellBreakdown, "SELL: Breakdown", "Breakdown below Donchian Low on {{ticker}} {{interval}}")
alertcondition(doubleTop, "SELL: Double Top", "Double Top/Lower High on {{ticker}} {{interval}}")
alertcondition(deathCross, "SELL: Death Cross", "EMA50 crosses below EMA200 on {{ticker}} {{interval}}")
alertcondition(gapUpFillRev, "SELL: Gap-Up Reversal", "Gap-up filled & reversed on {{ticker}} {{interval}}")
// Aggregate
alertcondition(aggregateAlerts and anyBuy, "BUY: Aggregate", "Structural BUY signal on {{ticker}} {{interval}}")
alertcondition(aggregateAlerts and anySell, "SELL: Aggregate", "Structural SELL signal on {{ticker}} {{interval}}")
Student wyckoff relative strength Indicator cryptoRelative Strength Indicator crypto
Student wyckoff rs symbol USDT.D
Description
The Relative Strength (RS) Indicator compares the price performance of the current financial instrument (e.g., a stock) against another instrument (e.g., an index or another stock). It is calculated by dividing the closing price of the first instrument by the closing price of the second, then multiplying by 100. This provides a percentage ratio that shows how one instrument outperforms or underperforms another. The indicator helps traders identify strong or weak assets, spot market leaders, or evaluate an asset’s performance relative to a benchmark.
Key Features
Relative Strength Calculation: Divides the closing price of the current instrument by the closing price of the second instrument and multiplies by 100 to express the ratio as a percentage.
Simple Moving Average (SMA): Applies a customizable Simple Moving Average (default period: 14) to smooth the data and highlight trends.
Visualization: Displays the Relative Strength as a blue line, the SMA as an orange line, and colors bars (blue for rising, red for falling) to indicate changes in relative strength.
Flexibility: Allows users to select the second instrument via an input field and adjust the SMA period.
Applications
Market Comparison: Assess whether a stock is outperforming an index (e.g., S&P 500 or MOEX) to identify strong assets for investment.
Sector Analysis: Compare stocks within a sector or against a sector ETF to pinpoint leaders.
Trend Analysis: Use the rise or fall of the RS line and its SMA to gauge the strength of an asset’s trend relative to another instrument.
Trade Timing: Bar coloring helps quickly identify changes in relative strength, aiding short-term trading decisions.
Interpretation
Rising RS: Indicates the first instrument is outperforming the second (e.g., a stock growing faster than an index).
Falling RS: Suggests the first instrument is underperforming.
SMA as a Trend Filter: If the RS line is above the SMA, it may signal strengthening performance; if below, weakening performance.
Settings
Instrument 2: Ticker of the second instrument (default: QQQ).
SMA Period: Period for the Simple Moving Average (default: 14).
Notes
The indicator works on any timeframe but requires accurate ticker input for the second instrument.
Ensure data for both instruments is available on the selected timeframe for precise analysis.
OSOK [AMERICANA] x [TakingProphets]OVERVIEW
OSOK is an ICT-inspired execution framework designed to help traders map the interaction between Higher-Timeframe (HTF) liquidity sweeps, qualifying Order Blocks, and Current-Timeframe (CTF) confirmation signals — all within a single, structured workflow.
By sequencing an HTF CRT → Order Block → CTF CRT model and integrating IPDA 20 equilibrium context, this tool provides traders with a visual framework for aligning intraday execution decisions with higher-timeframe intent. All plotted elements — sweeps, blocks, open prices, and equilibrium levels — update continuously in real time.
Core Concepts (ICT-Based)
Candle Range Transition (CRT) Sweeps
Bullish CRT → The second candle runs below the first candle’s low and closes back inside its range.
Bearish CRT → The second candle runs above the first candle’s high and closes back inside its range.
These patterns are frequently associated with liquidity grabs and potential directional shifts.
HTF → CTF Alignment
-Detects valid HTF CRTs (e.g., Daily CRTs derived from H4 or Weekly CRTs derived from Daily).
-Locates a qualifying Order Block within HTF Candle-2 to identify areas of potential interest.
-Waits for a modified CRT confirmation on the current timeframe before signaling possible directional bias.
IPDA 20 Equilibrium
-Plots the midpoint of the daily highest and lowest prices over the last 20 periods.
-Provides a visual reference for premium and discount pricing zones.
How OSOK Works
Step 1 — HTF CRT Check
On each new HTF candle, the script scans for a clean CRT formation on the higher aggregation (e.g., H4 → D or D → W).
If found, it tags the candles as C1, C2, and C3 and optionally shades their backgrounds for clear visual parsing.
Step 2 — HTF Order Block Identification
Searches within HTF Candle-2 for a qualifying Order Block using a compact pattern filter.
Draws a persistent OB level with clear labeling for context.
Step 3 — CTF Confirmation (Modified CRT)
Monitors your current chart timeframe for a modified CRT in alignment with the HTF setup:
For bullish setups → waits for a bullish modified CRT and close above C1’s high zone.
For bearish setups → expects a bearish modified CRT and close below C1’s low zone.
Step 4 — Real-Time Maintenance
All labels, lines, and background spans update intrabar.
If the setup invalidates — for example, if implied targets are exceeded before entry — the layout resets and waits for the next valid sequence.
KEY FEATURES
HTF CRT Visualization
-Optional “×” markers on Daily/Weekly CRT sweeps.
-Independent background shading for C1, C2, and C3.
Order Block + Open Price Context
-Draws HTF Order Block levels and plots C3 Open Price (DOP) for additional directional reference.
CTF CRT Execution Cue
-Displays a modified CRT on your current timeframe when conditions align with the HTF narrative.
IPDA 20 Line + Label
-Plots a dynamic midpoint level with an optional label for quick premium/discount context.
Optimized Drawing Engine
-Lightweight, efficient use of chart objects ensures smooth performance without visual clutter.
INPUTS
-Higher Timeframe Settings
-Toggle markers for Daily/Weekly CRT sweeps.
-Enable and color C1, C2, and C3 background spans.
-IPDA Display Options
-Control visibility, color, and line style for IPDA 20 equilibrium levels.
-Sweep, OB, and Open Price Styles
-Per-element customization for colors, widths, and labels.
BEST PRACTICES
Start on H4 or Daily to identify valid HTF CRT formations.
Confirm a qualifying OB inside Candle-2.
Drop to your execution timeframe and wait for the modified CTF CRT confirmation before acting.
Use IPDA 20 equilibrium as a reference for premium vs. discount zones.
Combine with your ICT session bias and overall market context for optimal decision-making.
Important Notes
OSOK is not a buy/sell signal provider. It’s a visual framework for understanding ICT-based execution models.
All objects reset automatically when new HTF candles form or setups invalidate.
Works on any symbol and timeframe by default, with HTF mapping set to H4 → D and D → W.
SSMT [TakingProphets]OVERVIEW
SSMT (Sequential SMT) is an ICT-inspired divergence detection tool designed to help traders identify potential intermarket divergences using Quarterly Theory, a framework popularized within the ICT community by Trader Daye and FearingICT.
The indicator segments each trading day into structured time-based quarters and scans for Sequential SMT divergences across Daily, 90-minute, and Micro-session cycles — updating continuously in real time. This allows traders to visualize when institutional liquidity shifts are most likely, based on ICT’s time-of-day models.
Built on ICT’s Quarterly Theory
At the heart of SSMT is Quarterly Theory, a time-based framework used in ICT methodology. The model divides each trading day into four predictable phases, representing shifts between accumulation, manipulation, and distribution:
Daily Quarters (4 per day)
Q1: 18:00 – 00:00 ET
Q2: 00:00 – 06:00 ET
Q3: 06:00 – 12:00 ET
Q4: 12:00 – 18:00 ET
Additionally, the indicator refines timing with two further layers:
90-Minute Quarters → Splits Asia, London, New York AM, and New York PM into structured liquidity windows, helping intraday traders monitor session-specific SMTs.
Micro Quarters → Offers a granular breakdown of each session for scalpers who require precise entry timing.
By combining these cycles, SSMT provides a contextual framework for understanding when divergences may carry the highest institutional relevance.
How SSMT Detects SMT Divergences
Sequential SMT detection in SSMT works by comparing price behavior between your selected instrument and a correlated asset (default: CME_MINI:ES1!). It monitors current vs. previous highs and lows within the active quarter and identifies divergence patterns as they form:
Bullish SMT → Your instrument forms a higher low while the correlated asset does not.
Bearish SMT → Your instrument forms a lower high while the correlated asset does not.
Divergence lines and labels are plotted directly on your chart, and these drawings update dynamically in real time as new data comes in. Historical SMTs also persist beyond quarter boundaries for added confluence in your analysis.
Key Features
Three SMT Cycles in One Tool
-Daily Cycle → Track higher-timeframe divergences around key liquidity events.
-90-Minute Cycle → Ideal for timing intraday setups within major sessions.
-Micro Cycle → Provides highly detailed precision for scalpers trading engineered sweeps.
Per-Cycle Customization
-Toggle Daily, 90-Minute, and Micro SMT independently.
-Fully customize divergence line colors, styles, widths, and optional session boxes for clarity.
Smart Auto-Labeling
-Labels automatically display the correlated symbol (e.g., “SMT w/ES”).
-Divergence drawings persist historically for reference and context.
Instant Style Updates
-Any visual changes to colors, widths, or line styles are applied immediately across both active and historical SMT drawings.
Practical Use Cases
Scalpers → Spot Micro SMTs to refine entries with session-specific precision.
Intraday Traders → Track divergences across Asia, London, and New York sessions in real time.
Swing Traders → Combine Daily SMT divergences with HTF POIs for higher confluence.
ICT Traders → Built specifically around ICT teachings, this tool provides a clear, visual framework to apply Quarterly Theory and SMT models seamlessly.
Important Notes
SSMT is not a buy/sell signal generator. It is an analytical framework designed to help traders interpret ICT-based SMT concepts visually.
Always confirm divergences within your broader market narrative and risk management rules.