Sentinel Market Structure [JOAT]
Sentinel Market Structure - Smart Money Structure Analysis
Introduction and Purpose
Sentinel Market Structure is an open-source overlay indicator that identifies swing highs/lows, tracks market structure (HH/HL/LH/LL), detects Break of Structure (BOS) and Change of Character (CHoCH) signals, and marks order blocks. The core problem this indicator solves is that retail traders often miss structural shifts that smart money traders use to identify trend changes.
This indicator addresses that by automatically tracking market structure and alerting traders to key structural breaks that often precede significant moves.
Why These Components Work Together
Each component provides different structural information:
1. Swing Detection - Identifies significant pivot highs and lows. These are the building blocks of market structure.
2. Structure Labels (HH/HL/LH/LL) - Classifies each swing relative to the previous swing. Higher Highs + Higher Lows = uptrend. Lower Highs + Lower Lows = downtrend.
3. Break of Structure (BOS) - Identifies when price breaks a swing level in the direction of the trend. This is a continuation signal.
4. Change of Character (CHoCH) - Identifies when price breaks a swing level against the trend. This is a potential reversal signal.
5. Order Blocks - Marks the last opposing candle before an impulse move. These zones often act as future support/resistance.
How the Detection Works
Swing Detection:
bool swingHighDetected = high == ta.highest(high, swingLength * 2 + 1)
bool swingLowDetected = low == ta.lowest(low, swingLength * 2 + 1)
BOS vs CHoCH Logic:
// BOS: Break in direction of trend (continuation)
bool bullishBOS = close > lastSwingHigh and marketTrend >= 0
// CHoCH: Break against trend (reversal signal)
bool bullishCHOCH = close > lastSwingHigh and marketTrend < 0
Order Block Detection:
bool bullOB = close < open and // Previous candle bearish
close > open and // Current candle bullish
close > high and // Breaking above
(high - low) > ta.atr(14) * 1.5 // Strong impulse
Signal Types
HH (Higher High) - Swing high above previous swing high (bullish structure)
HL (Higher Low) - Swing low above previous swing low (bullish structure)
LH (Lower High) - Swing high below previous swing high (bearish structure)
LL (Lower Low) - Swing low below previous swing low (bearish structure)
BOS↑/BOS↓ - Break of structure in trend direction (continuation)
CHoCH↑/CHoCH↓ - Change of character against trend (potential reversal)
Dashboard Information
Trend - Current market bias (BULLISH/BEARISH/NEUTRAL)
Swing High - Last swing high price with HH/LH label
Swing Low - Last swing low price with HL/LL label
Structure - Current structure state (HH+HL, LH+LL, etc.)
Price - Price position relative to structure
How to Use This Indicator
For Trend Following:
1. Identify trend using structure (HH+HL = uptrend, LH+LL = downtrend)
2. Enter on BOS signals in trend direction
3. Use swing levels for stop placement
For Reversal Trading:
1. Watch for CHoCH signals (break against trend)
2. Confirm with order block formation
3. Enter on retest of order block zone
For Risk Management:
1. Place stops beyond swing highs/lows
2. Use structure lines as trailing stop references
3. Exit when CHoCH signals against your position
Input Parameters
Swing Detection Length (5) - Bars on each side for pivot detection
Show Swing High/Low Points (true) - Toggle swing markers
Show BOS/CHoCH (true) - Toggle structural break signals
Show Structure Lines (true) - Toggle horizontal swing lines
Show Order Blocks (true) - Toggle order block zones
Zone Extension (50) - How far order block boxes extend
Timeframe Recommendations
15m-1H: Good for intraday structure analysis
4H-Daily: Best for swing trading structure
Lower timeframes require smaller swing detection length
Limitations
Swing detection has inherent lag (needs confirmation bars)
Not all BOS/CHoCH signals lead to continuation/reversal
Order block zones are simplified (not full ICT methodology)
Structure analysis is subjective - different traders see different swings
Open-Source and Disclaimer
This script is published as open-source under the Mozilla Public License 2.0 for educational purposes.
This indicator does not constitute financial advice. Market structure analysis does not guarantee trade outcomes. Always use proper risk management.
- Made with passion by officialjackofalltrades
Pinescripters
SterlCore FX [JOATSterlCore FX Matrix is a multi-timeframe forex indicator that integrates market structure analysis, central bank policy proxies, currency strength correlation, session-based liquidity tracking, and volatility diagnostics into a single overlay system.
Note: This script is published as an invite-only INDICATOR. It does not generate backtesting results or automated trade execution. Access requires authorization through the script's access control settings.
## Why This Script Merits Invite-Only Protection
This indicator combines multiple analytical dimensions that individually exist as separate tools across the trading community. The value proposition lies in the specific integration methodology and composite scoring system that synthesizes:
Multi-timeframe EMA lattice with adaptive ATR channels for structure analysis
Central bank policy pressure assessment using normalized currency index calculations
Real-time currency strength matrix across eight major currencies with correlation intelligence
Session-specific VWAP calculations with drift metrics and range analysis
Composite macro confluence scoring that weights and combines all analytical modules
The proprietary elements include the mathematical weighting system for the macro confluence score, the specific normalization methods for currency strength calculations, and the integration logic that prevents conflicting signals across modules. While individual components like EMAs and RSI are standard, their specific combination, the composite scoring methodology, and the multi-module integration represent original development work that justifies source code protection.
---
## How Components Work Together
The indicator's value comes from how its modules interact, not from any single component:
Data Flow:
1. Multi-timeframe EMAs establish directional bias across strategic, tactical, and execution timeframes
2. Currency strength matrix identifies which currencies are strengthening/weakening across the broader market
3. Policy proxies assess central bank pressure differentials between base and quote currencies
4. Session VWAPs track intraday institutional positioning and drift
5. Correlation grid monitors whether related pairs confirm or contradict the current pair's signals
6. Momentum and volatility filters ensure signals only fire during favorable market conditions
Integration Logic:
Each module produces a normalized score (-1 to +1). These scores are weighted and combined into the macroConfluence composite:
Structure score receives highest weight (50%) as the primary trend filter
Carry composite (30%) captures policy-driven flows
Currency strength spread (20%) validates pair-specific momentum
Momentum, liquidity, session drift, and correlation act as modifiers that can dampen or amplify signals
Why This Integration Matters:
A standard EMA crossover might signal "buy" while currency strength shows the base currency weakening, session VWAP shows price below fair value, and correlation pairs are diverging. The composite scoring system catches these conflicts and reduces signal confidence accordingly. This multi-dimensional validation is what separates this indicator from simple mashups that display multiple indicators without integration.
---
## Core Functionality
This indicator addresses the challenge of synthesizing multiple analytical dimensions in forex trading. Currency markets operate across multiple timeframes simultaneously, with central bank policy shifts, cross-pair correlations, and session-specific liquidity patterns all influencing price action. Most indicators focus on a single dimension; this script attempts to integrate several.
What This Script Does:
Multi-timeframe structure analysis using synchronized EMAs across strategic (daily), tactical (4-hour), and execution (hourly) timeframes
Central bank policy pressure assessment through normalized currency index proxies
Real-time currency strength matrix tracking eight major currencies (USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD)
Cross-pair correlation monitoring using configurable reference pairs
Session-based VWAP calculations with drift and range metrics for Asia, Europe, and US trading windows
Market structure detection including break-of-structure (BOS) confirmation, liquidity sweep identification, and RSI-based divergence alerts
Composite macro confluence score combining all modules with configurable weights
---
## Technical Architecture
### Multi-Timeframe Structure Lattice
The indicator calculates exponential moving averages (EMAs) across three timeframes:
Strategic EMA (default: Daily timeframe, 96-period EMA) — Anchors to longer-term monetary drift and macro flows
Tactical EMA (default: 4-hour timeframe, 55-period EMA) — Captures rotational pressure during positioning for economic data or policy events
Execution EMA (default: 1-hour timeframe, 21-period EMA) — Tracks microstructure in real time
An adaptive ATR-based channel surrounds the execution EMA to define a "value corridor" for entry consideration. Break-of-structure (BOS) logic requires price to close beyond prior swing highs/lows by a configurable ATR percentage threshold to reduce false breakouts.
### Policy Gradient & Carry Intelligence
The script uses currency index proxies (defaults: FX_IDC:EURUSD and FX_IDC:USDJPY ) to approximate central bank policy pressure. These proxies are smoothed via EMA and normalized over a lookback period.
The carryComposite calculation blends:
Normalized policy spread between base and quote currency proxies
Policy drift (difference between tactical and macro timeframe policy spreads)
Carry acceleration (rate of change in policy spread)
Carry opportunity signals appear when the composite exceeds a threshold and aligns with structure bias and currency strength dispersion.
### Currency Strength Matrix
Eight currency baskets are tracked using configurable symbol inputs (defaults use $FX_IDC pairs). Each currency's strength is normalized to a -1 to +1 scale relative to its lookback range. The heatmap table displays which currencies are dominating, allowing quick assessment of broad market moves before they appear in individual pair price action.
### Correlation Intelligence Grid
Three reference pairs (defaults: FX_IDC:EURUSD , FX_IDC:GBPUSD , FX_IDC:USDJPY ) are monitored on a higher timeframe. The script calculates correlation coefficients and assigns qualitative descriptors: "Lockstep +", "Aligned +", "Loose", "Aligned -", or "Lockstep -". A correlation consensus value feeds into the macro confluence calculation, dampening signals when reference pairs show conflicting behavior.
### Momentum, Volatility & Liquidity Stack
Dual ROC momentum — Fast and slow rate-of-change calculations prevent whipsaw from single-length oscillators
Volatility pulse — Compares current ATR to a slower baseline; signals require volatility above a floor threshold
Volatility forecast slope — Uses linear regression to project ATR 21 bars ahead, warning of imminent expansion or contraction
Liquidity pulse — Compares current volume to smoothed average; low participation is visually indicated via background tinting
### Session Awareness & Performance Console
Asia, Europe, and US trading sessions are tracked with configurable UTC windows. Each session maintains:
Live VWAP that resets at session open
Drift score quantifying price deviation from VWAP in ATR terms
Range percentage showing session expansion relative to VWAP
Session bias composite feeds into macro confluence to reduce signal aggression when all sessions are mean-reverting.
### Liquidity & Market Structure Suite
Liquidity sweeps — Detects stop hunts above prior highs or below prior lows within a configurable lookback
RSI divergence — Identifies momentum divergences using confirmed pivot points only
Supply/demand zones — Automatically generated from pivot highs/lows and projected forward for a set number of bars
### Macro Alignment Engine
The macroConfluence score combines:
Structure score (weighted average of strategic/tactical/execution EMAs)
Carry composite
Currency strength spread (base minus quote)
Momentum score
Liquidity modifier
Session bias composite
Correlation consensus
Long/short alignment signals require:
Macro confluence exceeding configurable threshold (default: 0.55)
Volatility pulse above floor threshold
Optional: Price above/below tactical EMA (execution filter toggle)
---
## Visual Elements
Candle Coloring: Candles are recolored based on macro confluence: teal for bullish alignment, magenta for bearish alignment, neutral gray for distribution phases.
Background Tint: Volatility intensity modulates chart background; bold colors indicate elevated ATR, washed-out tones suggest choppy conditions.
Labels:
Macro Align Long/Short — Primary entry signals when confluence exceeds threshold
BOS↑/↓ — Break-of-structure confirmation
Sweep↑/↓ — Liquidity sweep detection
RSI Bull/Bear Div — Momentum divergence alerts
Carry Bias± — Policy-strength alignment flags
Session Overlays: Transparent background shading indicates active trading sessions (Asia, Europe, US) with configurable opacity.
Session VWAPs: Each region's VWAP is plotted in a distinct color (teal for Asia, blue for Europe, purple for US).
---
## Dashboard Tables
The indicator includes several configurable information tables:
Intelligence Dashboard (top-right, default) — Displays strategic/tactical/execution bias, policy pressure, currency spread, volatility pulse, policy impulse, session drift, correlation, and macro state
Currency Heatmap (bottom-right, default) — Shows normalized strength values for all tracked currencies
Correlation Grid (bottom-left, default) — Lists reference pairs with correlation coefficients and qualitative states
Session Performance Panel (bottom-center, default) — Displays drift scores and range percentages for each session
Diagnostics Table (top-left, optional) — Additional session range metrics and liquidity pulse values
All table positions are configurable via input settings to avoid overlap with TradingView UI elements.
---
## Configuration Parameters
Multi-Timeframe Structure: All EMA timeframes and lengths are adjustable. Default strategic timeframe is Daily; tactical is 4-hour; execution is 1-hour.
Policy Proxies: Base and quote currency policy proxy symbols are user-configurable. Defaults use $FX_IDC pairs for broad compatibility.
Currency Strength: Each currency's tracking can be toggled on/off. Symbol inputs allow substitution of alternative data sources if default indices are unavailable.
Correlation References: Three reference pair symbols, timeframe, and lookback period are all configurable.
Signal Thresholds: Macro alignment trigger, volatility pulse floor, and carry opportunity threshold are adjustable to match different trading styles.
Visual Controls: Label visibility, zone display, session overlays, VWAP plotting, and all dashboard tables can be toggled independently.
---
## Technical Implementation Notes
Pine Script v6 compliant
All request.security calls use lookahead_off to prevent historical repainting
BOS, divergence, and sweep detection rely on confirmed pivot points only
Session VWAP calculations reset strictly on session boundaries
Zone objects are automatically capped and managed to respect TradingView resource limits
All calculations include division-by-zero guards and NA handling for real-time stability
---
## Usage Considerations
Timeframe Selection: The indicator is designed for forex pairs. Default timeframes (D/4H/1H) are optimized for swing and intraday trading. Scalpers may prefer shorter execution timeframes; position traders may extend strategic to weekly.
Pair Compatibility: Tested on major pairs ( FX:EURUSD , FX:GBPUSD , FX:USDJPY , OANDA:USDCHF , OANDA:AUDUSD , OANDA:USDCAD , OANDA:NZDUSD ), cross-pairs, and FX-derived CFDs. Policy proxy symbols should be adjusted to match your data feed availability.
Session Windows: Default UTC windows (Asia: 22:00-06:00, Europe: 06:00-13:00, US: 13:00-21:00) can be customized. Adjust for daylight saving time transitions as needed.
Signal Interpretation: Macro alignment signals indicate confluence across multiple dimensions but do not guarantee profitable outcomes. Use in conjunction with risk management and market context. The indicator is a tool for analysis, not a standalone trading system.
Resource Usage: With all features enabled, the script operates within TradingView's resource budgets. Disable unused modules (currency tracking, correlation grid, diagnostics) if running multiple instances on a single layout.
---
## Limitations & Compromises
Policy proxies are approximations using currency indices; actual central bank policy requires external economic analysis
Correlation calculations use price-based correlation, which may lag during regime shifts
Session VWAPs reset at session boundaries; overlapping sessions (e.g., London/NY) may show conflicting signals
Supply/demand zones are generated from pivots; false zones may appear during ranging markets
Macro confluence is a composite score; individual components may conflict, requiring discretionary interpretation
The indicator is optimized for trending and rotational markets. Performance may degrade during extended consolidation or during major economic event volatility when multiple central banks act simultaneously.
---
## Alert System
The script includes four alert conditions:
SterlCore FX Bullish Alignment — Fires when macro confluence exceeds threshold with volatility and EMA filters satisfied
SterlCore FX Bearish Alignment — Mirror of bullish logic
SterlCore FX Carry Long — Fires when carry composite, currency spread, and structure align for long bias
SterlCore FX Carry Short — Mirror of carry long logic
All alerts fire once per bar at bar close.
-Made with passion by officialjackofalltrades
Hobbiecode - RSI + Close previous dayThis is a simple strategy that is working well on SPY but also well performing on Mini Futures SP500. The strategy is composed by the followin rules:
1. If RSI(2) is less than 15, then enter at the close.
2. Exit on close if today’s close is higher than yesterday’s high.
If you backtest it on Mini Futures SP500 you will be able to track data from 1993. It is important to select D1 as timeframe.
Please share any comment or idea below.
Have a good trading,
Ramón.
Pinescript v3 Compatibility Framework (v4 Migration Tool)Pinescript v3 Compatibility Framework (v4 Migration Tool)
This code makes most v3 scripts work in v4 with only a few minor changes below. Place the framework code before the first input statement.
You can totally delete all comments.
Pros:
- to port to v4 you only need to make a few simple changes, not affecting the core v3 code functionality
Cons:
- without #include - large redundant code block, but can be reduced as needed
- no proper syntax highlighting, intellisence for substitute constant names
Make the following changes in v3 script:
1. standard types can't be var names, color_transp can't be in a function, rename in v3 script:
color() => color.new()
bool => bool_
integer => integer_
float => float_
string => string_
2. init na requires explicit type declaration
float a = na
color col = na
3. persistent var init (optional):
s = na
s := nz(s , s) // or s := na(s ) ? 0 : s
// can be replaced with var s
var s = 0
s := s + 1
___________________________________________________________
Key features of Pinescript v4 (FYI):
1. optional explicit type declaration/conversion (you still can't cast series to int)
float s
2. persistent var modifier
var s
var float s
3. string series - persistent strings now can be used in cond and output to screen dynamically
4. label and line objects
- can be dynamically created, deleted, modified using get/set functions, moved before/after the current bar
- can be in if or a function unlike plot
- max limit: 50-55 label, and 50-55 line drawing objects in addition to already existing plots - both not affected by max plot outputs 64
- can only be used in the main chart
- can serve as the only output function - at least one is required: plot, barcolor, line, label etc.
- dynamic var values (including strings) can be output to screen as text using label.new and to_string
str = close >= open ? "up" : "down"
label.new(bar_index, high, text=str)
col = close >= open ? color.green : color.red
label.new(bar_index, na, "close = " + tostring(close), color=col, textcolor=color.white, style=label.style_labeldown, yloc=yloc.abovebar)
// create new objects, delete old ones
l = line.new(bar_index, high, bar_index , low , width=4)
line.delete(l )
// free object buffer by deleting old objects first, then create new ones
var l = na
line.delete(l)
l = line.new(bar_index, high, bar_index , low , width=4)



