Penunjuk

Short Pressure IndexOverview
A composite 0-100 "short pressure" score built from three independently computed components (volume climax, MA deviation, and bearish-bar momentum), with optional automatic exchange routing for crypto and FINRA short-volume data substitution for stocks — so the same score means something comparable across very different asset classes.
How it's calculated
1. Volume pressure: the fraction of high-significance volume (climax or above-average bars, per a PVSRA-style multiplier check) that occurred on bearish closes over a rolling window. For US stocks with FINRA short volume enabled, this component is swapped for the actual reported short-volume ratio instead.
2. MA deviation pressure: how far below (in ATR multiples) price sits from its moving average, rescaled to 0-100 over a rolling window.
3. Momentum pressure: the % of the last N bars that closed bearish.
The three are averaged and smoothed with an EMA to produce the SPI line, which gets its own signal-line EMA and histogram. For crypto, price/volume can be routed to a more liquid exchange feed (e.g. Bitfinex) since the chart's native feed may be sparse; unsupported symbol types can be suppressed entirely rather than plotting a meaningless value.
How to use it
Readings above the high threshold (default 70) suggest broad short-side pressure building across all three components; below the low threshold (default 30) suggests minimal short pressure. The histogram and signal-line crosses give earlier, more granular entries than waiting for a threshold cross. For US equities, "Use FINRA Short Volume" swaps in real reported short-sale data for a more direct read than the volume-climax proxy alone. Penunjuk

Round Number GridRound Number Grid is a visual price reference tool that draws psychological round-number levels around the current market price.
The purpose of this script is to help traders quickly see nearby round-number levels such as 50, 100, 150, 200, 250, 300, 500, or other clean price steps depending on the symbol and its volatility.
This is a visual tool only. It does not generate buy or sell signals, does not predict future price movement, and does not claim that round numbers will act as support or resistance.
How it works
The script can calculate the grid step in two ways:
- Auto from ATR: the script uses recent volatility to estimate a suitable distance between levels, then converts that distance into a clean round-number step.
- Manual: the user can manually choose the distance between grid levels.
In Auto mode, the script converts the ATR-based distance into a clean step such as:
- 1
- 2.5
- 5
- 10
- 25
- 50
- 100
This helps the grid adapt to different symbols and price ranges.
What the script shows
- Round-number levels above and below current price
- The nearest round-number level above price
- The nearest round-number level below price
- Optional major levels every selected number of steps
- Optional labels for visible levels
- A compact state label showing:
- Current grid step
- Nearest round level above
- Nearest round level below
- Percentage distance to the nearest levels
Visual features
The nearest level above price can be highlighted with a separate color and width.
The nearest level below price can also be highlighted separately.
Users can control:
- Number of levels shown above and below price
- Step mode: Auto or Manual
- Auto step multiplier from ATR
- Manual step size
- Major level frequency
- Line colors
- Line width
- Line style
- Label size
- Label visibility
- State label visibility
- Right-side line extension
Right extension
The script includes a right-extension setting so users can extend the grid lines farther to the right.
Users can choose between:
- Manual bars: extend levels by a selected number of bars
- Infinite right: extend the grid lines continuously to the right side of the chart
This makes the grid easier to read when the user wants more space between price, labels, and the right edge of the chart.
Alerts
The script includes alert conditions for:
- Round level crossed
- Nearest upper round level crossed
- Nearest lower round level crossed
These alerts are descriptive price-reference events only. They are not buy or sell signals.
Important note
Round numbers are psychological reference levels. They may be watched by market participants, but they are not guaranteed support or resistance levels.
A reaction near a round number does not guarantee a reversal, continuation, breakout, or rejection.
This indicator is intended for visual analysis, education, and chart context. It should be used together with broader market structure, trend, volume, support and resistance, and risk management.
Repainting / behavior note
This script does not use pivot confirmation, future-looking calculations, or predictive signals.
However, the visible grid is centered around the current price area. When price moves significantly, the displayed grid can recenter around the new price area. This is normal behavior for a visual round-number grid and should not be interpreted as a signal change.
The script is not a strategy, not financial advice, and not a standalone trading system. Penunjuk

Cardwell Dual Confluence [MarkitTick]💡 A comprehensive momentum and trend-following framework built to identify high-probability market shifts. By synthesizing Andrew Cardwell's established Relative Strength Index (RSI) range rules with dynamic trend filtering and volatility metrics, this tool provides a unified analytical engine. It moves beyond standard oscillator readings to map the underlying momentum regime, ensuring that signals are structurally aligned with the dominant trend.
● ✨ Originality and Utility
Traditional momentum oscillators often produce premature reversal signals during strong trends, leading to false entries in directionless markets. This indicator solves that problem by integrating a dual-tier confluence model. It does not rely solely on an isolated RSI moving average crossover; instead, it demands structural validation through Cardwell's defined momentum ranges.
The primary utility lies in its objective structural filtering: a momentum cross is only validated if the broader market regime structurally supports the direction of the momentum.
By combining a base timeframe momentum cross with a Higher Timeframe (HTF) trend regime and Average Directional Index (ADX) volatility filtering, this tool prevents overtrading in choppy, non-directional environments.
This deliberate combination of an oscillator, a trend filter, and a volatility metric acts as a logical confluence engine. It avoids the pitfalls of disjointed indicator mashups by ensuring every component serves a distinct mathematical purpose in validating the signal before it is printed to the chart.
● 🔬 Methodology and Concepts
The logic engine of this tool evaluates multiple distinct criteria before registering a valid signal.
• Momentum Crossover
The script calculates a base RSI and smooths it using two Running Moving Averages (RMA): a Fast RMA and a Slow RMA. A baseline momentum shift occurs when the Fast RMA crosses the Slow RMA, indicating a localized surge in buying or selling pressure.
• Regime Mapping
A structural trend is evaluated by comparing the closing price to a Simple Moving Average (SMA). Simultaneously, a secondary RSI is evaluated against Cardwell's defined structural ranges. A Bullish Regime requires the price to be above the SMA and the RSI to hold within a specific upper tier (defaulting to 40-80). A Bearish Regime requires the price to be below the SMA and the RSI to hold within a lower tier (defaulting to 20-60).
• Confirmation and Confluence
Regimes must persist for a user-defined number of consecutive bars to filter out transient market noise. Confluence is achieved when an RMA momentum crossover occurs within a tight, predefined window of a regime shift, ensuring both immediate momentum and the structural trend are perfectly aligned.
• Higher Timeframe and Volatility Verification
An optional HTF module checks the regime state of a larger timeframe using a strict non-repainting historical offset. Furthermore, the ADX is calculated to measure pure trend strength. If the ADX is below the user-defined minimum threshold, the market is deemed too choppy, and all signals are suppressed.
• Dynamic Trade Architecture
Once a signal is validated strictly on a confirmed bar close, the script projects dynamic Stop Loss and Take Profit levels using a multiplier of the Average True Range (ATR), actively adapting the trade geometry to current market volatility.
● 🔍 Deconstruction of the Underlying Scientific and Academic Framework
The analytical foundation of this tool rests on advanced momentum physics and statistical distribution theories.
• Cardwell RSI Range Theory
Developed by Andrew Cardwell, this theory posits that the Relative Strength Index is not merely an overbought/oversold oscillator, but a powerful trend-identifying metric. In a mathematically robust uptrend, the RSI establishes a baseline support near the 40 level and frequently reaches 80. Conversely, in a downtrend, it establishes resistance near 60 and drops to 20. The indicator algorithmically enforces these limits to objectively classify market environments.
• Running Moving Average (RMA) Dynamics
The script utilizes the RMA, also known as the Modified Moving Average (MMA) or SMMA, to smooth the RSI base. The RMA applies an exponential smoothing weight defined exactly as 1 / length . This specific mathematical weighting retains a longer memory of past data compared to a standard SMA, preventing the abrupt drop-offs that occur when large data points exit a simple moving average window. This makes the RMA crossover highly sensitive to genuine shifts in cumulative momentum without the lag of a standard exponential moving average.
• Average Directional Movement Index (ADX)
Created by J. Welles Wilder, the ADX quantifies trend strength independent of directional vector. By calculating the smoothed moving averages of the +DI and -DI directional movement indicators, the ADX isolates the absolute magnitude of price expansion. The script uses this mathematical isolation to construct an absolute threshold; requiring ADX to exceed a base level ensures that the statistical probability of trend continuation is mathematically viable before capital is exposed.
• Volatility-Scaled Projection (ATR)
Take profit and stop loss coordinates are mapped using Wilder's Average True Range. The ATR measures the greatest of the current high minus the current low, the absolute value of the current high minus the previous close, and the absolute value of the current low minus the previous close. By scaling targets using ATR multipliers, the tool shifts from fixed-point geometry to dynamic, standard-deviation-aligned targeting, ensuring targets expand during high volatility and contract during consolidation.
● 🎨 Visual Guide
The tool employs a clean, visually dynamic chart interface to transmit complex data instantly without cluttering the workspace.
• Heatmap Candles
Candle bodies and wicks are dynamically colored based on the active regime. Teal indicates a confirmed Bullish Regime, Red indicates a Bearish Regime, and Gray indicates a Neutral market state.
• Signal Labels
When all confluence parameters are met on a confirmed bar close, a solid blue "BUY" label appears below the bar, or an orange "SELL" label appears above the bar, complete with strict execution markers.
• Dynamic Trade Levels
Upon signal generation, the tool plots projected trade levels extending to the right of the price action. A solid Red line indicates the Stop Loss threshold. A dashed Blue line denotes the Entry price. Dashed Teal lines represent Take Profit 1, 2, and 3. Labels accurately print the precise price levels directly on the chart axis.
• Risk and Reward Fills
A semi-transparent Red linefill is plotted between the Entry and Stop Loss lines to visualize risk exposure, while a Teal fill between Entry and TP3 visualizes the total projected reward structure, allowing for instant visual evaluation of the trade setup.
• Integrated Dashboard
A comprehensive table is positioned on the chart, displaying real-time operational metrics. It details the current Cross Trend, Regime State, Confirm Bar count, Signal Gap status, Last Signal source, Trade Status, live ATR value, TP3:SL ratio, and HTF/Chop Filter states in an easy-to-read grid.
● 📖 How to Use
Deploying this tool requires patience and strict adherence to structural confirmation.
Wait for the Heatmap Candles to shift from Gray (Neutral) to Teal (Bullish) or Red (Bearish). This indicates that the broader moving average trend and the internal RSI ranges have aligned into a confirmed structural regime.
Observe the chart for a printed BUY or SELL label. This confirms that the RMA momentum cross has achieved mathematical confluence with the active regime within the defined allowable window.
Check the Dashboard to ensure the HTF Regime and Chop Filter (ADX) read as PASS. If the market is blocked by the Chop Filter, do not force an entry, as the statistical probability of a sustained run is low.
Upon entry, utilize the plotted ATR lines to structure your risk. Place your stop loss exactly at the solid red line, and scale out of your position at the dashed TP1, TP2, and TP3 levels as price action develops.
Wait for the Signal Gap cooldown period to elapse before considering consecutive entries in the same direction. This engineered delay prevents overexposure during erratic, volatile spikes.
● ⚙️ Inputs and Settings
The script features highly customizable parameters grouped logically for maximum workflow efficiency.
• Core Settings
Adjust the lengths for the Cross RMA (Fast/Slow) and the primary RSI source. Modify the Trend MA length and explicitly set the boundaries for the Bull Range (default 40-80) and Bear Range (default 20-60). Configure the Confluence Window to define exactly how close a cross and regime shift must occur to trigger a valid signal, and set the Signal Gap cooldown timer.
• Filters
Toggle the HTF Confirmation logic and select the desired higher timeframe for broader structural alignment. Enable the ADX Chop Filter and set the minimum required trend strength to strip out low-probability environments.
• Trade Tools
Define the ATR lookback length and customize the specific multipliers for the Stop Loss and the three Take Profit targets to match your unique risk-to-reward requirements. Modify the Line Extend Bars input to control how far into the future the trade levels are drawn.
• Visuals and Dashboard
Toggle individual visual components, including candle coloring, signal labels, and trade level plotting. Position the dashboard to any corner of the chart to prevent the obstruction of live price action.
• Alerts
Input specific JSON string payloads for Long, Short, Close Long, Close Short, SL, and TP actions. This allows the indicator to integrate seamlessly with automated execution platforms or third-party webhooks without requiring manual code modifications.
⚠️ Disclaimer
All provided scripts and indicators are strictly for educational exploration and must not be interpreted as financial advice or a recommendation to execute trades. We expressly disclaim all liability for any financial losses or damages that may result, directly or indirectly, from the reliance on or application of these tools. Market participation carries inherent risk where past performance never guarantees future returns, leaving all investment decisions and due diligence solely at your own discretion. Penunjuk

Native Timeframe Moving Average📈 Native Timeframe Moving Average
Overview
Native Timeframe Moving Average allows you to plot a moving average that is always calculated from its own selected timeframe, regardless of the chart timeframe you're viewing.
Instead of recalculating the MA using the current chart bars, this indicator performs the entire moving-average calculation inside the selected source timeframe before mapping the result back onto your chart. This ensures the moving average always remains true to its native timeframe.
For example, selecting a 200 SMA on the Daily timeframe will always display the genuine 200-day SMA whether you're viewing a 15-minute, 1-hour, 4-hour, Daily, Weekly, or any other timeframe.
✨ Features
✔ Native timeframe moving averages
✔ SMA, EMA, WMA, RMA & VWMA
✔ Any TradingView timeframe
✔ Developing and Confirmed calculation modes
✔ Connected and Native display modes
✔ Standard MA Offset
✔ Uses TradingView Style settings for colour and line width
✔ No repainting or future leakage
✔ Lightweight and fast
⚙️ Value Modes
📡 Developing (Default)
Includes the active source-timeframe candle in the calculation.
This behaves like traders generally expect when viewing a higher-timeframe moving average on a lower-timeframe chart, allowing the MA to update as the source candle develops.
Perfect for discretionary chart analysis.
🔒 Confirmed
Uses only completed source-timeframe candles.
The plotted value remains unchanged until the next source-timeframe candle closes.
Ideal for:
• Strategies
• Alerts
• Stable signal generation
• Any workflow requiring confirmed higher-timeframe values
📉 Line Modes
🔗 Connected (Default)
Connects each source-timeframe moving-average value using straight lines.
This provides a cleaner, smoother appearance that most traders prefer when analysing trends across multiple timeframes.
Note: The connecting segments are visual interpolation between confirmed source-timeframe values. They improve readability but should not be interpreted as the exact value that existed on every individual chart bar.
🪜 Native
Displays the actual sampled moving-average value available on every chart bar.
When the selected timeframe is higher than the chart timeframe, the line naturally appears as a staircase because the source-timeframe value only updates when that timeframe produces a new value.
This mode is recommended whenever the output is being used for:
• Strategy logic
• Alerts
• Numerical comparisons
• Other indicators
💡 Typical Uses
• Overlay a Daily 200 SMA while trading the 15-minute chart
• View Weekly trend direction without changing chart timeframe
• Display Monthly moving averages on swing-trading charts
• Compare multiple native timeframe moving averages by adding multiple indicator instances
• Keep important higher-timeframe trend references visible while executing on lower timeframes
🎯 Why use this instead of a standard Moving Average?
A standard Moving Average is always calculated from the timeframe of the chart you're viewing.
This indicator keeps the calculation anchored to the timeframe you choose.
That means a 200 Daily SMA always remains a 200 Daily SMA, regardless of whether you're looking at a 5-minute chart or a Weekly chart. It never silently becomes a 200-bar moving average of the current chart timeframe.
🚀 Final Notes
This indicator was designed to provide a clean, reliable and flexible way to work with native timeframe moving averages across any chart.
Whether you're monitoring long-term trend structure while trading intraday or building multi-timeframe confluence into your analysis, Native Timeframe Moving Average keeps your moving averages true to their original timeframe while giving you the flexibility to choose between the smooth appearance of Connected mode and the mathematically exact representation of Native mode. Penunjuk

SMC Reality Check [Concept Hit-Rate Audit]SMC Reality Check
WHAT THIS PUBLICATION ADDS
Hundreds of scripts DRAW Smart Money Concepts. This one MEASURES them.
Every classic SMC event it detects - Order Block retest, Breaker retest,
Fair Value Gap entry, liquidity sweep reclaim, Equal High/Low raid,
structure-break follow-through - is tracked forward, bar by bar, and
resolved as a HIT or a MISS against one uniform, pre-declared rule. The
result is a report card computed on YOUR symbol and YOUR timeframe:
sample size, hit-rate, a Wilson 95% confidence interval, median MFE and
a verdict per concept and side: EDGE, COIN-FLIP or FADE. To my
knowledge, no existing public script forward-tests the SMC toolkit and
reports per-concept outcome statistics like this.
This is deliberately NOT a signal mashup. The six detectors are not
combined to generate entries; each one exists so that its outcomes can
be counted by the same measurement engine. That engine is the reason
the components live in one script: one event definition, one target
rule, one invalidation rule, applied identically to every concept, so
their numbers are comparable side by side. The indicator does not ask
you to believe in SMC. It audits it.
HOW EVENTS ARE DETECTED (all on confirmed bars - nothing repaints)
- Market structure: swing pivots (configurable length) feed a state
machine. A close beyond the last unbroken swing is a structure break
(BOS in trend direction, CHoCH against it) - that bar itself is the
"follow-through" event, expecting continuation.
- Order Blocks: on a structure break, the last opposite-colour candle
before the break becomes the OB (full range or body only). The FIRST
return of price into that zone is the audited retest event.
- Breaker Blocks: an OB broken by the invalidation rule flips polarity
and becomes a Breaker; its first retest is audited the same way.
- Fair Value Gaps: the classic 3-candle imbalance, filtered by a
minimum ATR size. The first return of price into the gap is the event.
- Liquidity sweeps: a wick through a confirmed, unbroken swing high or
low while the bar closes back inside - a stop-hunt. The reclaim close
is the event, expecting a move away from the raided level.
- Equal Highs/Lows: two consecutive swings within an ATR tolerance form
a resting liquidity pool; a wick through it with a close back inside
is the raid event.
HOW OUTCOMES ARE MEASURED
- Every event gets one uniform definition: entry = the event bar close,
target = entry +/- N ATR (default 1.5, measured at event time),
invalidation = the level that falsifies the concept (OB/FVG far edge,
the sweep extreme, the broken structure level; by close or by wick,
selectable).
- HIT: the target is reached before invalidation. MISS: invalidation
first. Conservative by construction: if both happen on the same bar,
it counts as a MISS; if the resolve window (default 40 bars) expires
without a target, it counts as a MISS; if the event bar itself closes
beyond the invalidation, it is an instant MISS.
- Zones are audited on their FIRST test only, so every event is
independent - no double counting. Untested zones that expire are
excluded: statistics describe only what price actually revisited.
- The report card shows, per concept and side: n (resolved events),
hit-rate, the Wilson 95% confidence interval (which is what the
verdict is built from), the median maximum favourable excursion in
ATR, and the verdict: EDGE when the interval's lower bound is above
50%, FADE when the upper bound is below 50%, COIN-FLIP in between,
and no verdict below the minimum sample (default 20).
- Optional Edge Ranking sorts the table by the interval's lower bound,
so the statistically strongest concepts on this chart rise to the top.
A separate filter can restrict markers and alerts to concepts whose
current verdict is EDGE - a display filter only; the statistics always
track every concept.
HOW TO USE
- Read the table before trusting any drawing on the chart - that is the
point of the script. The same concept can be EDGE on one symbol and
FADE on another; the table tells you which is which, here.
- Give it history: statistics need bars. Load more history or use a
lower timeframe if n is small; below the minimum sample the script
deliberately refuses to issue a verdict.
- Treat EDGE as "this event, on this chart, has historically reached
+1.5 ATR before its invalidation more often than not" - context for
your own decisions, not an automatic entry. FADE is a descriptive
label for a historically failing definition, not advice to trade
against it.
- Alerts: create one alert with "Any alert() function call" - each
message names the concept, the side and its measured hit-rate at that
moment. Six classic alertconditions are also available.
SETTINGS GUIDE
- Swing length 5-10 for intraday auditing, 20+ for swing charts.
- Hit target 1.5 ATR and window 40 bars suit intraday; swing traders
may prefer 2-3 ATR with a longer window. Changing the rule changes
the question you are asking - the footer always restates the active
rule so every screenshot carries its own methodology.
- Invalidation "Close" is the forgiving audit, "Wick" the strict one.
LIMITATIONS - READ BEFORE USING
- This is an event study with one fixed rule, not a strategy backtest:
no fees, no slippage, no position sizing, and hit-rate is not P&L. A
hit-rate above 50% against a 1.5 ATR target does not by itself prove
positive expectancy, because the distance to invalidation varies per
event; the 50% line is a neutral reference for the verdict labels,
and the median MFE column adds the magnitude context.
- Pivots confirm after the swing length, so events print with that
structural lag on closed bars only. Reactive by design - the cost of
not repainting.
- Detector definitions are one reasonable, documented interpretation of
SMC concepts; other definitions would produce other numbers.
- The statistics are descriptive for the loaded chart history. Past
behaviour does not guarantee future results. This is a
decision-support tool, not a signal service and not financial advice.
Open-source under MPL 2.0 - study, fork and improve it freely. Penunjuk

Penunjuk

Penunjuk

Stock Sniper V2HOW TO USE
This indicator combines multiple tools into one TradingView system:
✅ UT Bot main buy and sell signals
✅ Optional Sniper Entry signals
✅ Optional Fair Value Gaps
✅ ATR-based stop-loss and profit targets
✅ Optional EMA ribbon, VWAP, dashboard, and candle colors
MAIN SIGNAL SYSTEM
The UT Bot is the main signal system.
🟢 UT BUY = possible bullish entry
🔴 UT SELL = possible bearish entry
The Sniper Entry module is optional and can be used as extra confirmation.
🟢 SNIPER BUY = EMA 9 crossing above EMA 21
🔴 SNIPER SELL = EMA 9 crossing below EMA 21
RSI DOTS
🔴 Red dot below the candle = RSI oversold
🟢 Green dot above the candle = RSI overbought
Important: The RSI dot colors are intentionally reversed from traditional colors.
A red oversold dot does not automatically mean buy.
A green overbought dot does not automatically mean sell.
Use the dots as a warning that price may be stretched.
FAST SCALP SETTINGS
Recommended for 1-minute, 3-minute, or 5-minute charts.
UT Bot Settings:
Key Value: 0.7 to 1.0
ATR Period: 5 to 7
Heikin Ashi Source: Optional
UT Bar Colors: On
ATR Trailing Stop: On
Sniper Settings:
Fast EMA: 9
Slow EMA: 21
ATR Length: 7
Stop-Loss ATR Multiplier: 1.0 to 1.2
Score Confirmation: Off for more signals
Minimum Score: 57%
Optional Visuals:
EMA Ribbon: On
VWAP: On
Entry, SL, and TP Levels: On
Dashboard: Off for a cleaner chart
Fair Value Gaps: Off or only use on the 5-minute chart
BALANCED INTRADAY SETTINGS
Recommended for 5-minute or 15-minute charts.
UT Bot Settings:
Key Value: 1.0
ATR Period: 10
Heikin Ashi Source: Off
UT Bar Colors: On
ATR Trailing Stop: On
Sniper Settings:
Fast EMA: 9
Slow EMA: 21
ATR Length: 14
Stop-Loss ATR Multiplier: 1.5
Score Confirmation: On
Minimum Score: 57% to 71%
Optional Visuals:
EMA Ribbon: On
VWAP: On
Dashboard: On
Fair Value Gaps: On
FVG Extend: 20 bars
CONSERVATIVE SETTINGS
Recommended for fewer but stronger signals.
UT Bot Settings:
Key Value: 1.5 to 2.0
ATR Period: 14
Heikin Ashi Source: On
Sniper Settings:
Fast EMA: 9
Slow EMA: 21
ATR Length: 14
Stop-Loss ATR Multiplier: 1.5 to 2.0
Score Confirmation: On
Minimum Score: 71%
Fair Value Gaps:
Enabled
Threshold: 0.1% to 0.5%
Mitigation Levels: On
Unmitigated Levels: 3 to 5
POSSIBLE LONG SETUP
UT BUY appears.
Price is above VWAP.
EMA 9 is above EMA 21.
Sniper BUY appears or the bullish score is above 57%.
A red RSI oversold dot recently appeared.
Enter after candle confirmation or a pullback.
Use the ATR stop-loss level.
Take partial profit at TP1, TP2, and TP3.
POSSIBLE SHORT SETUP
UT SELL appears.
Price is below VWAP.
EMA 9 is below EMA 21.
Sniper SELL appears or the bearish score is above 57%.
A green RSI overbought dot recently appeared.
Enter after candle confirmation or a retest.
Use the ATR stop-loss level.
Take partial profit at TP1, TP2, and TP3.
FVG CONFIRMATION
Bullish Fair Value Gap:
Use as a possible support or pullback area during an uptrend.
Bearish Fair Value Gap:
Use as a possible resistance or rejection area during a downtrend.
Do not enter only because an FVG appears. Combine it with UT Bot direction, VWAP, EMA trend, RSI conditions, and price action.
ATR STOP-LOSS GUIDE
Fast scalp:
1.0 to 1.2 ATR
Normal intraday trade:
1.5 ATR
More volatile market:
2.0 ATR
A tighter ATR setting creates a closer stop-loss but may cause more stop-outs.
A larger ATR setting gives the trade more room but increases the amount at risk.
BEST CONFIRMATION COMBINATION
Long:
UT BUY + Above VWAP + Bullish EMA trend + Strong bull score
Short:
UT SELL + Below VWAP + Bearish EMA trend + Strong bear score
Avoid entering when UT Bot and Sniper signals disagree.
RISK MANAGEMENT
Never risk your entire account on one trade.
Consider risking only 1% to 2% of your account per trade.
Take partial profit instead of waiting for every target.
Move the stop-loss only according to your trading plan.
This indicator is a confirmation system, not a guaranteed buy-and-sell system.
Always test the settings on your market, symbol, and timeframe before using real money.
For educational purposes only. Not financial advice. Penunjuk

Stock SniperHOW TO USE
This indicator combines multiple tools into one TradingView system:
✅ UT Bot main buy and sell signals
✅ Optional Sniper Entry signals
✅ Optional Fair Value Gaps
✅ ATR-based stop-loss and profit targets
✅ Optional EMA ribbon, VWAP, dashboard, and candle colors
MAIN SIGNAL SYSTEM
The UT Bot is the main signal system.
🟢 UT BUY = possible bullish entry
🔴 UT SELL = possible bearish entry
The Sniper Entry module is optional and can be used as extra confirmation.
🟢 SNIPER BUY = EMA 9 crossing above EMA 21
🔴 SNIPER SELL = EMA 9 crossing below EMA 21
RSI DOTS
🔴 Red dot below the candle = RSI oversold
🟢 Green dot above the candle = RSI overbought
Important: The RSI dot colors are intentionally reversed from traditional colors.
A red oversold dot does not automatically mean buy.
A green overbought dot does not automatically mean sell.
Use the dots as a warning that price may be stretched.
FAST SCALP SETTINGS
Recommended for 1-minute, 3-minute, or 5-minute charts.
UT Bot Settings:
Key Value: 0.7 to 1.0
ATR Period: 5 to 7
Heikin Ashi Source: Optional
UT Bar Colors: On
ATR Trailing Stop: On
Sniper Settings:
Fast EMA: 9
Slow EMA: 21
ATR Length: 7
Stop-Loss ATR Multiplier: 1.0 to 1.2
Score Confirmation: Off for more signals
Minimum Score: 57%
Optional Visuals:
EMA Ribbon: On
VWAP: On
Entry, SL, and TP Levels: On
Dashboard: Off for a cleaner chart
Fair Value Gaps: Off or only use on the 5-minute chart
BALANCED INTRADAY SETTINGS
Recommended for 5-minute or 15-minute charts.
UT Bot Settings:
Key Value: 1.0
ATR Period: 10
Heikin Ashi Source: Off
UT Bar Colors: On
ATR Trailing Stop: On
Sniper Settings:
Fast EMA: 9
Slow EMA: 21
ATR Length: 14
Stop-Loss ATR Multiplier: 1.5
Score Confirmation: On
Minimum Score: 57% to 71%
Optional Visuals:
EMA Ribbon: On
VWAP: On
Dashboard: On
Fair Value Gaps: On
FVG Extend: 20 bars
CONSERVATIVE SETTINGS
Recommended for fewer but stronger signals.
UT Bot Settings:
Key Value: 1.5 to 2.0
ATR Period: 14
Heikin Ashi Source: On
Sniper Settings:
Fast EMA: 9
Slow EMA: 21
ATR Length: 14
Stop-Loss ATR Multiplier: 1.5 to 2.0
Score Confirmation: On
Minimum Score: 71%
Fair Value Gaps:
Enabled
Threshold: 0.1% to 0.5%
Mitigation Levels: On
Unmitigated Levels: 3 to 5
POSSIBLE LONG SETUP
UT BUY appears.
Price is above VWAP.
EMA 9 is above EMA 21.
Sniper BUY appears or the bullish score is above 57%.
A red RSI oversold dot recently appeared.
Enter after candle confirmation or a pullback.
Use the ATR stop-loss level.
Take partial profit at TP1, TP2, and TP3.
POSSIBLE SHORT SETUP
UT SELL appears.
Price is below VWAP.
EMA 9 is below EMA 21.
Sniper SELL appears or the bearish score is above 57%.
A green RSI overbought dot recently appeared.
Enter after candle confirmation or a retest.
Use the ATR stop-loss level.
Take partial profit at TP1, TP2, and TP3.
FVG CONFIRMATION
Bullish Fair Value Gap:
Use as a possible support or pullback area during an uptrend.
Bearish Fair Value Gap:
Use as a possible resistance or rejection area during a downtrend.
Do not enter only because an FVG appears. Combine it with UT Bot direction, VWAP, EMA trend, RSI conditions, and price action.
ATR STOP-LOSS GUIDE
Fast scalp:
1.0 to 1.2 ATR
Normal intraday trade:
1.5 ATR
More volatile market:
2.0 ATR
A tighter ATR setting creates a closer stop-loss but may cause more stop-outs.
A larger ATR setting gives the trade more room but increases the amount at risk.
BEST CONFIRMATION COMBINATION
Long:
UT BUY + Above VWAP + Bullish EMA trend + Strong bull score
Short:
UT SELL + Below VWAP + Bearish EMA trend + Strong bear score
Avoid entering when UT Bot and Sniper signals disagree.
RISK MANAGEMENT
Never risk your entire account on one trade.
Consider risking only 1% to 2% of your account per trade.
Take partial profit instead of waiting for every target.
Move the stop-loss only according to your trading plan.
This indicator is a confirmation system, not a guaranteed buy-and-sell system.
Always test the settings on your market, symbol, and timeframe before using real money.
For educational purposes only. Not financial advice. Penunjuk

Penunjuk

TSI in Dynamic Zones with Divergence v2.2HOW TO READ IT
A momentum companion oscillator built around the True Strength Index (TSI), with adaptive overbought/oversold zones, automatic divergence detection, and a volatility-context dashboard. Designed to ride underneath a price-chart framework (MA stack / squeeze / trigger systems) as the momentum second opinion: the price chart tells you where, this tells you how much force is behind it. Adapted from the open-source GPL-3.0 "TSI in Dynamic Zones with Divergence" with Pine v6 fixes and display work; published under the same license.
THE 30-SECOND VERSION
Cyan line = TSI (momentum). Orange line = its signal. Cyan above orange = bulls in control; below = bears. The shaded orange band on top and aqua band on the bottom are NOT fixed levels — they're dynamic zones that adapt to the last 70 bars, so "overbought" on a quiet day sits lower than on a wild one. Momentum reaching into a zone is stretched; turning back out of one is the actionable part. Green/red labels on the oscillator are divergences: price and momentum disagreeing, which is an early-warning sign, not an entry by itself.
WHAT EACH ELEMENT MEANS
TSI + signal cross — The basic momentum read. Crosses above zero carry more weight than crosses below it for longs, and vice versa.
Dynamic zones (orange top / aqua bottom) — Percentile-based adaptive OB/OS. Entering a zone = stretched. Exiting back through it = momentum actually turning.
Divergence labels — Green (bullish): price made a lower low but TSI made a higher low — selling force is fading. Red (bearish): price higher high, TSI lower high — buying force is fading. Hidden divergences (aqua/orange, off by default) are continuation signals rather than reversal signals.
White triangles — TSI pivot highs/lows at stretched readings; minor structure inside the oscillator.
Orange / aqua cross markers (top and bottom rows) — A sequence of signal-line cross-bounces that's deteriorating (orange, possible top) or improving (aqua, possible bottom). "Maybe" signals — context, not triggers.
Column colors behind the TSI — Kumo-based implied volatility heat: white/silver/aqua = quiet, yellow/orange = elevated, red/dark red = extreme. Divergences and zone touches mean more when volatility is waking up.
DASHBOARD
TSI — Current value and regime (BULL/BEAR, above/below zero).
Zones — Today's adaptive buy/sell thresholds, so you know what counts as stretched right now.
BB % — Where price sits inside its Bollinger Bands (0 = lower band, 1 = upper).
BBW % — Bollinger Band Width percentile. Under 7 = SQUEEZE (compression — pair this with your price chart's squeeze state). Over 70 = EXPANDED.
MFI — Money Flow Index: volume-weighted momentum, OB above 80 / OS below 20.
Kumo IV — The volatility regime in words, MINIMAL through EXTREME.
SMALL SCREENS — TINY AND COMPACT MODES
Settings → Inputs → Dashboard:
• Dashboard text size — Tiny / Small / Normal. Tiny roughly halves the footprint; recommended on phones and small laptops.
• Dashboard mode — Full shows all 6 rows. Compact merges everything into 3 short rows: TSI value + regime, the two zone thresholds, and a one-line volatility readout (BBWP · IV · MFI). Phone recipe: Compact + Tiny + a corner position.
• Dashboard position — six anchor choices to keep it out of the oscillator's way.
KEY SETTINGS
TSI lengths (5/12/10) — Faster than the textbook 25/13 on purpose; built for intraday timeframes.
Cross signal threshold (±) — Gates the orange/aqua cross-bounce markers to crosses beyond ± this value. Default 0 (any cross past zero); raise toward 30 to only flag crosses at stretched readings.
Divergence pivot lookbacks — Lower left-lookback = more signals, more noise. 5 is aggressive; 8–10 is conservative.
Filter crossovers by BBWP — On by default: zero-line crossover alerts are suppressed during squeezes, when chop makes them unreliable.
Hidden divergences — Off by default; turn on if you trade continuation setups.
HONEST LIMITATIONS
Divergence labels confirm one bar after the pivot — the label appears with a delay by design, and acting on an unconfirmed wiggle is how divergence trading goes wrong. Divergences fail routinely in strong trends; momentum can stay "wrong" far longer than a position can. The dynamic zones need their full lookback (70 bars) of history to mean anything — ignore them in the first bars of a newly listed symbol or a fresh session on low-history tickers. This oscillator describes momentum; it knows nothing about structure, levels, or news. Read it alongside a price framework, not instead of one.
This is a study tool, not trade advice, and not an executor. Nothing here is a recommendation to buy or sell anything. Test it, judge the signals against what actually happened, and size your own risk. Penunjuk

Penunjuk

Skippy the Indicator v1.8.4Multi-timeframe MA-structure framework for short-timeframe momentum trading. Codifies a full squeeze-to-exit sequence — squeeze arming, 50ma curl, MA-stack trigger, MA5 ride, staged exit — into plain-language labels, a state machine, and a dashboard.
THE SEQUENCE
The core logic walks one setup from start to finish:
WATCH → READY → BUY → HOLD → TRIM or SELL
WATCH — Squeeze armed. Bollinger Bands are inside the Keltner Channels; energy is compressing.
READY ▲/▼ — The 50ma has begun to curl in the trade direction. Early heads-up.
BUY ▲/▼ — Gamma trigger. MA5, MA10, and MA20 have all closed beyond the 50ma, with the required number of confirmation closes (user-set, default 1). A ★ on the BUY marks a full-sequence setup: squeeze → curl → cross.
HOLD ▲/▼ — Price retested the MA5 and held (the glue). Trend intact.
TRIM ▲/▼ — MA5 glue failed. The leg is done but the thesis is alive. Lighten and watch for re-entry. This is NOT an exit signal.
SELL ▲/▼ — Price rejected at the 50ma with confirmed closes. Thesis dead.
TRIM vs SELL is the one distinction not to blur: orange means the leg ended, red means the trade ended.
A Display toggle switches all labels to technical names (ARMED / CURL / GLUE ✓✗ / ✕50) if you prefer.
REVERSAL SIGNALS
PR — Potential Reversal at a Bollinger Band extreme, RSI-confirmed. As of v0.8.4, PR fires intrabar the moment the high/low touches the band — non-repainting, since a bar's high/low can only extend, never retract. A toggle restores close-confirmed firing. PR is a mean-reversion signal and misfires in strong trends by design — that is what HOLD and the Direction row are for.
RIDE logic converts a failed fade into a continuation read: PR fires, then MA5 holds on the retest — the fade failed and the prior trend is resuming.
DASHBOARD
Seq State in plain language (WAITING / WATCHING / GETTING READY / IN TRADE / LEG DONE — WATCH RE-ENTRY), Direction from full MA-stack alignment, RSI veto row, Fast TFs (5/15/30m) and Slow TFs (1h/4h/D/W) bullish counts, cascading three-level target sequence, structure proximity (previous highs/lows, necklines — wick-measured as of v0.8.4), session window, and volume (informational only — it never gates signals).
Display options: Full (19 rows) or Compact (9 rows), Tiny/Small/Normal text size, and position. On phones use Compact + Tiny + bottom right.
ALERTS
Every label has a matching alert, and push notifications lead with the action word ("BUY ▲ — MA5/10/20 closed above 50ma"). PR and structure alerts use touch semantics — set alert frequency to "Once per bar."
READING IT
Trigger and exit logic is close-confirmed on the chart timeframe: "through" a level means a confirmed close, not a wick. The state machine reads one chart — always check higher timeframes before acting. Fast/slow TF agreement is the conviction read; disagreement is information (fast bear + slow bull = pullback in an uptrend, fast bull + slow bear = bounce in a downtrend).
This is a study and visual-verification tool, not trade advice and not an executor. The label words are signal names, not instructions — nothing here is a recommendation to buy or sell anything. Judge the signals against what actually happens and size your own risk. Penunjuk

Penunjuk

Sniper Open - Complete SignalSniper Open — NY Open FVG + Liquidity + Momentum
This indicator detects a specific 3-part confluence at the New York market open (9:30-9:45 ET):
Fair Value Gap (FVG) — a 3-candle imbalance in price
Liquidity Zone alignment — the gap must sit near a validated equal-high/equal-low level (2+ touches within 24 hours)
Momentum confirmation — the confirming candle must close in the signal's direction
Order block alignment — a recent order block in the same direction must exist
All four conditions must align, during the 9:30-9:45 ET window specifically, for a confirmed signal to fire.
Backtested results (3 years of NQ data, train/test validated):
~66-71% win rate on filled trades
~13-16 point average expectancy per filled trade
Signals fire roughly once every 2 trading days
How to use it:
The small faded circles are "watching" markers — an unconfirmed setup possibly forming. Informational only, not a trade signal.
The solid triangle is the confirmed signal. When it appears, place a limit order at the entry price shown (not a market order).
If your limit order isn't filled within 15 minutes, cancel it. This happens on roughly 44% of signals — it's expected, not a malfunction. The strategy's edge comes from letting price return to the level, not chasing it.
Stop and target levels are drawn automatically alongside each signal.
Important disclaimers:
This is backtested historical data, not a live trading track record. Past performance does not guarantee future results.
This is not financial advice. Trade at your own risk and do your own due diligence.
Built and tested specifically for NQ futures at the NY open — performance on other instruments or timeframes is not validated.
No mechanical filter can eliminate all uncertainty — momentum can reverse, targets aren't always reached, and drawdowns happen even in genuinely validated strategies. Penunjuk

Bo3li.trading Scalper//@version=6
indicator(
title = "Bo3li.trading Scalper",
shorttitle = "Bo3li.trading",
overlay = true,
max_lines_count = 100,
max_labels_count = 100,
max_boxes_count = 20
)
//====================================================
// إعدادات الدعم والمقاومة ومناطق العرض والطلب
//====================================================
pivotLeft = input.int(
5,
"قوة المنطقة من اليسار",
minval = 1,
group = "الدعم والمقاومة"
)
pivotRight = input.int(
5,
"قوة المنطقة من اليمين",
minval = 1,
group = "الدعم والمقاومة"
)
atrLength = input.int(
14,
"فترة ATR",
minval = 1,
group = "الدعم والمقاومة"
)
zoneSizeATR = input.float(
0.30,
"سُمك منطقة العرض والطلب",
minval = 0.05,
step = 0.05,
group = "الدعم والمقاومة"
)
showZones = input.bool(
true,
"إظهار مناطق العرض والطلب",
group = "الدعم والمقاومة"
)
showSupportResistance = input.bool(
true,
"إظهار خطوط الدعم والمقاومة",
group = "الدعم والمقاومة"
)
//====================================================
// إعدادات فلتر الدخول
//====================================================
useTrendFilter = input.bool(
true,
"استخدام فلتر الاتجاه",
group = "فلتر الدخول"
)
emaFastLength = input.int(
20,
"EMA السريع",
minval = 1,
group = "فلتر الدخول"
)
emaSlowLength = input.int(
50,
"EMA البطيء",
minval = 1,
group = "فلتر الدخول"
)
useRSIFilter = input.bool(
true,
"استخدام فلتر RSI",
group = "فلتر الدخول"
)
rsiLength = input.int(
14,
"فترة RSI",
minval = 1,
group = "فلتر الدخول"
)
buyRSILevel = input.int(
52,
"أقل RSI للشراء",
minval = 1,
maxval = 99,
group = "فلتر الدخول"
)
sellRSILevel = input.int(
48,
"أعلى RSI للبيع",
minval = 1,
maxval = 99,
group = "فلتر الدخول"
)
//====================================================
// إعدادات الأهداف ووقف الخسارة
//====================================================
// على الذهب:
// 1 Pip = 0.10 دولار من حركة السعر
// 50 Pip = 5 دولارات
// 100 Pip = 10 دولارات
// 150 Pip = 15 دولاراً
pipSize = input.float(
0.10,
"قيمة Pip بالسعر",
minval = 0.00001,
step = 0.01,
tooltip = "للذهب: 100 Pip تساوي حركة 10 دولارات",
group = "الأهداف ووقف الخسارة"
)
tpStepPips = input.int(
50,
"المسافة بين كل TP",
minval = 1,
group = "الأهداف ووقف الخسارة"
)
slPips = input.int(
50,
"SL بالـ Pip",
minval = 1,
group = "الأهداف ووقف الخسارة"
)
tp1Pips = tpStepPips
tp2Pips = tpStepPips * 2
tp3Pips = tpStepPips * 3
projectionBars = input.int(
40,
"طول خطوط الصفقة",
minval = 5,
maxval = 200,
group = "الأهداف ووقف الخسارة"
)
//====================================================
// إعدادات المظهر
//====================================================
showEMAs = input.bool(
true,
"إظهار المتوسطات",
group = "المظهر"
)
showSignals = input.bool(
true,
"إظهار إشارات الشراء والبيع",
group = "المظهر"
)
showWatermark = input.bool(
true,
"إظهار Bo3li.trading بالخلفية",
group = "المظهر"
)
//====================================================
// الحسابات
//====================================================
atrValue = ta.atr(atrLength)
zoneThickness = atrValue * zoneSizeATR
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
rsiValue = ta.rsi(close, rsiLength)
pivotHigh = ta.pivothigh(
high,
pivotLeft,
pivotRight
)
pivotLow = ta.pivotlow(
low,
pivotLeft,
pivotRight
)
//====================================================
// تخزين آخر دعم ومقاومة
//====================================================
var float resistancePrice = na
var float supportPrice = na
var float supplyTop = na
var float supplyBottom = na
var float demandTop = na
var float demandBottom = na
if not na(pivotHigh)
resistancePrice := pivotHigh
supplyTop := pivotHigh
supplyBottom := pivotHigh - zoneThickness
if not na(pivotLow)
supportPrice := pivotLow
demandTop := pivotLow + zoneThickness
demandBottom := pivotLow
//====================================================
// مناطق العرض والطلب
//====================================================
var box supplyBox = na
var box demandBox = na
var label supplyLabel = na
var label demandLabel = na
if not na(pivotHigh)
if not na(supplyBox)
box.delete(supplyBox)
if not na(supplyLabel)
label.delete(supplyLabel)
if showZones
supplyBox := box.new(
left = bar_index - pivotRight,
top = supplyTop,
right = bar_index,
bottom = supplyBottom,
border_color = color.new(color.red, 25),
border_width = 1,
bgcolor = color.new(color.red, 88),
extend = extend.right
)
supplyLabel := label.new(
x = bar_index - pivotRight,
y = supplyTop,
text = "منطقة عرض",
style = label.style_label_down,
color = color.new(color.red, 10),
textcolor = color.white,
size = size.small
)
if not na(pivotLow)
if not na(demandBox)
box.delete(demandBox)
if not na(demandLabel)
label.delete(demandLabel)
if showZones
demandBox := box.new(
left = bar_index - pivotRight,
top = demandTop,
right = bar_index,
bottom = demandBottom,
border_color = color.new(color.green, 25),
border_width = 1,
bgcolor = color.new(color.green, 88),
extend = extend.right
)
demandLabel := label.new(
x = bar_index - pivotRight,
y = demandBottom,
text = "منطقة طلب",
style = label.style_label_up,
color = color.new(color.green, 10),
textcolor = color.white,
size = size.small
)
if not showZones
if not na(supplyBox)
box.delete(supplyBox)
supplyBox := na
if not na(demandBox)
box.delete(demandBox)
demandBox := na
if not na(supplyLabel)
label.delete(supplyLabel)
supplyLabel := na
if not na(demandLabel)
label.delete(demandLabel)
demandLabel := na
//====================================================
// خطوط الدعم والمقاومة البرتقالية
//====================================================
plot(
showSupportResistance ? resistancePrice : na,
title = "المقاومة",
color = color.orange,
linewidth = 2,
style = plot.style_stepline
)
plot(
showSupportResistance ? supportPrice : na,
title = "الدعم",
color = color.orange,
linewidth = 2,
style = plot.style_stepline
)
//====================================================
// المتوسطات المتحركة
//====================================================
plot(
showEMAs ? emaFast : na,
title = "EMA السريع",
color = color.aqua,
linewidth = 1
)
plot(
showEMAs ? emaSlow : na,
title = "EMA البطيء",
color = color.purple,
linewidth = 2
)
//====================================================
// شروط الدخول
//====================================================
bullTrend = emaFast > emaSlow and close > emaFast
bearTrend = emaFast < emaSlow and close < emaFast
bullRSI = rsiValue >= buyRSILevel
bearRSI = rsiValue <= sellRSILevel
buyTrendAllowed = not useTrendFilter or bullTrend
sellTrendAllowed = not useTrendFilter or bearTrend
buyRSIAllowed = not useRSIFilter or bullRSI
sellRSIAllowed = not useRSIFilter or bearRSI
// الشراء بعد كسر المقاومة والإغلاق فوقها
rawBuySignal =
not na(resistancePrice) and
ta.crossover(close, resistancePrice)
// البيع بعد كسر الدعم والإغلاق تحته
rawSellSignal =
not na(supportPrice) and
ta.crossunder(close, supportPrice)
buySignal =
barstate.isconfirmed and
rawBuySignal and
buyTrendAllowed and
buyRSIAllowed
sellSignal =
barstate.isconfirmed and
rawSellSignal and
sellTrendAllowed and
sellRSIAllowed
//====================================================
// خطوط الصفقة
//====================================================
var line entryLine = na
var line tp1Line = na
var line tp2Line = na
var line tp3Line = na
var line slLine = na
var label entryLabel = na
var label tp1Label = na
var label tp2Label = na
var label tp3Label = na
var label slLabel = na
//====================================================
// صفقة شراء
//====================================================
if buySignal
if not na(entryLine)
line.delete(entryLine)
if not na(tp1Line)
line.delete(tp1Line)
if not na(tp2Line)
line.delete(tp2Line)
if not na(tp3Line)
line.delete(tp3Line)
if not na(slLine)
line.delete(slLine)
if not na(entryLabel)
label.delete(entryLabel)
if not na(tp1Label)
label.delete(tp1Label)
if not na(tp2Label)
label.delete(tp2Label)
if not na(tp3Label)
label.delete(tp3Label)
if not na(slLabel)
label.delete(slLabel)
float entryPrice = close
float tp1Price = entryPrice + tp1Pips * pipSize
float tp2Price = entryPrice + tp2Pips * pipSize
float tp3Price = entryPrice + tp3Pips * pipSize
float slPrice = entryPrice - slPips * pipSize
entryLine := line.new(
x1 = bar_index,
y1 = entryPrice,
x2 = bar_index + projectionBars,
y2 = entryPrice,
color = color.blue,
width = 3
)
tp1Line := line.new(
x1 = bar_index,
y1 = tp1Price,
x2 = bar_index + projectionBars,
y2 = tp1Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp2Line := line.new(
x1 = bar_index,
y1 = tp2Price,
x2 = bar_index + projectionBars,
y2 = tp2Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp3Line := line.new(
x1 = bar_index,
y1 = tp3Price,
x2 = bar_index + projectionBars,
y2 = tp3Price,
color = color.green,
width = 2
)
slLine := line.new(
x1 = bar_index,
y1 = slPrice,
x2 = bar_index + projectionBars,
y2 = slPrice,
color = color.red,
width = 2
)
entryLabel := label.new(
x = bar_index + projectionBars,
y = entryPrice,
text = "دخول شراء",
style = label.style_label_left,
color = color.blue,
textcolor = color.white
)
tp1Label := label.new(
x = bar_index + projectionBars,
y = tp1Price,
text = "TP1 - " + str.tostring(tp1Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp2Label := label.new(
x = bar_index + projectionBars,
y = tp2Price,
text = "TP2 - " + str.tostring(tp2Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp3Label := label.new(
x = bar_index + projectionBars,
y = tp3Price,
text = "TP3 - " + str.tostring(tp3Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
slLabel := label.new(
x = bar_index + projectionBars,
y = slPrice,
text = "SL - " + str.tostring(slPips) + " Pip",
style = label.style_label_left,
color = color.red,
textcolor = color.white
)
//====================================================
// صفقة بيع
//====================================================
if sellSignal
if not na(entryLine)
line.delete(entryLine)
if not na(tp1Line)
line.delete(tp1Line)
if not na(tp2Line)
line.delete(tp2Line)
if not na(tp3Line)
line.delete(tp3Line)
if not na(slLine)
line.delete(slLine)
if not na(entryLabel)
label.delete(entryLabel)
if not na(tp1Label)
label.delete(tp1Label)
if not na(tp2Label)
label.delete(tp2Label)
if not na(tp3Label)
label.delete(tp3Label)
if not na(slLabel)
label.delete(slLabel)
float entryPrice = close
float tp1Price = entryPrice - tp1Pips * pipSize
float tp2Price = entryPrice - tp2Pips * pipSize
float tp3Price = entryPrice - tp3Pips * pipSize
float slPrice = entryPrice + slPips * pipSize
entryLine := line.new(
x1 = bar_index,
y1 = entryPrice,
x2 = bar_index + projectionBars,
y2 = entryPrice,
color = color.blue,
width = 3
)
tp1Line := line.new(
x1 = bar_index,
y1 = tp1Price,
x2 = bar_index + projectionBars,
y2 = tp1Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp2Line := line.new(
x1 = bar_index,
y1 = tp2Price,
x2 = bar_index + projectionBars,
y2 = tp2Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp3Line := line.new(
x1 = bar_index,
y1 = tp3Price,
x2 = bar_index + projectionBars,
y2 = tp3Price,
color = color.green,
width = 2
)
slLine := line.new(
x1 = bar_index,
y1 = slPrice,
x2 = bar_index + projectionBars,
y2 = slPrice,
color = color.red,
width = 2
)
entryLabel := label.new(
x = bar_index + projectionBars,
y = entryPrice,
text = "دخول بيع",
style = label.style_label_left,
color = color.blue,
textcolor = color.white
)
tp1Label := label.new(
x = bar_index + projectionBars,
y = tp1Price,
text = "TP1 - " + str.tostring(tp1Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp2Label := label.new(
x = bar_index + projectionBars,
y = tp2Price,
text = "TP2 - " + str.tostring(tp2Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp3Label := label.new(
x = bar_index + projectionBars,
y = tp3Price,
text = "TP3 - " + str.tostring(tp3Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
slLabel := label.new(
x = bar_index + projectionBars,
y = slPrice,
text = "SL - " + str.tostring(slPips) + " Pip",
style = label.style_label_left,
color = color.red,
textcolor = color.white
)
//====================================================
// إشارات الدخول
//====================================================
plotshape(
showSignals and buySignal,
title = "إشارة شراء",
text = "شراء",
style = shape.labelup,
location = location.belowbar,
color = color.green,
textcolor = color.white,
size = size.small
)
plotshape(
showSignals and sellSignal,
title = "إشارة بيع",
text = "بيع",
style = shape.labeldown,
location = location.abovebar,
color = color.red,
textcolor = color.white,
size = size.small
)
//====================================================
// خلفية Bo3li.trading
//====================================================
var table watermark = table.new(
position.middle_center,
1,
1
)
if barstate.islast
table.cell(
watermark,
0,
0,
showWatermark ? "Bo3li.trading" : "",
text_color = color.new(color.gray, 82),
text_size = size.huge,
bgcolor = color.new(color.white, 100)
)
//====================================================
// التنبيهات
//====================================================
alertcondition(
buySignal,
title = "Bo3li.trading - شراء",
message = "إشارة شراء من مؤشر Bo3li.trading بعد كسر المقاومة"
)
alertcondition(
sellSignal,
title = "Bo3li.trading - بيع",
message = "إشارة بيع من مؤشر Bo3li.trading بعد كسر الدعم"
) Penunjuk

Sniper Open - Complete SignalSniper Open — NY Open FVG + Liquidity + Momentum
This indicator detects a specific 3-part confluence at the New York market open (9:30-9:45 ET):
Fair Value Gap (FVG) — a 3-candle imbalance in price
Liquidity Zone alignment — the gap must sit near a validated equal-high/equal-low level (2+ touches within 24 hours)
Momentum confirmation — the confirming candle must close in the signal's direction
Order block alignment — a recent order block in the same direction must exist
All four conditions must align, during the 9:30-9:45 ET window specifically, for a confirmed signal to fire.
Backtested results (3 years of NQ data, train/test validated):
~66-71% win rate on filled trades
~13-16 point average expectancy per filled trade
Signals fire roughly once every 2 trading days
How to use it:
The small faded circles are "watching" markers — an unconfirmed setup possibly forming. Informational only, not a trade signal.
The solid triangle is the confirmed signal. When it appears, place a limit order at the entry price shown (not a market order).
If your limit order isn't filled within 15 minutes, cancel it. This happens on roughly 44% of signals — it's expected, not a malfunction. The strategy's edge comes from letting price return to the level, not chasing it.
Stop and target levels are drawn automatically alongside each signal.
Important disclaimers:
This is backtested historical data, not a live trading track record. Past performance does not guarantee future results.
This is not financial advice. Trade at your own risk and do your own due diligence.
Built and tested specifically for NQ futures at the NY open — performance on other instruments or timeframes is not validated.
No mechanical filter can eliminate all uncertainty — momentum can reverse, targets aren't always reached, and drawdowns happen even in genuinely validated strategies.
Feel free to reach out with questions. Built this as a personal tool first, sharing it because a lot of people asked. Penunjuk

TopSetup Lite - Multi-TF Bias DashboardWHAT IT DOES
A compact dashboard that reads directional bias on three timeframes at once (15M / 5M / 1M) and shows whether they agree. It answers one question before you zoom in: which side of the market is currently favoured — and do the timeframes align?
HOW IT WORKS
• For each timeframe the script requests price data via request.security() and evaluates two conditions: the position of price relative to an EMA pair (20/50), and the alignment of those EMAs over a lookback window.
• Each timeframe is classified as Bull, Bear or Neutral. Neutral is returned when the conditions disagree — the script deliberately refuses to force a direction.
• The three results are combined into a confluence verdict: 3/3 (strong alignment), 2/3 (partial) or mixed (no alignment).
• Optional BOS / CHoCH labels mark structure breaks based on pivot highs/lows, so every bias reading can be verified directly on the chart.
SETTINGS
Pivot length, structure labels on/off, dashboard on/off, table position and size are configurable.
HOW TO USE IT
Treat the verdict as a filter, not a signal: look for setups only in the direction of 2/3 or 3/3 agreement, and stand aside on mixed readings. Built and tested on Gold and Bitcoin; works on any liquid symbol. The full logic can be read in the source code.
Educational tool only. No financial advice, no performance guarantees. Penunjuk

Risk & Levels CockpitRisk & Levels Cockpit
Risk & Levels Cockpit answers one question on any market and any timeframe: if I take this trade, where is my stop, what size should I trade, and what can I lose? It is a risk-and-levels tool, not a buy/sell signal — it does not predict direction, it bounds risk around a trade you have already decided to take.
HOW IT WORKS
Three components chain one-way:
Theil-Sen robust channel — fits a trend line as the median of all pairwise slopes over the lookback. Being a median, it cannot be tilted by a single spike or wick the way ordinary regression can, so the rails give you a stable structure to trade against.
Extreme Value Theory tail model (Peaks-Over-Threshold, Generalized Pareto) — estimates how far price can realistically move against you at a chosen tail quantile, replacing a guessed 2xATR stop with a distance grounded in the actual tail of the return distribution. The channel rail acts as a structural floor, so your stop is never tighter than the channel edge.
Fixed-fractional sizer — turns that stop into a position size: units = floor(risk-budget / (risk distance x point value)). When the stop is wider than your risk budget, size correctly floors to zero and the panel shows what one unit would cost and the capital that would make one unit equal your target risk, so a zero is a decision, not a dead end.
TWO SIZING BASES
Stop distance risks your fraction at the drawn stop. Expected Shortfall risks your fraction at the mean loss beyond the stop (McNeil-Frey POT form, from the same tail fit) — wider, so fewer units, so that gapping through your stop still respects your budget. The panel always shows both the at-stop and at-tail loss per unit, so gap risk is visible in either mode. An optional vol-target overlay (on by default) scales size to keep portfolio volatility steadier across regimes; the Size-mode row always shows the live multiplier.
WORKS ON ANY MARKET, ANY TIMEFRAME
No session, expiry, or clock anchors; every lookback is in bars and volatility annualization self-scales — identical behavior from 1-minute scalping to daily positional, on stocks, futures, forex, crypto, and indices worldwide. Set the currency symbol and point value (money per point per unit) to your instrument: stocks/crypto/spot = 1; index and futures = the contract multiplier (for example NIFTY 65, S&P E-mini 50, Nikkei 1000, DAX 25); forex = point value per lot; options = point value x delta.
A Scalp/Intraday, Positional, or Custom preset adjusts the tail horizon and quantile. Scalp/Intraday is the default (tighter stops); positional traders should switch to the Positional preset for wider, conservative stops.
ON THE CHART
A slope-colored robust trend line with a TREND pill and a channel band, plus solid, pill-labeled decision levels — red STOP, amber BREAK (invalidation), and green T1 and T2 TARGET, each showing price and R-multiple. The panel gives the full sizing and risk readout, including a daily-loss-budget line.
LIMITATIONS (read before use)
Not a signal and not investment advice. Stops and targets are model references, not guarantees — gaps and slippage can exceed them. The tail quantile is scaled to the holding horizon by square-root-of-time, a deliberate approximation chosen over overlapping h-bar fitting which violates independence. The daily-loss cap is a display aid; a single-chart indicator cannot track or enforce live fills. The vol-target overlay multiplies the fixed-fractional size and can nudge per-trade risk above the nominal percent in calm markets — set Size clamp max to 1.0 to only reduce size, or turn it off for a strict fixed-percent rule. Position sizing does not create an edge; it bounds risk.
CREDITS
Original implementation. Theil (1950) and Sen (1968) robust slope; Pickands-Balkema-de Haan / Peaks-Over-Threshold Generalized Pareto tail estimation and Expected Shortfall (McNeil-Frey); fixed-fractional position sizing (Tharp / Vince). Penunjuk

Nebbia Session Map & HTF Levels Nebbia Market Sessions & Liquidity Levels is an open-source intraday market-mapping indicator designed to combine session structure, liquidity references, higher-timeframe levels and the US Initial Balance in a single charting tool.
The script is intended primarily for traders who work on lower intraday timeframes and want a clear view of where price is trading relative to important session ranges, historical highs and lows, confirmed swing levels, opening prices and Initial Balance projections.
Market Sessions
The indicator can display the main intraday trading sessions:
Asia
London
New York AM
New York Lunch
New York PM
Each session can be enabled or disabled independently and has customizable hours, colors and transparency.
The first hour of the Asia and London sessions can also be highlighted separately, making it easier to identify their initial range and early-session price development.
Session times use timezone-aware calculations, allowing daylight-saving changes to be handled correctly when IANA timezones such as America/New_York, America/Chicago, Europe/London, Europe/Rome and Asia/Tokyo are selected.
Killzone Pivots
For every enabled killzone, the script can track the session high and low and extend them forward as potential liquidity levels.
These pivots can remain active according to three different expiration rules:
until the end of the trading day;
until the next occurrence of the same session;
until the level is mitigated.
A pivot stops extending once price trades through it.
Alerts can also be enabled for killzone pivot breaks.
Higher-Timeframe Liquidity Levels
Nebbia can display historical liquidity references from several timeframes:
past daily highs and lows;
past weekly highs and lows;
past monthly highs and lows;
two optional confirmed swing-timeframe slots.
The two swing slots are fully configurable. They may be used, for example, for:
4-hour swings;
1-hour swings;
30-minute swings;
or any other supported timeframe.
Swing highs and lows are confirmed only after the selected number of right-side bars has closed, preventing an unconfirmed pivot from being displayed prematurely.
The timeframe name is generated automatically in the label, producing references such as:
4H H
4H L
1H H
30M L
When two swing levels occur at the same price, the higher timeframe takes priority.
Level Confluence
When multiple liquidity references share the same price, Nebbia merges them instead of drawing several overlapping lines.
The hierarchy is:
Monthly → Weekly → Daily → higher swing timeframe → lower swing timeframe
The highest-priority line remains visible, while the label can report the relevant confluence.
Examples:
W LOW 09.06 / 4H L
D HIGH 16.07 / 1H H
M LOW 01.07 / W LOW 07.07
This keeps the chart readable while preserving the information contained in lower-timeframe confirmations.
Active and Mitigated Levels
Active liquidity levels are displayed using the selected active line style.
Once price trades through a level, it can be converted into a mitigated level using a separate broken-line style and transparency.
A dedicated setting allows mitigated levels to be shown or hidden completely.
This means the chart can be configured either to retain historical interaction points or to display only liquidity levels that remain untouched.
Level labels can also be enabled or disabled independently.
High labels are positioned above their level, while low labels are positioned below it.
Current Trading-Day High and Low
An optional developing mode can display the high and low of the current Chicago trading day.
These levels update throughout the session and are treated as provisional rather than as already-confirmed historical levels.
At the beginning of the next trading day, the completed daily range is transferred into the normal historical daily-level logic.
ADR5 Distance Filter
Nebbia includes an optional ADR5 filter, based on the average daily range of the five most recently completed trading days.
The ADR5 value is calculated and frozen at the beginning of each new trading day.
Only levels located within the selected ADR5 distance multiplier are displayed.
This can reduce chart clutter by hiding historical liquidity references that are too far away from current price.
For example:
1.0 displays levels within one ADR5;
1.5 displays levels within one and a half ADR5;
2.0 displays levels within two ADR5.
Opening Prices
The indicator can display the latest opening price for:
Daily Open — 00:00 Rome
Tokyo Open — 09:00 Tokyo
London Open — 08:00 London
US Cash Open — 08:30 Chicago
Each opening price has an independent visibility option, color and editable label text.
Only the latest relevant opening line is retained, preventing older opening levels from unnecessarily accumulating on the chart.
Time Markers and Separators
Optional vertical timestamps can identify:
00:00 Rome;
08:30 Chicago.
Daily, weekly and monthly separators can also be displayed independently.
Optional day-of-week labels may be placed at the top or bottom of the chart, with the possibility of hiding weekend labels.
US Initial Balance
Nebbia includes a dedicated US Initial Balance module based on the first hour of the US cash session:
08:30–09:30 America/Chicago
The Initial Balance can display:
IB High;
IB Low;
50% midpoint;
optional ×2 and ×3 extensions;
optional 50% levels between the main extensions;
a highlighted IB time window;
a tinted area between IB High and IB Low;
optional price labels;
configurable extension direction and line styles.
When lines are extended to the right, they remain active until the beginning of the next trading day’s Initial Balance rather than extending indefinitely.
The script can also calculate statistics from the previous 20 completed Initial Balance sessions.
Customization
Most visual components can be configured independently, including:
session colors and transparency;
swing timeframes and pivot sensitivity;
level colors and widths;
active and mitigated line styles;
label visibility and distance;
opening-price labels;
timestamp styles;
Initial Balance colors, widths and extensions;
timeframe visibility limits;
session-history drawing limits.
Credits
This open-source project was inspired in part by:
ICT Killzones + Pivots
by tradeforopp
Full recognition is given to the original author for the concepts and foundation that helped inspire the session and pivot components of this project.
Nebbia Market Sessions & Liquidity Levels is an independent expansion and redesign that adds higher-timeframe liquidity mapping, swing-timeframe slots, confluence management, ADR5 filtering, opening prices, timestamps and a complete US Initial Balance module.
Disclaimer
This indicator is provided for educational and analytical purposes only.
It does not constitute financial advice, investment advice or a recommendation to enter or exit any trade. Historical levels, session ranges, pivots and Initial Balance projections do not guarantee future market behavior. Penunjuk

EMA 21/55/200 Market Quality DashboardEMA 21/55/200 Market Quality Dashboard
An enhanced evolution of the original DANGHIEU EMA 21/55/200 V2 + ADX ATR Momentum , redesigned as a comprehensive Market Quality Dashboard to evaluate trend quality before trade execution.
Overview
EMA 21/55/200 Market Quality Dashboard is a professional trend-following market filter designed to evaluate overall market quality before traders search for trend-following opportunities.
Rather than generating Buy or Sell signals, this indicator analyzes multiple independent market conditions and presents them in a structured dashboard. Its purpose is to help traders understand why the market is suitable—or unsuitable—for trend trading, allowing for more informed decision-making before execution.
Key Features
Trend identification using EMA 21 / 55 / 200
EMA Separation filter to identify sideways markets
ADX Trend Strength analysis
EMA Momentum confirmation
ATR Volatility classification
100-point Market Score
State & Filter Dashboard
HTF Simulation without using request.security()
Market Quality Modules
Trend
Determines the primary market trend using the alignment of EMA 21, EMA 55 and EMA 200.
Bullish → EMA 21 > EMA 55 > EMA 200
Bearish → EMA 21 < EMA 55 < EMA 200
EMA Separation
Measures the distance between EMA 21 and EMA 55.
Helps filter sideways markets where moving averages become compressed.
ADX (Trend Strength)
Evaluates the strength of the current trend.
Displays:
ADX Value
Trend Strength
Rising / Falling Direction
EMA Momentum
Measures the rate of change of EMA 21.
Confirms whether momentum is aligned with the current market trend.
ATR Volatility
Evaluates current market volatility.
ATR is classified into three states:
Expanding
Stable
Contracting
For trend-following markets:
Expanding → PASS
Stable → PASS
Contracting → BLOCK
Unlike previous versions, Stable volatility is considered a valid condition for trend-following markets. Only Contracting volatility blocks the ATR filter.
Market Score
Each module contributes to a 100-point Market Score.
The score is designed to evaluate and rank overall market quality. It is not intended to generate entry signals.
Suggested interpretation:
80 – 100 → Excellent Market Conditions
65 – 79 → Good Market Conditions
50 – 64 → Average Market Conditions
Below 50 → Weak Market Conditions
Dashboard Philosophy
The dashboard separates market information into two independent concepts:
State
Displays the current market condition.
Examples:
Bullish Trend
Strong ADX
Expanding ATR
Positive Momentum
Filter
Shows whether each condition satisfies the trading requirements.
Possible results:
PASS
BLOCK
FILTER OFF
This separation allows traders to quickly identify which condition is preventing a valid trend setup, rather than relying on simple Buy or Sell signals.
HTF Simulation
Supports Higher Timeframe (HTF) Simulation by scaling indicator lengths according to the selected timeframe ratio.
This approach provides a smooth approximation of higher-timeframe market behavior without relying on request.security(), helping traders maintain consistency across multiple timeframes.
How to Use
Use the dashboard as a market quality filter before applying your own trading strategy.
Look for Long opportunities when:
EMA 21 > EMA 55 > EMA 200
EMA Separation passes
ADX passes
EMA Momentum is aligned with the bullish trend
ATR is Expanding or Stable
Market Score is preferably 80 or higher
Look for Short opportunities when:
EMA 21 < EMA 55 < EMA 200
EMA Separation passes
ADX passes
EMA Momentum is aligned with the bearish trend
ATR is Expanding or Stable
Market Score is preferably 80 or higher
Works Best With
This dashboard is designed to complement, not replace, your trading strategy.
It works best when combined with:
Market Structure
Support & Resistance
Supply & Demand
Order Blocks
Liquidity Concepts
Pullbacks
Risk Management
Important Notes
This indicator is not an entry signal.
It is designed to evaluate market quality before trade execution.
Market Score is a market quality ranking system and should never be interpreted as a Buy or Sell signal.
ATR Stable is considered a valid condition for trend-following markets. Only ATR Contracting blocks the ATR filter.
The dashboard is intended to improve trade selection by helping traders avoid low-quality market conditions, rather than predicting future price movements. Penunjuk

Penunjuk
