Simplified STH-MVRVSTH-MVRV for MSTR
STH-MVRV compares the Market Value (current price × circulating supply) to the Realized Value (the total cost basis of coins held by short-term holders,
Análise de Tendência
Long-Only Swing SPY (1H)High-Conviction Momentum Trading with Smart Risk Controls
Key Features
✔ Dual-Filter Signals: MA crossover + RSI divergence = fewer false entries*
✔ Aggressive But Calculated: Full equity deployment for trending markets
✔ SPY-Optimized: Parameters tuned to SPDR S&P 500 ETF's unique volatility profile
Risk Disclosure & Justifications
Why 100% Equity Allocation?
SPY's deep liquidity allows instant execution
Strategy shows 68% win rate in backtesting, with a higher win rate you can take on more risk
Only triggers 2-3 high-quality signals per week max, most of the times it is significantly less
Why 0.1% Commission?
Matches real-world brokerage fees:
IBKR: 0.08-0.12% for ETFs
Fidelity: 0.10% for large orders
Critical for accurate performance simulation
Why This Strategy is Unique
Requires both moving average crossover AND hidden bullish RSI divergence
22/23 MA length combination specifically optimized for SPY's 1H momentum
1.6:1 risk-reward ratio proven effective for swing trading
Backtested to withstand 5-sigma volatility events
Justification for Invite-Only Status
This indicator is offered as an Invite-Only script under PineAlpha Premium
Legal Disclaimer
This indicator is for educational purposes only and not financial advice. Trading involves high risk, and you may lose your capital. PineAlpha is not responsible for losses. Consult a financial advisor before trading.
15-Metric Strong Buy System (Final Version)This Pine Script analyzes 15 key technical signals to identify strong buy opportunities.
It assigns a score out of 13 for core conditions and checks 2 optional filters (Delivery Spike and RS > Nifty).
It only shows signals on the latest bar to keep the chart clean.
🧠 Core Structure Breakdown
✅ SECTION 1: Core Technical Signals (13 total)
Each of the following conditions adds 1 point to the score:
# Signal What It Checks Why It's Used
1 RSI (Daily & 1H) Both timeframes >55 and rising Confirms strength across multiple timeframes
2 Price > EMA20 & EMA50 Above short/medium-term trend lines Confirms uptrend support
3 Price near 20-day High Within 2% of recent high Breakout proximity
4 Volume > 20 SMA Unusual trading activity Confirms strength behind move
5 MACD Bullish Line > Signal and Histogram > 0 Momentum is building
6 ADX > 20 and +DI > -DI Trend strength and direction Validates strong directional trend
7 Bullish Candle Green candle with higher close Confirms bullish price action
8 BB Breakout Close > Upper Bollinger Band Volatility breakout confirmation
9 Supertrend Proxy Close above custom supertrend Simple trend direction filter
10 Close > Prev. High Break of short-term resistance Momentum continuation
11 VWAP Filter Close above VWAP Price leadership relative to volume
12 Weekly RSI > 50 Long-term trend momentum Confirms broader trend strength
13 BB Squeeze Bollinger Band width is low Signals potential upcoming move
🎯 Total Score = 0 to 13
🎯 SECTION 2: Optional Strength Filters (Displayed as labels)
Label What It Means Why It Matters
RS > Nifty Relative strength RSI > 55 vs Nifty Indicates outperformance
Delivery Spike Volume > 1.5× avg & bullish candle Suggests institutional activity
These are not included in the score, but if triggered, the chart displays:
🏷️ "RS > NIFTY" and/or
🏷️ "DELIVERY SPIKE"
in black background + white text boxes above the latest bar.
✅ SECTION 3: Output Logic
If score ≥ 12 → Show "STRONG BUY" on latest candle
If score = 11 → Show "BUY"
Also shows score label like Score: 12/13
Optional filters are displayed as labels if true
No clutter on historical candles — only current signal is shown.
🔔 SECTION 4: Alerts
Alert Trigger What It Does
score >= 12 Fires "Strong Buy Alert"
score == 11 Fires "Buy Alert"
⚖️ Pros & Cons (Analyst View)
✅ Pros:
Covers breadth of momentum, trend, breakout, and strength
Uses multi-timeframe confirmation for reliability
Avoids repainting by using latest bar only
Optional filters help detect smart money participation
Clean, uncluttered interface
❌ Cons:
Doesn’t include fundamentals
False positives possible during sideways or news-driven moves
No exit logic or Sell trigger
Uses proxy for Delivery spike, not actual delivery % (due to TradingView data limits)
💡 When to Trust the Signal?
Score Label Confidence
13/13 ✅ STRONG BUY + optional filters 🔥 Extremely strong
12/13 ✅ STRONG BUY ✅ Very high
11/13 BUY ⚠️ Medium — confirm with chart pattern
<11 — ❌ Avoid
Six-Vein Sword Energy (Concept)Used Ai to give an Eli5 for the indicator if needed.
The "Six Experts" Indicator
Imagine you have a team of six different experts trying to decide if the price is going to go UP or DOWN.
One expert is good at spotting speed (Momentum).
Another is good at spotting if things are overbought or oversold (RSI & KDJ).
Another is good at seeing if we're in a clear trend (MACD & BBI).
This indicator is just a simple scoreboard for your team of six experts.
How to Read the Scoreboard
1. The Six Rows of Arrows
Think of each row as one expert's vote.
A Red Up Arrow (↑) means that expert gives a "Thumbs Up" 👍. They think the price looks strong and might go up.
A Green Down Arrow (↓) means that expert gives a "Thumbs Down" 👎. They think the price looks weak and might go down.
Sometimes, you'll see a column with both red and green arrows. That's because your experts don't always agree! Maybe the "speed" expert says things are strong, but the "overbought" expert says things have gone up too much. This is totally normal.
2. The Jagged White Line
This white line is the final score. It simply counts how many "Thumbs Ups" (red arrows) there are.
If the white line is at the very top (at 6), it means all six experts agree and are giving a "Thumbs Up".
If the white line is at the very bottom (at 0), it means all six experts are giving a "Thumbs Down".
If the line is in the middle (like at 4), it means you have 4 "Thumbs Ups" and 2 "Thumbs Downs".
How to Use It (The Simple Way)
Look for Strong Agreement:
When It's Mostly Red: If you see the indicator is almost completely filled with red arrows and the white line is high up (at 5 or 6), it means your expert team is shouting "Things look strong!". This is a good confirmation for looking to buy.
When It's Mostly Green: If you see the indicator is mostly filled with green arrows and the white line is very low (at 0 or 1), the team is screaming "Things look weak!". This is a good confirmation for looking to sell.
Look for Disagreement:
When It's a Messy Mix of Red & Green: If the arrows are all mixed up and the white line is bouncing around in the middle, it means your experts are arguing. The market is choppy and undecided. This is a sign that you should probably be careful and wait for a clearer signal.
The Golden Rule: This indicator is a helper. Always look at the price candles first, and then use this scoreboard to confirm if the market strength agrees with what you see.
ATS LOGIC CHART EXPERT V6.0ATS Logic Chart Expert V6.0
Wyckoff-Inspired Automated Trend & Structure Analysis Tool
🔹 Overview
ATS Logic Chart Expert V6.0 is an advanced Wyckoff-based charting indicator designed for automated trend analysis, support/resistance mapping, and breakout signal generation. This major upgrade introduces a Dynamic Filter System (dynamic support/resistance lines) and enhances signal accuracy, providing traders with more precise structural analysis and breakout confirmation.
🔹 Key Features
1️⃣ Automated Price Structure Lines (Major Upgrade)
Smart detection of swing highs/lows with auto-plotting of critical support/resistance
White Dashed Line (Static Resistance) – Formed by prior downtrends, marks potential breakout zones
Red Dashed Line (Static Support) – Derived from uptrends, signals breakdown risks
Dynamic Filter System (New)
Dynamic Pressure Line (Blue) – Adjusts in real-time, reflecting short-term supply zones
Dynamic Support Line (Green) – Adjusts in real-time, reflecting short-term demand zones
Dynamic Breakout/Breakdown Signals (New)
Upright Triangle (▲) – Price breaks above dynamic pressure line, reinforcing bullish signals
Inverted Triangle (▼) – Price breaks below dynamic support line, reinforcing bearish signals
Optimized S/R positioning for "Open=Close" candles (fixed inaccuracies in previous versions)
2️⃣ Wyckoff LPS/LPSY Signal Engine
Signal Trigger Condition Market Implication
LPS (Last Point of Support) Break above white resistance (confirms accumulation) Bullish trend initiation
CVG LPS (Covered LPS) Retest & second breakout Stronger bullish confirmation
LPSY (Last Point of Supply) Breakdown below red support (confirms distribution) Bearish trend initiation
CVG LPSY (Covered LPSY) Pullback & second breakdown Stronger bearish confirmation
3️⃣ Breakout Signals (BK1/SK1)
BK1 (Breakout 1) – First close above white resistance, early long opportunity
SK1 (Short Kill 1) – First close below red support, early short opportunity
Dynamic Filter Enhancement – Combines with ▲/▼ icons to filter false breakouts
🔹 Signal Logic Deep Dive
📈 Bullish Scenario (LPS/BK1 + Dynamic Filter)
Accumulation Phase: Price consolidates near lows, dynamic support (green) flattens
Static Breakout: Price breaches white resistance → triggers LPS or BK1
Dynamic Confirmation: Price breaks dynamic pressure line (blue) → Upright Triangle (▲) appears
Retest Reinforcement: Successful retest of dynamic support → confirms CVG LPS
📉 Bearish Scenario (LPSY/SK1 + Dynamic Filter)
Distribution Phase: Price churns near highs, dynamic pressure (blue) descends
Static Breakdown: Price cracks red support → triggers LPSY or SK1
Dynamic Confirmation: Price breaks dynamic support (green) → Inverted Triangle (▼) appears
Pullback Reinforcement: Rebound rejected at dynamic pressure → confirms CVG LPSY
🔹 Practical Applications
✅ Trend Trading:
Prioritize static breakout + dynamic confirmation (e.g., LPS + ▲)
✅ Reversal Trading:
Combine SK1 + ▼ to capture early short opportunities
✅ S/R Trading:
Dynamic filters provide precise entry zones (ideal for ranging markets)
🔹 Customization Tips
Dynamic Filter Sensitivity: Adjust period settings for different asset volatilities
Signal Stacking:
Require both static and dynamic triggers (reduces noise)
Exclude "Open=Close" candles (algorithm optimized)
🔹 Version Highlights
✨ Dynamic Filter System – Tracks price momentum in real-time, detects breakouts earlier than static S/R
✨ ▲/▼ Visual Alerts – Intuitive dynamic breakout/breakdown markers
✨ Extreme Market Adaptability – Improved S/R calculations for doji/marubozu candles
⚠️ Risk Note: Dynamic filters perform best in trending markets; combine with static S/R in choppy conditions.
Ideal For:
• Wyckoff method traders
• Breakout/trend-following strategies
• Short-term traders needing precise S/R levels
aiQ - 10min Crypto Pro - v2aiQ - 10min Crypto Pro - v2
Professional-grade indicator specifically designed for 10-minute binary options trading on cryptocurrency pairs. Uses a 6-point confluence scoring system combining RSI divergences, VWMA trend ribbon, dynamic support/resistance, volume analysis, and momentum filters to identify high-probability CALL/PUT entries.
Key Features:
Two-tier signal system: ★ for premium setups (70% win rate), standard for regular trades (60% win rate)
Built-in money management calculator showing exact position sizing
Session filter highlights optimal trading hours (default: 08:00-22:00 UTC)
Real-time dashboard displays signal strength, trend, RSI, volume conditions
Automatic filtering of low-volume periods to avoid manipulation zones
Optimized for Speed: All parameters fine-tuned for 10-minute expiry times - faster RSI (9), responsive VWMA ribbon (3/8/13), and quick divergence detection. Includes alerts for both signal tiers.
Best Use: Wait for ★ signals with 4+ confluence score during active session hours. Never trade during "DRY" volume conditions. Position size based on 2% risk per trade (adjustable).
Note: This indicator provides signals only - actual binary options execution must be done through your broker platform.
ZenAlpha AI Strategy⚡ ZenAlpha AI Strategy
ZenAlpha AI Strategy is a precision-built, invite-only trading system powered by machine learning logic and institutional-level smart money concepts. Designed for serious traders, this AI-enhanced strategy identifies high-probability breakout zones and trend continuation setups across major Forex, Crypto, and Index markets.
✅ Key Features:
Smart Money Concept (SMC) based order block detection
Dynamic session-based breakout logic (Tokyo, London, New York) and work good with Indian Stock Market as well
Built-in AI filters to avoid false breakouts and trap zones
Adjustable Risk-Reward & Auto Stop Loss / Take Profit
Works Best on 15min, and 1H timeframes
🔐 Access:
This is a private invite-only strategy. Access is granted manually to approved traders.
📬 To request access or learn more about ZenAlpha AI Strategy, please contact us via TradingView DM or through our website/social media.
⚠️ Disclaimer:
This strategy is for educational and informational purposes only. Trading carries risk. Past performance does not guarantee future results. Use proper risk management and always test in a demo environment before going live.
Opening Range Breakout - ORB 15📈 Opening Range Breakout - ORB 15 v1.68
This indicator is based on the Opening Range Breakout (ORB) strategy, specifically tuned for the first 15 minutes of the trading session. It identifies and visualizes the ORB range, key levels, and alerts for breakouts during and shortly after the ORB window.
🔍 Features
Automatically detects the high and low during the ORB session (default 08:30–08:45).
Plots ORB High/Low lines with optional middle zone levels.
Fills the breakout zones with color shading.
Real-time and confirmed candle-close breakout alerts.
Optional on-chart label showing the size of the ORB range in points.
Label customization: background color, text color, text size.
Alert control: Only receive alerts within a user-defined time window after session start.
⚙️ Settings
ORB Session Time – Define the start and end of the opening range.
Alert Active Time (Hours) – Controls how long after the session alerts are allowed.
Show ORB Range Label – Toggle the on-chart label.
Label Styling Options – Adjust text size, color, and background.
🔔 Alerts
Break Above/Below ORB (real-time intrabar break)
Candle Closed Above/Below ORB (confirmed close outside the range)
✅ Use Cases
Scalping and intraday breakout strategies.
Morning volatility tracking.
Zone-based entries and stop placement.
Developed with performance and clarity in mind, this script gives traders a precise visual and alert-based system for trading early-session breakouts.
Let me know if you’d like a shorter version for the "short description" field too.
Ultra Smart Money Detection System v2.0Ultra Smart Money Detection System v2.0 - Complete Guide
What This Script Does
This is a TradingView Pine Script indicator that acts like a "financial detective" - it analyzes multiple clues in the market to figure out when big institutional investors (banks, hedge funds, mutual funds) are buying or selling stocks. Think of it as having a radar that spots where the "smart money" is moving.
Key Concepts
1. Smart Money vs Retail Money
Smart Money: Large institutions with millions/billions to invest
Retail Money: Individual investors like you and me
Why It Matters: Institutions often know things first and move markets
2. Volume: The Fuel of Price Movement
Volume = How many shares are traded
High Volume = Lots of interest/activity
Low Volume = Not much happening
Key Insight: Price moves are more meaningful when backed by high volume
Main Components Explained
📊 Volume Spread Analysis (VSA)
What It Does: Analyzes the relationship between price movement and volume
Key Patterns:
Accumulation: Big players buying quietly (high volume, small price drop)
Distribution: Big players selling quietly (high volume, small price rise)
Volume Climax: Extreme volume spikes indicating major moves
Look for VSA+ or VSA- signals on your chart
📈 Liquidity Gaps Detection
What It Does: Identifies price gaps that create trading opportunities
Types:
Gap Up: Stock opens higher than previous close
Gap Down: Stock opens lower than previous close
Gap Fill: Price returns to fill the empty space
Gaps often get "filled" - providing trading opportunities
🏢 Institutional Volume Footprint
What It Does: Tracks buying vs selling pressure from institutions
Key Metrics:
Order Flow Imbalance: Who's winning - buyers or sellers?
Accumulation Zone: Institutions are buying
Distribution Zone: Institutions are selling
Green zones = institutions buying, Red zones = institutions selling
💪 Relative Strength Comparison
What It Does: Compares your stock's performance to a benchmark (like NIFTY)
Key Points:
Outperforming: Stock doing better than market
Underperforming: Stock doing worse than market
Inline: Stock moving with the market
You want stocks that outperform the market
🔄 Volatility Contraction Pattern (VCP)
What It Does: Identifies stocks getting ready to make big moves
The Pattern:
Stock moves up
Stock consolidates (trades sideways with decreasing volatility)
Stock breaks out with volume
VCP setups often lead to significant price moves
💰 Money Flow Analysis
What It Does: Tracks where money is flowing in/out of the stock
Key Indicators:
A/D Line: Accumulation/Distribution
OBV: On-Balance Volume
Divergences: When price and volume disagree
Follow the money - it usually leads to price movement
Understanding the Dashboard
The script creates a comprehensive dashboard showing:
Signal Strength Levels:
🔥 STRONG BUY/SELL: High confidence (4+ signals aligned)
BUY/SELL: Moderate confidence (2-3 signals)
WATCH: Interesting setup developing
WAIT: No clear direction
Key Dashboard Sections:
Master Signal: Overall recommendation
Market Trend: Which direction is the market going?
VSA Analysis: What's the volume telling us?
Relative Strength: How's this stock vs the market?
Institution Zone: Are big players buying or selling?
Volume: Is there unusual activity?
Smart Money Flow: Where's the money going?
VCP Pattern: Any breakout setups?
Price Action: Technical levels and trends
Liquidity Gaps: Any gap trading opportunities?
How to Use This for Trading
For Traders:
1. Start Simple:
Focus on the Master Signal first
Look for 🔥 STRONG signals for highest probability trades
Avoid trading when dashboard shows "WAIT"
2. Confirm with Multiple Signals:
Don't trade on one signal alone
Look for 3+ green lights in the dashboard
Higher confidence = better trade setup
3. Follow the Volume:
Big moves need big volume
Volume surges often precede price moves
Volume climax can signal trend changes
4. Watch Institution Activity:
Accumulation zones = potential buying opportunities
Distribution zones = potential selling opportunities
Follow where institutions are putting their money
Entry Strategies:
For Bullish Trades:
✅ Master Signal shows BUY or STRONG BUY
✅ Market Trend is UPTREND
✅ VSA shows BULLISH
✅ Institution Zone shows ACCUMULATION
✅ Volume is HIGH or SURGE
✅ Relative Strength shows OUTPERFORM
For Bearish Trades:
❌ Master Signal shows SELL or STRONG SELL
❌ Market Trend is DOWNTREND
❌ VSA shows BEARISH
❌ Institution Zone shows DISTRIBUTION
❌ Volume is HIGH or SURGE
❌ Relative Strength shows UNDERPERFORM
Risk Management Tips
1. Position Sizing:
Larger positions for 🔥 STRONG signals
Smaller positions for moderate signals
No positions when confidence is LOW
2. Stop Losses:
Always use stop losses
Place below key support levels
Adjust based on volatility (ATR)
3. Take Profits:
Scale out of positions as they move in your favor
Don't get greedy on 🔥 STRONG signals
Book partial profits at resistance levels
Common Patterns to Watch For
1. The Perfect Storm 🔥:
VCP breakout + Volume surge + Institution accumulation + Strong relative strength
These setups have highest success rates
2. Gap and Go:
Significant gap up + High volume + VSA bullish
Often continues in gap direction
3. Divergence Plays:
Price makes new low, but OBV makes higher low
Often signals trend reversal
4. Volume Climax:
Extreme volume spike
Often marks short-term tops/bottoms
Alert System
The script includes alerts for:
High confidence signals
VCP breakouts
Volume climaxes
Institution zone changes
Gap formations
Divergence patterns
Customization Options
You Can Adjust:
Sensitivity: Higher values = fewer but stronger signals
Timeframes: Match your trading style
Colors: Customize to your preference
Dashboard: Show/hide different components
Recommended Settings :
Keep default settings initially
Focus on learning to read the signals
Gradually adjust as you gain experience
Common Mistakes to Avoid
1. Overtrading:
Don't trade every signal
Wait for high-confidence setups
Quality over quantity
2. Ignoring Market Context:
Don't fight the overall trend
Be extra careful in ranging markets
Consider broader market conditions
3. Not Using Stop Losses:
Always protect your capital
No signal is 100% accurate
Cut losses quickly, let winners run
4. Chasing Signals:
Don't enter after big moves
Wait for pullbacks or consolidation
Be patient for better entries
Practice Recommendations
1. Paper Trading:
Practice with virtual money first
Test the signals without risk
Build confidence before risking real money
2. Back-testing:
Look at historical signals
See how they performed
Learn from past patterns
3. Start Small:
Use small position sizes initially
Focus on learning, not earning
Gradually increase size as you improve
Final Tips for Success
Be Patient: Wait for high-quality setups
Stay Disciplined: Follow your rules consistently
Keep Learning: Markets evolve, so should you
Manage Risk: Protect your capital above all
Stay Objective: Don't let emotions drive decisions
Remember: This indicator is a tool to help you make better decisions, not a magic formula that guarantees profits. Always combine technical analysis with fundamental research and proper risk management.
The smart money leaves clues - this script helps you find them! 🕵️♂️💰
Percent Change of Range Candles - FullTHIS IS THE FINAL VERSION
Description of the Percent Change of Range Candles - Full Indicator
This indicator displays the percentage change relative to the price range (high-low) over a specified period and combines multiple timeframes to provide a more accurate view of market trends and momentum. The idea is to not rely solely on classic closing prices but also to consider the opening price, highest, and lowest values within the selected period, offering deeper insight into price movements.
What makes this indicator better than the previous two?
Combination of multiple timeframes and parameters — the indicator calculates not only one level of percentage change but also uses additional calculations for shorter periods (e.g., 25% of the main period length). This allows it to better track subtle changes and provide signals less prone to noise.
Visual representation with colors and horizontal levels — it clearly displays key percentage change levels and whether the current trend is positive or negative, making interpretation easier without additional analysis.
Candle visualization within the indicator (plotcandle) — unlike previous indicators that might display only lines, this one shows candles within the indicator window, allowing you to follow visual patterns that often add extra value.
Better adaptation to trend changes — the indicator dynamically adjusts input parameters depending on price direction (positive or negative change), making it more flexible and suitable for different market conditions.
How the indicator works
It first calculates the percentage change of the closing price relative to the high-low range over a chosen period (default 100 candles).
Then, it calculates the average change value from the previous five periods to smooth out sudden oscillations.
Additionally, it calculates values for a shorter period (25% of the total length), which are dynamically used as "high" or "low" values depending on the current trend (positive or negative).
Horizontal lines mark important percentage change levels (100%, 70%, 0%, -70%, -100%), serving as visual guides for trend strength and direction.
Candles inside the indicator further visualize the relationship between average and current values.
Purpose and application
This indicator is designed to track trend strength and market movements through percentage analysis of price ranges. It can be used for:
Detecting the start and end of trends,
Recognizing strong reversals or confirming trend continuation,
Complementary analysis alongside other technical indicators,
Facilitating decision-making in scalping and swing trading strategies.
What to watch out for
Like any indicator based on historical data, it does not guarantee success and should be used alongside other tools to confirm signals.
The length period (length) should be adjusted according to the market type and trading timeframe — longer periods provide more stable but slower signals, while shorter ones are more sensitive to noise.
Pay attention to the colors and levels on the indicator, as crossing horizontal lines may indicate potential trend reversals or strengthening.
Candles within the indicator window can help identify formations signaling entries or exits.
Nifty Futures vs ATM Option Candle Mismatch//@version=5
indicator("Nifty Futures vs ATM Option Candle Mismatch", overlay=true)
// === Input symbols (modify these as needed) ===
niftySymbol = input.symbol("NSE:NIFTY1!", "Nifty Futures Symbol")
atmOptionSymbol = input.symbol("NSE:NIFTY24JUN22400CE", "ATM Option Symbol") // Replace with real ATM symbol dynamically
// === Get 5-min candles from both instruments ===
niftyClose = request.security(niftySymbol, "5", close)
niftyOpen = request.security(niftySymbol, "5", open)
optionClose = request.security(atmOptionSymbol, "5", close)
optionOpen = request.security(atmOptionSymbol, "5", open)
// === Determine candle color (green or red) ===
niftyGreen = niftyClose > niftyOpen
optionGreen = optionClose > optionOpen
// === Condition: Mismatch in candle direction ===
mismatch = (niftyGreen != optionGreen)
// === Plot an icon or background when mismatch occurs ===
plotshape(mismatch, title="Mismatch Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
bgcolor(mismatch ? color.new(color.red, 85) : na, title="Mismatch Background")
Oculus Breaker Block ProOculus Breaker Block Pro
Version 1.0 | Pine Script v6
Overview
Oculus Breaker Block Pro automatically identifies key swing pivots and plots a single “breaker” zone when price decisively breaks above a swing high (bullish) or below a swing low (bearish). The block extends forward and provides a clear visual of where price may retest or react.
Key Features
Swing Pivot Detection: Finds swing highs and lows over a user-defined bar span.
Bullish & Bearish Blocks: Optionally show only bullish zones, only bearish zones, or both.
Dynamic Block Drawing: Deletes the previous box and draws a new one upon each valid breakout.
Custom Colors & Transparency: Adjust block fill color and opacity for both bullish and bearish zones.
Automatic Cleanup: Blocks self-delete after a configurable number of bars to keep the chart uncluttered.
How to Use
Apply to Chart: Add the script on any timeframe; it runs in overlay mode.
Set Inputs:
Swing Length: Number of bars on each side to define pivot.
Bars Before Cleanup: How many bars to wait before removing an old block.
Show Bullish / Bearish Block: Toggle visibility.
Bull / Bear Block Color: Choose fill color and opacity.
Interpret Zones:
A bullish block marks where price broke above a recent swing high—watch for retests into this zone to trigger long entries.
A bearish block marks where price broke below a recent swing low—watch for retests into this zone to trigger short entries.
Inputs
Swing Length: 5 (bars each side)
Bars Before Cleanup: 50
Show Bullish Block: On
Show Bearish Block: On
Bull Block Color: Green (50% opacity)
Bear Block Color: Red (50% opacity)
Version History
1.0 – Initial release with core breaker-block logic, color customization, and automated cleanup.
Disclaimer
This indicator is for educational purposes. Always backtest and combine with proper risk management before trading live.
Momentum Trend Bands (MTB)📌 What Is the Momentum Trend Bands (MTB) Indicator?
The Momentum Trend Bands (MTB) is a custom-built trend detection indicator that blends momentum and volatility into a dynamic, visual system. Its core goal is to help traders identify the beginning and strength of a trend earlier than traditional tools like moving averages, while filtering out market noise.
🧠 What Is It Built On?
The indicator is built on two foundational concepts:
1. Rate of Change (ROC): This measures the speed at which the price is moving. We use a fast and a slow version of ROC and then calculate their difference. This difference gives us a momentum signal — it shows whether the price is gaining upward or downward strength.
2. Standard Deviation (Volatility): This shows how much the price fluctuates. By calculating it over a certain period, we can measure market noise and filter out weak, insignificant moves that might otherwise cause false signals.
Together, momentum shows direction, and volatility shows confidence.
🛠️ How Does It Work?
• The core of the indicator is a smoothed momentum signal, representing the net difference between fast and slow momentum.
• Around this signal, we build upper and lower bands — these are dynamic boundaries that expand or contract based on volatility.
• When the momentum breaks above or below these bands, it signals a strong directional move — suggesting the start or continuation of a trend.
The bands also serve a visual filter:
• If momentum stays within the bands, it implies the market is consolidating or ranging.
• When it exits the bands decisively, it implies strength in that direction.
📈 How to Use It?
1. Trend Entry:
o When the momentum signal rises above the upper band, it suggests a strong bullish trend may be starting.
o When the signal drops below the lower band, it indicates a bearish trend.
2. Stay Out of Chop:
o If the signal moves sideways within the bands, it’s best to avoid trading — the market is likely consolidating or ranging.
3. Visual Confirmation:
o The background color changes with the trend: green for bullish, red for bearish, gray for neutral. This makes it quick to read visually.
4. Signal Arrows:
o Small up or down arrows appear when trends begin, serving as early entry points.
⚙️ What Kind of Market Does It Work Best In?
• Trending Markets: MTB shines in markets with strong directional movement — whether up or down. It's designed to pick up momentum early and hold through trend continuation.
• Volatile Instruments: The built-in volatility filter helps in markets like crypto or commodities where price action is fast and erratic.
• Avoid Flat or Low-Volume Conditions: In sideways markets, MTB may stay gray or flip often — these are not ideal times to trade using this indicator alone.
💎 Why Is It Unique?
Unlike many indicators that react slowly (like moving averages) or trigger too often (like raw momentum), MTB balances early detection with reliability. Its unique combination of:
• ROC difference for directional intent,
• Smoothing for signal clarity,
• Bands scaled by volatility for robustness,
…makes it stand apart from commonly available indicators on platforms like TradingView.
Dealing rangeThis script plots the current dealing ranges for the current time frame, otherwise if you want you can use it to pair it with the higher time frame ranges e.g. for time frames like 1min on the chart would be a 15 min range and the alignment is
1m -> 15m
3m -> 30m
5m -> 1h
15m -> 4h
1h -> 1D
4h -> 1W
1D -> 1M
1W -> 1Y
Example without tf alignment :
example with tf alignement :
Oculus Elite MACD ProOculus Elite MACD Pro
Version 1.0 | Pine Script v6
Overview
Oculus Elite MACD Pro is an enhanced Moving Average Convergence Divergence (MACD) indicator designed for clarity and precision. It combines customizable EMA periods, optional histogram smoothing, visual crossover markers, and built-in alerts—all in a dedicated pane for unobstructed analysis.
Key Features
Custom EMA Lengths
Set fast, slow, and signal EMA periods to suit your trading style.
Histogram Smoothing
Optionally smooth the raw MACD histogram for cleaner momentum readings.
Colored Histogram Columns
Positive and negative bars are colored independently to highlight shifts in momentum.
Crossover Markers
Plotup and down triangles at MACD/signal crossovers for quick visual entry cues.
Built-In Alerts
Enable alerts on bullish and bearish crossovers to never miss a signal.
Zero Line Reference
Dotted zero line helps you gauge when momentum shifts above or below neutral.
How to Use
Add to Chart – Apply the script to any chart; it renders in a separate panel.
Configure Inputs – Adjust EMA lengths, choose source, and set histogram smoothing.
Read the Histogram – Look for expanding bars in your direction as momentum strengthens.
Watch for Crossovers – Use plotted shapes or alerts to time entries when the MACD line crosses the signal line.
Combine with Other Analysis – Layer with trend indicators or price action for confirmation.
Inputs
Fast EMA Length: 12
Slow EMA Length: 26
Signal EMA Length: 9
Source: Close (editable)
Histogram Smooth Length: 1 (no smoothing)
MACD Line Color / Signal Line Color / Histogram Positive/Negative Colors
Show Crossover Symbols: On/Off
Enable Alerts: On/Off
Version History
1.0 – Initial release featuring full MACD functionality with visual enhancements and alerts.
Disclaimer
This indicator is provided for educational purposes only. Always backtest with your own parameters and use disciplined risk management before trading live.
JK's Inside DayEvaluates today’s candle only after it's closed
Keeps screener alignment and alerting accurate for daily after-hours workflows
NP Screener with Alerts For Nifty 50 [NITIN PADALE]//@version=6
indicator('NP Screener with Alerts For Nifty 50 ', overlay = true)
////////////
// INPUTS //
filter_enabled = input.bool(false, '', group = 'Filter', inline = 'Filter')
filter_column = input.string('Price', title = 'Column', options = , group = 'Filter', inline = 'Filter')
filter_from = input.float(-9999999, 'From', group = 'Filter', inline = 'Filter')
filter_to = input.float(9999999, 'To', group = 'Filter', inline = 'Filter')
// SMA
rsi_len = input.int(14, title = 'RSI Length', group = 'Indicators')
rsi_os = input.float(30, title = 'RSI Overbought', group = 'Indicators')
rsi_ob = input.float(70, title = 'RSI Oversold', group = 'Indicators')
// TSI
tsi_long_len = input.int(25, title = 'TSI Long Length', group = 'Indicators')
tsi_shrt_len = input.int(13, title = 'TSI Short Length', group = 'Indicators')
tsi_ob = input.float(30, title = 'TSI Overbought', group = 'Indicators')
tsi_os = input.float(-30, title = 'TSI Oversold', group = 'Indicators')
// ADX Params
adx_smooth = input.int(14, title = 'ADX Smoothing', group = 'Indicators')
adx_dilen = input.int(14, title = 'ADX DI Length', group = 'Indicators')
adx_level = input.float(40, title = 'ADX Level', group = 'Indicators')
// SuperTrend
sup_atr_len = input.int(10, 'Supertrend ATR Length', group = 'Indicators')
sup_factor = input.float(3.0, 'Supertrend Factor', group = 'Indicators')
/////////////
// SYMBOLS //
u01 = input.bool(true, title = '', group = 'Symbols', inline = 's01')
u02 = input.bool(true, title = '', group = 'Symbols', inline = 's02')
u03 = input.bool(true, title = '', group = 'Symbols', inline = 's03')
u04 = input.bool(true, title = '', group = 'Symbols', inline = 's04')
u05 = input.bool(true, title = '', group = 'Symbols', inline = 's05')
u06 = input.bool(true, title = '', group = 'Symbols', inline = 's06')
u07 = input.bool(true, title = '', group = 'Symbols', inline = 's07')
u08 = input.bool(true, title = '', group = 'Symbols', inline = 's08')
u09 = input.bool(true, title = '', group = 'Symbols', inline = 's09')
u10 = input.bool(true, title = '', group = 'Symbols', inline = 's10')
s01 = input.symbol('HDFCBANK', group = 'Symbols', inline = 's01')
s02 = input.symbol('ICICIBANK', group = 'Symbols', inline = 's02')
s03 = input.symbol('RELIANCE', group = 'Symbols', inline = 's03')
s04 = input.symbol('INFY', group = 'Symbols', inline = 's04')
s05 = input.symbol('BHARTIARTL', group = 'Symbols', inline = 's05')
s06 = input.symbol('LT', group = 'Symbols', inline = 's06')
s07 = input.symbol('ITC', group = 'Symbols', inline = 's07')
s08 = input.symbol('TCS', group = 'Symbols', inline = 's08')
s09 = input.symbol('AXISBANK', group = 'Symbols', inline = 's09')
s10 = input.symbol('SBIN', group = 'Symbols', inline = 's10')
//////////////////
// CALCULATIONS //
filt_col_id = switch filter_column
'Price' => 1
'RSI' => 2
'TSI' => 3
'ADX' => 4
'SuperTrend' => 5
=> 0
// Get only symbol
only_symbol(s) =>
array.get(str.split(s, ':'), 1)
id_symbol(s) =>
switch s
1 => only_symbol(s01)
2 => only_symbol(s02)
3 => only_symbol(s03)
4 => only_symbol(s04)
5 => only_symbol(s05)
6 => only_symbol(s06)
7 => only_symbol(s07)
8 => only_symbol(s08)
9 => only_symbol(s09)
10 => only_symbol(s10)
=> na
// for TSI
double_smooth(src, long, short) =>
fist_smooth = ta.ema(src, long)
ta.ema(fist_smooth, short)
// ADX
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : up > down and up > 0 ? up : 0
minusDM = na(down) ? na : down > up and down > 0 ? down : 0
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
adx_func(dilen, adxlen) =>
= dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
adx
screener_func() =>
// RSI
rsi = ta.rsi(close, rsi_len)
// TSI
pc = ta.change(close)
double_smoothed_pc = double_smooth(pc, tsi_long_len, tsi_shrt_len)
double_smoothed_abs_pc = double_smooth(math.abs(pc), tsi_long_len, tsi_shrt_len)
tsi = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
// ADX
adx = adx_func(adx_dilen, adx_smooth)
// Supertrend
= ta.supertrend(sup_factor, sup_atr_len)
// Set Up Matrix
screenerMtx = matrix.new(0, 6, na)
screenerFun(numSym, sym, flg) =>
= request.security(sym, timeframe.period, screener_func())
arr = array.from(numSym, cl, rsi, tsi, adx, sup)
if flg
matrix.add_row(screenerMtx, matrix.rows(screenerMtx), arr)
// Security call
screenerFun(01, s01, u01)
screenerFun(02, s02, u02)
screenerFun(03, s03, u03)
screenerFun(04, s04, u04)
screenerFun(05, s05, u05)
screenerFun(06, s06, u06)
screenerFun(07, s07, u07)
screenerFun(08, s08, u08)
screenerFun(09, s09, u09)
screenerFun(10, s10, u10)
///////////
// PLOTS //
var tbl = table.new(position.top_right, 6, 41, frame_color = #151715, frame_width = 1, border_width = 2, border_color = color.new(color.white, 100))
log.info(str.tostring(filt_col_id))
alert_msg = ''
if barstate.islast
table.clear(tbl, 0, 0, 5, 40)
table.cell(tbl, 0, 0, 'Symbol', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 1, 0, 'Price', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 2, 0, 'RSI', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 3, 0, 'TSI', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 4, 0, 'ADX', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 5, 0, 'Supertrend', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
if matrix.rows(screenerMtx) > 0
for i = 0 to matrix.rows(screenerMtx) - 1 by 1
is_filt = not filter_enabled or matrix.get(screenerMtx, i, filt_col_id) >= filter_from and matrix.get(screenerMtx, i, filt_col_id) <= filter_to
if is_filt
if str.length(alert_msg) > 0
alert_msg := alert_msg + ','
alert_msg
alert_msg := alert_msg + id_symbol(matrix.get(screenerMtx, i, 0))
rsi_col = matrix.get(screenerMtx, i, 2) > rsi_ob ? color.red : matrix.get(screenerMtx, i, 2) < rsi_os ? color.green : #aaaaaa
tsi_col = matrix.get(screenerMtx, i, 3) > tsi_ob ? color.red : matrix.get(screenerMtx, i, 3) < tsi_os ? color.green : #aaaaaa
adx_col = matrix.get(screenerMtx, i, 4) > adx_level ? color.green : #aaaaaa
sup_text = matrix.get(screenerMtx, i, 5) > 0 ? 'Down' : 'Up'
sup_col = matrix.get(screenerMtx, i, 5) < 0 ? color.green : color.red
table.cell(tbl, 0, i + 1, id_symbol(matrix.get(screenerMtx, i, 0)), text_halign = text.align_left, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 1, i + 1, str.tostring(matrix.get(screenerMtx, i, 1)), text_halign = text.align_center, bgcolor = #aaaaaa, text_color = color.white, text_size = size.small)
table.cell(tbl, 2, i + 1, str.tostring(matrix.get(screenerMtx, i, 2), '#.##'), text_halign = text.align_center, bgcolor = rsi_col, text_color = color.white, text_size = size.small)
table.cell(tbl, 3, i + 1, str.tostring(matrix.get(screenerMtx, i, 3), '#.##'), text_halign = text.align_center, bgcolor = tsi_col, text_color = color.white, text_size = size.small)
table.cell(tbl, 4, i + 1, str.tostring(matrix.get(screenerMtx, i, 4), '#.##'), text_halign = text.align_center, bgcolor = adx_col, text_color = color.white, text_size = size.small)
table.cell(tbl, 5, i + 1, sup_text, text_halign = text.align_center, bgcolor = sup_col, text_color = color.white, text_size = size.small)
if str.length(alert_msg) > 0
alert(alert_msg, freq = alert.freq_once_per_bar_close)
Oculus Elite Linear Regression ChannelOculus Elite Linear Regression Channel
Version 1.0 | Pine Script v6
Overview
The Oculus Elite Linear Regression Channel overlays a data-driven trend channel on your chart by fitting a best-fit regression line to price, then projecting upper and lower bounds based on volatility. It adapts dynamically to market conditions, providing a clear visual framework for identifying trend direction, mean-reversion opportunities, and breakout strength.
Key Features
Median Regression Line
Calculates the linear regression of your chosen source over the specified lookback length, and colors the line green on up-sloping trends and red on down-sloping trends.
Volatility-Based Bands
Upper and lower channel boundaries plotted at a user-defined multiple of the standard deviation from the regression line.
Configurable Fill
Optionally shade the area between bands for enhanced visual clarity.
Touch & Breakout Alerts
Built-in alert conditions trigger when price crosses into or submits a close beyond either channel band.
Slope-Change Labels
Labels appear when the regression slope changes direction, marking potential trend inflection points.
How to Use
Apply the Script – Best on intraday or shorter-term charts (1 m–1 h).
Set Inputs – Adjust regression length, deviation multiplier, and select your price source.
Interpret the Channel
Trend Direction: Follow the colored median line’s slope.
Mean Reversion: Watch for price approaching the regression line after touching a band.
Breakouts: Trade breakouts when price closes beyond the bands (confirm with alerts).
Manage Alerts – Enable touch or breakout alerts to receive notifications when key levels are tested.
Inputs
Regression Length: Number of bars to include in the linear regression (default: 100)
Deviation Multiplier: Standard-deviation multiple for band width (default: 2.0)
Source: Price series to regress (default: close)
Show Median Line: Toggle regression line visibility
Show Bands: Toggle upper/lower band visibility
Fill Between Bands: Toggle shading between bands
Alert on Band Touch: Enable alerts when price crosses a band boundary
Alert on Band Breakout: Enable alerts when price closes beyond a band
Version History
1.0 – Initial release with dynamic regression, volatility bands, alerts, and slope labels.
Disclaimer
This indicator is provided for educational purposes. Always backtest with your own parameters and apply disciplined risk management before trading live.
Oculus ORB Pro v1Oculus ORB Pro v1
Version 1.0 | Pine Script v6
Overview
Oculus ORB Pro v1 delivers a robust Opening Range Breakout (ORB) system designed for clarity and precision. It automatically measures the high and low of the first N minutes after the New York open, then generates entry signals on clean breakouts, filters by trend and volume, and plots multi-level profit targets and stops.
Key Features
Configurable Opening Range
Defines high/low over the first N minutes after 9:30 AM ET (selectable).
Trend Filter
Optional 200-period EMA filter to align breakouts with higher-timeframe trend.
Volume Spike Confirmation
Optional filter that requires current volume to exceed a multiple of the moving average.
Automated Breakout Signals
Plots clear up/down arrows once price closes beyond the opening range and all filters pass.
ATR-Based Profit Targets & Stops
Automatically calculates three exit levels (0.5×, 1×, 1.5× ATR by default) and plots a protective stop at the opposite range boundary.
Fully Adjustable Inputs
Fine-tune range duration, ATR length, EMA length, volume lookback and multiplier, and target multipliers.
How to Use
Apply to Chart - Best on 1 m to 15 m timeframes.
Set Inputs - Choose opening range duration, enable/disable trend and volume filters, and adjust ATR and target multipliers.
Interpret Signals -
Long when a candle closes above the range high after the defined period (with filters met).
Short when a candle closes below the range low after the defined period.
Manage Exits - Scale out at TP1, TP2, TP3 levels and use the plotted stop to limit risk.
Inputs
Opening Range Duration (minutes): 30
ATR Length: 14
TP Multipliers (ATR): 0.5, 1.0, 1.5
Trend Filter (200 EMA): On/Off
Volume Spike Filter: On/Off
Volume Lookback: 20
Volume Spike Multiplier: 1.5
Version History
1.0 – Initial public release with core ORB logic, trend/volume filters, and ATR exits.
Disclaimer
This indicator is provided for educational purposes only. Always backtest with your own parameters and apply sound risk management before trading live.
Clean Support/Resistance Rejection (Strict Filtering)Best buy and Sell signal based on support and resistance levels.
You can edit how many candle rejections you want after rejection on each level.
Enjoy!
Oculus Quantum Master Tool v1The Oculus Quantum Master Tool is your all-in-one market scanner, combining multi-EMA trend analysis, volatility filtering, Fair Value Gap identification, liquidity sweep detection, volume-spike confirmation, and multi-tier profit targets. Built for day traders and swing traders alike, it spots high-probability entries and visualizes key zones so you can trade with precision and confidence.
Key Features
Multi-EMA Framework: 10/20 fast cross, 50 trend filter, 200 major trend context
ATR-Based Targets: 3 customizable exit levels (0.5×, 1×, 2× ATR)
Volume Spike Filter: Only signals when current volume > X × average volume
Fair Value Gaps: Optional display of bullish/bearish FVG zones
Liquidity Sweeps: Detects breaks of recent highs/lows for optimal entries
Entry Signals: Buy/Sell arrows only when ALL conditions align
Fully Customizable: Toggle any feature on/off to suit your strategy
How to Use
Set Your Timeframe – Best on 5-min to 1h charts.
Adjust Inputs – Modify EMAs, ATR length, volume parameters, and multipliers.
Toggle Overlays – Enable/disable FVG zones, targets, or signals in the settings.
Trade Execution – Enter on a buy/sell arrow, manage risk with your preferred stop, and scale out at TP1/TP2/TP3.
Inputs
EMA Fast (default: 10)
EMA Slow (20)
EMA Trend (50)
EMA Major (200)
ATR Length (14)
TP Multipliers (0.5 / 1.0 / 2.0)
Volume Lookback (20) & Spike Multiplier (1.5)
Show Fair Value Gaps (on/off)
Show Targets (on/off)
Show Entry Signals (on/off)
Version History
v1.0 – Initial release with core multi-EMA, ATR targets, volume filter, FVG & liquidity sweeps.
Disclaimer
This indicator is for educational purposes. Always backtest before using in live markets and apply proper risk management.
Enjoy the edge—and make every move count.
NP Screener with Alerts//@version=5
indicator(' NP Screener with Alerts ', overlay=true)
////////////
// INPUTS //
filter_enabled = input.bool(false, "", group = "Filter", inline = "Filter")
filter_column = input.string("Price", title = "Column", options = , group = "Filter", inline = "Filter")
filter_from = input.float(-9999999, "From", group = "Filter", inline = "Filter")
filter_to = input.float(9999999, "To", group = "Filter", inline = "Filter")
// SMA
rsi_len = input.int( 14, title = "RSI Length", group = "Indicators")
rsi_os = input.float(30, title = "RSI Overbought", group = "Indicators")
rsi_ob = input.float(70, title = "RSI Oversold", group = "Indicators")
// TSI
tsi_long_len = input.int( 25, title = "TSI Long Length", group = "Indicators")
tsi_shrt_len = input.int( 13, title = "TSI Short Length", group = "Indicators")
tsi_ob = input.float( 30, title = "TSI Overbought", group = 'Indicators')
tsi_os = input.float(-30, title = "TSI Oversold", group = 'Indicators')
// ADX Params
adx_smooth = input.int( 14, title = "ADX Smoothing", group = 'Indicators')
adx_dilen = input.int( 14, title = "ADX DI Length", group = 'Indicators')
adx_level = input.float(40, title = "ADX Level", group = 'Indicators')
// SuperTrend
sup_atr_len = input.int( 10, "Supertrend ATR Length", group = 'Indicators')
sup_factor = input.float(3.0, "Supertrend Factor", group = 'Indicators')
/////////////
// SYMBOLS //
u01 = input.bool(true, title = "", group = 'Symbols', inline = 's01')
u02 = input.bool(true, title = "", group = 'Symbols', inline = 's02')
u03 = input.bool(true, title = "", group = 'Symbols', inline = 's03')
u04 = input.bool(true, title = "", group = 'Symbols', inline = 's04')
u05 = input.bool(true, title = "", group = 'Symbols', inline = 's05')
u06 = input.bool(true, title = "", group = 'Symbols', inline = 's06')
u07 = input.bool(true, title = "", group = 'Symbols', inline = 's07')
u08 = input.bool(true, title = "", group = 'Symbols', inline = 's08')
u09 = input.bool(true, title = "", group = 'Symbols', inline = 's09')
u10 = input.bool(true, title = "", group = 'Symbols', inline = 's10')
u11 = input.bool(true, title = "", group = 'Symbols', inline = 's11')
u12 = input.bool(true, title = "", group = 'Symbols', inline = 's12')
u13 = input.bool(true, title = "", group = 'Symbols', inline = 's13')
u14 = input.bool(true, title = "", group = 'Symbols', inline = 's14')
u15 = input.bool(true, title = "", group = 'Symbols', inline = 's15')
u16 = input.bool(true, title = "", group = 'Symbols', inline = 's16')
u17 = input.bool(true, title = "", group = 'Symbols', inline = 's17')
u18 = input.bool(true, title = "", group = 'Symbols', inline = 's18')
u19 = input.bool(true, title = "", group = 'Symbols', inline = 's19')
u20 = input.bool(true, title = "", group = 'Symbols', inline = 's20')
u21 = input.bool(true, title = "", group = 'Symbols', inline = 's21')
u22 = input.bool(true, title = "", group = 'Symbols', inline = 's22')
u23 = input.bool(true, title = "", group = 'Symbols', inline = 's23')
u24 = input.bool(true, title = "", group = 'Symbols', inline = 's24')
u25 = input.bool(true, title = "", group = 'Symbols', inline = 's25')
u26 = input.bool(true, title = "", group = 'Symbols', inline = 's26')
u27 = input.bool(true, title = "", group = 'Symbols', inline = 's27')
u28 = input.bool(true, title = "", group = 'Symbols', inline = 's28')
u29 = input.bool(true, title = "", group = 'Symbols', inline = 's29')
u30 = input.bool(true, title = "", group = 'Symbols', inline = 's30')
u31 = input.bool(true, title = "", group = 'Symbols', inline = 's31')
u32 = input.bool(true, title = "", group = 'Symbols', inline = 's32')
u33 = input.bool(true, title = "", group = 'Symbols', inline = 's33')
u34 = input.bool(true, title = "", group = 'Symbols', inline = 's34')
u35 = input.bool(true, title = "", group = 'Symbols', inline = 's35')
u36 = input.bool(false, title = "", group = 'Symbols', inline = 's36')
u37 = input.bool(false, title = "", group = 'Symbols', inline = 's37')
u38 = input.bool(false, title = "", group = 'Symbols', inline = 's38')
u39 = input.bool(false, title = "", group = 'Symbols', inline = 's39')
u40 = input.bool(false, title = "", group = 'Symbols', inline = 's40')
s01 = input.symbol('XRPUSDT', group = 'Symbols', inline = 's01')
s02 = input.symbol('BTCUSDT', group = 'Symbols', inline = 's02')
s03 = input.symbol('DOGEUSDT', group = 'Symbols', inline = 's03')
s04 = input.symbol('BNBUSDT', group = 'Symbols', inline = 's04')
s05 = input.symbol('ETHUSDT', group = 'Symbols', inline = 's05')
s06 = input.symbol('ADAUSDT', group = 'Symbols', inline = 's06')
s07 = input.symbol('XRPBTC', group = 'Symbols', inline = 's07')
s08 = input.symbol('DOGEBTC', group = 'Symbols', inline = 's08')
s09 = input.symbol('TRXUSDT', group = 'Symbols', inline = 's09')
s10 = input.symbol('XRPUSDT', group = 'Symbols', inline = 's10')
s11 = input.symbol('BTCUSDT', group = 'Symbols', inline = 's11')
s12 = input.symbol('DOGEUSDT', group = 'Symbols', inline = 's12')
s13 = input.symbol('VETUSDT', group = 'Symbols', inline = 's13')
s14 = input.symbol('ETHBTC', group = 'Symbols', inline = 's14')
s15 = input.symbol('BNBBTC', group = 'Symbols', inline = 's15')
s16 = input.symbol('EOSUSDT', group = 'Symbols', inline = 's16')
s17 = input.symbol('XLMUSDT', group = 'Symbols', inline = 's17')
s18 = input.symbol('LTCUSDT', group = 'Symbols', inline = 's18')
s19 = input.symbol('DOGEBTC', group = 'Symbols', inline = 's19')
s20 = input.symbol('WINUSDT', group = 'Symbols', inline = 's20')
s21 = input.symbol('DOTUSDT', group = 'Symbols', inline = 's21')
s22 = input.symbol('VETUSDT', group = 'Symbols', inline = 's22')
s23 = input.symbol('BCHUSDT', group = 'Symbols', inline = 's23')
s24 = input.symbol('ADABTC', group = 'Symbols', inline = 's24')
s25 = input.symbol('IOSTUSDT', group = 'Symbols', inline = 's25')
s26 = input.symbol('CHZUSDT', group = 'Symbols', inline = 's26')
s27 = input.symbol('LINKUSDT', group = 'Symbols', inline = 's27')
s28 = input.symbol('TRXBTC', group = 'Symbols', inline = 's28')
s29 = input.symbol('ATOMUSDT', group = 'Symbols', inline = 's29')
s30 = input.symbol('BTCEUR', group = 'Symbols', inline = 's30')
s31 = input.symbol('FILUSDT', group = 'Symbols', inline = 's31')
s32 = input.symbol('HOTUSDT', group = 'Symbols', inline = 's32')
s33 = input.symbol('SXPUSDT', group = 'Symbols', inline = 's33')
s34 = input.symbol('TRXBTC', group = 'Symbols', inline = 's34')
s35 = input.symbol('RVNUSDT', group = 'Symbols', inline = 's35')
s36 = input.symbol('ATOMUSDT', group = 'Symbols', inline = 's36')
s37 = input.symbol('XRPBNB', group = 'Symbols', inline = 's37')
s38 = input.symbol('LTCBTC', group = 'Symbols', inline = 's38')
s39 = input.symbol('IOSTBTC', group = 'Symbols', inline = 's39')
s40 = input.symbol('GRTUSDT', group = 'Symbols', inline = 's40')
//////////////////
// CALCULATIONS //
filt_col_id = switch filter_column
'Price' => 1
'RSI' => 2
'TSI' => 3
'ADX' => 4
'SuperTrend' => 5
=> 0
// Get only symbol
only_symbol(s) =>
array.get(str.split(s, ":"), 1)
id_symbol(s)=>
switch s
1 => only_symbol(s01)
2 => only_symbol(s02)
3 => only_symbol(s03)
4 => only_symbol(s04)
5 => only_symbol(s05)
6 => only_symbol(s06)
7 => only_symbol(s07)
8 => only_symbol(s08)
9 => only_symbol(s09)
10 => only_symbol(s10)
11 => only_symbol(s11)
12 => only_symbol(s12)
13 => only_symbol(s13)
14 => only_symbol(s14)
15 => only_symbol(s15)
16 => only_symbol(s16)
17 => only_symbol(s17)
18 => only_symbol(s18)
19 => only_symbol(s19)
20 => only_symbol(s20)
21 => only_symbol(s21)
22 => only_symbol(s22)
23 => only_symbol(s23)
24 => only_symbol(s24)
25 => only_symbol(s25)
26 => only_symbol(s26)
27 => only_symbol(s27)
28 => only_symbol(s28)
29 => only_symbol(s29)
30 => only_symbol(s30)
31 => only_symbol(s31)
32 => only_symbol(s32)
33 => only_symbol(s33)
34 => only_symbol(s34)
35 => only_symbol(s35)
36 => only_symbol(s36)
37 => only_symbol(s37)
38 => only_symbol(s38)
39 => only_symbol(s39)
40 => only_symbol(s40)
=> na
// for TSI
double_smooth(src, long, short) =>
fist_smooth = ta.ema(src, long)
ta.ema(fist_smooth, short)
// ADX
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
adx_func(dilen, adxlen) =>
= dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
screener_func() =>
// RSI
rsi = ta.rsi(close, rsi_len)
// TSI
pc = ta.change(close)
double_smoothed_pc = double_smooth(pc, tsi_long_len, tsi_shrt_len)
double_smoothed_abs_pc = double_smooth(math.abs(pc), tsi_long_len, tsi_shrt_len)
tsi = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
// ADX
adx = adx_func(adx_dilen, adx_smooth)
// Supertrend
= ta.supertrend(sup_factor, sup_atr_len)
// Set Up Matrix
screenerMtx = matrix.new(0, 6, na)
screenerFun(numSym, sym, flg) =>
= request.security(sym, timeframe.period, screener_func())
arr = array.from(numSym, cl, rsi, tsi, adx, sup)
if flg
matrix.add_row(screenerMtx, matrix.rows(screenerMtx), arr)
// Security call
screenerFun(01, s01, u01), screenerFun(02, s02, u02), screenerFun(03, s03, u03), screenerFun(04, s04, u04),
screenerFun(05, s05, u05), screenerFun(06, s06, u06), screenerFun(07, s07, u07), screenerFun(08, s08, u08),
screenerFun(09, s09, u09), screenerFun(10, s10, u10), screenerFun(11, s11, u11), screenerFun(12, s12, u12),
screenerFun(13, s13, u13), screenerFun(14, s14, u14), screenerFun(15, s15, u15), screenerFun(16, s16, u16),
screenerFun(17, s17, u17), screenerFun(18, s18, u18), screenerFun(19, s19, u19), screenerFun(20, s20, u20),
screenerFun(21, s21, u21), screenerFun(22, s22, u22), screenerFun(23, s23, u23), screenerFun(24, s24, u24),
screenerFun(25, s25, u25), screenerFun(26, s26, u26), screenerFun(27, s27, u27), screenerFun(28, s28, u28),
screenerFun(29, s29, u29), screenerFun(30, s30, u30), screenerFun(31, s31, u31), screenerFun(32, s32, u32),
screenerFun(33, s33, u33), screenerFun(34, s34, u34), screenerFun(35, s35, u35), screenerFun(36, s36, u36),
screenerFun(37, s37, u37), screenerFun(38, s38, u38), screenerFun(39, s39, u39), screenerFun(40, s40, u40),
///////////
// PLOTS //
var tbl = table.new(position.top_right, 6, 41, frame_color=#151715, frame_width=1, border_width=2, border_color=color.new(color.white, 100))
log.info(str.tostring(filt_col_id))
alert_msg = ''
if barstate.islast
table.clear(tbl, 0, 0, 5, 40)
table.cell(tbl, 0, 0, 'Symbol', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 1, 0, 'Price', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 2, 0, 'RSI', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 3, 0, 'TSI', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 4, 0, 'ADX', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 5, 0, 'Supertrend', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
if matrix.rows(screenerMtx) > 0
for i = 0 to matrix.rows(screenerMtx) - 1
is_filt = (not filter_enabled) or (matrix.get(screenerMtx, i, filt_col_id) >= filter_from and matrix.get(screenerMtx, i, filt_col_id) <= filter_to)
if is_filt
if str.length(alert_msg) > 0
alert_msg := alert_msg + ','
alert_msg := alert_msg + id_symbol(matrix.get(screenerMtx, i, 0))
rsi_col = matrix.get(screenerMtx, i, 2) > rsi_ob ? color.red : matrix.get(screenerMtx, i, 2) < rsi_os ? color.green : #aaaaaa
tsi_col = matrix.get(screenerMtx, i, 3) > tsi_ob ? color.red : matrix.get(screenerMtx, i, 3) < tsi_os ? color.green : #aaaaaa
adx_col = matrix.get(screenerMtx, i, 4) > adx_level ? color.green : #aaaaaa
sup_text = matrix.get(screenerMtx, i, 5) > 0 ? "Down" : "Up"
sup_col = matrix.get(screenerMtx, i, 5) < 0 ? color.green : color.red
table.cell(tbl, 0, i + 1, id_symbol(matrix.get(screenerMtx, i, 0)), text_halign = text.align_left, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 1, i + 1, str.tostring(matrix.get(screenerMtx, i, 1)), text_halign = text.align_center, bgcolor = #aaaaaa, text_color = color.white, text_size = size.small)
table.cell(tbl, 2, i + 1, str.tostring(matrix.get(screenerMtx, i, 2), "#.##"), text_halign = text.align_center, bgcolor = rsi_col, text_color = color.white, text_size = size.small)
table.cell(tbl, 3, i + 1, str.tostring(matrix.get(screenerMtx, i, 3), "#.##"), text_halign = text.align_center, bgcolor = tsi_col, text_color = color.white, text_size = size.small)
table.cell(tbl, 4, i + 1, str.tostring(matrix.get(screenerMtx, i, 4), "#.##"), text_halign = text.align_center, bgcolor = adx_col , text_color = color.white, text_size = size.small)
table.cell(tbl, 5, i + 1, sup_text, text_halign = text.align_center, bgcolor = sup_col, text_color = color.white, text_size = size.small)
if str.length(alert_msg) > 0
alert(alert_msg, freq = alert.freq_once_per_bar_close)
Oculus Algo-Adapted SystemOculus Algo-Adapted System
The "Oculus Algo-Adapted System" is a powerful trading indicator designed for precision entries, blending multiple technical indicators to provide a comprehensive view of the market. It combines dynamic Exponential Moving Averages (EMA), volume spikes, and liquidity sweep detection to offer accurate entry signals for both long and short positions.
Key Features:
EMA Crossovers: The system uses two EMAs — a fast 10-period EMA and a slower 20-period EMA — to gauge trend direction. When the fast EMA crosses above the slow EMA, it signals bullish momentum, and vice versa for bearish trends.
Volume Spike Detection: The indicator tracks significant volume spikes, highlighting them with background color changes. This helps identify potential breakout or breakdown opportunities.
VWAP (Volume Weighted Average Price): The optional VWAP overlay helps traders identify potential support/resistance levels based on volume-weighted price action.
Liquidity Sweep Alerts: The indicator identifies liquidity sweeps (also known as wick rejections), marking key reversal points. Bullish sweeps are marked with downward-facing triangles and bearish sweeps with upward-facing triangles.
Precise Entry Signals: The indicator uses a combination of volume spikes, EMA direction, and liquidity sweeps to generate clear buy (long) and sell (short) entry signals. Labels appear directly on the chart to indicate when the system triggers a trade.
How to Use:
Long Entry: A long entry is signaled when a volume spike occurs, followed by a bearish liquidity sweep and the price being above both the 10 EMA and 20 EMA.
Short Entry: A short entry is signaled when a volume spike occurs, followed by a bullish liquidity sweep, and the price is below both the 10 EMA and 20 EMA.
This indicator is designed for traders looking for high-quality, adaptive trading signals based on real-time market conditions.
Feel free to edit this to match your exact preferences or trading style!