Ict kill zone Pro++What is Season High / Low?
A Seasonal High/Low refers to price levels (highs or lows) that tend to form during specific times of the year (or season).
It’s based on the idea that markets have repeating cycles influenced by:
Economic reports (quarterly earnings, GDP releases, crop harvest cycles, etc.)
Institutional flows (quarterly rebalancing, end-of-year tax moves)
Natural/commodity cycles (oil demand in winter, crop harvest in fall, etc.)
🔹 Types of Seasonal Highs & Lows
Annual Season High/Low
Highest and lowest price of the year.
Example: EURUSD 2023 high/low.
Useful for long-term key levels.
Quarterly Season High/Low
Highs & lows of each 3-month quarter.
Institutions rebalance portfolios each quarter → causing strong moves.
Monthly Season High/Low
Highs & lows formed within each calendar month.
Often used for swing trading.
🔹 Why Season High/Low Matters
Liquidity Pools → Old highs/lows attract stop hunts (smart money loves to raid seasonal levels).
Bias Reference → If price is above yearly low but below yearly high → you know the market is “inside the yearly range.”
Institutional Targets → Many funds benchmark against yearly/quarterly levels.
Confluence → Combining OBs, FVGs, ADR, and seasonal highs/lows = stronger zones.
🔹 Example (ICT style use)
If price trades near the yearly low, expect either:
✅ A liquidity sweep (false break) before rally, or
✅ A breakdown continuation if institutions want discount pricing.
If price trades near the quarterly high, it’s often used as a “draw on liquidity” target.
🔹 How Traders Use Them
Mark Yearly High & Low (from January – December).
Mark Quarterly Highs/Lows (Q1, Q2, Q3, Q4).
Watch how price reacts when approaching these zones:
Liquidity sweeps
Reversals
Breakouts
✅ In short:
Season Highs & Lows = Key reference points from specific time periods (yearly, quarterly, monthly).
They act as institutional liquidity magnets and are critical for identifying long-term bias, liquidity raids, and market cycle transitions.
週期
OB old version by triummWhat is an Order Block?
In Smart Money Concepts (SMC), an order block (OB) is the last bullish or bearish candle before a strong impulsive move that breaks structure.
A Bullish OB → the last down candle before price moves strongly up.
A Bearish OB → the last up candle before price moves strongly down.
Order blocks represent areas where institutions or “smart money” placed large buy/sell orders.
🔹 What is a Volume Order Block?
A Volume Order Block adds a volume filter to standard order blocks.
Instead of just marking any OB, it highlights only those that are confirmed by abnormally high trading volume.
📌 Logic:
When banks/institutions create OBs, they usually inject big volume into the market.
Regular OBs may appear everywhere, but volume-based OBs filter out weak ones.
🔹 How to Identify a Volume Order Block
Find the OB normally (last opposite candle before strong move).
Check volume of that OB candle:
If volume is above average → strong OB (institutions active).
If volume is low/normal → weak OB (likely to fail).
🔹 Why Volume OB is Better
Filters fake OBs → many OBs form, but not all are institutional.
Higher probability zones → when price revisits that OB, it’s more likely to respect it.
Confluence with liquidity → strong OB + high volume often means liquidity grab + institutional entry.
🔹 Example (Bullish Volume OB)
Price is in a downtrend.
A bearish candle with unusually high volume forms.
Immediately after, price pushes up strongly, breaking structure.
That bearish candle is now a bullish volume order block.
When price returns to that level → strong buy reaction expected.
🔹 How Traders Use Volume OBs
Entries → wait for price to revisit the OB + volume support.
Stop Loss → usually below (bullish OB) or above (bearish OB).
Target → next liquidity pool, FVG, or imbalance.
Filtering → ignore OBs with low volume → less clutter on chart.
✅ In short:
A Volume Order Block = A normal OB + confirmed by unusually high volume.
It gives you higher quality supply & demand zones backed by institutional activity.
Psych Zones – 000/250/500/750 (250-pip bands, 500 emphasis)Market makers Strategy that helps all traders make money overtime
9, 21, 50 EMA TN
This indicator plots three exponential moving averages (EMAs) on the chart:
9 EMA (purple) – short-term trend and momentum
21 EMA (yellow) – medium-term trend
50 EMA (cyan) – long-term trend and overall market direction
How it’s used:
Traders look for the 9 EMA to cross above the 21 EMA as a potential bullish signal. This suggests upward momentum and may be used as confirmation for call entries.
Conversely, when the 9 EMA crosses below the 21 EMA, it can indicate bearish momentum, often used as confirmation for put entries.
The 50 EMA acts as a higher timeframe filter: when price and the shorter EMAs are above the 50 EMA, it confirms bullish bias; when they’re below, it confirms bearish bias.
This tool helps identify short-term momentum shifts while staying aligned with the larger market trend.
[blackcat] L3 Improved Dual Ehlers BPF for Volatility DetectionOVERVIEW
This script implements an advanced L3 Improved Dual Ehlers Bandpass Filter (BPF) for volatility detection, combining both L1 and L2 calculation methods to create a comprehensive trading signal. The script leverages John Ehlers' sophisticated digital signal processing techniques to identify market cycles and extract meaningful trading signals from price action. By combining multiple cycle detection methods and filtering approaches, it provides traders with a powerful tool for identifying trend changes, momentum shifts, and potential reversal points across various market conditions and timeframes. The L3 approach uniquely combines the outputs of both L1 (01 range) and L2 (-11 range) methods, creating a signal that ranges from -1~2 and provides enhanced sensitivity to market dynamics.
FEATURES
🔄 Dual Calculation Methods: Choose between L1 (01 range), L2 (-11 range), or combine both for L3 signal (-1~2 range) to match your trading style
📊 Multiple Cycle Detection: Seven different dominant cycle calculation methods including HoDyDC (Hilbert Transform Dominant Cycle), PhAcDC (Phase Accumulation Dominant Cycle), DuDiDC (Duane Dominant Cycle), CycPer (Cycle Period), BPZC (Bandpass Zero Crossing), AutoPer (Autocorrelation Period), and DFTDC (Discrete Fourier Transform Dominant Cycle)
🎛️ Flexible Mixing Options: Six sophisticated mixing methods including weighted averaging, simple sum, difference extraction, dominant-only, subdominant-only, and adaptive mixing that adjusts based on signal strength
🌊 Bandpass Filtering: Precise bandwidth control for both dominant and subdominant filters, allowing fine-tuning of frequency response characteristics
📈 Advanced Divergence Detection: Robust algorithm for identifying bullish and bearish divergences with customizable lookback periods and range constraints
🎨 Comprehensive Visualization: Extensive customization options for all signals, colors, plot styles, and display elements
🔔 Comprehensive Alert System: Built-in alerts for divergence signals, zero line crosses, and various market conditions
📊 Real-time Cycle Information: Optional display of dominant and subdominant cycle periods for educational purposes
🔄 Adaptive Signal Processing: Dynamic adjustment of parameters based on market conditions and volatility
🎯 Multiple Signal Outputs: Simultaneous generation of L1, L2, and L3 signals for different trading strategies
HOW TO USE
Select Calculation Method: Choose between "l1" (01 range), "l2" (-11 range), or "both" (L3, -1~2 range) in the Calculation Method settings based on your preferred signal characteristics
Configure Cycle Detection: Select your preferred Dominant Cycle Method from the seven available options and adjust the Cycle Part parameter (0.1-0.9) to fine-tune cycle sensitivity
Set Subdominant Parameters: Configure the subdominant cycle either as a ratio of the dominant cycle or as a fixed period, depending on your analysis approach
Adjust Filter Bandwidth: Fine-tune the bandwidth settings for both dominant and subdominant filters (0.1-1.0) to control the frequency response and signal smoothing
Choose Mixing Method: Select how to combine the filters - weighted averaging for balance, sum for maximum sensitivity, difference for trend isolation, or adaptive mixing for dynamic response
Configure Smoothing: Select from SMA, EMA, or HMA smoothing methods with adjustable length (1-20 bars) to reduce noise in the final signal
Customize Visualization: Enable/disable individual plots, divergence detection, zero line, fill areas, and customize all colors to match your chart preferences
Set Divergence Parameters: Configure lookback ranges (5-60 bars) for divergence detection to match your trading timeframe and style
Monitor Signals: Watch for crosses above/below zero line and divergence patterns, paying attention to signal strength and consistency
Set Up Alerts: Configure alerts for divergence signals, zero line crosses, and other market conditions to stay informed of trading opportunities
LIMITATIONS
The script requires the dc_ta library from blackcat1402 for several advanced cycle calculation methods (HoDyDC, PhAcDC, DuDiDC, CycPer, BPZC, AutoPer, DFTDC)
L1 method operates in 01 range while L2 method uses -11 range, requiring different interpretation approaches
Combined L3 signal ranges from -1~2 when both methods are selected, creating unique signal characteristics that traders must adapt to
Divergence detection accuracy depends on proper lookback period settings and market volatility conditions
Performance may be impacted with very long lookback ranges (>60 bars) or when multiple plots are simultaneously enabled
The script is designed for non-overlay use and may not display correctly on certain chart types or with conflicting indicators
Adaptive mixing method requires careful threshold tuning to avoid excessive signal fluctuation
Cycle detection algorithms may produce unreliable results during low volatility or highly choppy market conditions
The script assumes regular price data and may not perform optimally with irregular or gapped price sequences
NOTES
The script implements advanced mathematical calculations including bandpass filters, Hilbert transforms, and various cycle detection algorithms developed by John Ehlers
For optimal results, experiment with different cycle detection methods and bandwidth settings across various market conditions and timeframes
The adaptive mixing method automatically adjusts weights based on signal strength, providing dynamic response to changing market conditions
Divergence detection works best when the "Plot Divergence" option is enabled and when combined with other technical analysis tools
Zero line crosses can indicate potential trend changes or momentum shifts, especially when confirmed by volume or other indicators
The script includes commented code for cycle information display that can be enabled if you want to monitor cycle periods in real-time
Different calculation methods may perform better in different market environments - L1 tends to be smoother while L2 is more sensitive
The subdominant cycle helps filter out noise and provides additional confirmation for signals generated by the dominant cycle
Bandwidth settings control the filter's frequency response - lower values provide more smoothing while higher values increase sensitivity
Mixing methods offer different approaches to combining signals - weighted averaging is generally most reliable for most trading applications
THANKS
Special thanks to John Ehlers for his pioneering work in cycle analysis and digital signal processing for financial markets. This script implements and significantly improves upon his bandpass filter methodology, incorporating multiple advanced techniques from his extensive body of work. Also heartfelt thanks to blackcat1402 for the dc_ta library that provides essential cycle calculation methods and for maintaining such a valuable resource for the Pine Script community. Additional appreciation to the TradingView platform for providing the tools and environment that make sophisticated technical analysis accessible to traders worldwide. This script represents a collaborative effort in advancing the field of algorithmic trading and technical analysis.
Pr0fit Circle 0rbThis indicator automatically plots dynamic support and resistance zones on the chart using swing highs and swing lows. The levels are drawn as dotted lines that extend into the future, making it easy to identify key areas where price may react.
Jackson Hole Meetings - Lines and LabelsThis TradingView Pine Script indicator marks the dates of the Federal Reserve’s annual Jackson Hole Economic Symposium meetings on your chart. For each meeting date from 2020 through 2025, it draws a red dashed vertical line directly on the corresponding daily bar. Additionally, it places a label above the bar indicating the year of the meeting (e.g., "JH 2025").
Features:
Marks all known Jackson Hole meeting dates from 2020 to 2025.
Draws a vertical dashed line on each meeting day for clear visual identification.
Displays a label above the candle with the meeting year.
Works best on daily timeframe charts.
Helps traders quickly spot potential market-moving events related to Jackson Hole meetings.
Use this tool to visually correlate price action with these key Federal Reserve events and enhance your trading analysis.
FVG Zones – shrink on fill (bull/bear)Detects classic 3-candle FVGs (ICT definition).
Draws zones as boxes that extend to the right.
On each bar close:
Checks overlap with the current candle.
Shrinks the zone when price wicks into it (bullish: top moves down; bearish: bottom moves up).
Deletes the zone once it’s completely filled/closed.
Inputs: bullish/bearish zone color, border color, and max number of visible FVGs.
Possible extensions:
Multi-timeframe FVGs (e.g. H1 FVGs shown on M5).
Separate limits for bullish and bearish zones.
Alerts for new FVG, partial fill, or closed FVG.
Option “Body only” (ignore wicks when detecting overlap).
Minimum FVG size filter (ticks/ATR).
Inicio de Semana (línea vertical completa)This indicator plots a vertical line at the start of each new trading week. The line extends across the entire chart window, making it easy to visually identify weekly boundaries.
Key features:
Full-height vertical lines marking the beginning of every week.
Customizable color, width, and style (solid, dotted, or dashed).
Works on any timeframe (daily, intraday, etc.), automatically adjusting to weekly changes.
Purpose:
This tool is designed to help traders quickly spot the start of a new trading week, improving time-based analysis and making it easier to evaluate price action, weekly cycles, and strategy performance.
Liquidity-Weighted Business Cycle (Satoshi Global Base)🌍 BTC-Affinity Global Liquidity Business Cycle (MACD Model)
This indicator models Bitcoin’s macroeconomic business cycle using a BTC-weighted global liquidity index as its foundation. It adapts a MACD-based framework to visualize expansions and contractions in fiat liquidity across major economies with high Bitcoin affinity.
🔍 What It Does:
🧠 Constructs a Global M2 Liquidity Index from the top 10 most BTC-relevant fiat currencies
(USD, EUR, JPY, GBP, INR, CNY, KRW, BRL, CAD, AUD)
— each weighted by its Bitcoin adoption score and FX-converted into USD.
📊 Applies a MACD (Moving Average Convergence Divergence) signal to the index to detect macro liquidity trends.
🟢 Plots a histogram of business cycle momentum (red = expansion, green = contraction).
🔴 Marks potential cycle peaks, useful for macro trading alignment.
⚖️ BTC Affinity-Weighted Countries:
🇺🇸 United States
🇪🇺 Eurozone
🇯🇵 Japan
🇬🇧 United Kingdom
🇮🇳 India
🇨🇳 China
🇰🇷 South Korea
🇧🇷 Brazil
🇨🇦 Canada
🇦🇺 Australia
Weights are user-adjustable to reflect evolving capital controls, regulation, and real-world BTC adoption trends.
✅ Use Cases:
Confirm macro risk-on vs risk-off regimes for BTC and crypto.
Identify ideal entry and exit zones in macro pair trades (e.g., MSTR vs MSTY).
Monitor how global monetary expansion feeds into BTC valuations.
US Liquidity-Weighted Business Cycle📈 BTC Liquidity-Weighted Business Cycle
This indicator models the Bitcoin macro cycle by comparing its logarithmic price against a log-transformed liquidity proxy (e.g., US M2 Money Supply). It helps visualize cyclical tops and bottoms by measuring the relative expansion of Bitcoin price versus fiat liquidity.
🧠 How It Works:
Transforms both BTC and M2 using natural logarithms.
Computes a liquidity ratio: log(BTC) – log(M2) (i.e., log(BTC/M2)).
Runs MACD on this ratio to extract business cycle momentum.
Plots:
🔴 Histogram bars showing cyclical growth or contraction.
🟢 Top line to track the relative price-to-liquidity trend.
🔴 Cycle peak markers to flag historical market tops.
⚙️ Inputs:
Adjustable MACD lengths
Toggle for liquidity trend line overlay
🔍 Use Cases:
Identifying macro cycle tops and bottoms
Timing long-term Bitcoin accumulation or de-risking
Confirming global liquidity's influence on BTC price movement
Note: This version currently uses US M2 (FRED:M2SL) as the liquidity base. You can easily expand it with other global M2 sources or adjust the weights.
NYC Candle Times Grid Muestra el horario de apertura de las velas en diferentes time frames.
Displays the opening hours of the candles in different time frames.
VWAP Suite v1.0.5This is the latest script by Kenny at The Nexus Discord. ONLY available to members in The Nexus, please DM Kenny to be approved for the script.
VWAP Suite gives you many different vwaps and Anchored Vwaps to choose from also being able to set your own custom ones from important timeframes. Trump pump? Yep. Major lows, Yup.
Also can email kenny@aceindicators.com for questions.
Season profile Pro++🔹 Key Parts of Volume Profile
Point of Control (POC)
The price level with the highest traded volume.
Strong magnet: price often revisits POC.
High Volume Nodes (HVN)
Areas where a lot of trading happened.
These act like support/resistance zones.
Market accepts these prices (fair value).
Low Volume Nodes (LVN)
Areas with very little trading.
Price usually moves through these zones quickly.
Act as gaps or rejection areas.
Value Area (VA)
Typically 70% of all volume traded.
Split into:
Value Area High (VAH) = upper limit of fair value.
Value Area Low (VAL) = lower limit of fair value.
Market tends to rotate inside VA, and breakouts above/below VAH/VAL are important.
🔹 Types of Volume Profiles
Fixed Range Volume Profile → analyze a custom zone (e.g., one session, swing, or OB).
Session Volume Profile → shows profile for each day/session.
Visible Range Volume Profile → calculates based on what’s visible on your chart.
🔹 How Traders Use Volume Profile
Finding Strong S/R Levels
POC = strong attraction level.
VAH & VAL = breakout or rejection zones.
Identifying Liquidity Areas
HVN = consolidation zones where institutions load up.
LVN = thin zones where price often makes fast moves.
Trend vs Balance
Wide VA = balanced market (sideways).
Narrow VA with price pushing = trending market.
Confluence with ICT Concepts
OB inside a HVN → stronger.
Liquidity grab into LVN → powerful reversal zone.
🔹 Simple Example
Imagine EURUSD has:
POC at 1.0850 (heavy volume traded here).
VAH at 1.0880.
VAL at 1.0820.
Smart Money Concepts //@deepak
//@version=5
indicator(title='Custom Also Builder - v1', shorttitle="Custom Also Builder - v1", overlay=true, max_bars_back=500)
ma(_source, _length, _type) =>
switch _type
"SMA" => ta.sma (_source, _length)
"EMA" => ta.ema (_source, _length)
"RMA" => ta.rma (_source, _length)
"WMA" => ta.wma (_source, _length)
"VWMA" => ta.vwma(_source, _length)
alarm(_osc, _message) =>
alert(syminfo.ticker + ' ' + _osc + ' : ' + _message + ', price (' + str.tostring(close, format.mintick) + ')')
//Conditional Sampling EMA Function
Cond_EMA(x, cond, n) =>
var val = array.new_float(0)
var ema_val = array.new_float(1)
if cond
array.push(val, x)
if array.size(val) > 1
array.remove(val, 0)
if na(array.get(ema_val, 0))
array.fill(ema_val, array.get(val, 0))
array.set(ema_val, 0, (array.get(val, 0) - array.get(ema_val, 0)) * (2 / (n + 1)) + array.get(ema_val, 0))
EMA = array.get(ema_val, 0)
EMA
//Conditional Sampling SMA Function
Cond_SMA(x, cond, n) =>
var vals = array.new_float(0)
if cond
array.push(vals, x)
if array.size(vals) > n
array.remove(vals, 0)
SMA = array.avg(vals)
SMA
//Standard Deviation Function
Stdev(x, n) =>
math.sqrt(Cond_SMA(math.pow(x, 2), 1, n) - math.pow(Cond_SMA(x, 1, n), 2))
//Range Size Function
rng_size(x, scale, qty, n) =>
ATR = Cond_EMA(ta.tr(true), 1, n)
AC = Cond_EMA(math.abs(x - x ), 1, n)
SD = Stdev(x, n)
rng_size = scale == 'Pips' ? qty * 0.0001 : scale == 'Points' ? qty * syminfo.pointvalue : scale == '% of Price' ? close * qty / 100 : scale == 'ATR' ? qty * ATR : scale == 'Average Change' ? qty * AC : scale == 'Standard Deviation' ? qty * SD : scale == 'Ticks' ? qty * syminfo.mintick : qty
rng_size
//Two Type Range Filter Function
rng_filt(h, l, rng_, n, type, smooth, sn, av_rf, av_n) =>
rng_smooth = Cond_EMA(rng_, 1, sn)
r = smooth ? rng_smooth : rng_
var rfilt = array.new_float(2, (h + l) / 2)
array.set(rfilt, 1, array.get(rfilt, 0))
if type == 'Type 1'
if h - r > array.get(rfilt, 1)
array.set(rfilt, 0, h - r)
if l + r < array.get(rfilt, 1)
array.set(rfilt, 0, l + r)
if type == 'Type 2'
if h >= array.get(rfilt, 1) + r
array.set(rfilt, 0, array.get(rfilt, 1) + math.floor(math.abs(h - array.get(rfilt, 1)) / r) * r)
if l <= array.get(rfilt, 1) - r
array.set(rfilt, 0, array.get(rfilt, 1) - math.floor(math.abs(l - array.get(rfilt, 1)) / r) * r)
rng_filt1 = array.get(rfilt, 0)
hi_band1 = rng_filt1 + r
lo_band1 = rng_filt1 - r
rng_filt2 = Cond_EMA(rng_filt1, rng_filt1 != rng_filt1 , av_n)
hi_band2 = Cond_EMA(hi_band1, rng_filt1 != rng_filt1 , av_n)
lo_band2 = Cond_EMA(lo_band1, rng_filt1 != rng_filt1 , av_n)
rng_filt = av_rf ? rng_filt2 : rng_filt1
hi_band = av_rf ? hi_band2 : hi_band1
lo_band = av_rf ? lo_band2 : lo_band1
ma_function(source, length, type) =>
if type == 'RMA'
ta.rma(source, length)
else if type == 'SMA'
ta.sma(source, length)
else if type == 'EMA'
ta.ema(source, length)
else if type == 'WMA'
ta.wma(source, length)
else if type == 'HMA'
if(length<2)
ta.hma(source,2)
else
ta.hma(source, length)
else
ta.vwma(source, length)
// Get Table Size
table_size(s) =>
switch s
"Auto" => size.auto
"Huge" => size.huge
"Large" => size.large
"Normal" => size.normal
"Small" => size.small
=> size.tiny
setup_group= "████████ Indicator Setup ████████"
signalexpiry = input.int(defval=3, title='Signal Expiry Candle Count',group=setup_group, inline='expiry',tooltip="Number of candles to wait for all indicators to confirm a signal. Default is 3 which means if leading indicator print the signal, it will wait for max 3 more candles for rest of the indicators to print signal, if not then this setup is invalided and will have to wait for another signal form the leading indicator.")
alternatesignal = input.bool (true, "Alternate Signal", group=setup_group, inline='alternate')
showsignal = input.bool (true, "Show Long/Short Signal", group=setup_group,inline='showsignal',tooltip="Option to turn on/off the Long/Short signal shown on the chart. by default it will print Long/ Short signal on the chart.")
showdashboard = input.bool (true, "Show Dashboard", group=setup_group,inline='dashboard')
string i_tab1Ypos = input.string('bottom', 'Dashboard Position',group=setup_group, inline='dashboard2', options= )
string i_tab1Xpos = input.string('right', '', inline='dashboard2', group=setup_group,options= )
in_dashboardtab_size = input.string(title="Dashboard Size ", defval="Normal",
options= ,
group= setup_group , inline= "dashboard3")
///////////////////////////////////////////////
///// Signal filters
/////////////////////////////////////////////
leadingindicator = input.string(title="Leading Indicator", defval="Range Filter",
options= , group='████████ Main Indicator (signal) ████████', inline='li')
confirmation_group = "████████ Confirmation Indicators (filter) ████████ "
ema_tooltip = "EMA filter for confirmation. Validates Long signal if price is above the EMA FILTER level, and validates Short signal if price is below the EMA FILTER level. Default is 200, you can change that to meet your requiremnt."
respectema = input.bool (false, "EMA Filter", group=confirmation_group, inline='respectema')
respectemaperiod = input.int(defval=200, minval=1, title='', group=confirmation_group, inline='respectema', tooltip=ema_tooltip)
ema2_tooltip = "Generates Long signal if Fast EMA cross above Slow EMA. Generates Short signal when Fast EMA cross below the Slow EMA. Default values are 50 and 200. you can change that to meet your requirement."
respect2ma = input.bool (false, "2 EMA Cross : ", group=confirmation_group, inline='2ma')
respect2maperiod_1 = input.int(defval=50, title='',group=confirmation_group, inline='2ma')
respect2maperiod_2 = input.int(defval=200, title='',group=confirmation_group, inline='2ma',tooltip=ema2_tooltip)
ema3_tooltip = "Generates Long signal if first EMA (Fastest) cross above 2nd and 3rd EMA and 2nd EMA cross above 3rd EMA. Generates Short signal if first EMA (Fastest) cross below 2nd and 3rd EMA and 2nd EMA cross below 3rd EMA . Default values are 9,21 and 55. you can change that to meet your requirement."
respect3ma = input.bool (false, "3 EMA Cross : ", group=confirmation_group, inline='3ma',tooltip=ema3_tooltip)
respect3maperiod_1 = input.int(defval=9, title='',group=confirmation_group, inline='3ma',tooltip=ema3_tooltip)
respect3maperiod_2 = input.int(defval=21, title='',group=confirmation_group, inline='3ma',tooltip=ema3_tooltip)
respect3maperiod_3 = input.int(defval=55, title='',group=confirmation_group, inline='3ma',tooltip=ema3_tooltip)
respectrf = input.bool (false, "Range Filter", group=confirmation_group, inline='rf')
rftype = input.string(title="", defval="Default", options= , group=confirmation_group, inline='rf')
respectrqk = input.bool (true, "Rational Quadratic Kernel (RQK)", group=confirmation_group, inline='rqk',tooltip="Nadaraya Watson: Rational Quadratic Kernel (RQK)")
respectst = input.bool (false, "SuperTrend", group=confirmation_group, inline='st')
respectht = input.bool (false, "Half Trend", group=confirmation_group, inline='ht')
respectdonchian = input.bool (false, "Donchian Trend Ribbon", group=confirmation_group, inline='donchian')
respectroc = input.bool (false, "Rate of Change (ROC)", group=confirmation_group, inline='roc')
respecttsi = input.bool (false, "True Strength Indicator (TSI)", group=confirmation_group, inline='tsi')
tsitooltip = "Signal Crossover: TSI crossover or greater than signal line for long, and TSI crossunder signal line for short. Zero Line Cross: TSI cross above zero line and signal line for long signal. Tsi Cross below zero and signal line for short signal."
tsitype = input.string(title="", defval="Signal Cross", options= ,tooltip=tsitooltip, group=confirmation_group, inline='tsi')
respecttdfi = input.bool (false, "Trend Direction Force Index (TDFI)", group=confirmation_group, inline='tdfi')
respectmd = input.bool (false, "McGinley Dynamic", group=confirmation_group, inline='md')
respectdpo = input.bool (false, "Detrended Price Oscillator (DPO)", group=confirmation_group, inline='dpo')
respectichi = input.bool (false, "Ichimoku Cloud", group=confirmation_group, inline='ichi')
respectsuperichi = input.bool (false, "SuperIchi", group=confirmation_group, inline='ichi',tooltip="Ichimoku Cloud Conditions: 1. Candle above cloud 2. Converstion Line above base line 3. Leading 26 bar cloud is green 4. lagging span is above the cloud")
respecttrendline_breakout = input.bool (false, "Trendline Breakout", group=confirmation_group, inline='tb')
respectrd = input.bool (false, "Range Detector", group=confirmation_group, inline='rd',tooltip="Range Detector: if used as leading indicator, it will be based on range breakout. If used as confirmation indicator, it will be used to filter entries within the active range area.")
respecthacolt = input.bool (false, "Heiken-Ashi Candlestick Oscillator", group=confirmation_group, inline='hacolt',tooltip="Vervoort LongTerm Heiken-Ashi Candlestick Oscillator: If oscilliation is above 0 line, then long signal is issued and if below zero line, short signal is issued.")
respectbx = input.bool (false, "B-Xtrender", group=confirmation_group, inline='bx')
bxtype = input.string(title="", defval="Short and Long term trend", options= , group=confirmation_group, inline='bx', tooltip = "Short term trend: ===================== For buy signal the short term trend line must turn green, and for the sell signal, the short term trend line must turn red. Short and Long term trend: ===================== For buy signal, the short term trend must change from red to green and long term trend cross above zero line, for Sell signal the short term trend must turn red and long term trend line cross down the zero line..")
respectbbpt = input.bool (false, "Bull bear Power Trend", group=confirmation_group, inline='bbpt')
bbpttype = input.string(title="", defval="Follow Trend", options= , group=confirmation_group, inline='bbpt', tooltip = "Follow Trend: ===================== Buy signal will be validated if the BBPT trend line is above 2, and Sell signal will be validated if BBPT trend line is below -2. Without Trend: ===================== Ignore the BBPT trend line.")
respectvwap = input.bool (false, "VWAP", group=confirmation_group, inline='vwap')
respectbbosc = input.bool (false, "BB Oscillator", group=confirmation_group, inline='bbosc')
bbtype = input.string(title="", defval="Entering Lower/Upper Band", options= , group=confirmation_group, inline='bbosc')
respecttm = input.bool (false, "Trend Meter", group=confirmation_group, inline='tm')
tmtype = input.string(title="", defval="3 TM and 2 TB change to same color", options= , group=confirmation_group, inline='tm')
respectce = input.bool (false, "Chandelier Exit", group=confirmation_group, inline='ce')
respectcci = input.bool (false, "CCI", group=confirmation_group, inline='cci')
respectao = input.bool (false, "Awesome Oscillator", group=confirmation_group, inline='ao')
aotype = input.string(title="", defval="Zero Line Cross", options= , group=confirmation_group, inline='ao', tooltip = "Zero Line Cross: If AO value cross the zero line up, Buy signal will be generated, and if AO value cross down the zero line, sell signal will be generated.")
respectadx = input.bool (false, "DMI (ADx)", group=confirmation_group, inline='adx')
adxtype = input.string(title="", defval="Adx & +Di -Di", options= , group=confirmation_group, inline='adx', tooltip = "Adx Only: If Adx value is above the defined level. Adx & +Di -DI : When Adx value is above the defined level and croseeover between +di and -di. Di will determine the direction of the movement. Advance: ")
respectsar = input.bool (false, "Parabolic SAR (PSAR)", group=confirmation_group, inline='sar')
respectwae = input.bool (false, "Waddah Attar Explosion", group=confirmation_group, inline='wae')
vo_tooltip = "Volatility Oscillator: ======================= If the spike line is above the upper line, buy signal is generated (or validated). If the spike line is below the lower line, sell signal is generated (or validated)."
respectvo = input.bool (false, "Volatility Oscillator", group=confirmation_group, inline='vo', tooltip = vo_tooltip)
ci_tooltip = "Choppiness index: ======================= If the index is below the defined threshold (default 61.8) then asset is considered trending and signal will be validated, if index is above 61.8 then asset is considered having sideway movement."
respectci = input.bool (false, "Choppiness Index ", group=confirmation_group, inline='ci')
ci_limit = input.float(61.8,title=" ", inline='ci',group=confirmation_group, tooltip = ci_tooltip)
respectdv = input.bool (false, "Damiani Volatility (DV)", group=confirmation_group, inline='dv')
dvtype = input.string(title="", defval="Simple", options= , group=confirmation_group, inline='dv', tooltip = "Simple Volatility is green. Threshold Volatility green and >1.1")
stochtooltip="CrossOver: ------------------ CrossOver of K and D line at any level. CrossOver in OB & OS levels: Generate buy signal if crossover happens in oversold area and crossing up oversold level. Generate sell signal on crossover in overbought area and cross down upper level. ------------------ %K above/below %D ------------------ : Generate Buy signal or validate other signal if %K is above %D and opposite for Sell Signal."
respectstochastic = input.bool (false, "Stochastic", group=confirmation_group, inline='stoch')
stochtype = input.string(title="", defval="CrossOver", options= ,tooltip=stochtooltip, group=confirmation_group, inline='stoch')
rsi_tooltip = "RSI MA Cross: ============= Generate buy signal when RSI cross up RSI MA line and sell signal when RSI cross down RSI MA line. RSI Exits OB/OS zones: ================== Generate Buy signal when RSI crosses down the overbough zone and sell signal when RSI crosses up the oversold zone. RSI Level: ========== Generate buy signal if RSI cross above the specific level and sell signal when RSI crossdown the level. +++++ You can change the setting to define the OB/OS and MidLine Levels"
respectrsi = input.bool (false, "RSI", group=confirmation_group, inline='rsi')
rsitype = input.string(title="", defval="RSI MA Cross", options= , tooltip=rsi_tooltip, group=confirmation_group, inline='rsi')
rsima_tooltip = "RSI MA Direction: ============= The buy and sell signal will respect the RSI MA direction. For buy signal, the RSI MA should be increasing or same compared to previous RSI MA. for SHORT, the RSI MA should be same or decreasing compared to last RSI MA"
respectrsima = input.bool (false, "RSI MA Direction", group=confirmation_group, inline='rsi2',tooltip=rsima_tooltip)
rsilimit_tooltip = "RSI Limit: ============= This is to allow you to set limit for the RSI value for long and short. default value for long is 40, which means if the RSI is 40 or above, only then BUY signal will be validated. for short if RSI is 60 or less, only then sell signal willbe validated."
respectrsilimit = input.bool (false, "RSI Limit : ", group=confirmation_group, inline='rsi3',tooltip=rsilimit_tooltip)
rsilimitup = input.int(40, title="Long",inline='rsi3', group=confirmation_group)
rsilimitdown = input.int(60, title="short",inline='rsi3', group=confirmation_group)
rsimalimit_tooltip = "RSI MA Limit: ============= This is to allow you to set limit for the RSI MA value for long and short. default value for long is 40, which means if the RSI MA is 40 or above, only then BUY signal will be validated. for short if RSI MA is 60 or less, only then sell signal willbe validated."
respectrsimalimit = input.bool (false, "RSI MA Limit : ", group=confirmation_group, inline='rsi4',tooltip=rsimalimit_tooltip)
rsimalimitup = input.int(40, title="Long",inline='rsi4', group=confirmation_group)
rsimalimitdown = input.int(60, title="short",inline='rsi4', group=confirmation_group)
macdtooltip="MACD Crossover: ------------------ CrossOver of MACD and the Signal line. Generates Long signal when MACD cross up Signal line and Short signal when MACD cross down Signal Line. . Zero line crossover: ------------------ Generate buy signal when MACD cross up the zero line and Sell signal when MACD cross down the zero line."
respectmacd = input.bool (false, "MACD", group=confirmation_group, inline='macd')
macdtype = input.string(title="", defval="MACD Crossover", options= ,tooltip=macdtooltip, group=confirmation_group, inline='macd')
respectssl = input.bool (false, "SSL Channel", group=confirmation_group, inline='ssl')
respectstc = input.bool (false, "Schaff Trend Cycle (STC)", group=confirmation_group, inline='stc')
respectchaikin = input.bool (false, "Chaikin Money Flow", group=confirmation_group, inline='chaikin')
respectvol = input.bool (false, "Volume", group=confirmation_group, inline='volume')
volumetype = input.string(title="", defval="volume above MA", options= , group=confirmation_group, inline='volume', tooltip = "Simple volume is comparing the up/down volme with previous candle. Volume delta will compare the delta or difference between up and down volume with previous candle. Example: up volume = 100 Down volume=-1100 Delta = -1000 Satisfy the bear flag condition if previous -ve delta is lower")
respectwolf = input.bool (false, "Wolfpack Id", group=confirmation_group, inline='wolf')
respectqqe = input.bool (false, "QQE Mod", group=confirmation_group, inline='qqe')
qqetype = input.string(title="", defval="Line", options= , group=confirmation_group, inline='qqe', tooltip = "Line: signal generated when QQE line is above or below 0. Bar: when Blue bar is above 0 or Red bar below 0 Line & Bar: Both Bar and Line to be above(bullist) or below (beari
Price action v2Core Elements of Price Action
Market Structure
Higher Highs (HH), Higher Lows (HL) → Uptrend
Lower Highs (LH), Lower Lows (LL) → Downtrend
Sideways → Consolidation
📌 Structure tells you whether buyers or sellers are in control.
Support & Resistance (S/R)
Horizontal levels where price has reacted before.
Support = buyers step in (floor).
Resistance = sellers step in (ceiling).
PA traders watch how candles react here → breakout, rejection, fakeout.
Candlestick Behavior
Pin bar / Wick rejections = rejection of price levels.
Engulfing candles = shift in momentum.
Doji / indecision = market pausing before next move.
📌 A single candle tells you the “fight” between buyers and sellers.
Order Blocks (ICT concept)
Last bullish/bearish candle before a strong move.
Represents institutional orders.
Acts like strong S/R zones.
Break of Structure (BOS) & Shift in Market Structure (SMS)
When price breaks a recent high/low, it signals continuation or reversal.
Example: HH → BOS → price retraces to OB → continues.
Liquidity
Price seeks liquidity (stop hunts, fake breakouts).
Equal highs/lows, trendline liquidity, and session highs/lows are key zones.
ICT often calls this the “Judas Swing” before real move.
Market Cycles (Wyckoff/ICT)
Accumulation → sideways, smart money entering.
Manipulation / Fake move (stop hunt).
Expansion / Distribution → strong trending move.
Reversal → cycle repeats.
🔹 Why Price Action Works
Indicators (RSI, MACD, etc.) are derived from price.
If you understand raw price → you’re ahead of lagging tools.
It helps you “read the tape” like institutions.
🔹 Example Workflow of a PA Trader
Identify trend / structure (up, down, range).
Mark key S/R levels, OBs, liquidity zones.
Wait for candle confirmation (engulfing, rejection, BOS).
Enter on retracement (FVG, OB, S/R retest).
Manage risk → Stop Loss below structure, TP at liquidity levels.
Triumm algo v2 with Signal Quality1. Core Buy/Sell Logic
Uses two EMAs (9 & 21 by default).
Buy Signal = when fast EMA crosses above slow EMA and RSI < 70 (not overbought).
Sell Signal = when fast EMA crosses below slow EMA and RSI > 30 (not oversold).
At a signal:
It sets an Entry price (current close).
It calculates 3 Take Profit (TP1, TP2, TP3) based on ATR multiples.
It sets a Stop Loss (SL) also based on ATR.
🔹 2. Signal Confidence & Potential
The script doesn’t just give a raw buy/sell, it adds “AI-inspired” grading:
Confidence (0–100%)
Based on:
EMA crossover strength (big gap = higher confidence).
RSI position (closer to 30/70 = more decisive).
Volume trend (if volume > average).
Whether you’re in an ICT Killzone (London, NY, Asia sessions).
Potential (0–100%)
Based on:
How far TP1 is from entry (relative to price).
Trend strength (fast EMA above/below slow EMA).
ATR vs average ATR (volatility score).
✅ Then it gives a Signal Quality Label:
Very Good
Good
Simple
Bad
Very Bad
This helps you filter only strong trades.
🔹 3. Dashboard
On the chart, a dashboard table shows:
Trend direction (Uptrend/Downtrend).
RSI value.
ATR value.
Current Killzone (London, NY, Asia, or OFF).
Suggested timeframe (based on volatility).
🔹 4. Fair Value Gaps (FVGs)
The script also includes FVG detection:
Finds bullish/bearish FVGs (price gaps between candles).
Can show unmitigated/mitigated levels.
Optionally plots them with boxes or dashed lines.
Keeps count of FVGs and shows stats in a dashboard.
🔹 5. CISD (Change in State of Delivery)
Another ICT concept:
Detects when market structure shifts.
Marks +CISD (bullish) or -CISD (bearish) levels with lines/labels.
Deletes or keeps old levels (configurable).
Can send alerts when CISD levels are broken.
🔹 6. AI Multi-Timeframe Trend Check
The script scans 1m, 5m, 15m, 30m:
Each TF gives a score based on EMA, RSI, and Volume.
Picks the best timeframe with strongest setup.
Displays reasoning in a mini “🧠 Triumm AI” table.
🔹 7. Range Filter (Extra Buy/Sell)
At the bottom, there’s a Range Filter system:
Smooths price with EMA-based range filter.
Generates independent Buy/Sell signals when price breaks above/below the filter.
Plots signals with arrows (“Buy” below bars, “Sell” above bars).
Can also be turned into a strategy with TP/SL.
⚡ Summary in Simple Words
This indicator is like an all-in-one trading toolkit:
📈 Entry/Exit with ATR-based TP/SL.
🎯 Confidence & Potential scoring (quality check).
🕰️ ICT Killzones & dashboard.
📊 AI Multi-timeframe trend filter.
🌀 Fair Value Gaps (ICT concept).
🔄 CISD structure shift detection.
📉 Range Filter Buy/Sell signals.
Super orderblock by triummWhat is a Volume Order Block?
An Order Block (OB) is a zone created by institutions (banks, hedge funds, smart money) where they place large orders, usually the last bullish or bearish candle before a strong impulsive move.
A Volume Order Block adds volume analysis into the detection of those zones. Instead of just drawing OBs from price structure, it confirms or filters them with volume imbalances (buyer/seller dominance).
🔹 Why Add Volume?
Regular OBs can appear frequently, and not all are strong. By adding volume metrics, you filter which OBs are truly institutional footprints.
✅ High buy volume in a bullish OB → Smart money accumulation.
✅ High sell volume in a bearish OB → Smart money distribution.
❌ Low volume OB → Weak zone, likely to fail.
🔹 Key Components of Volume Order Blocks
Last Opposite Candle
Bullish OB = last bearish candle before strong rally.
Bearish OB = last bullish candle before strong drop.
Volume Confirmation
OB is valid if its candle(s) show higher than average volume.
Sometimes measured as % of total buy vs. sell volume in that candle.
Imbalance Check
Look for volume imbalance (buyers 60%+ or sellers 60%+).
Confirms smart money dominance.
Reaction Zone
Price revisits the OB → expect reaction (rejection, mitigation, or continuation).
High-volume OBs often act as strong support/resistance
BTC Regime Phase [HY|YC|GLI]The correlation between global liquidity and INDEX:BTCUSD has attracted a lot of attention. Building on this insight, I developed an indicator that not only tracks global liquidity but also integrates the high‑yield spread and yield‑curve slope to capture credit risk and growth expectations.
Essence and Logic
At its core, the Risk‑On Composite Z‑Score converts three macro factors global liquidity momentum, the US high‑yield spread and the slope of the US yield curve into standardized Z‑scores, weights them, and tracks moving‑average crossovers. Each factor has a rationale: high‑yield spreads are powerful business‑cycle indicators and often outperform other financial variables (Gertler & Lown, 2000). Yield‑curve steepness reflects investor optimism and prompts shifts toward riskier assets global liquidity drives cross‑border flows and risk sentiment (Goldberg, 2023; Lee, 2024). Combining these measures gives a composite signal that has historically aligned well with Bitcoin’s tops and bottoms. Usable also for other crypto coins: INDEX:ETHUSD CRYPTO:SOLUSD CRYPTO:LINKUSD
Limitations and My Current Model Outlook
I want to be transparent: the three model sections are highly correlated. Currently, the high‑yield spread and yield curve data come only from the US; I may add Euro or Japanese spreads later. I’m also aware that macro dynamics are evolving. Fiscal policy and political choices could shorten bear markets and make the current sell signals less relevant. In a stagflationary world, inflation‑adjusted liquidity may swing more violently and require an asset‑inflation adjustment. Yet, the model has captured Bitcoin’s tops and bottoms almost to the week—future patterns may rhyme, not repeat.
Questions and Ideas:
Do you think this model will still be useful as fiscal and monetary regimes shift?
Should I add a stagnation modulation perhaps real yields or inflation‑adjusted liquidity—to better capture a stagflation scenario?
Are there high‑yield spreads on TV beyond the US that I should include? (Euro and Japan indices do exist.)
Would it make sense to incorporate Bitcoin halving events or a stock‑to‑flow module?
The indicator is free to use. If it brings you value, you’re welcome to follow for updates. I appreciate your support and feedback. When you are interested in the source code, feel free to contact me for more details. When you feel like supporting me with some sats, contact me and I will give you a Lightning address. I am a student and that would help a lot – but please only if you can afford it!
♡ Thanks to everyone who contributes insight on TradingView ♡
© Robinhodl21
Features: Users can enable or disable each component, adjust weights and choose a short‑tenor (1‑year or 2‑year) for the yield curve. The script automatically scales lookback windows based on the chart timeframe (daily, weekly or monthly). It offers visual plots of each Z‑score, the composite score, and smoothed moving averages, with background colours highlighting regimes and markers for entries and exits. Trade logic includes optional dip‑buy triggers when the composite falls below a threshold, Friday‑only execution on daily charts to reduce whipsaws. A trend table summarises current Z‑scores and their trends. Settings are tuned for BTC weekly data but should be adjusted for other assets or timeframes. Because some inputs (e.g., GLI weights) have limited historical data, long backtests may be less reliable when using on other Risk On Assets like NASDAQ:NDX NCDEX:COPPER
‼ Disclaimer: This indicator is for educational purposes and does not constitute investment advice. Markets involve risk; past performance is not indicative of future results. Users should not rely solely on this script for trading decisions. Always test and adapt settings to your asset, timeframe and risk tolerance. The author assumes no liability for any trading losses.
Literature:
Gertler, M., & Lown, C. S. (2000). The information in the high yield bond spread for the business cycle: Evidence and some implications. NBER Working Paper 7549.
Lee, B. (2024). Staying ahead of the yield curve. CME Group.
McCauley, R. N. (2012). Risk‑on/risk‑off, capital flows, leverage and safe assets. BIS Working Paper 382.
Goldberg, L. (2023). Global liquidity: Drivers, volatility and toolkits. Federal Reserve Bank of New York Staff Report 1064.
FRED (2025). ICE BofA Euro High Yield Index Option‑Adjusted Spread (BAMLHE00EHYIOAS). St. Louis Fed Data.
Office of Financial Research (2025). Financial Stress Index sources: High yield indices..
Tashev, T. (2025). The Bitcoin Stock‑to‑Flow Model: A comprehensive guide. Webopedia.
Daily Separator & Killzone marker (L3J)The “Daily Separator (L3J)” is a tool built for day traders who want a clean intraday structure around key U.S. market times and a professional trading-day model. It visually segments trading days, marks critical intraday timestamps (pre-market, cash open, killzone), and aligns with routines inspired by ICT concepts.
Important note: internal code comments and notes are written in French.
What the script does
Draws clear, configurable vertical lines to separate each trading day.
Supports two trading-day models:
- CME 18:00–17:00 (anchored on the Asian session, common for indices/futures)
- Calendar 00:00–23:59 (midnight-to-midnight)
Plots four key intraday rays in UTC‑4:
- 08:30 — U.S. pre-market open
- 09:30 — U.S. cash market open
- 09:50 — killzone start (per my routine)
- 10:30 — killzone end (per my routine)
Smart display logic: each day’s marker stays visible until the time is reached, then auto-hides to keep charts clean.
Object-budget control: caps the number of historical separators to preserve performance.
Day trading strengths (ICT-friendly)
Robust CME anchoring: day switches at the Asian session start in UTC‑4, which better reflects U.S. liquidity flow than calendar midnight.
Focused killzone: highlights 09:50–10:30 for impulse setups, rebalancing, and liquidity events around the open.
Clean readability: fully customizable colors, styles, and widths; markers auto-remove after their window.
Inputs (end‑user labels in French)
- Timezone: choose the time zone (default UTC‑4) for session alignment.
- Day separator:
- Day type: “CME 18:00–17:00” or “Calendrier 00:00–23:59”
- Color, style (solid, dashed, dotted), width
- Max number of visible separators (performance control)
Session (CME): Asian session window used as the anchor (default 18:00–16:00 UTC‑4)
ndependent intraday markers:
- Pre‑Market Open 08:30
- Market Open 09:30
- Killzone Open 09:50
- Killzone Close 10:30
- Each with show/hide, color, style, and width settings
Best practices
U.S. indices ( CME_MINI:ES1! , CME_MINI:NQ1! ) and U.S. equities: favor the “CME 18:00–17:00” mode for a more liquidity‑centric read.
ICT day trading: form directional bias around 09:30, execute between 09:50–10:30 as initial volatility structures.
Multi‑timeframe use: keep it on execution charts (1–5 min) and context charts (15–60 min) for time alignment.
Technical notes
Created by L3J.
Pine Script v6, overlay=true, controlled object budget.
Deterministic time calculations via Pine built‑ins.
All times are expressed in UTC‑4 to align with U.S. practice; adjust the timezone input as needed.
- Internal code comments/notes are written in French.
If this script helps you structure your sessions better, consider leaving a like and sharing it with other intraday traders.
Happy trading, everyone!
Volume Wave AnalyzerWave Buy vs Sell Volume (with Box) analyzes the buying and selling volume within a selected range of past candles. It sums volume from bullish bars (where close > open) as buy volume, bearish bars (close < open) as sell volume, and splits volume evenly for neutral (doji) bars. The indicator displays:
Buy Volume and Sell Volume totals over the chosen candle range
Delta (difference between buy and sell volumes)
Buy Percentage representing buying pressure strength
A visual box on the chart highlighting the selected candle range
This helps traders quickly assess market sentiment and volume dominance during recent price movements, supporting more informed trading decisions.
VRD Anchored VWAP Segments V2.0Distance from VWAP
Duration of segments above/below VWAP
Slope of VWAP movement
Historical averages vs current/previous segments