Indicadores y estrategias
RSI Dashboard Multi-TF This script displays RSI values from multiple timeframes in a compact dashboard directly on the chart.
It is designed for traders who want to quickly identify whether the market is overbought, oversold, or neutral across different timeframes, without constantly switching chart intervals.
The dashboard shows the RSI simultaneously for the following timeframes:
- 1 minute
- 3 minutes
- 5 minutes
- 15 minutes
- 1 hour
- 4 hours
- Daily
Typical use cases:
- Scalping & intraday trading
- Multi-timeframe analysis at a glance
- Entry confirmation (e.g. pullbacks, breakouts)
- Avoiding trades against overbought or oversold market conditions
- Complementing EMA, VWAP, or price action strategies
⚙️ Notes
This dashboard is an analysis tool, not an automated trading system.
No repainting (uses request.security).
Suitable for indices, forex, crypto, and commodities.
This RSI dashboard provides a fast, clear, and visually clean market overview across multiple timeframes, making it an ideal tool for active traders who want to make efficient and well-structured trading decisions.
Laughing Grid Radar
// ═══ Row 9: 底部装饰线 ═══
table.cell(panel, 0, 9, "▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄", bgcolor=c_void, text_color=c_neon_pink, text_halign=text.align_center, text_size=size.tiny)
table.merge_cells(panel, 0, 9, 1, 9)
GemScope Signals## 📊 GemScope Signals – Strategy Summary
This is an **automated trading strategy (Pine Script v5)** designed to trade market trends using a **custom GemScope oscillator**, **EMA trend filter**, **risk control**, and **multi-level take profit system**.
---
### 🔹 Trading Modes
* **Long Only**
* **Short Only**
* **Both Long & Short**
---
### 🔹 Entry Logic
**Long Trades**
* No active long position
* Entry allowed (not in cool-down after stop loss)
* GemScope shows **bullish trend (bull > bear)**
* If EMA filter is enabled: **price must be above EMA 200**
**Short Trades**
* No active short position
* Entry allowed
* GemScope gives **bearish signal (bull < bear)**
---
### 🔹 Exit Logic
* Positions close on **opposite GemScope signals**
* Short positions also close when:
* EMA filter is enabled
* Price moves above EMA
* Trend turns bullish
---
### 🔹 Stop Loss System
* **Percentage-based stop loss** for both long and short trades
* After a stop loss:
* New entries are blocked
* Trading resumes only after a fixed number of candles (cool-down)
---
### 🔹 Take Profit System (Partial Exits)
* Up to **three take-profit levels (TP1, TP2, TP3)**
* Each TP has:
* Independent price distance (%)
* Independent position size to close (%)
* Helps lock profits gradually while keeping runners open
---
### 🔹 Trend & Visuals
* Candles turn **green in bullish trend** and **red in bearish trend**
* **EMA 200** is plotted for trend confirmation
* Chart signals:
* **“G”** → Long signal
* **“S”** → Short signal
---
### 🔹 Risk & Money Management
* Uses **100% of account equity per trade**
* **No pyramiding** (one trade at a time)
* Built-in protection against over-trading after losses
---
### 🔹 Overall Purpose
The strategy aims to:
* Trade only in **confirmed trends**
* Reduce false entries using EMA filtering
* Protect capital with stop loss and cool-down
* Maximize profits using **structured partial exits**
Ultimate Indicator Hanno//@version=5
// ╔══════════════════════════════════════════════════════════════════════╗
// ║ 🚀 ULTIMATE SPOT TRADING ASSISTANT ║
// ╠══════════════════════════════════════════════════════════════════════╣
// ║ Indikator ini dibuat exclusive untuk member Tradingtalk.web.id ║
// ║ Dilarang menyebarkan tanpa izin dari Tradingtalk.web.id ║
// ║ Dibuat Untuk Scalping, Daytrading & Swing Trading ║
// ╚══════════════════════════════════════════════════════════════════════╝
indicator("Ultimate Trading Assistant ", overlay=true, max_boxes_count=500, max_lines_count=500, max_labels_count=50)
// --- 1. SETTINGS ---
// Group: Volume Profile
int lookback_length = input.int(300, "VP Range (Candle)", group="Volume Profile", minval=50)
int row_size = input.int(100, "VP Resolusi", group="Volume Profile", minval=10)
int val_area_pct = input.int(70, "Value Area %", group="Volume Profile", minval=1)
float width_pct = input.float(40, "Lebar Histogram (%)", group="Volume Profile")
// Group: Indikator Penguat
int ema_len = input.int(200, "EMA Trend Filter", group="Indikator Penguat")
int rsi_len = input.int(14, "RSI Momentum", group="Indikator Penguat")
// Group: UI
bool show_dash = input.bool(true, "Tampilkan Dashboard", group="UI")
bool show_sr = input.bool(true, "Tampilkan S1/S2 & R1/R2", group="UI")
bool show_chart_signal = input.bool(true, "Tampilkan Segitiga Signal di Chart", group="UI")
string box_theme = input.string("Dark", "Tampilan Theme (Box & Table)", options= , group="UI")
// Warna
color bull_col = input.color(color.new(color.teal, 60), "Warna Buy")
color bear_col = input.color(color.new(color.red, 60), "Warna Sell")
color poc_col = input.color(color.yellow, "Warna POC")
color va_col = input.color(color.red, "Warna Garis VAH/VAL")
color sr_col = input.color(color.new(color.blue, 30), "Warna S/R Lines")
// --- 2. HELPER FUNCTIONS ---
get_txt_color(color bg_color) =>
r = color.r(bg_color)
g = color.g(bg_color)
b = color.b(bg_color)
luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255
luminance > 0.5 ? color.black : color.white
// --- 3. CALCULATIONS (INDICATORS) ---
// Indikator ini dihitung setiap candle
float ema_filter = ta.ema(close, ema_len)
float rsi_val = ta.rsi(close, rsi_len)
// --- VPA CALCULATIONS ---
float avg_vol = ta.sma(volume, 20)
float spread = high - low
float avg_spread = ta.sma(spread, 20)
bool vpa_high_vol = volume > (avg_vol * 1.5)
bool vpa_low_vol = volume < (avg_vol * 0.5)
bool vpa_wide_spread = spread > (avg_spread * 1.2)
bool vpa_narrow_spread = spread < (avg_spread * 0.8)
// Plot EMA
plot(ema_filter, "EMA 200", color=color.new(color.orange, 20), linewidth=2)
// --- 4. VOLUME PROFILE & MAIN LOGIC ---
// Variabel persistent (var)
var box vol_boxes = array.new_box()
var line poc_line = na
var line vah_line = na
var line val_line = na
// Line S/R Variables
var line r1_line = na
var line r2_line = na
var line s1_line = na
var line s2_line = na
var label vah_lbl = na
var label val_lbl = na
var label poc_lbl = na
var label signal_lbl = na
// Label S/R Variables
var label r1_lbl = na
var label r2_lbl = na
var label s1_lbl = na
var label s2_lbl = na
var table info_table = table.new(position.top_right, 2, 6, border_width=1)
// Blok ini HANYA jalan di candle terakhir (Realtime/Closing)
if barstate.islast
// -- A. VP CORE LOGIC --
float highest_p = high
float lowest_p = low
int safe_lookback = math.min(lookback_length, bar_index)
// Loop mencari High/Low range
for i = 0 to safe_lookback - 1
highest_p := math.max(highest_p, high )
lowest_p := math.min(lowest_p, low )
float price_range = highest_p - lowest_p
float step = price_range / row_size
// Inisialisasi Array
float total_vol_arr = array.new_float(row_size, 0.0)
float vol_bull = array.new_float(row_size, 0.0)
float vol_bear = array.new_float(row_size, 0.0)
float grand_total_vol = 0.0
// Loop mengisi Volume Profile
for i = 0 to safe_lookback - 1
float c_mid = (high + low ) / 2
int row_idx = math.floor((c_mid - lowest_p) / step)
if row_idx >= row_size
row_idx := row_size - 1
if row_idx < 0
row_idx := 0
float v = volume
grand_total_vol := grand_total_vol + v
// Update total volume array
float current_total = array.get(total_vol_arr, row_idx)
array.set(total_vol_arr, row_idx, current_total + v)
if close >= open
float current_bull = array.get(vol_bull, row_idx)
array.set(vol_bull, row_idx, current_bull + v)
else
float current_bear = array.get(vol_bear, row_idx)
array.set(vol_bear, row_idx, current_bear + v)
// -- B. FIND POC & VA --
float max_row_vol = 0.0
int poc_idx = 0
// Cari POC
for i = 0 to row_size - 1
float tv = array.get(total_vol_arr, i)
if tv > max_row_vol
max_row_vol := tv
poc_idx := i
// Cari Value Area (VAH/VAL)
float target_vol = grand_total_vol * (val_area_pct / 100.0)
float current_va_vol = array.get(total_vol_arr, poc_idx)
int up_idx = poc_idx
int dn_idx = poc_idx
while current_va_vol < target_vol
float vol_up = (up_idx < row_size - 1) ? array.get(total_vol_arr, up_idx + 1) : 0.0
float vol_dn = (dn_idx > 0) ? array.get(total_vol_arr, dn_idx - 1) : 0.0
if vol_up == 0.0 and vol_dn == 0.0
break
if vol_up >= vol_dn
up_idx := up_idx + 1
current_va_vol := current_va_vol + vol_up
else
dn_idx := dn_idx - 1
current_va_vol := current_va_vol + vol_dn
// -- C. CLEANUP & PREP DRAWING --
if array.size(vol_boxes) > 0
for i = 0 to array.size(vol_boxes) - 1
box.delete(array.get(vol_boxes, i))
array.clear(vol_boxes)
line.delete(poc_line)
line.delete(vah_line)
line.delete(val_line)
line.delete(r1_line)
line.delete(r2_line)
line.delete(s1_line)
line.delete(s2_line)
label.delete(vah_lbl)
label.delete(val_lbl)
label.delete(poc_lbl)
label.delete(signal_lbl)
label.delete(r1_lbl)
label.delete(r2_lbl)
label.delete(s1_lbl)
label.delete(s2_lbl)
int right_anchor = bar_index + 10
// -- D. CALCULATE S/R BASED ON VP PEAKS (HVN) --
float max_vol_up = 0.0
int r1_idx = up_idx
if up_idx < row_size - 1
for k = up_idx + 1 to row_size - 1
float v = array.get(total_vol_arr, k)
if v > max_vol_up
max_vol_up := v
r1_idx := k
float max_vol_dn = 0.0
int s1_idx = dn_idx
if dn_idx > 0
for k = dn_idx - 1 to 0
float v = array.get(total_vol_arr, k)
if v > max_vol_dn
max_vol_dn := v
s1_idx := k
// -- DRAW BOXES (HISTOGRAM) --
for i = 0 to row_size - 1
float t_v = array.get(total_vol_arr, i)
if t_v > 0
float b_top = lowest_p + (step * (i + 1))
float b_btm = lowest_p + (step * i)
int bar_len = math.round(safe_lookback * (t_v / max_row_vol) * (width_pct / 100))
if bar_len < 1
bar_len := 1
bool in_va = (i >= dn_idx and i <= up_idx)
// --- LOGIKA TEMA DARK/LIGHT UNTUK BOX CHART ---
color base_bull = na
color base_bear = na
if box_theme == "Dark"
base_bull := in_va ? bull_col : color.new(bull_col, 85)
base_bear := in_va ? bear_col : color.new(bear_col, 85)
else
base_bull := in_va ? color.new(bull_col, 80) : color.new(bull_col, 95)
base_bear := in_va ? color.new(bear_col, 80) : color.new(bear_col, 95)
// ---------------------------------------------
float v_b = array.get(vol_bull, i)
float v_s = array.get(vol_bear, i)
color final_col = v_b > v_s ? base_bull : base_bear
if i == r1_idx or i == s1_idx
final_col := color.new(sr_col, 40)
if i == poc_idx
final_col := color.new(poc_col, 30)
box b = box.new(left=right_anchor - bar_len, top=b_top, right=right_anchor, bottom=b_btm, border_width=0, bgcolor=final_col)
array.push(vol_boxes, b)
// -- E. PLOT MAIN LINES --
float poc_lvl = lowest_p + (step * poc_idx) + (step/2)
float vah_lvl = lowest_p + (step * up_idx) + (step/2)
float val_lvl = lowest_p + (step * dn_idx) + (step/2)
float r1_lvl = lowest_p + (step * r1_idx) + (step/2)
float s1_lvl = lowest_p + (step * s1_idx) + (step/2)
float r2_lvl = highest_p
float s2_lvl = lowest_p
poc_line := line.new(bar_index - safe_lookback, poc_lvl, right_anchor + 15, poc_lvl, color=poc_col, width=2)
poc_lbl := label.new(right_anchor + 15, poc_lvl, "POC " + str.tostring(poc_lvl, format.mintick), color=poc_col, textcolor=get_txt_color(poc_col), style=label.style_label_left, size=size.small)
vah_line := line.new(bar_index - safe_lookback, vah_lvl, right_anchor + 15, vah_lvl, color=va_col, width=1, style=line.style_dashed)
vah_lbl := label.new(right_anchor + 15, vah_lvl, "VAH", color=va_col, textcolor=get_txt_color(va_col), style=label.style_label_left, size=size.small)
val_line := line.new(bar_index - safe_lookback, val_lvl, right_anchor + 15, val_lvl, color=va_col, width=1, style=line.style_dashed)
val_lbl := label.new(right_anchor + 15, val_lvl, "VAL", color=va_col, textcolor=get_txt_color(va_col), style=label.style_label_left, size=size.small)
if show_sr
r1_line := line.new(bar_index - safe_lookback, r1_lvl, right_anchor + 15, r1_lvl, color=sr_col, width=1, style=line.style_solid)
r1_lbl := label.new(right_anchor + 15, r1_lvl, "Resist 1 (HVN)", color=sr_col, textcolor=color.white, style=label.style_label_left, size=size.small)
s1_line := line.new(bar_index - safe_lookback, s1_lvl, right_anchor + 15, s1_lvl, color=sr_col, width=1, style=line.style_solid)
s1_lbl := label.new(right_anchor + 15, s1_lvl, "Support 1 (HVN)", color=sr_col, textcolor=color.white, style=label.style_label_left, size=size.small)
r2_line := line.new(bar_index - safe_lookback, r2_lvl, right_anchor + 15, r2_lvl, color=sr_col, width=1, style=line.style_dotted)
r2_lbl := label.new(right_anchor + 15, r2_lvl, "Resist 2 (Top)", color=sr_col, textcolor=color.white, style=label.style_label_left, size=size.small)
s2_line := line.new(bar_index - safe_lookback, s2_lvl, right_anchor + 15, s2_lvl, color=sr_col, width=1, style=line.style_dotted)
s2_lbl := label.new(right_anchor + 15, s2_lvl, "Support 2 (Btm)", color=sr_col, textcolor=color.white, style=label.style_label_left, size=size.small)
// --- 5. LOGIC & SIGNAL ---
float fib_ext_1272 = highest_p + (price_range * 0.272)
string signal_title = "MENUNGGU..."
color signal_col = color.gray
bool is_uptrend = close > ema_filter
string trend_txt = is_uptrend ? "UPTREND" : "DOWNTREND"
color trend_col = is_uptrend ? color.teal : color.red
string rsi_state = rsi_val > 70 ? "OVERBOUGHT" : (rsi_val < 30 ? "OVERSOLD" : "NEUTRAL")
color rsi_bg_col = rsi_val > 50 ? color.new(color.blue, 40) : color.new(color.orange, 40)
string vpa_msg = ""
if vpa_high_vol and vpa_wide_spread
vpa_msg := "📈 VOLUME & SPREAD: Volume tinggi dengan spread lebar - validasi pergerakan kuat."
else if vpa_high_vol and vpa_narrow_spread
vpa_msg := "⚠️ VOLUME & SPREAD: Volume tinggi namun spread sempit - kemungkinan akumulasi atau distribusi."
else if vpa_low_vol and vpa_wide_spread
vpa_msg := "🎭 VOLUME & SPREAD: Spread lebar dengan volume rendah - potensi false breakout/trap."
else if vpa_low_vol
vpa_msg := "😴 VOLUME & SPREAD: Volume rendah - partisipasi pasar minimal."
else
vpa_msg := "⚪ VOLUME & SPREAD: Kondisi volume dan spread normal."
// --- ANALISIS LEVEL ---
string level_analysis = ""
float dist_to_vah = math.abs(close - vah_lvl) / syminfo.mintick
float dist_to_val = math.abs(close - val_lvl) / syminfo.mintick
float dist_to_poc = math.abs(close - poc_lvl) / syminfo.mintick
if close > vah_lvl
level_analysis := "📍 LEVEL: Harga BERADA DI ATAS VAH (breakout). "
if dist_to_vah <= 20
level_analysis := level_analysis + "Breakout masih rapuh (hanya " + str.tostring(dist_to_vah, "#") + " tick dari VAH)."
else
level_analysis := level_analysis + "Breakout kuat (" + str.tostring(dist_to_vah, "#") + " tick dari VAH)."
else if close < val_lvl
level_analysis := "📍 LEVEL: Harga BERADA DI BAWAH VAL (breakdown). "
if dist_to_val <= 20
Relative Volume Context [Alturoi]Relative Volume Context is an advanced volume analysis indicator designed to help traders understand whether current volume is truly unusual—or simply normal for that moment in time.
Unlike traditional volume or basic relative volume tools, this indicator models expected volume based on historical time-based behavior (minutes, hours, days, sessions) and compares it directly to what is happening now.
The result is clear, structured insight into:
Unusual participation
Abnormal activity
Quiet vs active market conditions
When volume confirms price —and when it doesn’t
This tool is built for day traders and swing traders who want volume context , not just volume bars.
📌 What Problem This Indicator Solves
Raw volume is deceptive.
High volume at the open, low volume at lunch, and rising volume into the close are normal market behaviors —yet most indicators treat them as equal.
Relative Volume Context fixes this by asking a better question:
“Is today’s volume high or low compared to what normally happens at this exact time?”
By conditioning volume expectations on time and session structure , the indicator filters out noise and highlights moments where participation genuinely deviates from the norm.
🧩 How Relative Volume Context Works (Conceptually)
At its core, the indicator compares:
Actual Volume
Expected Volume for this time bucket
A time bucket can include combinations such as:
Minute of the hour
Hour of the trading day
Day of the week or month
Broader calendar structure (months / quarters)
Expected volume is calculated using historical data for that same bucket , creating a fair, apples-to-apples comparison.
This produces several meaningful outputs:
Expected Volume: the typical volume level for the current time context.
Difference: actual minus expected.
Surprise (%): a normalized measure of how large the deviation is relative to expectation.
Z-Score (Mean mode): a statistical measure of how extreme current volume is compared to its historical distribution.
Sample Size & Confidence: transparency into how much historical data supports the expectation.
🧠 Built for Clarity and Performance
Efficient data handling for intraday charts
Adaptive period selection (Auto Selection)
Optional forecast of expected future volume
Clean HUD showing context, confidence, and interpretation
🛠 How to Use It (Best Practices)
Use it with price , not instead of price.
Treat high readings as context , not automatic signals.
Combine with structure, levels, and market conditions.
Pay attention to Confidence / N before trusting extreme readings.
Avoid over-interpreting early history with low sample sizes.
👥 Who This Indicator Is For
Day traders trading U.S. equities
Swing traders monitoring participation and follow-through
Traders who value context over hype
Users who want transparency, not black-box signals
Subscribe to Alturoi ’s private, invite-only indicators designed to support informed trading decisions.
Volume is most powerful when it explains why price is moving—not when it’s used in isolation.
📊 Understanding the HUD: What Each Metric Actually Means
The HUD is designed to answer one core question:
“Is this volume unusual in a way I should care about?”
Raw volume on its own is misleading. Each field in the HUD exists to remove a specific form of self‑deception and replace it with context you can reason about.
🧭 Bucket — Unusual compared to when?
Volume has a strong time structure. A spike at 9:31 AM means nothing unless it’s compared to other 9:31 AM bars — not lunch hours, not overnight, not Fridays.
The bucket defines the comparison group:
Same minute of the hour
Same hour of the day
Same day of the week, month, or quarter
Without this, expected volume becomes a global average — statistically wrong and operationally misleading.
⚙️ Method (Mean vs Percentile) — What kind of “normal” am I using?
Different methods answer different trading questions:
Mean: fast, stable, symmetric, and enables Z‑scores. Best when volume distributions are smooth.
Percentile: robust to outliers and news spikes. Answers how rare this volume is historically.
Mean measures deviation from equilibrium. Percentile measures rarity. If you don’t know the method, you can’t interpret the signal correctly.
🔢 N (Sample Size) — Is this statistic even trustworthy?
Statistics without sample size are vibes.
N = 12 → noise dressed as math
N = 200 → structure
Two identical surprise readings with different N values are not the same signal. This single number prevents false confidence.
📐 Confidence — How much weight should I give this?
Confidence is a human‑readable compression of N:
Low → exploratory only
Medium → usable with context
High → structurally reliable
This isn’t judgment — it’s statistical humility.
📊 Expected — Expected relative to what baseline?
Expected volume is the anchor of everything else.
Without seeing it:
You can’t tell whether surprise comes from a low or high base
You can’t sanity‑check the model
If Expected looks wrong, the signal is wrong — full stop.
⭐ Surprise (%) — How large is the deviation in practical terms?
Raw differences don’t scale. Surprise % normalizes across symbols, timeframes, and regimes.
A +80% surprise on SPY at 10:15 matters. A +5% surprise usually doesn’t. This is the actionability metric.
📐 Z‑Score — Is this statistically extreme or just mildly off?
Z‑score adds distribution context:
0.5σ → normal fluctuation
2σ → uncommon
3σ → rare, regime‑relevant
Two bars can share the same % surprise but have very different Z‑scores if volatility differs. Z tells you whether the market itself considers this bar “weird.”
The deeper point
Most volume indicators stop at: “Volume is high.”
Relative Volume Context forces the harder, more honest question:
“High compared to what, how rare, and how reliable is that comparison?”
That’s the difference between decorative indicators and decision‑support instruments .
🔍 Why This Matters for Day & Swing Traders
Relative Volume Context is not a signal generator . It is a decision-support tool .
Practical uses include:
Identifying unusual participation during breakouts or breakdowns
Distinguishing real interest from routine session volume
Avoiding false confidence in moves occurring on “normal” volume
Spotting regime shifts or news reactions (participation shocks)
Understanding when low volume truly signals lack of interest
Used correctly, it helps traders answer:
“Is this move being supported by abnormal activity, or is it just time-of-day noise?”
Disclaimer: This indicator is provided for educational and informational purposes only and does not constitute financial or investment advice. Trading involves risk, and past market behavior does not guarantee future results. Always use proper risk management and independent judgment.
Biotech Volume Oscillator1️⃣ What This Indicator Is (In One Sentence)
It tells you whether people are actually showing up to trade the stock, or if price is just drifting around on low interest.
That’s it.
It does not predict price.
It tells you whether a move is real or fragile.
2️⃣ What the Lines Mean
You see two lines:
🔵 Blue Line = Live Participation
Fast
Reacts immediately
Shows what traders are doing right now
Think:
“Is anyone actually trading this candle?”
🟠 Orange Line = Accepted Participation
Slower
Smoothed
Shows what the market has decided is normal
Think:
“Is this level of activity sticking?”
3️⃣ What the Numbers Mean (Very Important)
The numbers are percentages vs normal volume for this stock.
Around 0
Volume is normal
Nothing special happening
+10 to +25
Healthy interest
Traders are paying attention
Moves can continue
Above +25
Abnormal participation
News, hype, or institutions involved
Moves here tend to be fast
Below –20
Participation drying up
Drift, chop, fake breakouts
Below –30
Nobody is home
Price can move, but it’s fragile
Breakouts usually fail
4️⃣ How to Use It (Step-by-Step)
Step 1: Ignore Price for a Second
Look only at the oscillator.
Ask:
“Is this above zero or below zero?”
Step 2: Look at Direction
Rising oscillator → interest increasing
Falling oscillator → interest fading
Step 3: Compare Blue vs Orange
✅ Good / Healthy
Blue above orange
Both rising
→ New participation is entering
⚠️ Warning
Price rising
Blue flat or falling
Orange flat
→ Float, not conviction
🚨 Distribution
Blue rolls over from high levels
Orange follows
Price still looks “fine”
→ Selling into strength
Swing Stockpicking Dashboard//@version=5
indicator("Swing Stockpicking Dashboard (Mansfield RS + Trend Template)", overlay=true, max_labels_count=500)
// ---------- Inputs ----------
bench = input.symbol("SPY", "Benchmark (para RS)")
rsLen = input.int(252, "52w lookback (barras)", minval=20)
rsMaLen = input.int(252, "RS base MA (barras)", minval=20)
ma50Len = input.int(50, "SMA rápida", minval=1)
ma150Len = input.int(150, "SMA media", minval=1)
ma200Len = input.int(200, "SMA lenta", minval=1)
slopeLookback = input.int(22, "Pendiente MA200 (barras)", minval=1)
scoreThreshold = input.int(5, "Umbral score (0–7)", minval=0, maxval=7)
showMAs = input.bool(true, "Dibujar medias")
showTable = input.bool(true, "Mostrar tabla dashboard")
// ---------- Benchmark & Mansfield RS ----------
benchClose = request.security(bench, timeframe.period, close)
ratio = (benchClose > 0) ? (close / benchClose) : na
rsBase = ta.sma(ratio, rsMaLen)
mansfield = (rsBase != 0 and not na(rsBase)) ? ((ratio / rsBase - 1) * 100) : na
// ---------- Price MAs ----------
ma50 = ta.sma(close, ma50Len)
ma150 = ta.sma(close, ma150Len)
ma200 = ta.sma(close, ma200Len)
// ---------- 52w High/Low ----------
hi52 = ta.highest(high, rsLen)
lo52 = ta.lowest(low, rsLen)
// ---------- Minervini-style checks ----------
c1 = close > ma150 and close > ma200
c2 = ma150 > ma200
c3 = ma200 > ma200 // MA200 subiendo vs hace ~1 mes (en D)
c4 = ma50 > ma150 and ma50 > ma200
c5 = close >= lo52 * 1.25 // ≥ +25% desde mínimo 52w
c6 = close >= hi52 * 0.75 // dentro del 25% de máximos 52w
c7 = (mansfield > 0) and (mansfield > mansfield ) // RS > 0 y mejorando
score = (c1 ? 1 : 0) + (c2 ? 1 : 0) + (c3 ? 1 : 0) + (c4 ? 1 : 0) + (c5 ? 1 : 0) + (c6 ? 1 : 0) + (c7 ? 1 : 0)
qualified = score >= scoreThreshold
// ---------- Plots ----------
if showMAs
plot(ma50, "SMA 50", linewidth=1)
plot(ma150, "SMA 150", linewidth=1)
plot(ma200, "SMA 200", linewidth=2)
plotshape(qualified, title="PICK", style=shape.triangleup, location=location.belowbar, size=size.tiny, text="PICK")
// ---------- Dashboard table ----------
var table t = table.new(position.top_right, 2, 9, frame_width=1)
f_row(_r, _name, _ok) =>
table.cell(t, 0, _r, _name)
table.cell(t, 1, _r, _ok ? "OK" : "—")
if showTable and barstate.islast
table.cell(t, 0, 0, "Check")
table.cell(t, 1, 0, "Pass")
f_row(1, "Price > SMA150 & SMA200", c1)
f_row(2, "SMA150 > SMA200", c2)
f_row(3, "SMA200 rising (" + str.tostring(slopeLookback) + ")", c3)
f_row(4, "SMA50 > SMA150 & SMA200", c4)
f_row(5, "≥ +25% from 52w low", c5)
f_row(6, "Within 25% of 52w high", c6)
f_row(7, "Mansfield RS > 0 & rising", c7)
table.cell(t, 0, 8, "Score")
table.cell(t, 1, 8, str.tostring(score) + "/7")
// ---------- Alerts ----------
alertcondition(qualified, "Qualified stock (PICK)", "El activo supera el score mínimo para stock-picking swing.")
RSI Divergence Strategy BTCRSI Divergence Strategy | Clean
Type: Backtestable strategy
Logic: Uses divergences between price and RSI to generate signals.
LONG: Price makes a lower low, RSI makes a higher low → bullish divergence
SHORT: Price makes a higher high, RSI makes a lower high → bearish divergence
TP / SL: Automatic, based on configurable percentage and Risk/Reward ratio.
Display:
RSI visible in a separate panel
LONG/SHORT signals indicated by small triangles in the RSI panel
Goal: Identify price reversals using relative strength (RSI) and backtest precise trades.
Market Risk Regime Dashboard (SPX/VIX)Market Risk Regime Dashboard (SPX–VIX)
Market Risk Regime Dashboard (SPX–VIX) is a context and confirmation tool designed to classify market conditions as Risk-On, Risk-Off, or Neutral by analyzing the real-time relationship between the S&P 500 Index (SPX) and the CBOE Volatility Index (VIX).
Rather than predicting price direction, this script focuses on identifying market environment and participation conditions that often influence trade quality, position sizing, and strategy selection.
Core Concept: SPX vs VIX Risk Regimes
The indicator operates on a well-documented market relationship:
SPX reflects equity risk appetite and directional participation
VIX reflects implied volatility and risk aversion
The script classifies conditions as:
Risk-On → SPX bullish and VIX falling
Risk-Off → SPX bearish and VIX rising
Neutral → Any mixed or non-aligned condition
This alignment is visualized using:
Background color on the chart
A compact dashboard table
Optional alerts
Trend Strength via Normalized EMA Distance (n-Value)
To quantify trend strength, the script computes a normalized trend metric (“n-value”) for SPX:
A fast EMA and slow EMA are calculated on SPX
The absolute distance between the EMAs is measured
That distance is normalized by an ATR-based volatility measure
The result is a dimensionless value that expresses trend strength relative to volatility, allowing comparisons across timeframes.
Higher n-values indicate stronger directional conditions, while lower values suggest compression or range behavior.
Dashboard Display
A movable on-chart table summarizes:
SPX directional bias (Bullish / Bearish / Neutral)
VIX behavior (Rising / Falling)
SPX n-value trend strength
This allows traders to quickly assess market context without switching symbols or charts.
Strong Candle Detection (SPX)
The script identifies strong directional candles on SPX using objective criteria:
Candle body must represent a minimum percentage of total range
Close must occur near the extreme (high for bullish, low for bearish)
Direction must align with candle body
When detected:
A triangle marker is plotted
The chart bar is optionally colored
Additional alerts can trigger when strong candles align with Risk-On or Risk-Off regimes
These signals are intended to highlight initiative participation, not standalone entries.
Visual & Alert Features
Background color reflects current risk regime:
Green = Risk-On
Red = Risk-Off
Gray = Neutral
Alerts available for:
Risk-On alignment
Risk-Off alignment
Neutral conditions
Strong candles aligned with risk regime
Elevated normalized trend strength (n-value range)
Alerts can be used for situational awareness rather than execution triggers.
How Traders Typically Use This Script
Filter trades based on broader market risk context
Adjust aggressiveness or size during Risk-On vs Risk-Off regimes
Confirm directional conviction when price action aligns with volatility behavior
Avoid forcing trades during neutral or conflicting environments
This script is not a trading system and does not provide entries or exits. It is a contextual decision-support tool designed to improve alignment between price action and market risk conditions.
Price Prediction Forecast ModelPrice Prediction Forecast Model
This indicator projects future price ranges based on recent market volatility.
It does not predict exact prices — instead, it shows where price is statistically likely to move over the next X bars.
How It Works
Price moves up and down by different amounts each bar. This indicator measures how large those moves have been recently (volatility) using the standard deviation of log returns.
That volatility is then:
Projected forward in time
Scaled as time increases (uncertainty grows)
Converted into future price ranges
The further into the future you project, the wider the expected range becomes.
Volatility Bands (Standard Deviation–Based)
The indicator plots up to three projected volatility bands using standard deviation multipliers:
SD1 (1.0×) → Typical expected price movement
SD2 (1.25×) → Elevated volatility range
SD3 (1.5×) → High-volatility / stress range
These bands are based on standard deviation of volatility, not fixed probability guarantees.
Optional Drift
An optional drift term can be enabled to introduce a long-term directional bias (up or down).
This is useful for markets with persistent trends.
Volume + VWAP + Prior Session Levels DashboardVolume Spike + VWAP + Session Levels Dashboard
This indicator is a real-time market context dashboard designed to help traders quickly understand participation, value, and key reference levels without cluttering the chart with multiple indicators.
Instead of plotting lines or signals, the script summarizes critical intraday information into a compact on-chart table, allowing traders to make faster, more informed decisions based on how active the market is, where fair value is, and where important reference levels exist.
Core Concepts Used
This script is built on three widely used market principles:
Relative Volume Participation
Volume-Weighted Average Price (VWAP)
Prior Session Reference Levels
The indicator does not attempt to predict direction. Its purpose is to provide objective context that traders can combine with their own strategies.
How the Indicator Works
1. Volume Spike Analysis (Relative Volume)
Rather than showing raw volume, the script measures how unusual the current bar’s volume is compared to recent activity.
A moving average of volume is calculated using a user-defined lookback period.
Current volume is divided by this average to produce a volume multiple (for example, 2.0× normal volume).
This multiple is translated into a descriptive strength label, ranging from Below Threshold to Legendary.
This approach helps traders immediately recognize when participation is significantly above normal, which often coincides with institutional activity, breakouts, or important reactions near key levels.
2. Daily VWAP (Current and Prior Day)
VWAP (Volume-Weighted Average Price) represents the average price traded, weighted by volume, and is commonly used as a measure of fair value.
This script calculates VWAP internally by:
Accumulating price × volume throughout the day
Dividing by total volume
Automatically resetting at the start of each new trading day
The dashboard displays:
Current day VWAP – real-time session fair value
Prior day VWAP – an important reference from the previous session
Traders often use these levels to evaluate whether price is trading at a premium, discount, or near equilibrium.
3. Previous Day High and Low
The indicator also displays:
Previous day high
Previous day low
These levels frequently act as liquidity targets, support/resistance zones, or reaction points, especially during intraday trading sessions.
Dashboard Design
All information is presented in a two-column dashboard showing:
Metric name
Current value or status
The dashboard can be positioned in any corner of the chart and updates in real time, allowing traders to maintain awareness without constantly switching indicators or timeframes.
How to Use This Indicator
This script is best used as a decision-support tool, not a standalone trading system.
Typical uses include:
Identifying abnormally high volume near important price levels
Evaluating price position relative to VWAP
Monitoring reactions around prior day highs and lows
Staying oriented during fast market conditions without chart clutter
The indicator works on any timeframe and adapts automatically to the instrument’s trading session.
Customization Options
Users can:
Adjust the volume moving average length to define what “normal” volume means
Choose the price source used for VWAP calculation
Change the dashboard’s on-screen position
Summary
The Volume Spike + VWAP + Session Levels Dashboard provides a clear, objective snapshot of market conditions by combining participation, value, and reference levels into a single visual tool. It is designed to help traders answer a simple but critical question:
“Is the market doing something meaningful right now — and where?”
This indicator focuses on context, clarity, and usability for traders who want insight without unnecessary complexity.
TSF - Rel Vol & Stop calcSimple swing data table showing:
1. Avg 20D dollar vol
2. Live dollar vol
3. Live % relative vol compared to avg 20d daily vol
4.Percent to LOD current price with color codes
5. Avg 20d ATR%
SMC Alpha Sentiment Hunter [Crypto Trade]The SMC Alpha Sentiment Hunter is an institutional-grade decision-support tool developed by the Crypto Trade community.
Unlike traditional lagging indicators, this script focuses on Smart Money Concepts (SMC) by analyzing real-time market sentiment data directly from Binance Futures.
Key Features:
- Real-time Open Interest (OI) Tracking: Confirms institutional capital flow.
- Long/Short Ratio (LSR) Analysis: Identifies retail positioning to spot "liquidity traps".
- Volume & Volatility Filters: Built-in ATR and Volume Moving Average to validate entry signals.
- Multi-Asset Compatibility: Optimized for a broad range of Binance Futures pairs on the 15-minute timeframe.
Logic:
Signals are triggered when institutional interest (OI) rises while retail traders (LSR) are caught on the wrong side of the trend, confirmed by RSI exhaustion and strong volume.
Disclaimer: For educational purposes only. Trading involves risk.
SMA Crossover Strategy with Monte Carlo TunerCore logic
• Two signals:
• FAST SMA
• SLOW SMA
• Trade rule:
• FAST > SLOW → long
• FAST < SLOW → short
• Nothing else. No indicators stacked on top.
⸻
Two operating modes
1) Deterministic mode (baseline)
• MC = OFF
• You choose (fast, slow) explicitly (default 8/34)
• Behavior is stationary and repeatable
This is your control experiment.
⸻
2) Monte Carlo mode (adaptive discovery)
• MC = ON
• The script:
• Samples (fast, slow) pairs randomly from bounded integer ranges
• Simulates trades for each pair in parallel
• Tracks (gross profit, gross loss, trade count)
• Computes PF = GP / GL
• Promotes best-so-far online
Key point:
This is not grid search. It’s stochastic sampling with early stopping with time control (default 35 s)
The Strat Candle Types (1 / 2U / 2D / 3)This script uses TheStrat candle numbers 1, 2D, 2U, 3 and places the text below or above. You can also change the text size. This also allows you to change the colors of the candles with two options for the 1 & 3 so you can color them in the direction they are going. For example a 1 that is green can be green and a 1 that is red can be red.
Easy DashboardREAD DISCLAIMER BELOW BEFORE USE
The ultimate TradingView dashboard for tracking up to 24 tickers in real-time. Stay on top of your P&L, Volatility (ATR), and Earnings countdown without ever leaving your chart.
Total Privacy: No hardcoded data. Input your holdings privately via the settings menu.
Risk Control: Built-in "traffic light" system for ATR % and Volume % to spot volatility and institutional activity.
Earnings Alerts: Automated countdowns that turn red when an Earnings Report is less than 7 days away.
Complete Wealth View: Live tracking of Daily P&L, Cash, and Total Net Worth.
Clean UI: Fully customizable positions, text sizes, and a "Minimal Mode" for a distraction-free workspace.
DISCLAIMER
IMPORTANT: READ BEFORE USE
This indicator is provided for educational and informational purposes only.
Not Financial Advice: The information, metrics, and calculations displayed by this script do not constitute financial, investment, or trading advice.
Not an Inducement: Nothing within this script should be construed as a recommendation or an inducement to buy, sell, or hold any financial instrument.
Accuracy & Risks: While every effort is made to ensure technical accuracy, trading involves significant risk of loss. Past performance is not indicative of future results.
User Responsibility: All data entered (Tickers, Quantities, Cash) is processed locally. The user is solely responsible for verifying the accuracy of the data and for any financial decisions made based on the output of this script.
Fictitious Data: All pre-entered values in this demo version are fictitious and intended for demonstration purposes only.
Anurag Balanced 0DTE Scalper SPY QQQBalanced 0DTE Scalper
1. Purpose: A 0DTE options day trading indicator for SPY/QQQ on 5-minute charts with visual CALL/PUT entry and exit signals.
2. Trend Filter: Uses 15-minute EMA crossover (9/21) + ADX to confirm trend direction before taking trades.
3. Entry Logic: Triggers on pullback to 5m EMA9 with RSI/VWAP/MACD confirmation, bullish or bearish candle required.
4. Exit System: ATR-based trailing stop, dual targets (TP1 partial, TP2 full), time stop, and auto-exit at EOD.
5. Risk Controls: Max trades/day limit, cooldown period after exits, session filter (avoids first 10 min & last 15 min).
6. Visual Feedback: Dynamic stop/target lines, entry/exit labels with P&L, background color for trend bias and cooldown.
7. Dashboard: 16-row panel showing bias, ADX, regime, RSI, VWAP, position, bars held, cooldown status, strike suggestions, and DTE recommendation.
CM RSI Description
This indicator plots ladder-style buy signals based on RSI oversold “cycles.”
BUY1 triggers after RSI closes ≤ Oversold for at least two consecutive candles.
Additional buys (BUY2, BUY3, …) can only occur after RSI re-arms by closing back above the oversold level, then returning oversold for two+ closes, and price is at least X% below the last entry price.
The “last entry” reference updates after every buy, allowing unlimited rebuys with a dynamic step-down.
Notes
Signals are generated on closed bars only (non-repainting behavior).
You can optionally set a Start Time to ignore earlier history and avoid off-screen state.
Choose whether the % drop check uses Close or Low depending on how strict you want confirmation.
Inputs
RSI length/source, oversold level, rebuy drop %, price check source, entry storage source, start time/baseline options, and display controls.
Trend Regime Bands (EMA 50 / 150 / 200)📘 Trend Regime Bands – EMA 50·150·200
Overview
Trend Regime Bands is a visual trend-context indicator designed to help users quickly understand whether the market is in a bullish or bearish regime. The indicator uses the alignment of EMA 50, EMA 150, and EMA 200 to determine overall trend direction, while additional EMAs are used only to create color-based bands for visual context. No buy or sell signals are generated.
How Trend Direction Is Determined
Trend direction is derived exclusively from the relative positioning of: EMA 50 (short-term trend) , EMA 150 (medium-term trend) , EMA 200 (long-term trend) . Bullish regime: EMA 50 ≥ EMA 150 ≥ EMA 200 . Bearish regime: EMA 50 < EMA 150 < EMA 200. These three EMAs act as the decision framework for the indicator.
What the Color Bands Represent : The indicator displays two visual bands on the chart:
Fast Band (Momentum Context) - Built using faster EMAs, Represents short-term momentum and pullback behavior. Brighter color intensity reflects stronger momentum
Slow Band (Regime Context) - Built using slower EMAs. Represents broader trend structure and regime stability.Deeper color intensity reflects stronger trend alignment
The color of both bands follows the trend direction determined by EMA 50/150/200:
Green shades indicate a bullish regime. Red shades indicate a bearish regime. Color intensity increases or decreases smoothly based on trend strength.
How to Use This Indicator
Use the bands to understand market context, not as entry or exit signals. Strong, bright bands suggest a well-established trend. Lighter bands indicate weaker or transitioning trends. The indicator works across intraday, swing, and higher timeframes. This tool is best used alongside price action, support/resistance, or other confirmation methods.
Important Notes
This indicator does not provide buy or sell signals. It does not predict future price movement. It is intended solely as a visual trend-regime and context tool
Summary
Trend Regime Bands offers a clean, distraction-free way to visualize bullish and bearish market regimes using EMA structure and color intensity, helping traders maintain directional awareness and discipline.
Supertrend 14-3 with Auto Fibthis strategy use the supertrend with the Auto fib levels for market analysis






















