Wskaźniki i strategie
RSI مع 5 متوسطات و5 مستوياتRSI with 5 Moving Averages and 5 Levels
This indicator combines the Relative Strength Index (RSI) with five customizable moving averages and five horizontal levels to help identify momentum, overbought/oversold zones, and trend strength.
• RSI: Measures the speed and change of price movements.
• Levels (10, 20, 50, 80, 90):
• 10 & 20 → Oversold zones (potential buy areas)
• 80 & 90 → Overbought zones (potential sell areas)
• 50 → Neutral midpoint (trend balance line)
• Moving Averages (5, 8, 13, 21, 200):
Smooth the RSI line to reveal short- and long-term momentum trends.
You can choose the type (SMA, EMA, WMA), color, and line thickness.
Optional alert signals can be triggered when the RSI crosses specific levels (e.g., above 80 or below 20).
Buy on Blue, Sell on Red (EMA + optional RSI) TyusEThis indicator is a trend-following system that helps traders identify potential buy and sell opportunities using a combination of EMA crossovers and an optional RSI filter for confirmation.
It plots:
🔵 Blue dots (BUY signals) when the fast EMA crosses above the slow EMA — signaling bullish momentum.
🔴 Red dots (SELL signals) when the fast EMA crosses below the slow EMA — signaling bearish momentum.
You can optionally filter these signals using the RSI (Relative Strength Index) to avoid false breakouts — for example, only taking BUY signals when RSI is above 55 (showing strength) and SELL signals when RSI is below 45 (showing weakness).
⚙️ Features
Adjustable Fast EMA and Slow EMA lengths
Optional RSI confirmation filter
Customizable RSI thresholds for entries
“Confirm on bar close” setting to reduce repainting
Built-in alert conditions for real-time notifications
💡 How to Use
Use blue dots as potential long entries and red dots as potential short entries.
Confirm direction with overall trend, structure, or higher timeframe alignment.
Combine with support/resistance, volume, or price action for best results.
⚠️ Note
This is a technical tool, not financial advice. Always backtest and use proper risk management before trading live markets.
T.E
DD RatioThe DD Ratio (“Directional Distribution Ratio”) is a breadth indicator that shows, in real time, how many of the selected stocks (e.g., S&P 500 components) are bullish vs. bearish relative to today’s open.
The DD Ratio tells you what’s really happening under the hood of the index:
Futures may mislead: An index future (like ES or NQ) can rise on a few heavy-weighted stocks even while most components fall.
The DD Ratio exposes that divergence.
Breadth confirmation: When the futures are up and DD Ratio ≥ 0.5 → healthy rally.
When futures are up but DD Ratio < 0.5 → weak, narrow advance.
Intraday sentiment gauge: It updates live with each bar, reflecting “who’s winning” since the open.
Buy/Sell Volume Tracker [wjdtks255]Indicator Description
Function: Separates buy and sell volume based on candle direction (close ≥ open) and displays the buy−sell difference (hist_val) as a histogram.
Visuals: Buy/sell bars are distinguished by user-selectable colors and opacity; two moving averages (MA1 and MA2) are shown to smooth the flow.
Meaning: A positive histogram indicates buy dominance; a negative histogram indicates sell dominance.
Limitation: The current separation is estimated from candle direction and may differ from execution-side (tick/trade-side) based data.
Trading Rules (Summary)
Conservative trend-following long
Entry: Enter long when hist_val turns above 0 and MA1 crosses MA2 from below.
Stop-loss: Exit if hist_val falls back below 0 or MA1 drops below MA2.
Take-profit: Use a risk:reward of 1:1.5 or set targets based on ATR.
Short-term rebound long
Entry: Enter a short-term long when a large negative histogram region begins to narrow and shows a recovery sign.
Stop-loss: Exit if hist_val drops below the previous low or bearish candles continue.
Take-profit: Prefer quick partial profit-taking.
Short (sell) strategy
Entry: Enter short when hist_val falls below 0 and MA1 crosses MA2 from above.
Stop-loss / Take-profit: Apply the inverse rules of the long strategy.
Filters and risk management
Volume filter: Only accept signals when volume exceeds a fraction of average volume to reduce noise.
Entry strength: Require |hist_val| to exceed a historical average threshold (e.g., avg(|hist_val|, N) × factor) to strengthen signals.
Position sizing: Size positions so that account risk per trade is within limits (e.g., 1–2% of account equity).
Timeframe: Use short timeframes for scalping and 1h+ for swing trading.
Aibuyzone Vector Strategy - Floating DashboardVector Strategy – Floating Dashboard
The Vector Strategy is a visual trading-analysis tool designed to highlight strong directional candles that may represent impulsive moves in the market. It combines candle-structure analysis, volatility expansion, volume conditions, and trend filters into a single clear visual display.
Core Logic
Identifies candles where the body makes up a significant portion of the full bar range, suggesting strong directional intent.
Uses an ATR (Average True Range) expansion filter to confirm that the current candle’s range is larger than normal volatility.
Optionally applies a wick-imbalance requirement to favor bars showing a clear directional bias.
Can include a volume spike filter, marking candles where volume exceeds a moving average multiple.
Trend and Momentum Filters
Local trend: Defined by a fast and slow EMA pair to show short-term bias.
Higher-timeframe trend: Optionally aligns with an EMA from a higher timeframe to confirm broader momentum.
Momentum: RSI filter avoids generating signals in heavily overbought or oversold conditions.
Fair Value Gap (FVG) Option
When enabled, the script checks for a simple three-bar fair-value-gap structure in the direction of the potential signal, acting as an additional confirmation filter.
Signals and Visuals
Plots fast and slow EMAs to visualize the underlying trend.
Displays up/down shapes when qualifying vector-candle conditions occur.
Optional labels show “Vector Long” or “Vector Short” at the candle where conditions align.
Includes alert conditions for both long and short setups.
Floating Dashboard
A compact floating panel summarizes the most recent signal and market context:
Current signal state (Long / Short / Neutral)
Trend bias (Bullish / Bearish / Flat)
RSI reading
Body-to-range percentage
Volume-spike confirmation
Practical Use
This tool can assist traders in identifying strong impulsive candles aligned with a trend filter.
It is meant to complement a complete trading strategy, not to be used in isolation.
Traders may adjust thresholds such as ATR multiple, body-percentage, or RSI range based on the instrument’s volatility and personal risk tolerance.
Important Notice
This script is provided for educational and analytical purposes only.
It does not provide financial advice, recommendations, or guaranteed results.
Market conditions vary, and past performance does not ensure future outcomes.
Always test and validate any configuration in a simulated environment before live trading.
My Smart Volume Profile – Fixed
Title: 🔹 My Smart Volume Profile – Fixed
Description:
Lightweight custom Volume Profile showing POC, VAH, and VAL levels from recent bars. Highlights the value area, marks price touches, and supports optional alerts.
Developer Note:
Created with precision and simplicity by Magnergy
3ATMANE RANGEThis indicator calculates a custom range based on the 04:00 UTC H1 candle. It uses EMA(6) of HLC4 from the 1-hour timeframe and measures the pip distance from the high and low of that candle to the EMA. Two horizontal lines are drawn:
🔴 Down Line: projected below the low by the same pip distance from high to EMA
🟢 Up Line: projected above the high by the same pip distance from EMA to low
The lines are time-based and remain visible across all timeframes. A top-right table displays the pip values and the number of active lines.
Ideal for range breakout setups, volatility tracking, or session-based scalping logic.
Powered by 3ATMANE Logic 🔥
RSI ⇄ SMA Cross Alerts (80/20, On Close)RSI ⇄ SMA Cross Alerts (80/20, On Close)
Add //@version=5 (required in Pine v5).
Your logic is fine for “after being >80/<20 then RSI crosses its SMA,” and barstate.isconfirmed enforces on close.
plot(close) in a non-overlay RSI pane will squash the scale—drop it (or set overlay=true and move RSI to a separate scale, but simplest is just remove it).
Optional: expose source, add a tiny cooldown, and let alerts include close/RSI values.
Simple EMA Cloud 20/50Shades the area between the 20 and 50 EMAs.
That's all it does, but combined with other indicators like the MACD, it gives you clear indications of entries and exits.
AND, it has no calories. What more could you ask for?
Mac Sessions High And Low v.1This indicator is mainly for session highs and lows
Just a easy way to see if price sweeps a sessions high or low
Crash Stats 15m (ETH) — X% | prev RTH min(VWAP, Close)# Crash Stats 15m (ETH) — X% Drawdown Event Analyzer
A 15-minute indicator that scans up to the last 5 years to find **crash events** where the close falls by at least **X%** relative to the **lower of** the prior day’s **RTH VWAP** and **RTH close**. It then measures recovery and follow-through behavior, tags the market regime around each event, and summarizes everything in a table.
---
## What the script detects
**Crash event (trigger):**
* On a 15-minute bar, `close <= refPrice * (1 - X%)`.
* `refPrice = min(previous RTH VWAP, previous RTH close)`.
* First touch only: subsequent bars below the threshold on the same trading day are ignored.
* Extended hours (ETH) are supported; if ETH is off, the script safely infers the previous RTH reference.
**Per-event measurements**
1. **Time to “turn up”** – first close **above the event-anchored AVWAP** (AVWAP cumulated from the trigger bar onward).
2. **Time to recover the reference price** – first close ≥ `refPrice`.
3. **Time to recover Y% above the crash-day average price** – first close ≥ `crashDayVWAP * (1+Y%)`.
4. **Post-crash lowest price & timing** – the lowest low and how long after the event it occurs, within a user-defined horizon (default 10 trading days, approximated in calendar days).
5. **Intraday RTH low timing** – on the crash day’s RTH session, when did the day’s intraday low occur, and **was it on the first 15-minute bar**?
6. **First 15-minute low of the RTH day** – recorded for context.
All durations are shown as **D days H hours M minutes**.
---
## Regime tagging (A / B)
For each event the script classifies the surrounding trend using daily closes:
* Let `r6m = (prevClose – close_6mAgo) / close_6mAgo`,
`r12m = (prevClose – close_12mAgo) / close_12mAgo`.
* **A**: both `r6m > 0` and `r12m > 0` (uptrend across 6m & 12m).
* **B**: one positive, one negative, and `r6m + r12m ≥ 0` (mixed but net non-negative).
* Otherwise: **—**.
This helps separate selloffs in strong uptrends (A) from mixed regimes (B) and others.
---
## Inputs
* **X — Crash threshold (%)**: default 5.
* **Y — Recovery above crash-day average (%)**: default 5.
* **Lookback years**: default 5 (bounded by data availability).
* **Horizon for post-crash lowest (trading days)**: default 10 (approximated as calendar days).
* **RTH session**: default `09:30–16:00` (exchange timezone).
* **Show markers**: plot labels on triggers.
* **Rows to display**: last N events in the table.
---
## Table columns
* Index, **Trigger time**, **Drop %**, **Ref price**, **Regime (A/B/—)**
* **Time to turn up** (above anchored AVWAP)
* **Time to ref price**, **Time to day VWAP + Y%**
* **Window lowest price**, **Time to window low**
* **RTH first-15m low**, **RTH lowest time**, **Was RTH low on first 15m?**
* **Crash-day VWAP**
---
## How to use
1. **Set chart to 15-minute** and **enable extended hours** for equities (recommended).
2. Keep defaults (**X=5%, Y=5%**) to start; tighten to 3–4% for more frequent events on less volatile symbols.
3. For non-US symbols or futures, adjust the **RTH session** if needed.
4. Read the table (top-right) for per-event diagnostics and aggregate averages (bottom row).
---
## Notes & implementation details
* Works whether ETH is on or off. If ETH is off, the script back-fills “previous RTH” references at the next RTH open and uses the prior daily close as a fallback.
* The “turn up” definition uses **event-anchored AVWAP**, a robust, price–volume anchor widely used for post-shock mean reversion analysis.
* Events are **de-duplicated**: only one event per trading day (per target RTH cycle).
* Lookback is limited by your plan and the data vendor. The script requests deep history (`max_bars_back=50000`), but availability varies by symbol.
* Durations use minute precision and are rendered as **days–hours–minutes** for readability.
---
## Quick troubleshooting
* **No events found**: lower **X%**, enable **ETH**, or ensure sufficient history is loaded (scroll back, or briefly switch to a higher timeframe to force deeper backfill, then return to 15m).
* **RTH boundaries off**: check the **RTH session** input matches the venue.
* **Few rows in table**: increase **Rows to display**.
---
## Typical use cases
* Back-test how fast different symbols tend to stabilize after a sharp gap-down or intraday shock.
* Compare recovery behavior across regimes **A / B** for sizing and risk timing.
* Build playbooks: e.g., if the RTH low occurs on the first 15m bar X% of the time, plan entries accordingly.
---
## Changelog
* **v1.0**: Initial public release with crash detection, anchored-AVWAP reversal, reference & VWAP+Y recovery timers, regime tagging, window-low timing, RTH low timing, and first-15m low capture.
Double Grid + Auto Countdown Timer (Stable v6.1)Adjustable grid indicator with two levels and bar countdown timer fully adjustable.
ice tea//@version=6
indicator("ICT + ICC Combined Strategy", overlay=true)
// === INPUTS ===
bosSensitivity = input.int(3, "BOS Sensitivity", minval=1)
showDashboard = input.bool(true, "Show Dashboard")
dashCorner = input.string("top_right", "Dashboard Corner", options= )
// === COLORS ===
bosColorBull = color.new(color.green, 0)
bosColorBear = color.new(color.red, 0)
// === STRUCTURE & BOS LOGIC (example) ===
var bool bullishBOS = false
var bool bearishBOS = false
// Extract function calls for consistency
highestClose = ta.highest(close, bosSensitivity)
lowestClose = ta.lowest(close, bosSensitivity)
// Dummy BOS detection (replace with your actual logic)
if close > highestClose
bullishBOS := true
bearishBOS := false
else if close < lowestClose
bearishBOS := true
bullishBOS := false
else
bullishBOS := false
bearishBOS := false
// === BOS PLOTTING ===
if bullishBOS
line.new(bar_index - bosSensitivity, low , bar_index, low, color=bosColorBull, style=line.style_dotted)
label.new(bar_index, low, "BOS ↑", style=label.style_label_up, color=bosColorBull, textcolor=color.white)
if bearishBOS
line.new(bar_index - bosSensitivity, high , bar_index, high, color=bosColorBear, style=line.style_dotted)
label.new(bar_index, high, "BOS ↓", style=label.style_label_down, color=bosColorBear, textcolor=color.white)
// === ICC / SHORT-TERM DEALING RANGE LOGIC (simplified example) ===
var float stHigh = na
var float stLow = na
if bullishBOS
stLow := low
stHigh := high
else if bearishBOS
stLow := low
stHigh := high
plot(stHigh, title="ST High", color=color.orange, linewidth=1)
plot(stLow, title="ST Low", color=color.orange, linewidth=1)
// === DASHBOARD PANEL ===
if showDashboard
// choose table position
dashPosition = switch dashCorner
"top_left" => position.top_left
"bottom_left" => position.bottom_left
"bottom_right" => position.bottom_right
=> position.top_right
var table dash = table.new(dashPosition, 2, 2, bgcolor=color.new(color.black, 85), frame_color=color.new(color.white, 70))
// Higher time frame bias placeholder (replace with actual HTF logic)
htfBias = bullishBOS ? "bullish" : bearishBOS ? "bearish" : "neutral"
htfTxtColor = htfBias == "bullish" ? color.new(color.green, 0) : htfBias == "bearish" ? color.new(color.red, 0) : color.new(color.yellow, 0)
sigTxtColor = bullishBOS ? color.new(color.green, 0) : bearishBOS ? color.new(color.red, 0) : color.new(color.yellow, 0)
table.cell(dash, 0, 0, "1H Bias:", text_color=color.white, text_size=size.small)
table.cell(dash, 1, 0, str.upper(htfBias), text_color=htfTxtColor, text_size=size.small)
table.cell(dash, 0, 1, "15M Signal:", text_color=color.white, text_size=size.small)
table.cell(dash, 1, 1, sigTxtColor == color.new(color.green, 0) ? "Buy Setup" : sigTxtColor == color.new(color.red, 0) ? "Sell Setup" : "Waiting", text_color=sigTxtColor, text_size=size.small)
Ethereum Sleepy Wallets – 6-Month DormancyWhat This Indicator Does
It measures how many Ethereum addresses have been completely inactive for at least 6 months (≥ 180 days) — using official Glassnode and CryptoQuant on-chain metrics.
This reveals deep conviction among long-term ETH holders
Core Concept: Direct 6-Month Dormancy
The indicator uses two precise on-chain signals:
Total Unique ETH Addresses
From GLASSNODE:ETH_ADDRESSES or CRYPTOQUANT:ETH_TOTAL_ADDRESSES
Counts every address ever used on Ethereum
Addresses Inactive ≥ 180 Days
From GLASSNODE:ETH_ADDRESSES_GREATER_THAN_180_DAYS
Counts every address that has not sent or received ETH in 6+ months
Sleepy ETH = Dormant ≥ 180 Days
Sleepy Ratio % = (Sleepy / Total) × 100
This is not an estimate — it’s direct, real dormancy.
Why 6-Month Dormancy Matters
Short-term activity (7-day) = noise from DeFi, NFTs, trading
180-day inactivity = true HODLing — coins untouched through entire market cycles
Historically:
Rising dormancy → supply drying up → bullish pressure
Falling dormancy → long-term holders selling → bearish warning
How It Works (Step-by-Step)
Fetches daily data from Glassnode (Pro+) or CryptoQuant (free)
Selects real data if available; otherwise uses robust fallback
Calculates raw sleepy wallets = addresses inactive ≥ 180 days
Smooths the signal with a 21-day simple moving average (SMA) to filter noise
Computes Sleepy Ratio % for instant conviction reading
Displays live info table with exact values on every bar
How to Use It
Signal
Interpretation
Suggested Action
Sleepy Ratio > 75% and rising
Extreme long-term HODLing
Strong accumulation — buy/hold
Smooth Sleepy trending up
Dormancy growing over 21 days
Bullish supply shock forming
Sleepy Ratio < 68% and falling
Long-term coins re-entering circulation
Caution — possible distribution
Smooth Sleepy dropping fast
HODLers breaking after 6+ months
Bearish warning — consider exits
Use on Daily (D) or Weekly (W) charts for clean, reliable signals.
Pro+ vs Free Mode
Mode
Data Source
Accuracy
Pro+ (Glassnode ON)
Real 180-day dormancy metric
100% precise
Free (Glassnode OFF)
CryptoQuant + price-scaled estimate
~80% historical correlation
Toggle in settings: Use Glassnode Data
What Makes This Indicator Original
First open-source script to directly plot Ethereum’s 6-month dormancy using official ADDRESSES_GREATER_THAN_180_DAYS
No fake math — uses true inactivity, not active address subtraction
Dual-source logic ensures usability on any TradingView plan
Dual output: raw sleepy count + 21-day SMA for precision and trend
Live info table shows real-time values and data source
MIG and MC 发布简介(中文)
MIG and MC 指标帮助日内交易者快速识别微型缺口(Micro Gap)与微型通道(Micro Channel)。脚本支持过滤开盘跳空、合并连续缺口,并自动绘制
FPL(Fair Price Line)延伸线,既可追踪缺口是否被填补,也能直观标注潜在的趋势结构。为了确保跨周期一致性,最新版本对开盘前后和跨日场景做了专门处理
主要特性
- 自动检测并显示看涨/看跌微型缺口,支持按需合并连续缺口。
- 自定义是否忽略开盘缺口、缺口显示范围与 FPL 样式。
- FPL 触及后即停止延伸,辅助研判缺口是否真正回补。
- 内置强收盘与缺口过滤的微型通道识别,可选多种严格程度。
- 适用于 1/5/9 分钟等日内周期,也适用于更长周期。
Recommended English Description
The MIG and MC indicator highlights Micro Gaps and Micro Channels so you can track true intraday imbalances without noise. It merges
consecutive gaps, projects Fair Price Lines (FPL) that stop once touched, and offers a full intraday-ready opening-gap filter so your
early bars stay clean. The latest update refines cross-session handling, giving reliable gap plots on 1-, 5-, and 9-minute charts as well as higher time frames.
Key Features
- Detects bullish and bearish micro gaps with optional gap merging.
- Toggle opening-gap filters and configure look back, visibility, and FPL style.
- FPL lines stop as soon as price revisits the gap, making gap closure obvious.
- Micro Channel mode uses strong-close and gap filters to mark high-quality trend legs.
- Consistent behavior across intraday and higher time frames.
《Seguimento de Tendências》Deus das Mensagens👀 Novidades blockchain a cada 6 horas ⬇️
t.me
I really enjoyed reading the book Trend Following. The indicators created based on the book's content include: momentum trading, going long and short, pyramiding, and risk control.
《Theo Dõi Xu Hướng》Thần Khúc Theo Dõi Tin👀 Cập nhật blockchain mỗi 6 giờ ⬇️
t.me
《Trend Following》
I really enjoyed reading the book Trend Following. The indicators created based on the book's content include: momentum trading, going long and short, pyramiding, and risk control.
《Trend Following》I really enjoyed reading the book Trend Following. The indicators created based on the book's content include: momentum trading, going long and short, pyramiding, and risk control.
Message Tracking 👀 Blockchain updates every 6 hours ⬇️
t.me
Previous VWAP Closes MTF## **Indicator: "Previous VWAP Closes MTF"**
### **Overview**
This is a specialized multi-timeframe indicator that plots the **closing VWAP values from previous trading sessions** across three different timeframes. Instead of showing the current, evolving VWAP, it focuses exclusively on the final VWAP levels where previous sessions concluded, treating them as significant reference points for current price action.
### **Core Functionality**
**What It Plots:**
- **Three horizontal lines** representing the final VWAP values from completed sessions
- Weekly previous VWAP close (green/red circles)
- Daily previous VWAP close (lime/orange circles)
- 4-hour previous VWAP close (aqua/purple circles)
**Key Mechanics:**
- **Session Detection**: Automatically identifies when each timeframe session ends
- **VWAP Calculation**: Computes the Volume-Weighted Average Price for each completed session
- **Level Preservation**: "Freezes" and displays the final VWAP value as a horizontal reference line
- **Dynamic Coloring**: Lines change color based on whether current price is above (bullish colors) or below (bearish colors) each level
### **Trading Applications**
**Primary Use Cases:**
1. **Support/Resistance Identification**: Previous VWAP closes often act as magnetic price zones
2. **Breakout Confirmation**: Price sustaining above/below these levels can confirm trend strength
3. **Mean Reversion**: Price often reverts to these historical balance points
4. **Multi-Timeframe Analysis**: Understanding which timeframe's level has the strongest influence
**Practical Scenarios:**
- "Price is approaching the weekly previous VWAP close - watch for reaction"
- "Daily and 4H previous VWAPs are clustered - strong confluence zone"
- "Price broke above all three levels - strong bullish momentum"
### **Alert System**
- **Cross Alerts**: Notifies when price crosses any of the three historical VWAP levels
- **Timeframe Specific**: Alerts specify which timeframe's level was crossed
- **Flexible Enable/Disable**: User can toggle alerts on/off via input settings
### **Visual Features**
- **Clear Hierarchy**: Different colors for easy timeframe distinction
- **Circle Markers**: Visual emphasis on the horizontal levels
- **Optional Bar Coloring**: Can color bars based on position relative to primary level
- **Clean Interface**: No clutter from current VWAP calculations
### **Strategic Value**
This indicator essentially maps **"yesterday's battlegrounds"** - showing where volume and price found equilibrium in previous sessions. These levels often become:
- **Psychological reference points** for traders
- **Institutional interest zones** where large players established positions
- **Natural profit-taking or entry levels** for continuation moves
The multi-timeframe approach allows you to see which historical levels are most relevant to current market structure, providing a sophisticated understanding of potential price magnets and reaction zones.
---
This description captures both the technical functionality and the practical trading value of your customized indicator!
detects bottom rebound signal🧩 General Idea:
This indicator detects bottom rebound signals — the start of an upward move after a downtrend — using a combination of RSI + price + volume.
⚙️ How the Indicator Works:
Calculates the RSI (Relative Strength Index) using a 14-period length.
→ Purpose: Measure momentum after a decline.
Monitors upward RSI crossovers at levels 45, 50, 55, and 60.
→ Purpose: Confirm that momentum is shifting from bearish to bullish.
Checks for a price increase of more than 2% compared to the previous close.
→ Purpose: Ensure that the move is strong and not just a small fluctuation.
Confirms that today’s volume is higher than yesterday’s.
→ Purpose: Validate that buying pressure is supported by real market activity.
When all conditions are met together ⇒ a rebound signal is generated ✅
(It plots a value of 1 as a histogram — can be used as a filter).
Triggers an alert when a rebound signal occurs — so you can get notified automatically in TradingView.
🎯 Indicator Purpose:
To identify stocks that are truly rebounding from their bottom, confirming it through momentum, price strength, and volume — often highlighting early entry opportunities before a larger uptrend.
🧩 الفكرة العامة:
يرصد لحظات ارتداد السهم من القاع — أي بداية صعود بعد فترة نزول — اعتمادًا على RSI + السعر + الحجم.
⚙️ خطوات عمل المؤشر:
يحسب مؤشر القوة النسبية (RSI) بطول 14 شمعة.
الهدف: قياس الزخم بعد نزول طويل.
يراقب تقاطعات RSI لأعلى عند المستويات (45، 50، 55، 60).
الهدف: تأكيد أن الزخم بدأ يتحول من سالب إلى موجب.
يتحقق من ارتفاع السعر أكثر من 2٪ مقارنةً بالإغلاق السابق.
الهدف: التأكد أن الصعود حقيقي وليس مجرد تذبذب بسيط.
يتأكد أن حجم التداول اليوم أكبر من اليوم السابق.
الهدف: وجود دعم حقيقي من المشترين (تأكيد على دخول سيولة).
عند تحقق كل الشروط السابقة معًا ⇒ يعطي إشارة ارتداد من القاع ✅
(يرسم عمودًا بقيمة 1 في الأسفل ويمكن استخدامه كفلتر).
يصدر تنبيه (Alert) عند تحقق الإشارة لتتابعها تلقائيًا في TradingView.
🎯 الهدف من المؤشر:
تحديد الأسهم التي بدأت ترتد فعليًا من القاع مع تأكيد الزخم والحجم والسعر — وهي غالبًا فرص دخول مبكرة قبل استمرار الصعود.
تنبيه مهم: يعمل كفلتر نبيه على قائمة محددة ولا يظهر على الشارت
RSI Overbought/Oversold + Divergence Indicator (new)//@version=5
indicator('CryptoSignalScanner - RSI Overbought/Oversold + Divergence Indicator (new)',
//---------------------------------------------------------------------------------------------------------------------------------
//--- Define Colors ---------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------
vWhite = #FFFFFF
vViolet = #C77DF3
vIndigo = #8A2BE2
vBlue = #009CDF
vGreen = #5EBD3E
vYellow = #FFB900
vRed = #E23838
longColor = color.green
shortColor = color.red
textColor = color.white
bullishColor = color.rgb(38,166,154,0) //Used in the display table
bearishColor = color.rgb(239,83,79,0) //Used in the display table
nomatchColor = color.silver //Used in the display table
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Functions--------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
TF2txt(TF) =>
switch TF
"S" => "RSI 1s:"
"5S" => "RSI 5s:"
"10S" => "RSI 10s:"
"15S" => "RSI 15s:"
"30S" => "RSI 30s"
"1" => "RSI 1m:"
"3" => "RSI 3m:"
"5" => "RSI 5m:"
"15" => "RSI 15m:"
"30" => "RSI 30m"
"45" => "RSI 45m"
"60" => "RSI 1h:"
"120" => "RSI 2h:"
"180" => "RSI 3h:"
"240" => "RSI 4h:"
"480" => "RSI 8h:"
"D" => "RSI 1D:"
"1D" => "RSI 1D:"
"2D" => "RSI 2D:"
"3D" => "RSI 2D:"
"3D" => "RSI 3W:"
"W" => "RSI 1W:"
"1W" => "RSI 1W:"
"M" => "RSI 1M:"
"1M" => "RSI 1M:"
"3M" => "RSI 3M:"
"6M" => "RSI 6M:"
"12M" => "RSI 12M:"
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Show/Hide Settings ----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiShowInput = input(true, title='Show RSI', group='Show/Hide Settings')
maShowInput = input(false, title='Show MA', group='Show/Hide Settings')
showRSIMAInput = input(true, title='Show RSIMA Cloud', group='Show/Hide Settings')
rsiBandShowInput = input(true, title='Show Oversold/Overbought Lines', group='Show/Hide Settings')
rsiBandExtShowInput = input(true, title='Show Oversold/Overbought Extended Lines', group='Show/Hide Settings')
rsiHighlightShowInput = input(true, title='Show Oversold/Overbought Highlight Lines', group='Show/Hide Settings')
DivergenceShowInput = input(true, title='Show RSI Divergence Labels', group='Show/Hide Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Table Settings --------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiShowTable = input(true, title='Show RSI Table Information box', group="RSI Table Settings")
rsiTablePosition = input.string(title='Location', defval='middle_right', options= , group="RSI Table Settings", inline='1')
rsiTextSize = input.string(title=' Size', defval='small', options= , group="RSI Table Settings", inline='1')
rsiShowTF1 = input(true, title='Show TimeFrame1', group="RSI Table Settings", inline='tf1')
rsiTF1 = input.timeframe("15", title=" Time", group="RSI Table Settings", inline='tf1')
rsiShowTF2 = input(true, title='Show TimeFrame2', group="RSI Table Settings", inline='tf2')
rsiTF2 = input.timeframe("60", title=" Time", group="RSI Table Settings", inline='tf2')
rsiShowTF3 = input(true, title='Show TimeFrame3', group="RSI Table Settings", inline='tf3')
rsiTF3 = input.timeframe("240", title=" Time", group="RSI Table Settings", inline='tf3')
rsiShowTF4 = input(true, title='Show TimeFrame4', group="RSI Table Settings", inline='tf4')
rsiTF4 = input.timeframe("D", title=" Time", group="RSI Table Settings", inline='tf4')
rsiShowHist = input(true, title='Show RSI Historical Columns', group="RSI Table Settings", tooltip='Show the information of the 2 previous closed candles')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- RSI Input Settings ----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiSourceInput = input.source(close, 'Source', group='RSI Settings')
rsiLengthInput = input.int(14, minval=1, title='RSI Length', group='RSI Settings', tooltip='Here we set the RSI lenght')
rsiColorInput = input.color(#26a69a, title="RSI Color", group='RSI Settings')
rsimaColorInput = input.color(#ef534f, title="RSIMA Color", group='RSI Settings')
rsiBandColorInput = input.color(#787B86, title="RSI Band Color", group='RSI Settings')
rsiUpperBandExtInput = input.int(title='RSI Overbought Extended Line', defval=80, minval=50, maxval=100, group='RSI Settings')
rsiUpperBandInput = input.int(title='RSI Overbought Line', defval=70, minval=50, maxval=100, group='RSI Settings')
rsiLowerBandInput = input.int(title='RSI Oversold Line', defval=30, minval=0, maxval=50, group='RSI Settings')
rsiLowerBandExtInput = input.int(title='RSI Oversold Extended Line', defval=20, minval=0, maxval=50, group='RSI Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- MA Input Settings -----------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
maTypeInput = input.string("EMA", title="MA Type", options= , group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
maColorInput = input.color(color.yellow, title="MA Color", group='MA Settings') //#7E57C2
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Divergence Input Settings ---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
lbrInput = input(title="Pivot Lookback Right", defval=2, group='RSI Divergence Settings')
lblInput = input(title="Pivot Lookback Left", defval=2, group='RSI Divergence Settings')
lbRangeMaxInput = input(title="Max of Lookback Range", defval=10, group='RSI Divergence Settings')
lbRangeMinInput = input(title="Min of Lookback Range", defval=2, group='RSI Divergence Settings')
plotBullInput = input(title="Plot Bullish", defval=true, group='RSI Divergence Settings')
plotHiddenBullInput = input(title="Plot Hidden Bullish", defval=true, group='RSI Divergence Settings')
plotBearInput = input(title="Plot Bearish", defval=true, group='RSI Divergence Settings')
plotHiddenBearInput = input(title="Plot Hidden Bearish", defval=true, group='RSI Divergence Settings')
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- RSI Calculation -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsi = ta.rsi(rsiSourceInput, rsiLengthInput)
rsiprevious = rsi
= request.security(syminfo.tickerid, rsiTF1, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF2, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF3, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
= request.security(syminfo.tickerid, rsiTF4, [rsi, rsi , rsi ], lookahead=barmerge.lookahead_on)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- MA Calculation -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
rsiMA = ma(rsi, maLengthInput, maTypeInput)
rsiMAPrevious = rsiMA
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Stoch RSI Settings + Calculation --------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
showStochRSI = input(false, title="Show Stochastic RSI", group='Stochastic RSI Settings')
smoothK = input.int(title="Stochastic K", defval=3, minval=1, maxval=10, group='Stochastic RSI Settings')
smoothD = input.int(title="Stochastic D", defval=4, minval=1, maxval=10, group='Stochastic RSI Settings')
lengthRSI = input.int(title="Stochastic RSI Lenght", defval=14, minval=1, group='Stochastic RSI Settings')
lengthStoch = input.int(title="Stochastic Lenght", defval=14, minval=1, group='Stochastic RSI Settings')
colorK = input.color(color.rgb(41,98,255,0), title="K Color", group='Stochastic RSI Settings', inline="1")
colorD = input.color(color.rgb(205,109,0,0), title="D Color", group='Stochastic RSI Settings', inline="1")
StochRSI = ta.rsi(rsiSourceInput, lengthRSI)
k = ta.sma(ta.stoch(StochRSI, StochRSI, StochRSI, lengthStoch), smoothK) //Blue Line
d = ta.sma(k, smoothD) //Red Line
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Divergence Settings ------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
bearColor = color.red
bullColor = color.green
hiddenBullColor = color.new(color.green, 50)
hiddenBearColor = color.new(color.red, 50)
//textColor = color.white
noneColor = color.new(color.white, 100)
osc = rsi
plFound = na(ta.pivotlow(osc, lblInput, lbrInput)) ? false : true
phFound = na(ta.pivothigh(osc, lblInput, lbrInput)) ? false : true
_inRange(cond) =>
bars = ta.barssince(cond == true)
lbRangeMinInput <= bars and bars <= lbRangeMaxInput
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Define Plot & Line Colors ---------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
rsiColor = rsi >= rsiMA ? rsiColorInput : rsimaColorInput
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Plot Lines ------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Create a horizontal line at a specific price level
myLine = line.new(bar_index , 75, bar_index, 75, color = color.rgb(187, 14, 14), width = 2)
bottom = line.new(bar_index , 50, bar_index, 50, color = color.rgb(223, 226, 28), width = 2)
mymainLine = line.new(bar_index , 60, bar_index, 60, color = color.rgb(13, 154, 10), width = 3)
hline(50, title='RSI Baseline', color=color.new(rsiBandColorInput, 50), linestyle=hline.style_solid, editable=false)
hline(rsiBandExtShowInput ? rsiUpperBandExtInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandShowInput ? rsiUpperBandInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandShowInput ? rsiLowerBandInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
hline(rsiBandExtShowInput ? rsiLowerBandExtInput : na, title='RSI Upper Band', color=color.new(rsiBandColorInput, 10), linestyle=hline.style_dashed, editable=false)
bgcolor(rsiHighlightShowInput ? rsi >= rsiUpperBandExtInput ? color.new(rsiColorInput, 70) : na : na, title="Show Extended Oversold Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi >= rsiUpperBandInput ? rsi < rsiUpperBandExtInput ? color.new(#64ffda, 90) : na : na: na, title="Show Overbought Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi <= rsiLowerBandInput ? rsi > rsiLowerBandExtInput ? color.new(#F43E32, 90) : na : na : na, title="Show Extended Oversold Highlight", editable=false)
bgcolor(rsiHighlightShowInput ? rsi <= rsiLowerBandInput ? color.new(rsimaColorInput, 70) : na : na, title="Show Oversold Highlight", editable=false)
maPlot = plot(maShowInput ? rsiMA : na, title='MA', color=color.new(maColorInput,0), linewidth=1)
rsiMAPlot = plot(showRSIMAInput ? rsiMA : na, title="RSI EMA", color=color.new(rsimaColorInput,0), editable=false, display=display.none)
rsiPlot = plot(rsiShowInput ? rsi : na, title='RSI', color=color.new(rsiColor,0), linewidth=1)
fill(rsiPlot, rsiMAPlot, color=color.new(rsiColor, 60), title="RSIMA Cloud")
plot(showStochRSI ? k : na, title='Stochastic K', color=colorK, linewidth=1)
plot(showStochRSI ? d : na, title='Stochastic D', color=colorD, linewidth=1)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Plot Divergence -------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low
oscHL = osc > ta.valuewhen(plFound, osc , 1) and _inRange(plFound )
// Price: Lower Low
priceLL = low < ta.valuewhen(plFound, low , 1)
bullCond = plotBullInput and priceLL and oscHL and plFound
plot(
plFound ? osc : na,
offset=-lbrInput,
title="Regular Bullish",
linewidth=2,
color=(bullCond ? bullColor : noneColor)
)
plotshape(
DivergenceShowInput ? bullCond ? osc : na : na,
offset=-lbrInput,
title="Regular Bullish Label",
text=" Bull ",
style=shape.labelup,
location=location.absolute,
color=bullColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low
oscLL = osc < ta.valuewhen(plFound, osc , 1) and _inRange(plFound )
// Price: Higher Low
priceHL = low > ta.valuewhen(plFound, low , 1)
hiddenBullCond = plotHiddenBullInput and priceHL and oscLL and plFound
plot(
plFound ? osc : na,
offset=-lbrInput,
title="Hidden Bullish",
linewidth=2,
color=(hiddenBullCond ? hiddenBullColor : noneColor)
)
plotshape(
DivergenceShowInput ? hiddenBullCond ? osc : na : na,
offset=-lbrInput,
title="Hidden Bullish Label",
text=" H Bull ",
style=shape.labelup,
location=location.absolute,
color=bullColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High
oscLH = osc < ta.valuewhen(phFound, osc , 1) and _inRange(phFound )
// Price: Higher High
priceHH = high > ta.valuewhen(phFound, high , 1)
bearCond = plotBearInput and priceHH and oscLH and phFound
plot(
phFound ? osc : na,
offset=-lbrInput,
title="Regular Bearish",
linewidth=2,
color=(bearCond ? bearColor : noneColor)
)
plotshape(
DivergenceShowInput ? bearCond ? osc : na : na,
offset=-lbrInput,
title="Regular Bearish Label",
text=" Bear ",
style=shape.labeldown,
location=location.absolute,
color=bearColor,
textcolor=textColor
)
//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High
oscHH = osc > ta.valuewhen(phFound, osc , 1) and _inRange(phFound )
// Price: Lower High
priceLH = high < ta.valuewhen(phFound, high , 1)
hiddenBearCond = plotHiddenBearInput and priceLH and oscHH and phFound
plot(
phFound ? osc : na,
offset=-lbrInput,
title="Hidden Bearish",
linewidth=2,
color=(hiddenBearCond ? hiddenBearColor : noneColor)
)
plotshape(
DivergenceShowInput ? hiddenBearCond ? osc : na : na,
offset=-lbrInput,
title="Hidden Bearish Label",
text=" H Bear ",
style=shape.labeldown,
location=location.absolute,
color=bearColor,
textcolor=textColor
)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Check RSI Lineup ------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
bullTF = rsi > rsi and rsi > rsi
bearTF = rsi < rsi and rsi < rsi
bullTF1 = rsi1 > rsi1_1 and rsi1_1 > rsi1_2
bearTF1 = rsi1 < rsi1_1 and rsi1_1 < rsi1_2
bullTF2 = rsi2 > rsi2_1 and rsi2_1 > rsi2_2
bearTF2 = rsi2 < rsi2_1 and rsi2_1 < rsi2_2
bullTF3 = rsi3 > rsi3_1 and rsi3_1 > rsi3_2
bearTF3 = rsi3 < rsi3_1 and rsi3_1 < rsi3_2
bullTF4 = rsi4 > rsi4_1 and rsi4_1 > rsi4_2
bearTF4 = rsi4 < rsi4_1 and rsi4_1 < rsi4_2
bbTxt(bull,bear) =>
bull ? "BULLISH" : bear ? "BEARISCH" : 'NO LINEUP'
bbColor(bull,bear) =>
bull ? bullishColor : bear ? bearishColor : nomatchColor
newTC(tBox, col, row, txt, width, txtColor, bgColor, txtHA, txtSize) =>
table.cell(table_id=tBox,column=col, row=row, text=txt, width=width,text_color=txtColor,bgcolor=bgColor, text_halign=txtHA, text_size=txtSize)
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//--- Define RSI Table Setting ----------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
width_c0 = 0
width_c1 = 0
if rsiShowTable
var tBox = table.new(position=rsiTablePosition, columns=5, rows=6, bgcolor=color.rgb(18,22,33,50), frame_color=color.black, frame_width=1, border_color=color.black, border_width=1)
newTC(tBox, 0,1,"RSI Current",width_c0,color.orange,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,1,str.format(" {0,number,#.##} ", rsi),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,1,bbTxt(bullTF, bearTF),width_c0,vWhite,bbColor(bullTF, bearTF),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,1,str.format(" {0,number,#.##} ", rsi ),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,1,str.format(" {0,number,#.##} ", rsi ),width_c0,vWhite,rsi < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF1
newTC(tBox, 0,2,TF2txt(rsiTF1),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,2,str.format(" {0,number,#.##} ", rsi1),width_c0,vWhite,rsi1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,2,bbTxt(bullTF1, bearTF1),width_c0,vWhite,bbColor(bullTF1,bearTF1),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,2,str.format(" {0,number,#.##} ", rsi1_1),width_c0,vWhite,rsi1_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,2,str.format(" {0,number,#.##} ", rsi1_2),width_c0,vWhite,rsi1_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF2
newTC(tBox, 0,3,TF2txt(rsiTF2),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,3,str.format(" {0,number,#.##} ", rsi2),width_c0,vWhite,rsi2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,3,bbTxt(bullTF2, bearTF2),width_c0,vWhite,bbColor(bullTF2,bearTF2),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,3,str.format(" {0,number,#.##} ", rsi2_1),width_c0,vWhite,rsi2_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,3,str.format(" {0,number,#.##} ", rsi2_2),width_c0,vWhite,rsi2_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF3
newTC(tBox, 0,4,TF2txt(rsiTF3),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,4,str.format(" {0,number,#.##} ", rsi3),width_c0,vWhite,rsi3 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,4,bbTxt(bullTF3, bearTF3),width_c0,vWhite,bbColor(bullTF3,bearTF3),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,4,str.format(" {0,number,#.##} ", rsi3_1),width_c0,vWhite,rsi3_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,4,str.format(" {0,number,#.##} ", rsi3_2),width_c0,vWhite,rsi3_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
if rsiShowTF4
newTC(tBox, 0,5,TF2txt(rsiTF4),width_c0,vWhite,color.rgb(0,0,0,100),'right',rsiTextSize)
newTC(tBox, 1,5,str.format(" {0,number,#.##} ", rsi4),width_c0,vWhite,rsi4 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 4,5,bbTxt(bullTF4, bearTF4),width_c0,vWhite,bbColor(bullTF4,bearTF4),'center',rsiTextSize)
if rsiShowHist
newTC(tBox, 2,5,str.format(" {0,number,#.##} ", rsi4_1),width_c0,vWhite,rsi4_1 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
newTC(tBox, 3,5,str.format(" {0,number,#.##} ", rsi4_2),width_c0,vWhite,rsi4_2 < 50 ? bearishColor:bullishColor,'left',rsiTextSize)
//------------------------------------------------------
//--- Alerts -------------------------------------------
//------------------------------------------------------
Intra day BB Trap Indicator with buy and sell signalThis script plots CPR and the BB channel and provides buy and sell signals.
All the plots are customizable. better to use it within an hour time frame.
Buy signal when the price closes above CPR support and comes inside bb channel on the lower bb side.
Sell signal when the price closes below CPR Resistance and comes inside bb channel on the upper bb side.






















