Mirror Trendline ToolThis indicator is an interactive mirror‑trendline drawing tool that uses three draggable points to build two related lines. Point One and Point Two define the primary (blue) trendline; Point Three defines the starting anchor for the mirrored line, which always has the opposite slope to the blue line and updates live as you move the anchor, giving continuous visual feedback while you drag it .
A color‑invert option automatically generates the mirrored line’s color by mathematically inverting the chosen base color while preserving its opacity, with a checkbox to disable inversion so both lines can share the same appearance . When “Stop at Intersection” is checked, both lines terminate exactly at their intersection, creating a clean V‑shaped construction that highlights the symmetry point between the reference move and its mirror . When the box is unchecked, both lines extend beyond that intersection, but their total duration is capped at no more than twice the original blue segment’s length, keeping projections proportionate and preventing excessively long rays from cluttering the chart .
Trend Analizi
Supertrend + MACD + HMAIndicator Description: Supertrend + MACD + HMA
General Summary
It is a composite technical indicator that combines three analysis tools to generate buy and sell signals in institutional trading. It uses confirmation from multiple indicators to increase the precision of market entries.
Components
1. Supertrend (ST)
Function: Identifies the main market trend (bullish or bearish)
Parameters: ATR Length 10, Factor 3.0
Visualization:
Green line = Bullish trend
Red line = Bearish trend
Semi-transparent green/red background that fills the area according to direction
How it works: Uses ATR (Average True Range) to calculate dynamic support and resistance bands
2. MACD (Moving Average Convergence Divergence)
Function: Measures price momentum and direction
Parameters: Fast 18, Slow 144, Signal Smoothing 9
Components:
MACD Line (orange): Difference between two EMAs
Signal Line (purple): EMA of the MACD
Histogram (green/red columns): Difference between MACD and its signal
Green = Positive histogram (bullish momentum)
Red = Negative histogram (bearish momentum)
3. HMA 100 (Hull Moving Average)
Function: Identifies support/resistance level and price direction
Parameters: Length 100
Visualization: Blue thick line
Characteristics:
Less lag than traditional moving averages
Price > HMA = Bullish trend
Price < HMA = Bearish trend
Signal Logic
🟢 BUY SIGNAL
Generated when ANY of these conditions is met:
Total Confluence:
MACD positive (histogram > 0)
Price above HMA 100
Supertrend in Bullish mode
Supertrend Change:
Supertrend changes from Bearish to Bullish
MACD remains positive
Price above HMA
Price Crossover:
Price crosses above HMA (at candle close)
Supertrend is in Bullish mode
MACD is positive
🔴 SELL SIGNAL
Generated when ANY of these conditions is met:
Total Confluence:
MACD negative (histogram < 0)
Price below HMA 100
Supertrend in Bearish mode
Supertrend Change:
Supertrend changes from Bullish to Bearish
MACD remains negative
Price Crossover:
Price crosses below HMA (at candle close)
Supertrend is in Bearish mode
MACD is negative
Important Features
✅ Single Signal Per Type
Once a BUY is generated, no other BUY is generated until a SELL appears
Avoids multiple entries in the same direction
✅ Crossover Detection
The indicator generates signals at candle close when price crosses HMA
Allows capturing quick market moves
✅ Trend Changes
Detects when Supertrend changes direction
Provides early exits from the market
✅ Automatic Alerts
Push notifications when BUY or SELL is generated
Ideal for automated trading
Moving Average Channel Breakout (No Repaint) This indicator creates a channel using two simple moving averages: SMA of highs (upper line) and SMA of lows (lower line).
How it works:
- When a candle closes above the upper channel line, the following candles turn green (bullish trend)
- When a candle closes below the lower channel line, the following candles turn red (bearish trend)
- The trend color remains until a breakout in the opposite direction occurs
Anti-repaint:
This indicator does NOT repaint. The candle color is determined at the open, based on the previous candle's close. Once a candle opens with a color, that color never changes.
Breakout strategy:
- Candle opens green → Long entry signal
- Candle opens red → Short entry signal
The signal and entry moment are perfectly synchronized at the candle open, making it ideal for systematic breakout strategies.
Inyerneck Quiet Bottom Hunter v36 — Last Sorta-Working VersionQuiet Bottom Hunter v36 — Accurate Description (the sorta-working version that fires signals)
Overview
A mean-reversion bottom-hunting strategy for small-cap stocks (<$2B market cap). Designed to catch slow-bleed stocks that quietly bottom out and rebound 20–60%+. Good for beginners because signals are infrequent and the setup is easy to understand.
Timeframe
Daily (D) — best results on 1-day charts. Works on weekly too, but signals are rarer.
Triggers / Conditions (all must be true at bar close)
Drop from high ≥ 25% from the highest high in the last 100 bars (previous bars only — no repainting)
Volume ≤ 80% of the 50-day average (quiet accumulation, no panic selling left)
RSI(14) ≤ 38 (oversold territory)
Green/flat streak ≥ 2 consecutive days where close ≥ open (shows sellers are exhausted)
When all four line up → tiny green “QB” triangle below the bar
Firing Frequency
1–4 signals per month on an average small-cap stock (depends on market conditions). Some months zero, some months a handful. Not spammy, but not ultra-rare either.
Usage Parameters
Position size: 10% of equity per trade (default — change to 5–20% depending on risk tolerance)
Profit target: 40%
Stop loss: 12%
Hold time: usually 2–8 weeks
Best on low-float, high-volatility small caps (TLRY, SNDL, MVIS, SOUN, INHD, etc.)
Expected Performance (backtested on 2025 small caps)
Win rate: ~80–85%
Average rebound on winners: +30–40%
Some losers when the bottom isn't "quiet" enough
How to use
Add to daily charts of your small-cap watchlist
When “QB” arrow appears, buy at next open or market
Set 40% target / 12% stop or trail it
Wait for the rebound — no day-trading needed
VWMA Deviation Band (Higher TF Anchor)helps spot price being far away from moving average signal possible returne
HMA 34 Dual-Fractal Projections - VdubusVdubus MacD Divergence Trend Break Signal Generator :Here:-
HMA 18 Dual-Fractal Projections
Overview
The HMA 18 Dual-Fractal Projections is a technical analysis tool designed to identify market structure and potential breakout patterns by analyzing the pivots of a Hull Moving Average (HMA).
Unlike standard trendline indicators that struggle to balance "big picture" trends with immediate price action, this indicator utilizes a Dual-Fractal approach. It simultaneously calculates two separate timelines—Macro and Micro—to visualize both the dominant channel and the developing chart patterns (such as wedges or triangles) in real-time.
Visual Guide
The indicator plots three key elements on the main chart:
The HMA Line (Blue): A smooth, fast-acting moving average (default length 34) that serves as the baseline for all calculations.
Macro Structure (Solid, Thick Lines):
Red (Solid): Major Resistance.
Green (Solid): Major Support.
Purpose: Identifies the long-term trend channel. These lines react slowly and filter out noise.
Micro Structure (Dashed, Thin Lines):
Red (Dashed): Immediate Resistance.
Green (Dashed): Immediate Support.
Purpose: Identifies the short-term market structure. These lines react quickly to show forming wedges, triangles, or flags.
How It Works
The indicator applies a "Pivot High/Low" algorithm directly to the HMA data rather than raw price data. This filters out candle wicks and volatility, ensuring lines are drawn based on established momentum shifts.
Layer 1 (Macro): Uses a large "Lookback" period (default 44 bars) to find significant peaks and valleys. It connects the most recent major pivot to the previous one, projecting a line forward to show where the major trend channel lies.
Layer 2 (Micro): Uses a small "Lookback" period (default 10 bars) to find local peaks and valleys. This allows you to see how price is behaving within the larger channel.
Settings & Configuration
HMA Settings
HMA Length: The length of the Hull Moving Average.
Default: 34 (Matches the "visually pleasing" setting from recent testing).
Note: Set to 18 for a faster, more reactive baseline (scalping).
Layer 1: Macro (Big Channel)
Macro Lookback: Determines how many bars must pass before a peak is confirmed.
Default: 44. High values find broad, established channels.
Max Macro Lines: How many historical lines to keep on the chart.
Default: 1 (Keeps the chart clean, showing only the current structure).
Extend Macro Lines: Projects the lines infinitely to the right to predict future support/resistance zones.
Layer 2: Micro (Current Pattern)
Micro Lookback: A lower sensitivity setting to catch immediate structure.
Default: 10. Low values will pinpoint the exact boundaries of small wedges or flags forming right now.
Trading Strategy & Interpretation
1. The "Squeeze" (Wedge Identification) This is the primary use case.
Look for scenarios where the Macro Lines (Solid) are wide/parallel, but the Micro Lines (Dashed) are rapidly converging (pointing towards each other).
This indicates that while the main trend is intact, momentum is compressing. A breakout is imminent where the dashed lines intersect.
2. Trend Channels
When both Solid and Dashed lines are roughly parallel and sloping in the same direction, the trend is healthy and strong. Price is respecting both the short-term and long-term momentum.
3. Divergence / Early Reversal Warning
If the Macro Line is sloping UP, but the Micro Line starts sloping DOWN (crossing inside), it indicates a loss of momentum and a potential reversal before the price actually breaks the major trendline.
===========================================================================
2. Micro/Macro Cross Alert
A new input, Enable Micro/Macro Cross Alert, has been added under the "Alerts & Features" section.
This alert condition is triggered when the momentum of the Micro Structure exceeds the momentum of the Macro Structure, which is a high-probability signal for a breakout:
Bullish Alert: The Micro High (dashed red line) crosses above the Macro High (solid red line).
Bearish Alert: The Micro Low (dashed green line) crosses below the Macro Low (solid green line).
To set up the actual alert on your chart:
Right-click on the chart.
Select "Add alert on HMA 34 Dual-Fractal Projections".
In the Condition dropdown, select the indicator's name.
For the main alert criteria, choose "Any alert()".
Select your preferred alert actions (e.g., notification, email).
Adaptive Alligator - Asymmetric MH (Entry Only)
Adaptive Alligator – Asymmetric Mexican Hat (Entry Only)
This strategy combines adaptive cycle detection (wavelet + autocorrelation), directional entropy, and a Mexican Hat filter to generate highly selective LONG entry signals. Exits are based solely on the Alligator structure. The system is designed to detect asymmetric, strong, and accelerating bullish phases while filtering out market noise.
1. Adaptive Cycle Detection: The strategy analyzes the median price using wavelet decomposition (Haar, Daubechies D4/D6, Symlet 4), wavelet detail energy, and autocorrelation. It also incorporates the ratio of short-term to long-term ATR volatility. Based on these components, it computes a dominant_cycle value, which dynamically controls the lengths of the Alligator lines (Jaw, Teeth, Lips). This adaptive behavior allows the Alligator to speed up during trending phases and slow down during noise or consolidation.
2. Directional Entropy: Entropy is measured separately for upward and downward movements within the selected lookback window. The entropy difference: e_diff = entropy_down - entropy_up represents the directional bias of the market. When e_diff > 0, the market shows an organized bullish pressure; when < 0, bearish dominance.
3. Mexican Hat Filter: The Mexican Hat (Ricker Wavelet) acts as a second-derivative filter, detecting local maxima in the acceleration of directional entropy. The filtered output (mh_out) is compared against an adaptive noise level computed as SMA(|mh_out|). A signal is considered strong only when: – mh_out exceeds the adaptive noise level, – mh_out is rising relative to the previous bar. This step is critical for eliminating false signals produced by random fluctuations.
4. Entry Logic: A LONG entry requires all three layers: (1) Alligator structure: Lips > Teeth > Jaw. (2) Directional entropy bias: e_diff > 0. (3) A strong, accelerating Mexican Hat signal confirmed by a user-defined number of bars. Once all conditions are satisfied, a buy_final entry is triggered.
5. Exit Logic: Exits are intentionally simple and rely solely on the Alligator: crossunder(lips, teeth) This clean separation ensures precise, adaptive entries and stable, consistent exits.
6. Visual Components: – Alligator lines: Jaw (blue), Teeth (red), Lips (green), plotted with their characteristic offsets. – Background coloring reflects signal strength: dark green (STRONG BUY), lime (acceleration), yellow (weak bias), transparent otherwise. – A dedicated panel displays e_diff (entropy difference), mh_out (Mexican Hat output), and the adaptive noise band.
7. Diagnostic Table: A compact diagnostic dashboard shows: – MH Value, – Noise Level, – MH Acceleration (YES/NO), – Signal Status (STRONG BUY / ACCELERATING / WEAK / BEARISH). It updates on the last bar, making it suitable for live monitoring.
8. Use Case: This strategy is highly selective and ideal as an entry module within trend-following systems. By combining wavelets, entropy, and adaptive noise modeling, it effectively filters out consolidation periods and focuses only on statistically significant bullish transitions. It can be integrated with various exit frameworks such as ATR stops, channel-based exits, range boxes, or trailing logic.
Wick to Body Ratio TableHello, I'm Gomaa if don't know me and if you want to know more about me follow me on my social media accounts which my propose to teach people "How To Learn".
Use this link so you can find me: linktr.ee
Overview
The "Wick to Body Ratio Table" is a comprehensive analytical tool designed to provide traders with detailed insights into candle structure and price movement dynamics. This indicator breaks down each candle into its component parts and displays real-time statistics in an easy-to-read table format.
What It Does
This indicator analyzes the current candle and displays four key metrics for each component:
Ratio to Body - How large each wick is compared to the candle body
Percentage of Total - What portion of the entire candle each component represents
Move Percentage - The actual price movement as a percentage from the opening price
Component breakdown - Upper wick, body, lower wick, and totals
Key Features
Real-Time Analysis:
Updates automatically with every price tick on the current candle
Works seamlessly across ALL timeframes (1 second to monthly charts)
No lag or delay in calculations
Comprehensive Metrics:
Upper Wick: Shows rejection from higher prices and selling pressure
Closed Body: Displays the actual price change from open to close (bullish=green, bearish=red)
Lower Wick: Indicates rejection from lower prices and buying pressure
Total Wick: Combined wick analysis for overall volatility assessment
Whole Candle: Complete range from high to low with total movement percentage
Visual Design:
Color-coded rows for easy identification
Clear headers for each metric column
Positioned at top-right of chart (non-intrusive)
Professional table format with borders and proper spacing
How to Interpret the Data
Ratio to Body Column:
A ratio of 2.0x means that component is twice the size of the body
N/A appears for doji candles (when body = 0)
Higher ratios indicate stronger rejection or indecision
% of Total Column:
Shows what percentage each part contributes to the whole candle
All percentages always add up to 100%
Helps identify if price spent more time in wicks or body
Move % Column:
Calculated from the opening price
Shows actual volatility during the candle period
Example: 0.5% body with 3% total candle = high volatility but little net movement
Trading Applications
1. Rejection Analysis:
Long upper wicks at resistance = strong selling pressure
Long lower wicks at support = strong buying pressure
Wick-to-body ratios above 2:1 suggest significant rejection
2. Volatility Assessment:
Compare body move % to whole candle move %
Large difference indicates choppy price action
Small difference indicates trending movement
3. Candle Patterns:
Identify doji, hammer, shooting star patterns quantitatively
Measure strength of pin bars and rejection candles
Compare current candle structure to historical patterns
4. Market Sentiment:
Body % > 70% = strong directional movement
Wick % > 60% = indecision and rejection
Balanced distribution = consolidation
Settings & Customization
Table position can be modified in the code (top_right, top_left, bottom_right, bottom_left)
Colors can be adjusted for different components
Text size can be changed (size.small, size.normal, size.large)
Decimal precision can be modified in the str.tostring() functions
Best Practices
Use on higher timeframes (15m+) for more reliable signals
Combine with support/resistance levels for context
Look for extreme ratios (>3:1) for high-probability setups
Monitor the move % to gauge true volatility vs. net movement
Technical Details
Written in Pine Script v5
Zero division protection built-in
Handles all edge cases (gaps, doji, extreme wicks)
Lightweight and efficient (minimal CPU usage)
🚦 Divergence Indicator for The Saty PO by TenAMTraderTenAM’s Traffic Light Divergence Indicator for The Saty Phase Oscillator
Overview:
This tool is designed to automatically detect regular and hidden divergences on price using data sourced from The Saty Phase Oscillator. Divergences are displayed directly on the chart using a simple traffic-light visual system:
🟢 Bullish Divergence
🔴 Bearish Divergence
🟡 Hidden Divergence
These markers highlight potential points of interest—not trade signals—based on the momentum behavior of the underlying oscillator relative to price.
How to Use:
Add The Saty Phase Oscillator to your chart.
Then load “TenAM’s Traffic Light Divergence Indicator for The Saty Phase Oscillator.”
IMPORTANT, In the indicator settings → Indicator Source, make sure you select:
Saty Phase Oscillator → Phase Oscillator
Set the indicator to plot on price (Settings → Style → "Overlay/Price").
Adjust detection preferences:
Enable Regular, Hidden, or both divergence types.
Configure Left and Right Pivot Lookbacks.
Recommended starting point: Right = 3, Left = 1.
Optimal values vary by timeframe and market—backtesting is encouraged.
Modify the Max Lookback Range (default: 60) and Min Lookback Range (default: 0) to refine how far back divergence scanning occurs.
Interpretation:
These are not buy or sell signals. They simply highlight areas where momentum and price behavior diverge, helping you evaluate potential entry opportunities or exhaustion zones.
Legal Disclaimer:
This indicator is for informational and educational purposes only. It does not constitute financial advice, investment advice, or a recommendation to buy or sell any security. Trading involves significant risk, and past performance does not guarantee future results. Users are fully responsible for their own trading decisions and outcomes. The creator of this script assumes no liability for any losses or damages arising from its use.
ProCrypto OI Candles (auto symbol) — by ruben_procryptoProCrypto OI Candles (Auto Symbol) visualizes Open Interest in a clear and intuitive way by converting OI data into candles and a smooth trendline.
The script automatically detects the correct OI symbol based on the chart you are viewing, so there is no need to manually change OI tickers when switching between assets.
🔹 Key Features
Automatic Symbol Detection
The indicator automatically selects the appropriate Open Interest data source for the asset on your chart (BTC, SOL, ADA, DOGE, etc.).
OI Candles
Open Interest is displayed as candles to show whether market participation is increasing or decreasing on each bar.
Multi-exchange Support
Users can choose OI data from Binance, Bybit, or OKX. Any combination is supported.
Smooth OI Trendline
An optional EMA-based OI line provides a clear view of the underlying trend in trader activity.
Delta Bars (optional)
Highlights whether Open Interest expanded or contracted within the candle.
🔹 How to Interpret OI
Typical relationships between price and OI:
Price ↑ + OI ↑ → Trend continuation likely
New positions entering the market.
Price ↑ + OI ↓ → Short squeeze / weak move
Shorts closing, not new longs opening.
Price ↓ + OI ↑ → New shorts entering
Often signals bearish pressure.
Price ↓ + OI ↓ → Longs closing
Can indicate capitulation or consolidation.
These concepts help traders understand the strength or weakness behind a price move.
🔹 Inputs
Choose exchange(s) for OI data
Adjust candle opacity
Enable/disable OI line
Smoothing length for OI line
Optional delta bars
Range lookback for line offset
All settings are customizable to suit different styles of analysis.
🔹 Notes
Some assets may not have Open Interest data available on all exchanges.
The indicator uses standard TradingView data sources via request.security().
No trading signals are generated; this script is a visualization tool only.
🔹 Author
Created by ruben_procrypto for traders who analyze liquidity, Open Interest, and market participation.
NY 9:30-9:35 High/Low Range📘 Script Description
This script automatically identifies and plots the high and low of the 5-minute candle formed between 9:30 AM and 9:35 AM New York time, which corresponds to the opening of the U.S. equity market.
The goal is to provide a clear reference level for intraday volatility, directional bias, and breakout levels.
🔍 Function Overview
■ 1. Detects the 9:30–9:35 NY Time Candle
The script converts chart timestamps into New York session time and automatically captures the 5-minute candle that forms between:
NY 9:30:00 → NY 9:35:00
■ 2. Automatically Draws Horizontal Lines
After identifying the high and low of this candle, the script draws:
High line → Red
Low line → Blue
Lines start exactly at the 9:30 timestamp
Lines extend 3 hours into the future (until NY 12:30)
Lines do not extend beyond 3 hours (prevents unwanted diagonal lines or lines from previous days)
■ 3. Label Display at NY 20:00
The script places a label at New York 20:00, marking:
“9:30 High” for the high line
“9:30 Low” for the low line
This allows you to instantly identify the key reference levels at the end of the trading day.
■ 4. Auto-Removal at NY 20:00
At NY 20:00, both the lines and the labels are automatically deleted.
No old lines remain on the chart, ensuring clarity and accuracy for each new trading day.
🎯 Purpose and Use Cases
This script is highly useful for:
Determining intraday direction after the NY open
Tracking volatility spikes at the U.S. equity market open
Identifying breakout levels
Using high/low as dynamic support and resistance throughout the day
Understanding market context during economic events or high-impact sessions
The 9:30–9:35 range is one of the most watched price zones in global markets, often serving as the day’s initial liquidity sweep.
📝 Key Features
Accurate New York time conversion
Clean horizontal lines (no previous-day diagonal lines)
Labels positioned clearly at NY 20:00
No unnecessary visuals—simple and effective
Lightweight script with minimal chart impact
Session Dynamics & Pivot Overlay (Arjo)## **OVERVIEW**
The **Session Dynamics & Pivot Overlay (Arjo)** is a visual analysis tool that displays session-based price ranges, anchored volume-weighted averages, daily pivot levels, and smoothed trend conditions on the chart. It highlights how price interacts with custom sessions, midpoint levels, and dynamic ranges, providing a structured visual layout that helps users observe market behavior over time without implying any form of prediction or trading signal.
## **CONCEPTS**
This indicator incorporates several widely used analytical concepts:
- **Session Ranges:** Identifies user-defined time windows and visually displays their high, low, and midpoint behavior throughout the session.
- **VWAP (Morning Session):** Shows volume-weighted average price calculations for a defined morning period, assisting with visual comparison between price and weighted averages.
- **Daily Pivot Levels:** Displays R1–R2, S1–S2, central pivot, and associated levels derived from prior daily price data.
- **Trend Smoothing:** Uses SuperSmoother filtering and an additional EMA to highlight whether the smoothed trend is rising or falling.
- **EMA + ATR Bands:** Plots a 20-period EMA with upper and lower ATR-derived bands to help visualize short-term price displacement relative to average true range.
All of these elements are presented solely for structural and comparative chart analysis.
## **FEATURES**
- **Custom Session Visualization:** Automatically draws session boxes, capturing the evolving high, low, and midpoint throughout the defined intraday window.
- **Dynamic Midline Calculation:** A midpoint line is updated continuously during the session to visually anchor price within the session’s range.
- **Morning Session VWAP:** Displays a dedicated VWAP line for the morning window with adjustable source and configuration options.
- **Daily Pivot Lines:** Automatically plots pivot, BC/TC, R1–R2, and S1–S2 levels with customizable colors, widths, and line styles.
- **Trend-Responsive Pivot Display:** Optionally toggles visibility of R2 or S2 depending on the direction of the smoothed trend.
- **EMA + ATR Zones:** Renders a 20-EMA and ATR-based support/resistance zone using filled regions for enhanced visual clarity.
- **Full Customization:** Multiple color, transparency, line-style, and display options allow users to adapt the presentation to their charting preferences.
- **Overlay Compatible:** Designed to work directly on price charts without obstructing candles or other overlays.
## **HOW TO USE**
Users can interact with the indicator entirely through the settings panel:
- Adjust session timings to match preferred market hours or custom internal zones.
- Enable or disable the display of pivot levels, VWAP, or the ATR/EMA zone.
- Customize colors and line styles to improve visibility according to the chart background or personal preference.
- Observe how price behaves relative to the session box, midpoint, VWAP, and pivot levels for contextual understanding.
- Utilize the smoothed trend condition to see when the indicator chooses to display certain pivot extensions.
These elements help users interpret chart structure, volatility, and intraday behavior in a visually organized manner.
## **CONCLUSION**
The ** Session Dynamics & Pivot Overlay (Arjo) ** indicator offers a consolidated view of session structure, pivot levels, VWAP, and smoothed trend conditions. Its purpose is to improve visual clarity and assist users in understanding market context without issuing directives or trade suggestions. It functions as an educational tool that enhances chart interpretation and supports structured analysis.
---
## **DISCLAIMER**
This indicator is for educational and visual analysis purposes only. It does not provide trading signals, financial advice, or guaranteed outcomes. Users should conduct their own research and consult a licensed financial professional when necessary. All trading decisions are solely the responsibility of the user.
Happy Trading (Arjo)
FX OSINT — Institutional Midnight Intelligence For ForexFX OSINT — Institutional Midnight Intelligence For Forex
See Your FX Charts Like an Intelligence Briefing, Not a Guess
If you’ve ever stared at EURUSD or GBPJPY and thought:
Where is the real liquidity?
Is this move sponsored by smart money or just noise?
Am I buying into premium or discount?
…then FX OSINT is designed for you.
FX OSINT (Forex Open Source Intelligence) treats the FX market the way an analyst treats an investigation:
Collect open‑source signals from price, time, and volatility.
Map out liquidity, structure, and sessions in a repeatable way.
Present them in a clean, non‑cluttered dashboard so you can read context quickly.
No rainbow spaghetti. No 12 indicators stacked on top of each other. Just structured information, midnight visuals, and a clear read on what the market is doing right now.
Why FX OSINT Exists
Many FX traders run into the same problems:
Overloaded charts – multiple indicators fighting for space, none talking to each other.
Signals with no context – arrows that ignore structure, sessions, and liquidity.
Tools not tuned for FX – generic indicators that don’t care what pair you are on.
FX OSINT brings this together into one FX‑focused framework that:
Understands structure : BOS/CHOCH, swings, and trend across multiple timeframes.
Respects liquidity : sweeps, order blocks, and FVGs with controlled visibility.
Reads volatility & ADR : how far today’s range has developed.
Knows the clock : London, New York, and key killzones.
Scores confluence : a 0–100 engine that summarizes how much is lining up.
FX OSINT is built for traders who want structured, institutional‑style logic with a disciplined, midnight‑themed UI —not flashing buy/sell buttons.
1. Midnight Dashboard — Top‑Right Intelligence Panel
This panel acts as your compact “situation room”:
CONFLUENCE — 0–100 score blending trend alignment, volatility regime, sessions, liquidity events, order blocks, FVGs, and ADR context.
REGIME — Low / Building / Normal / Expansion / Extreme, driven by ATR relationships, so you know if you’re in chop, trend, or expansion.
HTF / MTF / LTF TREND — Higher‑, medium‑, and current‑timeframe bias in one place, so you see if you are trading with or against the larger flow.
ADR USED — How much of today’s typical range has already been consumed in percentage terms.
PIP VALUE — Approximate pip size per pair, including JPY‑style pairs.
Everything is bold, legible, and color‑coded, but the layout stays minimal so you can:
Look once → understand the context.
2. Structure, BOS, CHOCH — Smart‑Money‑Style Skeleton
FX OSINT tracks swing highs and lows, then shows how structure evolves:
Trend logic based on evolving swings, not just a moving average cross.
BOS (Break of Structure) when price expands in the direction of trend.
CHOCH (Change of Character) when behavior flips and the market structure changes.
Labels are selective, not spammy . You don’t get a tag on every minor wiggle—only when structure meaningfully shifts, so it’s easier to answer:
"Are we continuing the current leg, or did something actually change here?"
3. Liquidity Sweeps, Order Blocks & FVGs — The OSINT Layer
FX OSINT treats liquidity as a key information layer:
Liquidity sweeps — Detects when price spikes through recent highs/lows and then snaps back, flagging potential stop runs.
Order blocks — The last opposite candle before a displacement move, drawn as controlled boxes with limited lifespan to avoid clutter.
Fair Value Gaps (FVGs) — Three‑candle imbalances rendered as precise zones with a cap on how many can exist at once.
Under the hood, boxes are managed so your chart does not become a wall of old zones:
// Draw Order Blocks with overlap prevention
if isBullishOB and showOrderBlocks
if array.size(obBoxes) >= maxBoxes
oldBox = array.shift(obBoxes)
box.delete(oldBox)
newBox = box.new(bar_index , low , bar_index + obvLength, high ,
border_color = bullColor, bgcolor = bullColorTransp,
border_width = 2, extend = extend.none)
array.push(obBoxes, newBox)
Box limits keep the number of zones under control.
Borders and transparency are tuned so you still see price clearly.
You end up with a curated liquidity map , rather than a chart buried under every level price has ever touched.
4. Volatility, ADR & Sessions — Time and Range Intelligence
FX OSINT runs a Volatility Regime Analyzer and an ADR engine in the background:
Volatility regime — Five states (Low → Extreme) derived from fast vs. slow ATR.
ADR bands — Daily high/mid/low projected from the current daily open.
ADR used % — How far today’s move has traveled relative to its typical range.
On the time side:
Asia, London, New York sessions are softly highlighted with a single active background to avoid overlapping colors.
Killzones (e.g., London and New York opens) can be emphasized when you want to focus on where significant moves often begin.
Together, this helps you answer:
"What time is it in the trading day?"
"How stretched are we?"
"Is expansion just starting, or are we late to the move?"
5. ICT‑Style Add‑Ons — BOS/CHOCH, Premium/Discount, and Confluence
For modern FX / ICT‑inspired workflows, FX OSINT includes:
BOS / CHOCH labels — Clear structural shifts based on swings.
Premium / Discount zones — 25%, 50%, 75% levels of the daily range, so you know if you are buying discount in an uptrend or selling premium in a downtrend.
Confluence score — A single number summarizing how many conditions line up in the current context.
Instead of replacing your plan, FX OSINT compresses your checklist into the chart:
Structure
Liquidity
Session / Time
Volatility / ADR
Higher‑timeframe alignment
When these agree, the dashboard reflects it. When they don’t, it stays neutral and lets you see the conflict.
How To Use FX OSINT
FX OSINT is not a signal bot. It is an information engine that organizes context so you can apply your own plan.
A typical workflow might look like:
Start on higher timeframes (e.g., H4/D1) to form directional bias from structure, volatility regime, and ADR context.
Move to intraday timeframes (e.g., M15/H1) around your chosen sessions (London and/or New York).
Look for confluence :
HTF / MTF / LTF trends aligned.
Price in discount for longs or premium for shorts.
Recent liquidity sweep into a meaningful OB or FVG.
Confluence score at or above a level you consider significant.
Then refine entries using BOS/CHOCH on lower timeframes according to your own risk and execution rules.
FX OSINT aims to make sure you do not enter a trade without seeing:
Where you are in the day (ADR and sessions).
Where you are in the volatility cycle (regime).
Who currently appears in control (structure and trend).
Which liquidity was just targeted (sweeps and zones).
Design Choices and Scope
FX OSINT was designed around a few clear constraints:
FX‑focused — Logic and filters tuned for FX majors, minors, exotics, and metals. It is intended for FX markets, not for every possible asset class.
Open‑source — The full Pine Script code is available so you can read it, learn from it, and adapt it to your own workflow if needed.
Clear themes — Two main visual styles (e.g., dark institutional “midnight” and a lighter accent variant) with a focus on readability, not visual noise.
Chart‑friendly — Panels use fixed areas, session highlights avoid overlapping, and boxes are capped/pruned so the chart remains usable.
FX OSINT is for only Forex pairs, not anything else!
Hope you enjoyed and remember your Open Source Intelligence Matters 😉!
-officialjackofalltrades
Trend Tracer [AlgoAlpha]🟠 OVERVIEW
This tool builds a two-stage trend model that reacts to structure shifts while also showing how strong or weak the move is. It uses a mid-price band (from the highest high and lowest low over a lookback) and applies two Supertrend passes on top of it. The first pass smoothens the basis. The second pass refines that direction and produces the final trail used for signals. A gradient fill between the two trails uses RSI of price-to-trail distance to show when price is stretched or cooling off. The aim is to give traders a simple way to read trend alignment, pressure, and early turns without guessing.
🟠 CONCEPTS
The script starts with a mid-range basis. This is the average of the rolling highest high and lowest low. It acts as a stable structure reference instead of raw close or typical price. From there, two Supertrend layers are applied:
• The first Supertrend uses a shorter ATR period and lower factor. It reacts faster and sets the main regime.
• The second Supertrend uses a slightly longer ATR and higher factor. It filters noise, waits for confirmed continuation, and generates the signal line.
The interaction between these trails matters. The outer Supertrend provides context by defining the broader regime. The inner Supertrend provides timing by flipping earlier and marking possible shifts. The gradient fill uses RSI of (close − supertrend value) to display when price stretches away from the trail. This shows strength, exhaustion, or compression within the trend.
🟠 FEATURES
Bullish and bearish flip markers placed at recent highs/lows
Rejection signals off the trend tracer line
Alerts for bullish and bearish trend changes
🟠 USAGE
Setup : Add the script to your chart. Timeframe is flexible; lower timeframes show more flips while higher ones give cleaner swings. Adjust Length to change how wide the basis range is. Use the two ATR settings and factors to match the volatility of the market you trade.
Read the chart : When the refined trail (stv_) sits above price the regime is bearish; when below, it is bullish. The wide trail (stv) confirms the larger move. Watch the gradient fill: darker colors appear when price is stretched from the trail and lighter colors appear when the move is weakening. Flip markers ▲ or ▼ highlight the first clean shift of the refined trail.
Settings that matter : Increasing the Main Factor slows main-trend flips and filters chop. Increasing the Signal Factor delays the timing trail but reduces noise. Shortening Length makes the basis more reactive. ATR periods change how sensitive each Supertrend pass is to volatility.
Unchased Wick Detector and ReversalsThis indicator can be used to track unchased wick from previous pivot points.
The idea is to visualise liquidity cluster and grab before a potential reversal.
Unchased wick Visual:
- White lines are protected highs or lows.
- Gray lines are previous wicks where prices have passed through and where the prices did not reverse.
Reversal window:
Reversal window parameters define a period range (a min and a max bars) where the reversal is valid.
The idea is that the reversal must be done in the couple bars right after the wick is chased (this event should stay short in time but you can adjust the period as you wish).
By default the default, the window 1-5 bars (e.g., daily, during 1-5 days).
Green color indicates a grab from a low and a reversal to the upside.
Red color indicates a grab from a high and a reversal to the downside.
Disclamer:
Of course this indicator can lead to false reversal signals and must be combined with other data and must be careful to use it alone for opening any position.
This indicator is a Alpha version let me know if any problem.
Bubbles + Clusters + SweepsIndicator For Bubbles + Clusters + Sweeps
✔ Volume bubbles
✔ Delta coloring (green/red intensity)
✔ Auto supply/demand zones
✔ Volume-profile style blocks inside zones
✔ Liquidity sweep markers
✔ Box drawings extending until filled
✔ Optional bubble filters (min-volume threshold)
Compression / ExpansionI created this Indicator to warn of compression and expansion so I could find the best area to trade I use it In conjunction with VWAP works on any timeframe and any asset where there is Volume
The Indicator produces a Letter C at the Start of Compression and a Letter E at the Start of Expansion you can change the settings to your liking On the chart my Expansion is in Red and compression is is Blue use In Conjunction with your favorite Indicators for Confluence
12M Return Strategy This strategy is based on the original Dual Momentum concept presented by Gary Antonacci in his book “Dual Momentum Investing.”
It implements the absolute momentum portion of the framework using a 12-month rate of change, combined with a moving-average filter for trend confirmation.
The script automatically adapts the lookback period depending on chart timeframe, ensuring the return calculation always represents approximately one year, whether you are on daily, weekly, or monthly charts.
How the Strategy Works
1. 12-Month Return Calculation
The core signal is the 12-month price return, computed as:
(Current Price ÷ Price from ~1 year ago) − 1
This return:
Plots as a histogram
Turns green when positive
Turns red when negative
The lookback adjusts automatically:
1D chart → 252 bars
1W chart → 52 bars
1M chart → 12 bars
Other timeframes → estimated to approximate 1 calendar year
2. Trend Filter (Moving Average of Return)
To smooth volatility and avoid noise, the strategy applies a moving average to the 12M return:
Default length: 12 periods
Plotted as a white line on the indicator panel
This becomes the benchmark used for crossovers.
3. Trade Signals (Long / Short / Cash)
Trades are generated using a simple crossover mechanism:
Bullish Signal (Go Long)
When:
12M Return crosses ABOVE its MA
Action:
Close short (if any)
Enter long
Bearish Signal (Go Short or Go Flat)
When:
12M Return crosses BELOW its MA
Action:
If shorting is enabled → Enter short
If shorting is disabled → Exit position and go to cash
Shorting can be enabled or disabled with a single input switch.
4. Position Sizing
The strategy uses:
Percent of Equity position sizing
You can specify the percentage of your portfolio to allocate (default 100%).
No leverage is required, but the strategy supports it if your account settings allow.
5. Visual Signals
To improve clarity, the strategy marks signals directly on the indicator panel:
Green Up Arrows: return > MA
Red Down Arrows: return < MA
A status label shows the current mode:
LONG
SHORT
CASH
6. Backtest-Ready
This script is built as a full TradingView strategy, not just an indicator.
This means you can:
Run complete backtests
View performance metrics
Compare long-only vs long/short behavior
Adjust inputs to tune the system
It provides a clean, rule-driven interpretation of the classic absolute momentum approach.
Inspired By: Gary Antonacci – Dual Momentum Investing
This script reflects the absolute momentum side of Antonacci’s original research:
Uses 12-month momentum (the most statistically validated lookback)
Applies a trend-following overlay to control downside risk
Recreates the classic signal structure used in academic studies
It is a simplified, transparent version intended for practical use and educational clarity.
Disclaimer
This script is for educational and research purposes only.
Historical performance does not guarantee future results.
Always use proper risk management.
BTC Macro Trend Framework by ZecheColor Indicator Meaning
🟩 Green Pi Cycle 355 SMA ×2 Long-term macro line (cyclical tops)
🔴 Red Pi Cycle 114 SMA Fast line (Pi Cycle signals)
🟧 Orange EMA 50W Mid-term trend
🔵 Blue EMA 200W Long-term macro bottom / key trend
🟪 Purple SuperTrend Short-term trend / momentum
Copper_to_Gold_Ratio by Zeche Cu/Au Ratio – LINES + LABELS is a clean, macro-oriented indicator built around the Copper/Gold price ratio — a well-known gauge of economic strength, market sentiment, and shifts between risk-taking and risk-aversion.
The script calculates:
the 120-day SMA of the Copper/Gold ratio
the standard deviation over the same period
the ±1σ, ±1.5σ, and ±2σ deviation bands
automatic labels on the last bar for maximum clarity
The design is minimalistic and visually optimized so users can quickly understand where the current ratio sits relative to long-term norms. The deviation zones help highlight moments when the market transitions into RISK-ON or RISK-OFF behavior.
How to interpret the signals:
Above +2σ → RISK-OFF environment (defensive tone, macro stress)
Below −2σ → RISK-ON environment (increased risk appetite)
±1σ bands represent normal cyclical movements
The SMA acts as the long-term equilibrium level
ZY Target TerminatorThe indicator follows trends and generates short and long signals. Furthermore, when it generates a signal, it displays the maximum profit margins for the last three signals it generated in the same direction. It also clearly indicates the number of candles for which no signal has been generated for the pair. Avoid trading pairs whose profit margins do not align with your trading strategy.
SR & POI Indicator//@version=5
indicator(title='SR & POI Indicator', overlay=true, max_boxes_count=500, max_lines_count=500, max_labels_count=500)
//============================================================================
// SUPPLY/DEMAND & POI SETTINGS
//============================================================================
swing_length = input.int(10, title = 'Swing High/Low Length', group = 'Supply/Demand Settings', minval = 1, maxval = 50)
history_of_demand_to_keep = input.int(20, title = 'History To Keep', group = 'Supply/Demand Settings', minval = 5, maxval = 50)
box_width = input.float(2.5, title = 'Supply/Demand Box Width', group = 'Supply/Demand Settings', minval = 1, maxval = 10, step = 0.5)
show_price_action_labels = input.bool(false, title = 'Show Price Action Labels', group = 'Supply/Demand Visual Settings')
supply_color = input.color(color.new(#EDEDED,70), title = 'Supply', group = 'Supply/Demand Visual Settings', inline = '3')
supply_outline_color = input.color(color.new(color.white,75), title = 'Outline', group = 'Supply/Demand Visual Settings', inline = '3')
demand_color = input.color(color.new(#00FFFF,70), title = 'Demand', group = 'Supply/Demand Visual Settings', inline = '4')
demand_outline_color = input.color(color.new(color.white,75), title = 'Outline', group = 'Supply/Demand Visual Settings', inline = '4')
bos_label_color = input.color(color.white, title = 'BOS Label', group = 'Supply/Demand Visual Settings')
poi_label_color = input.color(color.white, title = 'POI Label', group = 'Supply/Demand Visual Settings')
swing_type_color = input.color(color.black, title = 'Price Action Label', group = 'Supply/Demand Visual Settings')
//============================================================================
// SR SETTINGS
//============================================================================
enableSR = input(true, "SR On/Off", group="SR Settings")
colorSup = input(#00DBFF, "Support Color", group="SR Settings")
colorRes = input(#E91E63, "Resistance Color", group="SR Settings")
strengthSR = input.int(2, "S/R Strength", 1, group="SR Settings")
lineStyle = input.string("Dotted", "Line Style", , group="SR Settings")
lineWidth = input.int(2, "S/R Line Width", 1, group="SR Settings")
useZones = input(true, "Zones On/Off", group="SR Settings")
useHLZones = input(true, "High Low Zones On/Off", group="SR Settings")
zoneWidth = input.int(2, "Zone Width %", 0, tooltip="it's calculated using % of the distance between highest/lowest in last 300 bars", group="SR Settings")
expandSR = input(true, "Expand SR", group="SR Settings")
//============================================================================
// SUPPLY/DEMAND FUNCTIONS
//============================================================================
// Function to add new and remove last in array
f_array_add_pop(array, new_value_to_add) =>
array.unshift(array, new_value_to_add)
array.pop(array)
// Function for swing H & L labels
f_sh_sl_labels(array, swing_type) =>
var string label_text = na
if swing_type == 1
if array.get(array, 0) >= array.get(array, 1)
label_text := 'HH'
else
label_text := 'LH'
label.new(bar_index - swing_length, array.get(array,0), text = label_text, style=label.style_label_down, textcolor = swing_type_color, color = color.new(swing_type_color, 100), size = size.tiny)
else if swing_type == -1
if array.get(array, 0) >= array.get(array, 1)
label_text := 'HL'
else
label_text := 'LL'
label.new(bar_index - swing_length, array.get(array,0), text = label_text, style=label.style_label_up, textcolor = swing_type_color, color = color.new(swing_type_color, 100), size = size.tiny)
// Function to check overlapping
f_check_overlapping(new_poi, box_array, atr) =>
atr_threshold = atr * 2
okay_to_draw = true
for i = 0 to array.size(box_array) - 1
top = box.get_top(array.get(box_array, i))
bottom = box.get_bottom(array.get(box_array, i))
poi = (top + bottom) / 2
upper_boundary = poi + atr_threshold
lower_boundary = poi - atr_threshold
if new_poi >= lower_boundary and new_poi <= upper_boundary
okay_to_draw := false
break
else
okay_to_draw := true
okay_to_draw
// Function to draw supply or demand zone
f_supply_demand(value_array, bn_array, box_array, label_array, box_type, atr) =>
atr_buffer = atr * (box_width / 10)
box_left = array.get(bn_array, 0)
box_right = bar_index
var float box_top = 0.00
var float box_bottom = 0.00
var float poi = 0.00
if box_type == 1
box_top := array.get(value_array, 0)
box_bottom := box_top - atr_buffer
poi := (box_top + box_bottom) / 2
else if box_type == -1
box_bottom := array.get(value_array, 0)
box_top := box_bottom + atr_buffer
poi := (box_top + box_bottom) / 2
okay_to_draw = f_check_overlapping(poi, box_array, atr)
if box_type == 1 and okay_to_draw
box.delete( array.get(box_array, array.size(box_array) - 1) )
f_array_add_pop(box_array, box.new( left = box_left, top = box_top, right = box_right, bottom = box_bottom, border_color = supply_outline_color,
bgcolor = supply_color, extend = extend.right, text = 'SUPPLY', text_halign = text.align_center, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
box.delete( array.get(label_array, array.size(label_array) - 1) )
f_array_add_pop(label_array, box.new( left = box_left, top = poi, right = box_right, bottom = poi, border_color = color.new(poi_label_color,90),
bgcolor = color.new(poi_label_color,90), extend = extend.right, text = 'POI', text_halign = text.align_left, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
else if box_type == -1 and okay_to_draw
box.delete( array.get(box_array, array.size(box_array) - 1) )
f_array_add_pop(box_array, box.new( left = box_left, top = box_top, right = box_right, bottom = box_bottom, border_color = demand_outline_color,
bgcolor = demand_color, extend = extend.right, text = 'DEMAND', text_halign = text.align_center, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
box.delete( array.get(label_array, array.size(label_array) - 1) )
f_array_add_pop(label_array, box.new( left = box_left, top = poi, right = box_right, bottom = poi, border_color = color.new(poi_label_color,90),
bgcolor = color.new(poi_label_color,90), extend = extend.right, text = 'POI', text_halign = text.align_left, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
// Function to change supply/demand to BOS if broken
f_sd_to_bos(box_array, bos_array, label_array, zone_type) =>
if zone_type == 1
for i = 0 to array.size(box_array) - 1
level_to_break = box.get_top(array.get(box_array,i))
if close >= level_to_break
copied_box = box.copy(array.get(box_array,i))
f_array_add_pop(bos_array, copied_box)
mid = (box.get_top(array.get(box_array,i)) + box.get_bottom(array.get(box_array,i))) / 2
box.set_top(array.get(bos_array,0), mid)
box.set_bottom(array.get(bos_array,0), mid)
box.set_extend( array.get(bos_array,0), extend.none)
box.set_right( array.get(bos_array,0), bar_index)
box.set_text( array.get(bos_array,0), 'BOS' )
box.set_text_color( array.get(bos_array,0), bos_label_color)
box.set_text_size( array.get(bos_array,0), size.small)
box.set_text_halign( array.get(bos_array,0), text.align_center)
box.set_text_valign( array.get(bos_array,0), text.align_center)
box.delete(array.get(box_array, i))
box.delete(array.get(label_array, i))
if zone_type == -1
for i = 0 to array.size(box_array) - 1
level_to_break = box.get_bottom(array.get(box_array,i))
if close <= level_to_break
copied_box = box.copy(array.get(box_array,i))
f_array_add_pop(bos_array, copied_box)
mid = (box.get_top(array.get(box_array,i)) + box.get_bottom(array.get(box_array,i))) / 2
box.set_top(array.get(bos_array,0), mid)
box.set_bottom(array.get(bos_array,0), mid)
box.set_extend( array.get(bos_array,0), extend.none)
box.set_right( array.get(bos_array,0), bar_index)
box.set_text( array.get(bos_array,0), 'BOS' )
box.set_text_color( array.get(bos_array,0), bos_label_color)
box.set_text_size( array.get(bos_array,0), size.small)
box.set_text_halign( array.get(bos_array,0), text.align_center)
box.set_text_valign( array.get(bos_array,0), text.align_center)
box.delete(array.get(box_array, i))
box.delete(array.get(label_array, i))
// Function to extend box endpoint
f_extend_box_endpoint(box_array) =>
for i = 0 to array.size(box_array) - 1
box.set_right(array.get(box_array, i), bar_index + 100)
//============================================================================
// SR FUNCTIONS
//============================================================================
percWidth(len, perc) => (ta.highest(len) - ta.lowest(len)) * perc / 100
//============================================================================
// SUPPLY/DEMAND CALCULATIONS
//============================================================================
atr = ta.atr(50)
swing_high = ta.pivothigh(high, swing_length, swing_length)
swing_low = ta.pivotlow(low, swing_length, swing_length)
var swing_high_values = array.new_float(5,0.00)
var swing_low_values = array.new_float(5,0.00)
var swing_high_bns = array.new_int(5,0)
var swing_low_bns = array.new_int(5,0)
var current_supply_box = array.new_box(history_of_demand_to_keep, na)
var current_demand_box = array.new_box(history_of_demand_to_keep, na)
var current_supply_poi = array.new_box(history_of_demand_to_keep, na)
var current_demand_poi = array.new_box(history_of_demand_to_keep, na)
var supply_bos = array.new_box(5, na)
var demand_bos = array.new_box(5, na)
// New swing high
if not na(swing_high)
f_array_add_pop(swing_high_values, swing_high)
f_array_add_pop(swing_high_bns, bar_index )
if show_price_action_labels
f_sh_sl_labels(swing_high_values, 1)
f_supply_demand(swing_high_values, swing_high_bns, current_supply_box, current_supply_poi, 1, atr)
// New swing low
else if not na(swing_low)
f_array_add_pop(swing_low_values, swing_low)
f_array_add_pop(swing_low_bns, bar_index )
if show_price_action_labels
f_sh_sl_labels(swing_low_values, -1)
f_supply_demand(swing_low_values, swing_low_bns, current_demand_box, current_demand_poi, -1, atr)
f_sd_to_bos(current_supply_box, supply_bos, current_supply_poi, 1)
f_sd_to_bos(current_demand_box, demand_bos, current_demand_poi, -1)
f_extend_box_endpoint(current_supply_box)
f_extend_box_endpoint(current_demand_box)
//============================================================================
// SR CALCULATIONS & PLOTTING
//============================================================================
rb = 10
prd = 284
ChannelW = 10
label_loc = 55
style = lineStyle == "Solid" ? line.style_solid : lineStyle == "Dotted" ? line.style_dotted : line.style_dashed
ph = ta.pivothigh(rb, rb)
pl = ta.pivotlow (rb, rb)
sr_levels = array.new_float(21, na)
prdhighest = ta.highest(prd)
prdlowest = ta.lowest(prd)
cwidth = percWidth(prd, ChannelW)
zonePerc = percWidth(300, zoneWidth)
aas = array.new_bool(41, true)
u1 = 0.0, u1 := nz(u1 )
d1 = 0.0, d1 := nz(d1 )
highestph = 0.0, highestph := highestph
lowestpl = 0.0, lowestpl := lowestpl
var sr_levs = array.new_float(21, na)
label hlabel = na, label.delete(hlabel )
label llabel = na, label.delete(llabel )
var sr_lines = array.new_line(21, na)
var sr_linesH = array.new_line(21, na)
var sr_linesL = array.new_line(21, na)
var sr_linesF = array.new_linefill(21, na)
var sr_labels = array.new_label(21, na)
if ph or pl
for x = 0 to array.size(sr_levels) - 1
array.set(sr_levels, x, na)
highestph := prdlowest
lowestpl := prdhighest
countpp = 0
for x = 0 to prd
if na(close )
break
if not na(ph ) or not na(pl )
highestph := math.max(highestph, nz(ph , prdlowest), nz(pl , prdlowest))
lowestpl := math.min(lowestpl, nz(ph , prdhighest), nz(pl , prdhighest))
countpp += 1
if countpp > 40
break
if array.get(aas, countpp)
upl = (ph ? high : low ) + cwidth
dnl = (ph ? high : low ) - cwidth
u1 := countpp == 1 ? upl : u1
d1 := countpp == 1 ? dnl : d1
tmp = array.new_bool(41, true)
cnt = 0
tpoint = 0
for xx = 0 to prd
if na(close )
break
if not na(ph ) or not na(pl )
chg = false
cnt += 1
if cnt > 40
break
if array.get(aas, cnt)
if not na(ph )
if high <= upl and high >= dnl
tpoint += 1
chg := true
if not na(pl )
if low <= upl and low >= dnl
tpoint += 1
chg := true
if chg and cnt < 41
array.set(tmp, cnt, false)
if tpoint >= strengthSR
for g = 0 to 40 by 1
if not array.get(tmp, g)
array.set(aas, g, false)
if ph and countpp < 21
array.set(sr_levels, countpp, high )
if pl and countpp < 21
array.set(sr_levels, countpp, low )
// Plot SR
var line highest_ = na, line.delete(highest_)
var line lowest_ = na, line.delete(lowest_)
var line highest_fill1 = na, line.delete(highest_fill1)
var line highest_fill2 = na, line.delete(highest_fill2)
var line lowest_fill1 = na, line.delete(lowest_fill1)
var line lowest_fill2 = na, line.delete(lowest_fill2)
hi_col = close >= highestph ? colorSup : colorRes
lo_col = close >= lowestpl ? colorSup : colorRes
if enableSR
highest_ := line.new(bar_index - 311, highestph, bar_index, highestph, xloc.bar_index, expandSR ? extend.both : extend.right, hi_col, style, lineWidth)
lowest_ := line.new(bar_index - 311, lowestpl , bar_index, lowestpl , xloc.bar_index, expandSR ? extend.both : extend.right, lo_col, style, lineWidth)
if useHLZones
highest_fill1 := line.new(bar_index - 311, highestph + zonePerc, bar_index, highestph + zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na)
highest_fill2 := line.new(bar_index - 311, highestph - zonePerc, bar_index, highestph - zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na)
lowest_fill1 := line.new(bar_index - 311, lowestpl + zonePerc , bar_index, lowestpl + zonePerc , xloc.bar_index, expandSR ? extend.both : extend.right, na)
lowest_fill2 := line.new(bar_index - 311, lowestpl - zonePerc , bar_index, lowestpl - zonePerc , xloc.bar_index, expandSR ? extend.both : extend.right, na)
linefill.new(highest_fill1, highest_fill2, color.new(hi_col, 80))
linefill.new(lowest_fill1 , lowest_fill2 , color.new(lo_col, 80))
if ph or pl
for x = 0 to array.size(sr_lines) - 1
array.set(sr_levs, x, array.get(sr_levels, x))
for x = 0 to array.size(sr_lines) - 1
line.delete(array.get(sr_lines, x))
line.delete(array.get(sr_linesH, x))
line.delete(array.get(sr_linesL, x))
linefill.delete(array.get(sr_linesF, x))
if array.get(sr_levs, x) and enableSR
line_col = close >= array.get(sr_levs, x) ? colorSup : colorRes
array.set(sr_lines, x, line.new(bar_index - 355, array.get(sr_levs, x), bar_index, array.get(sr_levs, x), xloc.bar_index, expandSR ? extend.both : extend.right, line_col, style, lineWidth))
if useZones
array.set(sr_linesH, x, line.new(bar_index - 355, array.get(sr_levs, x) + zonePerc, bar_index, array.get(sr_levs, x) + zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na))
array.set(sr_linesL, x, line.new(bar_index - 355, array.get(sr_levs, x) - zonePerc, bar_index, array.get(sr_levs, x) - zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na))
array.set(sr_linesF, x, linefill.new(array.get(sr_linesH, x), array.get(sr_linesL, x), color.new(line_col, 80)))
for x = 0 to array.size(sr_labels) - 1
label.delete(array.get(sr_labels, x))
if array.get(sr_levs, x) and enableSR
lab_loc = close >= array.get(sr_levs, x) ? label.style_label_up : label.style_label_down
lab_col = close >= array.get(sr_levs, x) ? colorSup : colorRes
array.set(sr_labels, x, label.new(bar_index + label_loc, array.get(sr_levs, x), str.tostring(math.round_to_mintick(array.get(sr_levs, x))), color=lab_col , textcolor=#000000, style=lab_loc))
hlabel := enableSR ? label.new(bar_index + label_loc + math.round(math.sign(label_loc)) * 20, highestph, "High Level : " + str.tostring(highestph), color=hi_col, textcolor=#000000, style=label.style_label_down) : na
llabel := enableSR ? label.new(bar_index + label_loc + math.round(math.sign(label_loc)) * 20, lowestpl , "Low Level : " + str.tostring(lowestpl) , color=lo_col, textcolor=#000000, style=label.style_label_up ) : na
Structure Breakout - Buy Sell IndicatorStructure Breakout - Buy Sell Indicator
📈 OVERVIEW:
A minimalist indicator that identifies market structure breakouts using swing point analysis.
Displays clear blue buy arrows and red sell arrows when price breaks key swing levels.
🔧 HOW IT WORKS:
1. Identifies swing highs and lows using configurable lookback period
2. Triggers BUY signal (blue arrow) when price closes above previous swing high
3. Triggers SELL signal (red arrow) when price closes below previous swing low
4. Uses clean visual arrows without cluttering the chart
⚙️ KEY FEATURES:
• Clean, uncluttered visual signals
• Customizable sensitivity period
• Blue arrows for buy signals (below bars)
• Red arrows for sell signals (above bars)
• No lagging repainting
• Works on all timeframes
🎯 TRADING APPLICATIONS:
• Swing trading entries
• Breakout confirmation
• Trend continuation signals
• Support/resistance breaks
⚡ SETTINGS:
• Structure Detection Period (default: 20) - Adjust sensitivity of swing detection
⚠️ RISK DISCLAIMER:
This is an educational tool. Always use proper risk management.
Past performance does not guarantee future results.






















