Uptrick: Z-Score FlowAccording to author @Uptrick:
Uptrick: Z-Score Flow is a technical indicator that integrates trend-sensitive momentum analysis with the mean-reversion logic derived from Z-Score calculations. Its primary objective is to identify market conditions where price has deviated too far from its mean (overbought or oversold) or is within a statistically "normal" range, and then compare this observation with trend direction and RSI-based momentum signals. The result is a more contextual approach to trade entry and exit, prioritizing precision, clarity, and adaptability across different market regimes.
Introduction:
Financial instruments frequently shift between trending modes, where price extends strongly in one direction, and ranging modes, where price oscillates around a central value. A simple statistical measure like Z-Score can identify price extremes by comparing the current price to its historical mean and standard deviation. However, these extremes alone can be misleading if the overall market structure exhibits a strong trend. Uptrick: Z-Score Flow seeks to close this gap by combining Z-Score with an exponential moving average (EMA) trend filter and a smoothed RSI momentum check, thereby filtering out signals that contradict the prevailing market environment.
Objective:
The purpose of this script is to help traders identify mean reversion opportunities and trend-based pullbacks in a statistically sound manner, while still taking overall price action into account. By combining Z-Score thresholds with support conditions, the script reduces the likelihood of acting on random price rises or falls and instead focuses on significant movements within historical and current contextual frameworks.
Originality and Uniqueness:
Layered Signal Check: Signals require compliance with multiple layers (Z-Score extreme, EMA trend skew, and RSI momentum stance) rather than simply exceeding a statistical threshold.
RSI Zone Lock: Once the RSI enters an overbought/oversold zone and triggers a signal, the script blocks subsequent signals until the RSI recovers above or below those zones, limiting consecutive triggers.
Controlled Cooldown: A dedicated cooldown mechanism ensures that the script waits a specific number of bars before issuing a new signal in the opposite direction.
Gradient-Based Visualization: The distinct gradient fills between the price and the Z-Mean line improve readability, showing at a glance whether the price is trading above or below its statistical mean.
Comprehensive Metrics Panel: An optional table on the chart summarizes key Z-Score metrics, streamlining the process of verifying current statistical extremes, average levels, and momentum directions.
Why were these indicators merged? Z-Score metrics are excellent for identifying when the price deviates from its mean, but they don't intrinsically reveal whether the market's trajectory supports a reversal or whether the price could continue its trend. The EMA, commonly used to detect trend direction, offers valuable insight into whether the price is predominantly upward or downward. However, relying solely on a trend filter overlooks the intensity of price movements. The RSI adds a specific measure of momentum, helping to confirm whether market energy aligns with a potential reversal (e.g., the price is statistically low, but the RSI suggests imminent bullish momentum). By combining these three perspectives (Z-score for statistical context, the EMA for trend direction, and the RSI for momentum strength), the script offers a more comprehensive and adaptable system, aiming to avoid false positives caused by focusing on a single aspect of price behavior.
Calculations
The main calculation begins with a simple moving average (SMA) of the price over zL bars, called the base. The script then calculates the standard deviation of the price in the same window. Dividing the difference between the current price and the base price by this standard deviation gives the Z-score, which indicates how many standard deviations the price is from its mean. A positive Z-score indicates that the price is above its mean. A negative reading indicates the opposite.
Corak carta
[blackcat] L3 Magic-9 Sequential within HighlightsOVERVIEW
The L3 Magic-9 Sequential within Highlights indicator is designed to identify potential buy and sell signals based on sequential price patterns. This script uses custom functions to detect consecutive occurrences of specific conditions and highlights these patterns on the chart with labels and background colors 📊🔍.
FEATURES
Detects sequential price patterns for both bullish and bearish movements:
High sequences: 5, 6, 7, 8, 9, 12, 13 bars.
Low sequences: 5, 6, 7, 8, 9, 12, 13 bars.
Plots characters ('5', '6', etc.) and shapes (arrows) on the chart to indicate detected sequences 🏷️↗️↘️.
Uses a customizable period for calculating averages of price differences.
Highlights overbought and oversold conditions using background colors 🎨.
Generates buy ('B') and sell ('S') labels based on filtered occurrences and index values.
HOW TO USE
Add the indicator to your TradingView chart by selecting it from the indicators list.
Observe the plotted characters and arrows indicating detected sequential patterns.
Monitor the background color changes to identify overbought and oversold conditions.
Look for generated buy ('B') and sell ('S') labels for potential trading opportunities.
Customize the period and thresholds in the settings panel as needed ⚙️.
LIMITATIONS
The indicator relies heavily on sequential price patterns, which might not capture all market nuances.
False signals can occur in ranging or sideways markets 🌪️.
Users should always confirm signals with other forms of analysis before making trading decisions.
NOTES
Ensure that you have sufficient historical data available for accurate calculations.
Test the indicator thoroughly on demo accounts before applying it to live trading 🔍.
Adjust the period and threshold inputs to fit your preferred trading strategy.
[blackcat] L3 Magic-9/13 with Reversal Points ConfirmationOVERVIEW
The L3 Magic-9/13 with Reversal Points Confirmation indicator is designed to help traders identify potential reversal points in the market using a sequential approach. This indicator adopts the "buy when fearful, sell when greedy" philosophy, focusing on capturing key reversal moments 📉↗️. It plots labels on the chart to indicate these reversal points and uses custom functions to filter occurrences based on specific conditions.
FEATURES
Identifies consecutive price movements to detect potential reversals.
Plots labels for various sequential patterns:
High Sequentials: 5, 6, 7, 8, 9, 12, 13
Low Sequentials: 5, 6, 7, 8, 9, 12, 13
Uses custom functions to count consecutive occurrences and filter conditions.
Provides visual confirmation of reversal points with colored labels 🏷️.
Allows customization of sequence lengths and lookback periods ⚙️.
HOW TO USE
Add the indicator to your TradingView chart by selecting it from the indicators list.
Observe the plotted labels indicating potential reversal zones:
Green labels for buy signals ('B').
Red labels for sell signals ('S').
Customize the sequence lengths and lookback periods as needed in the settings panel.
Combine this indicator with other tools for confirmation before making trading decisions.
LIMITATIONS
The indicator relies heavily on sequential patterns, which might not capture all market nuances.
False signals can occur in ranging or sideways markets 🌪️.
Users should always confirm signals with other forms of analysis.
NOTES
Ensure that you have sufficient historical data available for accurate calculations.
Test the indicator thoroughly on demo accounts before applying it to live trading 🔍.
Understand the concept of buying at bottoms and selling at tops before using this indicator.
BusinessHut Stochastic Long/Short StrategyWhen the slow stochastics are below 20, 30, and 50, buy when the fast 9,3,3 stochastic crosses above 20.
Sell on the opposite.
[blackcat] L3 Magic-9 Sequential SetupOVERVIEW
The L3 Magic-9 Sequential Setup indicator is designed to identify potential reversal points in the market using a sequential pattern analysis. This script plots specific labels on the chart based on predefined conditions, helping traders spot key levels where price reversals might occur 📉↗️.
FEATURES
Identifies consecutive occurrences of price movements above or below certain thresholds.
Plots labeled markers on the chart for easy visualization:
Red Labels: Indicate potential sell signals (e.g., '5', '6', '7', etc.).
Green Labels: Indicate potential buy signals (e.g., '5', '6', '7', etc.)
Uses custom functions to filter and count occurrences over specified lookback periods ⚙️.
Changes bar colors based on detected signals for enhanced visual cues 🎨.
Supports extensive customization through input parameters for fine-tuning the setup.
HOW TO USE
Add the indicator to your TradingView chart by selecting it from the indicators list.
Observe the plotted labels ('5', '6', '7', etc.) indicating potential reversal zones.
Pay attention to bar color changes that confirm the identified patterns.
Combine this indicator with other tools for confirmation before making trading decisions.
LIMITATIONS
The indicator relies heavily on sequential patterns, which may not capture all market nuances.
False signals can occur in ranging or sideways markets 🌪️.
Users should always confirm signals with other forms of analysis.
NOTES
Ensure that you have sufficient historical data available for accurate calculations.
Test the indicator thoroughly on demo accounts before applying it to live trading 🔍.
Customize input parameters as needed to fit your trading strategy.
Vinicius Setup ATR
Description:
This script is a strategy based on the Supertrend indicator combined with volume analysis, candle strength, and RSI. Its goal is to identify potential entry points for buy and sell trades based on technical criteria, without promising profitability or guaranteed results.
Script Components:
Supertrend: Used as the main trend compass. When the trend is positive (direction = 1), buy signals are considered; when negative (direction = -1), sell signals are considered.
Volume: Entries are only validated if the volume is above the average of the last 20 candles, adjusted with a 1.2 multiplier.
Candle Body: The candle body must be larger than a certain percentage of the ATR, ensuring sufficient strength and volatility.
RSI: Used as a filter to avoid trades in extreme overbought or oversold zones.
Support and Resistance: Identified based on simple pivots (5 periods before and after).
Customizable Parameters:
ATR Length and Multiplier: Controls the sensitivity of the Supertrend.
RSI Period: Adjusts the relative strength filter.
Minimum Volume and Candle Body: Settings to validate entry signals.
Entry Conditions:
Buy: Positive trend + strong candle + high volume + RSI below 70.
Sell: Negative trend + strong candle + high volume + RSI above 30.
Exit Conditions:
The trade is closed upon the appearance of an opposite signal.
Notes:
This is a technical system with no profit guarantees.
It is recommended to test with realistic capital values and parameters suited to your risk management.
The script is not optimized for specific profitability, but rather to support study and the construction of setups with objective criteria.
Zacks EMAs&MAs//@version=6
indicator(title="ZzzTrader EMAs&MAs", shorttitle="Zacks_crypt0", overlay=true)
// === Inputs ===
// ema13
ema13Source = input.source(close, "EMA13 Source")
ema13Length = input.int(13, "EMA13 Length", minval=1)
// ema25
ema25Source = input.source(close, "EMA25 Source")
ema25Length = input.int(25, "EMA25 Length", minval=1)
// ema32
ema32Source = input.source(close, "EMA32 Source")
ema32Length = input.int(32, "EMA32 Length", minval=1)
// ma100
ma100Source = input.source(close, "MA100 Source")
ma100Length = input.int(100, "MA100 Length", minval=1)
// ema200 - actually SMMA99
ema200Source = input.source(close, "EMA200 Source")
ema200Length = input.int(99, "EMA200 Length", minval=1)
// ma300
ma300Source = input.source(close, "MA300 Source")
ma300Length = input.int(300, "MA300 Length", minval=1)
// === Calculations ===
// Moving Averages
ma100 = ta.sma(ma100Source, ma100Length)
ma300 = ta.sma(ma300Source, ma300Length)
ema13 = ta.ema(ema13Source, ema13Length)
ema25 = ta.ema(ema25Source, ema25Length)
ema32 = ta.ema(ema32Source, ema32Length)
EMA200() =>
var float ema200 = 0.0
ema200 := na(ema200 ) ? ta.sma(ema200Source, ema200Length) : (ema200 * (ema200Length - 1) + ema200Source) / ema200Length
ema200
h4ema200 = request.security(syminfo.tickerid, "240", EMA200())
// === Plotting ===
// Draw lines
plot(series=ema13, title="EMA13", color=color.new(#6f20ee, 0), linewidth=1)
plot(series=ema25, title="EMA25", color=color.new(#1384e1, 0), linewidth=1, style=plot.style_stepline)
plot(series=ema32, title="EMA32", color=color.new(#ea4e2f, 0), linewidth=1, style=plot.style_circles)
plot(series=ma100, title="MA100", color=color.new(#47b471, 0), linewidth=1, style=plot.style_circles)
plot(series=ma300, title="MA300", color=color.new(#7f47b4, 0), linewidth=1, style=plot.style_cross)
plot(series=EMA200(), title="EMA200", color=color.new(#8d8a8a, 0), linewidth=1, style=plot.style_stepline)
// === Labels ===
// Initialize labels
var label ema13_label = na
var label ema25_label = na
var label ema32_label = na
var label ma100_label = na
var label ma300_label = na
var label ema200_label = na
// Calculate label position (offset to the right)
label_x = time + (ta.change(time) * 5)
show_prices = true
ema13_p_str = show_prices ? " - " + str.tostring(math.round_to_mintick(ema13)) : ""
ema25_p_str = show_prices ? " - " + str.tostring(math.round_to_mintick(ema25)) : ""
ema32_p_str = show_prices ? " - " + str.tostring(math.round_to_mintick(ema32)) : ""
ma100_p_str = show_prices ? " - " + str.tostring(math.round_to_mintick(ma100)) : ""
ma300_p_str = show_prices ? " - " + str.tostring(math.round_to_mintick(ma300)) : ""
ema200_p_str = show_prices ? " - " + str.tostring(math.round_to_mintick(EMA200())) : ""
h4ema200_p_str = show_prices ? " - " + str.tostring(math.round_to_mintick(h4ema200)) : ""
labelpadding = " "
ema13_label_txt = "EMA13" + ema13_p_str + labelpadding
ema25_label_txt = "EMA25" + ema25_p_str + labelpadding
ema32_label_txt = "EMA32" + ema32_p_str + labelpadding
ma100_label_txt = "MA100" + ma100_p_str + labelpadding
ma300_label_txt = "MA300" + ma300_p_str + labelpadding
ema200_label_txt = "EMA200" + ema200_p_str + labelpadding
// Delete previous labels to prevent duplicates
if not na(ema13_label )
label.delete(ema13_label )
if not na(ema25_label )
label.delete(ema25_label )
if not na(ema32_label )
label.delete(ema32_label )
if not na(ma100_label )
label.delete(ma100_label )
if not na(ma300_label )
label.delete(ma300_label )
if not na(ema200_label )
label.delete(ema200_label )
// Create new labels (no background/border)
ema13_label := label.new(
x=label_x,
y=ema13,
text=ema13_label_txt,
xloc=xloc.bar_time,
yloc=yloc.price,
textcolor=color.new(#6f20ee, 0),
style=label.style_none,
textalign=text.align_left
)
ema25_label := label.new(
x=label_x,
y=ema25,
text=ema25_label_txt,
xloc=xloc.bar_time,
yloc=yloc.price,
color=color.white,
textcolor=color.new(#1384e1, 0),
style=label.style_none,
textalign=text.align_left
)
ema32_label := label.new(
x=label_x,
y=ema32,
text=ema32_label_txt,
xloc=xloc.bar_time,
yloc=yloc.price,
color=color.white,
textcolor=color.new(#ea4e2f, 0),
style=label.style_none,
textalign=text.align_left
)
ma100_label := label.new(
x=label_x,
y=ma100,
text=ma100_label_txt,
xloc=xloc.bar_time,
yloc=yloc.price,
color=color.white,
textcolor=color.new(#47b471, 0),
style=label.style_none,
textalign=text.align_left
)
ma300_label := label.new(
x=label_x,
y=ma300,
text=ma300_label_txt,
xloc=xloc.bar_time,
yloc=yloc.price,
color=color.white,
textcolor=color.new(#7f47b4, 0),
style=label.style_none,
textalign=text.align_left
)
ema200_label := label.new(
x=label_x,
y=EMA200(),
text=ema200_label_txt,
xloc=xloc.bar_time,
yloc=yloc.price,
color=color.white,
textcolor=color.new(#8d8a8a, 0),
style=label.style_none,
textalign=text.align_left)
High/Low Day + OperacionaisThis TradingView indicator plots the high and low of the current trading day with solid horizontal lines and corresponding labels. Additionally, it offers the option to display two sets of dashed horizontal lines based on user-defined distances from the day's high and low.
**Key Features:**
* **Current Day's High and Low:** Clearly marks the highest and lowest price reached so far during the current trading day with solid green and red lines, respectively, accompanied by "High Day" and "Low Day" labels.
* **Operational Levels:** Provides two independent operational setups with customizable distances and visibility:
* **Operational 01:** Plots a pair of dashed lines at a specified positive distance above the day's high and a negative distance below the day's low. This is configured using the "Distância Op. 01 (Pontos)" and "Mostrar Op. 01 (+/- Distância)" settings, with a customizable color ("Cor Op. 01").
* **Operational 02:** Plots another pair of dashed lines at a specified negative distance below the day's high and a positive distance above the day's low. This is configured using the "Distância Op. 02 (Pontos)" and "Mostrar Op. 02 (-/+ Distância)" settings, with a customizable color ("Cor Op. 02").
* **Customizable Distances:** Users can independently define the distance in points for each operational setup.
* **Individual Visibility:** Users can choose to show or hide each operational setup independently.
* **Color Options:** Users can customize the color of the dashed lines for each operational setup.
* **"Show Current Day Lines" Toggle:** A simple option to turn the display of the current day's high and low lines and labels on or off.
**How it Works:**
The indicator detects the start of a new trading day based on the chart's timeframe. It then tracks the highest and lowest prices reached within that day. The solid lines and labels for the day's high and low are updated dynamically as new highs or lows are made. The dashed lines for each operational level are calculated based on the configured distances from the current day's high and low and are also updated in real-time.
Ichimoku Signals PROBuy (green background):
The green background will remain until there are 2 red candles completely under the Kijun.
If the conditions change (two red candles under the Kijun), the green background is removed.
Sale (red background):
The red background will remain until there are 2 green candles completely on the Kijun.
If the conditions change (two green candles over the Kijun), the red background is removed.
Background change conditions:
We use a logic that keeps the bottom until the opposite condition is met (2 red candles under the Kijun for purchase or 2 green candles on the Kijun for sale).
QQAI Order & Breaker BlocksQQAI on yo Headtop
detects order blocks that can automatically turn into breaker blocks on the chart once mitigated. However, the key difference/uniqueness is that the pure price action version relies solely on price patterns, eliminating the need for length definitions.
ballenas by ErnestoWhat does this indicator do?
High Volume:
Calculates the average volume of the last n candles (configurable).
Marks candles with volume greater than the average multiplied by a factor (adjustable).
Candle Body:
Marks candles with a large body compared to their range (adjustable ratio).
Direction:
Green circle (buy): When the candle is bullish (close > open) and meets high volume and a large body.
Red circle (sell): When the candle is bearish (close < open) with high volume and a large body.
Automatic alerts: You will receive an alert when an institutional buy or sell is detected.
📊 How to use it?
Open the Pine Editor in TradingView.
Copy and paste this code.
Click Save and then Add to Chart.
Configure alerts according to your needs.
With this, you'll have a real-time indicator that displays circles on the candle itself when large volume purchases or sales are detected.
🟢🟥 Liquidity Grabs + Volumen Alto by ernesto[Crypto CLEAN]How does a Liquidity Grab work?
Pursuit of pending orders: In highly volatile markets, prices can move quickly to reach levels where there are many unexecuted orders. These orders can be stop-loss orders (which are being chased by the market), take-profit orders, or limit orders.
Market manipulation: In some cases, large market players, such as banks or financial institutions, can trigger these sharp price movements to capture liquidity and execute their trades at more favorable prices. This can generate a false price movement that appears to be going in one direction, but then quickly reverses.
Common causes: Liquidity grabs are common during times of low liquidity or when significant news events occur. They can also occur in consolidation ranges where the market is waiting for a "catalyst" to move.
Supertrend Hombrok BotSupertrend Hombrok Bot – Automated Trading Strategy for Dynamic Market Conditions
This trading strategy script has been developed to operate automatically based on detailed market conditions. It combines the popular Supertrend indicator, RSI (Relative Strength Index), Volume, and ATR (Average True Range) to determine the best entry and exit points while maintaining proper risk management.
Key Features:
Supertrend as the Base: Uses the Supertrend indicator to identify the market's trend direction, generating buy signals when the market is in an uptrend and sell signals when in a downtrend.
RSI Filter: The RSI is used to determine overbought and oversold conditions, helping to avoid entries in extreme market conditions. Entries are avoided when RSI > 70 (overbought) and RSI < 30 (oversold), reducing the risk of false movements.
Volume Filter: The strategy checks if the trading volume is above the average multiplied by a user-defined factor. This ensures that only significant movements, with higher liquidity, are considered.
Candle Body Size: The strategy filters only candles with a body large enough relative to the ATR (Average True Range), ensuring that the price movements on the chart have sufficient strength.
Risk Management: The bot is configured to operate with an adjustable Risk/Reward Ratio (R:R). This means that for each trade, both Take Profit (TP) and Stop Loss (SL) are adjusted based on the market's volatility as measured by the ATR.
Automatic Entries and Exits: The script automatically executes entries based on the specified conditions and exits with predefined Stop Loss and Take Profit levels, ensuring risk is controlled for each trade.
How It Works:
Buy Condition: Triggered when the market is in an uptrend (Supertrend), the volume is above the adjusted average, the candle body is strong enough, and the RSI is below the overbought level.
Sell Condition: Triggered when the market is in a downtrend (Supertrend), the volume is above the adjusted average, the candle body is strong enough, and the RSI is above the oversold level.
Alerts:
Buy and Sell Alerts are configured with detailed information, including Stop Loss and Take Profit values, allowing the user to receive notifications when trading conditions are met.
Capital Management:
The capital per trade can be adjusted based on account size and risk profile.
Important Note:
Always test before trading with real capital: While the strategy has been designed based on solid technical analysis methods, always perform tests in real-time market conditions with demo accounts before applying the bot in live trading.
Disclaimer: This script is a tool to assist in the trading process and does not guarantee profit. Past performance is not indicative of future results, and the trader is always responsible for their investment decisions.
AstraeaAi IndicatorBinary Options Indicator
The indicator is based on the MACD, it gives short positions on a 1-minute timeframe for 4 minutes of the transaction, on a 30c timeframe for 2 minutes of the transaction.
Liquidity Fracture DetectorThe Liquidity Fracture Detector is an advanced tool designed to identify micro-liquidity traps and structural fakeouts on intraday charts. These occur when the market appears to break out, only to quickly reverse — often triggered by stop hunts, inefficient fills, or manipulated order flow.
The script combines volume spikes, volatility anomalies, and price structure breaks to signal "fractures" — points where the market temporarily breaks its behavior, often followed by strong reversals or trend accelerations.
Detection logic in the script:
Volume spike greater than 2x the average (adjustable)
Volatility spike: candle range is > 1.5x the average
Extreme wicks: wick is larger than the candle body (a classic trap signal)
Structure break: price breaks previous high/low but closes back within the old range
Combine these elements → a “fracture” is marked
Visual representation:
Red background = potential bull trap (fake breakout to the upside)
Green background = potential bear trap (fake breakdown to the downside)
A label appears at each fracture: “Echo” with the number of previous hits
Ideal use cases:
Intraday trading (1m, 5m, 15m)
Crypto, indices, futures, and forex
Detecting reactive zones where the market takes a false direction
Confluence with S/R zones, order blocks, or liquidity pools
Fully customizable:
Volume and range sensitivity
Heatmap intensity
Toggle labels on/off
Note:
This script is intended to support discretionary analysis. It does not provide buy or sell signals and is not an automated strategy. Combine it with your own price action or order flow setup for optimal results.
4H Color Sync for 15m, 30m, 90m, 1H4H Time Theory Session Colour Sync
- session colour sync to lower timeframes
- highlighting the sessions of 4h candles
- using the fractal nature of 4h time theory and applying it to the 1h/15m/5m/1m chart
- option to change the colours of 3 PAIRS for the 4h timeframe candles
- automatically syncs to your timezone
Short Strategy - B2 v2.37-Core Production📌 Strategy Overview – B2 v2.37-Core Production
This script is a short-only algorithmic strategy designed for altcoins, using Bitcoin’s multi-timeframe MACD histogram trends to guide and validate short entries. It flips all long logic from the A2 model to focus on bearish momentum, breakdowns, and trend reversals.
🔍 What It Does
Detects high-confidence short entries based on multiple bearish signals.
Confirms direction using BTC MACD histogram downtrends across 4H, 1H, 15M, and 5M charts.
Avoids premature exits during flat momentum phases with a custom lull detection system.
🧠 How It Works
🔻 Bearish Indicators Used
Price below EMA
RSI decreasing
MACD histogram falling
Strong MACD drop detection
Volume surge confirmation
ADX trend strength check
VWAP rejection
📉 BTC Trend Filters
BTC must be in a 4H MACD downtrend for short entries to be valid.
Adds weighted confidence from 1H and 15M MACD downtrend confirmations.
5M MACD checks for rolling weakness, no pops, momentum flush, and steep slope.
📊 Scoring System
Each bearish signal adds weighted points (e.g. MACD drop = +2, RSI down = +0.5).
Entry only happens if total score ≥ entry threshold (default: 7.0) and BTC confirms downtrend.
Exit occurs if score < exit threshold (default: 6.0) or BTC starts recovering.
⏳ Lull Logic for Shorts
Prevents exit during temporary MACD flattening unless recovery is confirmed.
Requires confirmation that BTC hasn’t shifted trend back up.
🪧 Labels and Visualization
Entry/exit markers show BTCUSDT price at the time of signal using request.security().
Entry labels are red (top of candle), exit labels are green (bottom of candle).
✅ Result
This model is optimized for short trades during BTC-led market downturns, filtering out false positives by demanding multi-timeframe alignment and multiple bearish confirmations.
Head Hunter HHHead Hunter HH - Advanced Market Structure & Volume Analysis Indicator
This indicator combines volume analysis, price action, and VWAP to identify high-probability trading opportunities across multiple timeframes.
Key Features:
• Smart Volume Analysis: Detects institutional volume patterns using dynamic thresholds
• VWAP-Based Market Structure: Multiple standard deviation bands for precision entry/exit
• Daily Level Integration: Previous day's high, low, close, and current day's open
• Advanced Signal Classification: Regular, Super Strong, and Scalp signals
Signal Types:
1. Regular Signals (White/Purple Triangles)
• Volume-confirmed reversals
• Institutional price levels
• Technical momentum alignment
2. Super Strong Signals (Green/Red Diamonds)
• High-volume breakouts
• Strong momentum confirmation
• Multiple timeframe alignment
3. Scalp Signals (Green/Magenta Circles)
• Quick reversal opportunities
• VWAP deviation analysis
• Volume surge confirmation
Visual Components:
• VWAP with Standard Deviation Bands
• 50 MA (optional)
• Daily Reference Levels
• Color-coded signals based on strength
• Bar color changes on confirmed signals
Best Practices:
• Most effective on higher timeframes (1H+)
• Use with major pairs/instruments
• Combine signals with support/resistance
• Monitor volume confirmation
• Wait for candle close confirmation
This indicator helps identify institutional order flow and high-probability reversal zones by analyzing volume patterns, price action, and market structure, providing traders with multiple confirmation layers before entry.
Note: Results may vary based on market conditions and timeframe selection. Always use proper risk management.
Jack's ADX with 5TF TABLEUpdated the table to show 5 timeframes.
When trend momentum aligns for added confirmation
Break of Structure & Change of CharacterThis Break of Structure & Change of Character indicator is a fully customizable Pine Script v6 tool designed to help you spot key market structure shifts on any timeframe (optimized by default for 5‑minute charts). Here’s what it does and how to tailor it:
What It Detects
Swing Pivots
Finds local swing highs and lows over a configurable lookback (Pivot Lookback).
Break of Structure (BOS)
Marks when price closes beyond the last swing high (bullish BOS) or below the last swing low (bearish BOS), using an ATR‑based buffer to filter out minor moves.
Change of Character (CHoCH)
After a BOS, watches for price to reverse back through that level (e.g. a drop below the higher‑low after a bullish BOS), signaling a potential shift in momentum.
Key Inputs & Features
Pivot Lookback (pivotLen): How many bars to look back for pivots (default 8 for a 5‑min chart).
Fast Mode: When enabled, halves both the pivot lookback and ATR threshold for quicker—but noisier—signals.
ATR Threshold (atrLen & atrMult): Uses ATR(atrLen) × atrMult to require a minimum follow‑through beyond the pivot for a valid BOS/CHoCH.
Show Labels / Show Pivot Labels: Toggle on/off all structure labels or just pivot “x” markers.
Appearance Customization
Colors: Choose separate colors for pivot highs/lows, BOS labels, CHoCH labels, and structure lines.
Line Style: Select “Solid”, “Dotted”, or “Dashed” for your swing‑level lines.
Label Size & Style: Pick “Tiny”, “Small”, or “Normal” text size and choose label orientation (Up/Down/Left/Right) independently for pivots, BOS, and CHoCH.
Pivot Label Text: Change the pivot marker from the default “x” to any character you prefer.
How to Use
Add to Chart: Apply it on a 5‑minute chart (you’ll get a one‑time notice if you’re on another timeframe).
Tweak Inputs: Adjust pivot lookback, ATR multiplier, and toggle Fast Mode to suit your style.
Interpret Signals:
Green “BOS↑” or red “BOS↓” labels mark structure breaks.
Orange “CHoCH↓” or “CHoCH↑” labels flag the reversal through that level.
Dotted (or styled) lines trace the last swing high/low for visual reference.
Volume Range Profile with Fair Value (Zeiierman)// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) creativecommons.org
// © Zeiierman {
//@version=6
indicator("Volume Range Profile with Fair Value (Zeiierman)", overlay=true, max_boxes_count=200, max_lines_count=10, max_labels_count=10)
//~~}
//~~ Tooltips for Inputs {
var string t1 = "Defines how many historical bars to consider when calculating the highest high and lowest low for the volume range zones. A larger value creates broader zones and more stable volume profiles, while a smaller value reacts quicker to price shifts."
var string t2 = "Controls how much of the full price range (from high to low) is allocated for the volume zones. A smaller value makes zones narrower and more focused on extremes; a higher value widens the zones to capture more volume."
var string t3 = "Sets the number of horizontal volume bins in each zone. More bins give finer granularity, while fewer bins make the volume histogram more generalized. Increasing too much may impact performance."
var string t4 = "Color used to fill the upper (typically sell) volume zone background. Lower transparency means stronger visual emphasis."
var string t5 = "Color used to fill the lower (typically buy) volume zone background. Adjust transparency to make it more or less visible against chart elements."
var string t6 = "Color used for the most active bin (POC – Point of Control). This bin represents where the most volume was traded within the zone."
var string t7 = "Toggle to display a dashed midline inside each volume zone. Helps visually separate the upper and lower halves of each zone."
var string t8 = "Color for the zone midlines. A more visible color helps with separation, especially on dark or noisy charts."
var string t9 = "When enabled, adds a label showing the percentage of total zone volume that occurred inside the POC bin."
var string t10 = "When enabled, displays labels showing the total Buy or Sell volume accumulated in each respective zone. Useful for reading directional volume pressure directly on the chart."
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Inputs {
len = input.int(100, "Lookback Period", minval=2, group="Period & Zones", tooltip=t1)
zoneP = input.float(30.0, "Zone Width (% of Range)", minval=1, maxval=50, step=0.5, group="Period & Zones", tooltip=t2)
bins = input.int(10, "Bins per Zone", minval=1, maxval=50, group="Volume Profile", tooltip=t3)
clrUp = input.color(color.new(color.red, 80), "Upper Zone Color", group="Visuals", tooltip=t4)
clrLo = input.color(color.new(color.lime, 80), "Lower Zone Color", group="Visuals", tooltip=t5)
clrPOC = input.color(color.new(color.white, 0), "POC Bin Color", group="Visuals", tooltip=t6)
showMid = input.bool(true, "Show Zone Midline", group="Visuals", tooltip=t7)
clrMid = input.color(color.new(color.orange, 0), "Midline Color", group="Visuals", tooltip=t8)
showPOClbl = input.bool(true, "Show POC % Label", group="Visuals", tooltip=t9)
showTotlbl = input.bool(true, "Show Total Vol Label", group="Visuals", tooltip=t10)
lblClr = color.white
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Globals {
var array allBoxes = array.new_box(0)
var array allLines = array.new_line(0)
var array allLabels = array.new_label(0)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Helpers {
f_formatVol(_v) =>
suf = ""
x = _v
if _v >= 1e9
suf := "B"
x := _v / 1e9
else if _v >= 1e6
suf := "M"
x := _v / 1e6
else if _v >= 1e3
suf := "K"
x := _v / 1e3
str.format("{0,number,#.###}{1}", x, suf)
f_clearDrawings() =>
for b in allBoxes
box.delete(b)
array.clear(allBoxes)
for l in allLines
line.delete(l)
array.clear(allLines)
for lb in allLabels
label.delete(lb)
array.clear(allLabels)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Zone calculation with distributed volume + buy/sell per bin {
f_zone() =>
hh = ta.highest(high, len)
ll = ta.lowest( low, len)
rng = hh - ll
zh = rng * zoneP / 100
ut = hh
ub = hh - zh
lt = ll + zh
lbz = ll
bs = zh / bins
volsU = array.new_float(bins, 0.0)
volsL = array.new_float(bins, 0.0)
buyU = array.new_float(bins, 0.0)
sellU = array.new_float(bins, 0.0)
buyL = array.new_float(bins, 0.0)
sellL = array.new_float(bins, 0.0)
totU = 0.0
totL = 0.0
for i = 0 to len - 1
bh = high
bl = low
v = volume
isBuy = close >= open
// Upper zone overlap
if bh >= ub and bl <= ut
br = bh - bl
if br <= syminfo.mintick
price = hl2
if price >= ub and price <= ut
j = math.floor((ut - price) / bs)
j := math.min(math.max(j, 0), bins - 1)
array.set(volsU, j, array.get(volsU, j) + v)
if isBuy
array.set(buyU, j, array.get(buyU, j) + v)
else
array.set(sellU, j, array.get(sellU, j) + v)
totU := totU + v
else
for j = 0 to bins - 1
binT = ut - j * bs
binB = binT - bs
ov = math.min(bh, binT) - math.max(bl, binB)
if ov > 0
frac = ov / br
cvol = v * frac
array.set(volsU, j, array.get(volsU, j) + cvol)
if isBuy
array.set(buyU, j, array.get(buyU, j) + cvol)
else
array.set(sellU, j, array.get(sellU, j) + cvol)
totU := totU + cvol
// Lower zone overlap
if bh >= lbz and bl <= lt
br2 = bh - bl
if br2 <= syminfo.mintick
price = hl2
if price >= lbz and price <= lt
j2 = math.floor((price - lbz) / bs)
j2 := math.min(math.max(j2, 0), bins - 1)
array.set(volsL, j2, array.get(volsL, j2) + v)
if isBuy
array.set(buyL, j2, array.get(buyL, j2) + v)
else
array.set(sellL, j2, array.get(sellL, j2) + v)
totL := totL + v
else
for j2 = 0 to bins - 1
binB2 = lbz + j2 * bs
binT2 = binB2 + bs
ov2 = math.min(bh, binT2) - math.max(bl, binB2)
if ov2 > 0
frac2 = ov2 / br2
cvol2 = v * frac2
array.set(volsL, j2, array.get(volsL, j2) + cvol2)
if isBuy
array.set(buyL, j2, array.get(buyL, j2) + cvol2)
else
array.set(sellL, j2, array.get(sellL, j2) + cvol2)
totL := totL + cvol2
pocU = 0
pocL = 0
maxU = 0.0
maxL = 0.0
for j = 0 to bins - 1
u = array.get(volsU, j)
l = array.get(volsL, j)
if u > maxU
maxU := u
pocU := j
if l > maxL
maxL := l
pocL := j
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Main {
f_clearDrawings()
hh = ta.highest(high, len)
ll = ta.lowest( low, len)
if hh - ll <= syminfo.mintick * bins
runtime.error("Range too small")
= f_zone()
startBar = bar_index - len + 1
histW = math.round(len * 0.5)
rightB = startBar - 2
leftB = rightB - histW
zoneEnd = bar_index + 1
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// Draw boxes {
bU = box.new(leftB, ut, zoneEnd, ub, border_color=na, bgcolor=clrUp)
bL = box.new(leftB, lt, zoneEnd, lbz, border_color=na, bgcolor=clrLo)
array.push(allBoxes, bU)
array.push(allBoxes, bL)
// Draw upper bins
pocVolU = totU > 0 ? array.get(volsU, pocU) : 0.0
for j = 0 to bins - 1
volj = array.get(volsU, j)
ratio = pocVolU > 0 ? volj / pocVolU : 0.0
wBars = math.max(1, math.ceil(histW * ratio))
x0 = math.max(leftB, rightB - wBars)
yT = ut - j * bs
yB = yT - bs
col = j == pocU ? clrPOC : color.new(clrUp, 50)
b = box.new(x0, yT, rightB, yB, border_color=color.new(color.red,30), bgcolor=col)
array.push(allBoxes, b)
// Draw lower bins
pocVolL = totL > 0 ? array.get(volsL, pocL) : 0.0
for j = 0 to bins - 1
volj = array.get(volsL, j)
ratio = pocVolL > 0 ? volj / pocVolL : 0.0
wBars = math.max(1, math.ceil(histW * ratio))
x0 = math.max(leftB, rightB - wBars)
yB2 = lbz + j * bs
yT2 = yB2 + bs
col2 = j == pocL ? clrPOC : color.new(clrLo, 50)
b2 = box.new(x0, yT2, rightB, yB2, border_color=color.new(color.lime,30), bgcolor=col2)
array.push(allBoxes, b2)
// Midlines
if showMid
mU = (ut + ub) / 2
mL = (lt + lbz) / 2
lnU = line.new(startBar, mU, zoneEnd, mU, color=clrMid, style=line.style_dashed)
lnL = line.new(startBar, mL, zoneEnd, mL, color=clrMid, style=line.style_dashed)
array.push(allLines, lnU)
array.push(allLines, lnL)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Draw Total‑Volume Labels {
if showTotlbl
// Upper zone: total Sell volume
totalSellU = array.sum(sellU)
if totalSellU > 0
labU = label.new(
startBar + histW/2, ut + bs,
"Sell Vol: " + f_formatVol(totalSellU),
xloc = xloc.bar_index,
style = label.style_label_center,
color = color.red,
textcolor = color.white,
size = size.normal
)
array.push(allLabels, labU)
// Lower zone: total Buy volume
totalBuyL = array.sum(buyL)
if totalBuyL > 0
labL = label.new(
startBar + histW/2, lbz - bs,
"Buy Vol: " + f_formatVol(totalBuyL),
xloc = xloc.bar_index,
style = label.style_label_center,
color = color.green,
textcolor = color.white,
size = size.normal
)
array.push(allLabels, labL)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Draw POC Vol % {
xLab = zoneEnd + 1
// Upper zone POC
if totU > 0
pvU = array.get(volsU, pocU)
bvU = array.get(buyU, pocU)
svU = array.get(sellU, pocU)
buyPctU = pvU > 0 ? bvU / pvU * 100 : 0
sellPctU = pvU > 0 ? svU / pvU * 100 : 0
totalPctU= pvU / totU * 100
txtU = "POC Vol: " +
"Buy " + str.format("{0,number,#.##}%", buyPctU) + " " +
"Sell " + str.format("{0,number,#.##}%", sellPctU) + " " +
"Total " + str.format("{0,number,#.##}%", totalPctU)
colU = buyPctU >= sellPctU ? color.green : color.red
labPOCU = label.new(
xLab, ut - (pocU + 0.5) * bs, txtU,
xloc = xloc.bar_index,
style = label.style_label_left,
color = colU,
textcolor = color.white,
size = size.small
)
array.push(allLabels, labPOCU)
// Lower zone POC
if totL > 0
pvL = array.get(volsL, pocL)
bvL = array.get(buyL, pocL)
svL = array.get(sellL, pocL)
buyPctL = pvL > 0 ? bvL / pvL * 100 : 0
sellPctL = pvL > 0 ? svL / pvL * 100 : 0
totalPctL = pvL / totL * 100
txtL = "POC Vol: " +
"Buy " + str.format("{0,number,#.##}%", buyPctL) + " " +
"Sell " + str.format("{0,number,#.##}%", sellPctL) + " " +
"Total " + str.format("{0,number,#.##}%", totalPctL)
colL = buyPctL >= sellPctL ? color.green : color.red
labPOCL = label.new(
xLab, lbz + (pocL + 0.5) * bs, txtL,
xloc = xloc.bar_index,
style = label.style_label_left,
color = colL,
textcolor = color.white,
size = size.small
)
array.push(allLabels, labPOCL)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ 6. POC‑volume trend line {
pocPrice = ut - (pocU + 0.5) * bs
avgPocPrice = ta.sma(pocPrice, len)
delta = avgPocPrice - avgPocPrice
lineColor = delta >= 0 ? color.green : color.red
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Plot {
plot(
avgPocPrice,
title = "Fair value - drifting over time.",
color = lineColor,
linewidth = 1,
style = plot.style_line
)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}