Dynamic TP Based on RR - Position ToolSimple indicator that automatically plots the take-profit (TP) level based on the below inputs:
- Entry price
- Stop-loss (SL)
- Risk-to-reward (RR)
The long/short-position drawing tools are simple enough to use, but wanted something that will automatically plot the TP instead. Couldn't find anything basic and free of extra features so built this instead.
This is how I use it.
1 (optional): Use the long/short-position drawing tool to plot the entry and stop-loss levels
2: Enable the indicator and enter the inputs
- Entry
- SL
- RR
3: The TP will automatically plot. Change the RR to your liking.
インジケーターとストラテジー
12M Return Strategy This strategy is based on the original Dual Momentum concept presented by Gary Antonacci in his book “Dual Momentum Investing.”
It implements the absolute momentum portion of the framework using a 12-month rate of change, combined with a moving-average filter for trend confirmation.
The script automatically adapts the lookback period depending on chart timeframe, ensuring the return calculation always represents approximately one year, whether you are on daily, weekly, or monthly charts.
How the Strategy Works
1. 12-Month Return Calculation
The core signal is the 12-month price return, computed as:
(Current Price ÷ Price from ~1 year ago) − 1
This return:
Plots as a histogram
Turns green when positive
Turns red when negative
The lookback adjusts automatically:
1D chart → 252 bars
1W chart → 52 bars
1M chart → 12 bars
Other timeframes → estimated to approximate 1 calendar year
2. Trend Filter (Moving Average of Return)
To smooth volatility and avoid noise, the strategy applies a moving average to the 12M return:
Default length: 12 periods
Plotted as a white line on the indicator panel
This becomes the benchmark used for crossovers.
3. Trade Signals (Long / Short / Cash)
Trades are generated using a simple crossover mechanism:
Bullish Signal (Go Long)
When:
12M Return crosses ABOVE its MA
Action:
Close short (if any)
Enter long
Bearish Signal (Go Short or Go Flat)
When:
12M Return crosses BELOW its MA
Action:
If shorting is enabled → Enter short
If shorting is disabled → Exit position and go to cash
Shorting can be enabled or disabled with a single input switch.
4. Position Sizing
The strategy uses:
Percent of Equity position sizing
You can specify the percentage of your portfolio to allocate (default 100%).
No leverage is required, but the strategy supports it if your account settings allow.
5. Visual Signals
To improve clarity, the strategy marks signals directly on the indicator panel:
Green Up Arrows: return > MA
Red Down Arrows: return < MA
A status label shows the current mode:
LONG
SHORT
CASH
6. Backtest-Ready
This script is built as a full TradingView strategy, not just an indicator.
This means you can:
Run complete backtests
View performance metrics
Compare long-only vs long/short behavior
Adjust inputs to tune the system
It provides a clean, rule-driven interpretation of the classic absolute momentum approach.
Inspired By: Gary Antonacci – Dual Momentum Investing
This script reflects the absolute momentum side of Antonacci’s original research:
Uses 12-month momentum (the most statistically validated lookback)
Applies a trend-following overlay to control downside risk
Recreates the classic signal structure used in academic studies
It is a simplified, transparent version intended for practical use and educational clarity.
Disclaimer
This script is for educational and research purposes only.
Historical performance does not guarantee future results.
Always use proper risk management.
Daily Dollar Cost Averaging (DCA) Simulator & Yearly PerformanceThis indicator simulates a "Daily Dollar Cost Averaging" strategy directly on your chart. Unlike standard backtesters that trade based on signals, this script calculates the performance of a portfolio where a fixed dollar amount is invested every single day, regardless of price action.
Key Features:
Daily Accumulation: Simulates buying a specific dollar amount (e.g., $10) at the market close every day.
Yearly Breakdown Table: A detailed dashboard displayed on the chart that breaks down performance by year. It tracks total invested, average entry price, total holdings, current value, and PnL percentage for each individual year.
Global Stats: The bottom row of the table summarizes the total performance of the entire strategy since the start date.
Breakeven Line: Plots a yellow line on the chart representing your "Global Average Price." When the current price is above this line, the total strategy is in profit.
How to Use:
Add to chart (Works best on the Daily (D) timeframe).
Open settings to adjust your Daily Investment Amount and Start Year.
The table will automatically update to show how a daily investment strategy would have performed over time.
NeuroSwarm BTC — Crowd vs Experts Forecast TrackerEnglish:
NeuroSwarm — Crowd vs Experts Forecast Tracker (BTC)
This indicator visualizes monthly forecasts collected from two independent groups:
Crowd – a large sample of retail traders
Experts – a smaller, curated group of analysts and experienced market participants
For each month, the following values are displayed as horizontal levels on the chart:
Median forecast of the Crowd
Average forecast of the Crowd
Median forecast of Experts
Average forecast of Experts
Shaded zones showing the range between median and mean
The values remain fixed throughout each month. This allows traders to compare sentiment dynamics between groups and see how expectations evolve relative to actual market movement.
Purpose:
This indicator is designed for sentiment analysis — NOT for generating trading signals.
It helps identify divergences between retail expectations and expert forecasts, which can be informative during trend transitions.
Data source:
All values come from monthly surveys conducted within the NeuroSwarm project (1–5 of every month).
Crowd and Expert groups are collected separately to avoid bias and to preserve independent aggregation.
Interface language note:
The indicator’s interface may contain non-English labels for ease of use, but full English documentation is provided here in compliance with TradingView House Rules.
Русская версия (optional, allowed only AFTER English):
NeuroSwarm — Мудрость Толпы vs Эксперты (BTC)
Индикатор показывает ежемесячные прогнозы двух групп:
Толпа: медиана и средняя прогнозов
Эксперты: медиана и средняя прогнозов
Значения фиксируются на весь месяц и отображаются на графике горизонтальными уровнями.
Заливка показывает диапазон между медианой и средней.
Цель индикатора — визуализировать настроение толпы и экспертов и сравнить его с реальным движением цены.
Это аналитический инструмент, а не торговая стратегия.
Данные берутся из ежемесячных опросов (1–5 числа), проводимых в рамках проекта NeuroSwarm.
MACD Zero-Line Dominance (no ta.sum)Description Option 1 (Simple & Clear)
“This indicator compares how many recent bars have the MACD line above the zero line versus below it.
It plots the resulting strength as a green/red histogram showing whether bullish or bearish momentum is dominating.”
“MACD Zero-Line Dominance measures the strength balance between bullish and bearish momentum by counting how many candles in a lookback period have MACD above or below the zero line.
The histogram turns green when bullish pressure dominates and red when bearish momentum takes control.
Useful for trend confirmation, regime detection, and higher-timeframe alignment.”
BTC Macro Trend Framework by ZecheColor Indicator Meaning
🟩 Green Pi Cycle 355 SMA ×2 Long-term macro line (cyclical tops)
🔴 Red Pi Cycle 114 SMA Fast line (Pi Cycle signals)
🟧 Orange EMA 50W Mid-term trend
🔵 Blue EMA 200W Long-term macro bottom / key trend
🟪 Purple SuperTrend Short-term trend / momentum
Day Range with OHLC LabelsThis indicator creates a synthetic daily candlestick that appears to the right of the chart, visually separated from real price bars.
It helps traders quickly view each day’s High, Low, Open, and Close without zooming, scrolling, or switching to higher timeframes.
What This Tool Does
✔ Draws a floating daily candle to the right of the current chart
✔ Displays the true Daily Open, High, Low, and Close
✔ Shows a center-aligned wick representing the full high-low range
✔ Shows a box-style candle body positioned using real OHLC values
✔ Labels the values (O, H, L, C) with large, clear fonts
✔ Automatically updates at each new day
✔ Works on any timeframe
✔ Helps intraday traders track daily structure visually
Why This Indicator Is Useful
This script is ideal for intraday traders who want instant awareness of the current day’s range.
Instead of guessing or drawing manual lines, you get a clean daily candlestick rendered off to the right side, avoiding chart clutter.
Great for:
Range traders
Breakout traders
Liquidity zone analysis
High/Low reference tracking
Traders who prefer non-intrusive visuals
Customization
Adjustable offset: position the candle further right
Configurable colors for wick + body
Large-font labels for easy reading
Automatically clears and redraws cleanly each day
Summary
This tool creates a clear, minimalistic, right-side daily candlestick complete with OHLC labels and centralized wick.
It’s designed to improve chart clarity and support quick decision-making without blocking price candles.
Multi EMA (10)Allows you to add and configure up to 10 EMAs to your chart with a single indicator. Enjoy.
Copper_to_Gold_Ratio by Zeche Cu/Au Ratio – LINES + LABELS is a clean, macro-oriented indicator built around the Copper/Gold price ratio — a well-known gauge of economic strength, market sentiment, and shifts between risk-taking and risk-aversion.
The script calculates:
the 120-day SMA of the Copper/Gold ratio
the standard deviation over the same period
the ±1σ, ±1.5σ, and ±2σ deviation bands
automatic labels on the last bar for maximum clarity
The design is minimalistic and visually optimized so users can quickly understand where the current ratio sits relative to long-term norms. The deviation zones help highlight moments when the market transitions into RISK-ON or RISK-OFF behavior.
How to interpret the signals:
Above +2σ → RISK-OFF environment (defensive tone, macro stress)
Below −2σ → RISK-ON environment (increased risk appetite)
±1σ bands represent normal cyclical movements
The SMA acts as the long-term equilibrium level
EXPLOSION Scanner v1 - Sudden Spike Hunter//@version=5
indicator("EXPLOSION ENTRY v1 - 5Day Swing Breakout Scanner", overlay=true)
// ===============================
// 입력값
// ===============================
lenBB = input.int(20, "BB Length")
multBB = input.float(2.0, "BB StdDev")
lenVolMA = input.int(20, "Volume MA Length")
volMult = input.float(1.8, "Volume Explosion Mult")
lenATR = input.int(14, "ATR Length")
atrThresh= input.float(3.0, "ATR % Threshold")
needBull = input.int(4, "최근 5봉 중 최소 양봉 개수", minval=1, maxval=5)
// ===============================
// Bollinger Band
// ===============================
basis = ta.sma(close, lenBB)
dev = ta.stdev(close, lenBB)
upper = basis + dev * multBB
lower = basis - dev * multBB
plot(upper, "BB Upper", display=display.none)
plot(basis, "BB Basis", display=display.none)
plot(lower, "BB Lower", display=display.none)
// ===============================
// Volume Explosion
// ===============================
volMA = ta.sma(volume, lenVolMA)
volCond = volume > volMA * volMult
// ===============================
// 5-Day Candle Strength (최근 5봉 양봉 개수)
// ===============================
bullCount = (close > open ? 1 : 0) +
(close > open ? 1 : 0) +
(close > open ? 1 : 0) +
(close > open ? 1 : 0) +
(close > open ? 1 : 0)
candleCond = bullCount >= needBull
// ===============================
// ATR Volatility Filter
// ===============================
atrValue = ta.atr(lenATR)
atrRate = atrValue / close * 100.0
volatilityCond = atrRate > atrThresh
// ===============================
// Trend Filter (기본 추세)
// ===============================
trendCond = close > basis
// ===============================
// 최종 매수 조건
// ===============================
buyCond = trendCond and volCond and candleCond and volatilityCond
// ===============================
// BUY 신호 표시
// ===============================
plotshape(
buyCond,
title = "BUY Signal",
style = shape.triangleup,
location = location.belowbar,
size = size.small,
text = "BUY",
textcolor = color.white
)
// ===============================
// 알림(Alert)
// ===============================
alertcondition(
buyCond,
title = "EXPLOSION BUY",
message = "EXPLOSION ENTRY v1 : BUY SIGNAL 발생"
)
ZY Target TerminatorThe indicator follows trends and generates short and long signals. Furthermore, when it generates a signal, it displays the maximum profit margins for the last three signals it generated in the same direction. It also clearly indicates the number of candles for which no signal has been generated for the pair. Avoid trading pairs whose profit margins do not align with your trading strategy.
Yon Smart Money Step-In IndicatorDetects potential institutional buying when price is above VWAPmoney flow is positive, and volume spikes occur simultaneously.OBV is rising,
Smart Money Scanner Suite v6 - OptimizedWHAT IT DOES (longer version in the script):
// Identifies "Smart Money Stepping Back" (SMSB) zones where institutions quietly
// build positions without moving the market. Signals appear when ALL 4 conditions align:
//
// 1. OBV DIVERGENCE → Price up/OBV down (distribution) or Price down/OBV up (accumulation)
// 2. LOW VOLUME → Below 1.5x average (stealth activity)
// 3. NEAR VWAP → Within 0.5% (institutional fair value)
// 4. HTF CONFIRMATION → Higher timeframe shows directional momentum
SR & POI Indicator//@version=5
indicator(title='SR & POI Indicator', overlay=true, max_boxes_count=500, max_lines_count=500, max_labels_count=500)
//============================================================================
// SUPPLY/DEMAND & POI SETTINGS
//============================================================================
swing_length = input.int(10, title = 'Swing High/Low Length', group = 'Supply/Demand Settings', minval = 1, maxval = 50)
history_of_demand_to_keep = input.int(20, title = 'History To Keep', group = 'Supply/Demand Settings', minval = 5, maxval = 50)
box_width = input.float(2.5, title = 'Supply/Demand Box Width', group = 'Supply/Demand Settings', minval = 1, maxval = 10, step = 0.5)
show_price_action_labels = input.bool(false, title = 'Show Price Action Labels', group = 'Supply/Demand Visual Settings')
supply_color = input.color(color.new(#EDEDED,70), title = 'Supply', group = 'Supply/Demand Visual Settings', inline = '3')
supply_outline_color = input.color(color.new(color.white,75), title = 'Outline', group = 'Supply/Demand Visual Settings', inline = '3')
demand_color = input.color(color.new(#00FFFF,70), title = 'Demand', group = 'Supply/Demand Visual Settings', inline = '4')
demand_outline_color = input.color(color.new(color.white,75), title = 'Outline', group = 'Supply/Demand Visual Settings', inline = '4')
bos_label_color = input.color(color.white, title = 'BOS Label', group = 'Supply/Demand Visual Settings')
poi_label_color = input.color(color.white, title = 'POI Label', group = 'Supply/Demand Visual Settings')
swing_type_color = input.color(color.black, title = 'Price Action Label', group = 'Supply/Demand Visual Settings')
//============================================================================
// SR SETTINGS
//============================================================================
enableSR = input(true, "SR On/Off", group="SR Settings")
colorSup = input(#00DBFF, "Support Color", group="SR Settings")
colorRes = input(#E91E63, "Resistance Color", group="SR Settings")
strengthSR = input.int(2, "S/R Strength", 1, group="SR Settings")
lineStyle = input.string("Dotted", "Line Style", , group="SR Settings")
lineWidth = input.int(2, "S/R Line Width", 1, group="SR Settings")
useZones = input(true, "Zones On/Off", group="SR Settings")
useHLZones = input(true, "High Low Zones On/Off", group="SR Settings")
zoneWidth = input.int(2, "Zone Width %", 0, tooltip="it's calculated using % of the distance between highest/lowest in last 300 bars", group="SR Settings")
expandSR = input(true, "Expand SR", group="SR Settings")
//============================================================================
// SUPPLY/DEMAND FUNCTIONS
//============================================================================
// Function to add new and remove last in array
f_array_add_pop(array, new_value_to_add) =>
array.unshift(array, new_value_to_add)
array.pop(array)
// Function for swing H & L labels
f_sh_sl_labels(array, swing_type) =>
var string label_text = na
if swing_type == 1
if array.get(array, 0) >= array.get(array, 1)
label_text := 'HH'
else
label_text := 'LH'
label.new(bar_index - swing_length, array.get(array,0), text = label_text, style=label.style_label_down, textcolor = swing_type_color, color = color.new(swing_type_color, 100), size = size.tiny)
else if swing_type == -1
if array.get(array, 0) >= array.get(array, 1)
label_text := 'HL'
else
label_text := 'LL'
label.new(bar_index - swing_length, array.get(array,0), text = label_text, style=label.style_label_up, textcolor = swing_type_color, color = color.new(swing_type_color, 100), size = size.tiny)
// Function to check overlapping
f_check_overlapping(new_poi, box_array, atr) =>
atr_threshold = atr * 2
okay_to_draw = true
for i = 0 to array.size(box_array) - 1
top = box.get_top(array.get(box_array, i))
bottom = box.get_bottom(array.get(box_array, i))
poi = (top + bottom) / 2
upper_boundary = poi + atr_threshold
lower_boundary = poi - atr_threshold
if new_poi >= lower_boundary and new_poi <= upper_boundary
okay_to_draw := false
break
else
okay_to_draw := true
okay_to_draw
// Function to draw supply or demand zone
f_supply_demand(value_array, bn_array, box_array, label_array, box_type, atr) =>
atr_buffer = atr * (box_width / 10)
box_left = array.get(bn_array, 0)
box_right = bar_index
var float box_top = 0.00
var float box_bottom = 0.00
var float poi = 0.00
if box_type == 1
box_top := array.get(value_array, 0)
box_bottom := box_top - atr_buffer
poi := (box_top + box_bottom) / 2
else if box_type == -1
box_bottom := array.get(value_array, 0)
box_top := box_bottom + atr_buffer
poi := (box_top + box_bottom) / 2
okay_to_draw = f_check_overlapping(poi, box_array, atr)
if box_type == 1 and okay_to_draw
box.delete( array.get(box_array, array.size(box_array) - 1) )
f_array_add_pop(box_array, box.new( left = box_left, top = box_top, right = box_right, bottom = box_bottom, border_color = supply_outline_color,
bgcolor = supply_color, extend = extend.right, text = 'SUPPLY', text_halign = text.align_center, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
box.delete( array.get(label_array, array.size(label_array) - 1) )
f_array_add_pop(label_array, box.new( left = box_left, top = poi, right = box_right, bottom = poi, border_color = color.new(poi_label_color,90),
bgcolor = color.new(poi_label_color,90), extend = extend.right, text = 'POI', text_halign = text.align_left, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
else if box_type == -1 and okay_to_draw
box.delete( array.get(box_array, array.size(box_array) - 1) )
f_array_add_pop(box_array, box.new( left = box_left, top = box_top, right = box_right, bottom = box_bottom, border_color = demand_outline_color,
bgcolor = demand_color, extend = extend.right, text = 'DEMAND', text_halign = text.align_center, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
box.delete( array.get(label_array, array.size(label_array) - 1) )
f_array_add_pop(label_array, box.new( left = box_left, top = poi, right = box_right, bottom = poi, border_color = color.new(poi_label_color,90),
bgcolor = color.new(poi_label_color,90), extend = extend.right, text = 'POI', text_halign = text.align_left, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
// Function to change supply/demand to BOS if broken
f_sd_to_bos(box_array, bos_array, label_array, zone_type) =>
if zone_type == 1
for i = 0 to array.size(box_array) - 1
level_to_break = box.get_top(array.get(box_array,i))
if close >= level_to_break
copied_box = box.copy(array.get(box_array,i))
f_array_add_pop(bos_array, copied_box)
mid = (box.get_top(array.get(box_array,i)) + box.get_bottom(array.get(box_array,i))) / 2
box.set_top(array.get(bos_array,0), mid)
box.set_bottom(array.get(bos_array,0), mid)
box.set_extend( array.get(bos_array,0), extend.none)
box.set_right( array.get(bos_array,0), bar_index)
box.set_text( array.get(bos_array,0), 'BOS' )
box.set_text_color( array.get(bos_array,0), bos_label_color)
box.set_text_size( array.get(bos_array,0), size.small)
box.set_text_halign( array.get(bos_array,0), text.align_center)
box.set_text_valign( array.get(bos_array,0), text.align_center)
box.delete(array.get(box_array, i))
box.delete(array.get(label_array, i))
if zone_type == -1
for i = 0 to array.size(box_array) - 1
level_to_break = box.get_bottom(array.get(box_array,i))
if close <= level_to_break
copied_box = box.copy(array.get(box_array,i))
f_array_add_pop(bos_array, copied_box)
mid = (box.get_top(array.get(box_array,i)) + box.get_bottom(array.get(box_array,i))) / 2
box.set_top(array.get(bos_array,0), mid)
box.set_bottom(array.get(bos_array,0), mid)
box.set_extend( array.get(bos_array,0), extend.none)
box.set_right( array.get(bos_array,0), bar_index)
box.set_text( array.get(bos_array,0), 'BOS' )
box.set_text_color( array.get(bos_array,0), bos_label_color)
box.set_text_size( array.get(bos_array,0), size.small)
box.set_text_halign( array.get(bos_array,0), text.align_center)
box.set_text_valign( array.get(bos_array,0), text.align_center)
box.delete(array.get(box_array, i))
box.delete(array.get(label_array, i))
// Function to extend box endpoint
f_extend_box_endpoint(box_array) =>
for i = 0 to array.size(box_array) - 1
box.set_right(array.get(box_array, i), bar_index + 100)
//============================================================================
// SR FUNCTIONS
//============================================================================
percWidth(len, perc) => (ta.highest(len) - ta.lowest(len)) * perc / 100
//============================================================================
// SUPPLY/DEMAND CALCULATIONS
//============================================================================
atr = ta.atr(50)
swing_high = ta.pivothigh(high, swing_length, swing_length)
swing_low = ta.pivotlow(low, swing_length, swing_length)
var swing_high_values = array.new_float(5,0.00)
var swing_low_values = array.new_float(5,0.00)
var swing_high_bns = array.new_int(5,0)
var swing_low_bns = array.new_int(5,0)
var current_supply_box = array.new_box(history_of_demand_to_keep, na)
var current_demand_box = array.new_box(history_of_demand_to_keep, na)
var current_supply_poi = array.new_box(history_of_demand_to_keep, na)
var current_demand_poi = array.new_box(history_of_demand_to_keep, na)
var supply_bos = array.new_box(5, na)
var demand_bos = array.new_box(5, na)
// New swing high
if not na(swing_high)
f_array_add_pop(swing_high_values, swing_high)
f_array_add_pop(swing_high_bns, bar_index )
if show_price_action_labels
f_sh_sl_labels(swing_high_values, 1)
f_supply_demand(swing_high_values, swing_high_bns, current_supply_box, current_supply_poi, 1, atr)
// New swing low
else if not na(swing_low)
f_array_add_pop(swing_low_values, swing_low)
f_array_add_pop(swing_low_bns, bar_index )
if show_price_action_labels
f_sh_sl_labels(swing_low_values, -1)
f_supply_demand(swing_low_values, swing_low_bns, current_demand_box, current_demand_poi, -1, atr)
f_sd_to_bos(current_supply_box, supply_bos, current_supply_poi, 1)
f_sd_to_bos(current_demand_box, demand_bos, current_demand_poi, -1)
f_extend_box_endpoint(current_supply_box)
f_extend_box_endpoint(current_demand_box)
//============================================================================
// SR CALCULATIONS & PLOTTING
//============================================================================
rb = 10
prd = 284
ChannelW = 10
label_loc = 55
style = lineStyle == "Solid" ? line.style_solid : lineStyle == "Dotted" ? line.style_dotted : line.style_dashed
ph = ta.pivothigh(rb, rb)
pl = ta.pivotlow (rb, rb)
sr_levels = array.new_float(21, na)
prdhighest = ta.highest(prd)
prdlowest = ta.lowest(prd)
cwidth = percWidth(prd, ChannelW)
zonePerc = percWidth(300, zoneWidth)
aas = array.new_bool(41, true)
u1 = 0.0, u1 := nz(u1 )
d1 = 0.0, d1 := nz(d1 )
highestph = 0.0, highestph := highestph
lowestpl = 0.0, lowestpl := lowestpl
var sr_levs = array.new_float(21, na)
label hlabel = na, label.delete(hlabel )
label llabel = na, label.delete(llabel )
var sr_lines = array.new_line(21, na)
var sr_linesH = array.new_line(21, na)
var sr_linesL = array.new_line(21, na)
var sr_linesF = array.new_linefill(21, na)
var sr_labels = array.new_label(21, na)
if ph or pl
for x = 0 to array.size(sr_levels) - 1
array.set(sr_levels, x, na)
highestph := prdlowest
lowestpl := prdhighest
countpp = 0
for x = 0 to prd
if na(close )
break
if not na(ph ) or not na(pl )
highestph := math.max(highestph, nz(ph , prdlowest), nz(pl , prdlowest))
lowestpl := math.min(lowestpl, nz(ph , prdhighest), nz(pl , prdhighest))
countpp += 1
if countpp > 40
break
if array.get(aas, countpp)
upl = (ph ? high : low ) + cwidth
dnl = (ph ? high : low ) - cwidth
u1 := countpp == 1 ? upl : u1
d1 := countpp == 1 ? dnl : d1
tmp = array.new_bool(41, true)
cnt = 0
tpoint = 0
for xx = 0 to prd
if na(close )
break
if not na(ph ) or not na(pl )
chg = false
cnt += 1
if cnt > 40
break
if array.get(aas, cnt)
if not na(ph )
if high <= upl and high >= dnl
tpoint += 1
chg := true
if not na(pl )
if low <= upl and low >= dnl
tpoint += 1
chg := true
if chg and cnt < 41
array.set(tmp, cnt, false)
if tpoint >= strengthSR
for g = 0 to 40 by 1
if not array.get(tmp, g)
array.set(aas, g, false)
if ph and countpp < 21
array.set(sr_levels, countpp, high )
if pl and countpp < 21
array.set(sr_levels, countpp, low )
// Plot SR
var line highest_ = na, line.delete(highest_)
var line lowest_ = na, line.delete(lowest_)
var line highest_fill1 = na, line.delete(highest_fill1)
var line highest_fill2 = na, line.delete(highest_fill2)
var line lowest_fill1 = na, line.delete(lowest_fill1)
var line lowest_fill2 = na, line.delete(lowest_fill2)
hi_col = close >= highestph ? colorSup : colorRes
lo_col = close >= lowestpl ? colorSup : colorRes
if enableSR
highest_ := line.new(bar_index - 311, highestph, bar_index, highestph, xloc.bar_index, expandSR ? extend.both : extend.right, hi_col, style, lineWidth)
lowest_ := line.new(bar_index - 311, lowestpl , bar_index, lowestpl , xloc.bar_index, expandSR ? extend.both : extend.right, lo_col, style, lineWidth)
if useHLZones
highest_fill1 := line.new(bar_index - 311, highestph + zonePerc, bar_index, highestph + zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na)
highest_fill2 := line.new(bar_index - 311, highestph - zonePerc, bar_index, highestph - zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na)
lowest_fill1 := line.new(bar_index - 311, lowestpl + zonePerc , bar_index, lowestpl + zonePerc , xloc.bar_index, expandSR ? extend.both : extend.right, na)
lowest_fill2 := line.new(bar_index - 311, lowestpl - zonePerc , bar_index, lowestpl - zonePerc , xloc.bar_index, expandSR ? extend.both : extend.right, na)
linefill.new(highest_fill1, highest_fill2, color.new(hi_col, 80))
linefill.new(lowest_fill1 , lowest_fill2 , color.new(lo_col, 80))
if ph or pl
for x = 0 to array.size(sr_lines) - 1
array.set(sr_levs, x, array.get(sr_levels, x))
for x = 0 to array.size(sr_lines) - 1
line.delete(array.get(sr_lines, x))
line.delete(array.get(sr_linesH, x))
line.delete(array.get(sr_linesL, x))
linefill.delete(array.get(sr_linesF, x))
if array.get(sr_levs, x) and enableSR
line_col = close >= array.get(sr_levs, x) ? colorSup : colorRes
array.set(sr_lines, x, line.new(bar_index - 355, array.get(sr_levs, x), bar_index, array.get(sr_levs, x), xloc.bar_index, expandSR ? extend.both : extend.right, line_col, style, lineWidth))
if useZones
array.set(sr_linesH, x, line.new(bar_index - 355, array.get(sr_levs, x) + zonePerc, bar_index, array.get(sr_levs, x) + zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na))
array.set(sr_linesL, x, line.new(bar_index - 355, array.get(sr_levs, x) - zonePerc, bar_index, array.get(sr_levs, x) - zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na))
array.set(sr_linesF, x, linefill.new(array.get(sr_linesH, x), array.get(sr_linesL, x), color.new(line_col, 80)))
for x = 0 to array.size(sr_labels) - 1
label.delete(array.get(sr_labels, x))
if array.get(sr_levs, x) and enableSR
lab_loc = close >= array.get(sr_levs, x) ? label.style_label_up : label.style_label_down
lab_col = close >= array.get(sr_levs, x) ? colorSup : colorRes
array.set(sr_labels, x, label.new(bar_index + label_loc, array.get(sr_levs, x), str.tostring(math.round_to_mintick(array.get(sr_levs, x))), color=lab_col , textcolor=#000000, style=lab_loc))
hlabel := enableSR ? label.new(bar_index + label_loc + math.round(math.sign(label_loc)) * 20, highestph, "High Level : " + str.tostring(highestph), color=hi_col, textcolor=#000000, style=label.style_label_down) : na
llabel := enableSR ? label.new(bar_index + label_loc + math.round(math.sign(label_loc)) * 20, lowestpl , "Low Level : " + str.tostring(lowestpl) , color=lo_col, textcolor=#000000, style=label.style_label_up ) : na
TMT ICT SMC - Hitesh NimjeTMT ICT SMC - Smart Money Concepts
Overview
T
he TMT ICT SMC indicator is a comprehensive, all-in-one toolkit designed for traders utilizing Smart Money Concepts (SMC) and Inner Circle Trader (ICT) methodologies. Developed by Hitesh Nimje (Thought Magic Trading), this script automates the complex task of market structure mapping, order block identification, and liquidity analysis, providing a clear, institutional-grade view of price action.
Whether you are a scalper looking for internal structure shifts or a swing trader analyzing major trend reversals, this tool adapts to your timeframe with precision.
Key Features
1. Market Structure Mapping (Internal & Swing)
* Real-Time Structure: Automatically detects and labels BOS (Break of Structure) and CHoCH (Change of Character).
* Dual-Layer Analysis:
I nternal Structure: Captures short-term momentum and minor shifts for entry refinement.
Swing Structure: Identifies the overarching trend and major pivot points.
* Strong vs. Weak Highs/Lows: visualizes significant swing points to help you identify safe invalidation levels.
* Trend Coloring: Optional feature to color candles based on the active market structure trend.
2. Advanced Order Blocks (OB)
* Auto-Detection: Plots both Internal and Swing Order Blocks automatically.
* Smart Filtering: Includes an ATR or Cumulative Mean Range filter to remove noise and only display significant institutional footprint zones.
* Mitigation Tracking: Choose how order blocks are mitigated (Close vs. High/Low) to keep your chart clean.
3. Liquidity & Gaps
* Fair Value Gaps (FVG): Automatically highlights bullish and bearish imbalances. Includes MTF (Multi-Timeframe) capabilities to see higher timeframe gaps on lower timeframe charts.
* Equal Highs/Lows (EQH/EQL): Marks potential liquidity pools where price often reverses or targets.
4. Multi-Timeframe Levels
* Plots Daily, Weekly, and Monthly High/Low levels directly on your chart to help identify macro support and resistance without switching timeframes.
5. Premium & Discount Zones
* Automatically plots the Fibonacci range of the current price leg to show Premium (expensive), Discount (cheap), and Equilibrium zones, aiding in high-probability entry placement.
Customization
* Style: Switch between a "Colored" vibrant theme or a "Monochrome" minimal theme.
* Control: Every feature can be toggled on/off. Adjust lookback periods, sensitivity thresholds, and colors to match your personal trading style.
* Modes: Choose between "Historical" (for backtesting) and "Present" (for optimized real-time performance).
How to Use
* Trend Confirmation: Use the Swing Structure labels to determine the higher timeframe bias.
* Entry Trigger: Wait for a CHoCH on the Internal Structure within a higher timeframe Order Block or FVG.
* Targeting: Use the Equal Highs/Lows (Liquidity) or opposing Order Blocks as take-profit zones.
Credits
* Author: Hitesh Nimje
* Source: Thought Magic Trading (TMT)
TRADING DISCLAIMER
RISK WARNING
Trading involves substantial risk of loss and is not suitable for all investors. Past performance is not indicative of future results. You should carefully consider whether trading is suitable for you in light of your circumstances, knowledge, and financial resources.
NO FINANCIAL ADVICE
This indicator is provided for educational and informational purposes only. It does not constitute:
* Financial advice or investment recommendations
* Buy/sell signals or trading signals
* Professional investment advice
* Legal, tax, or accounting guidance
LIMITATIONS AND DISCLAIMERS
Technical Analysis Limitations
* Pivot points are mathematical calculations based on historical price data
* No guarantee of accuracy of price levels or calculations
* Markets can and do behave irrationally for extended periods
* Past performance does not guarantee future results
* Technical analysis should be used in conjunction with fundamental analysis
Data and Calculation Disclaimers
* Calculations are based on available price data at the time of calculation
* Data quality and availability may affect accuracy
* Pivot levels may differ when calculated on different timeframes
* Gaps and irregular market conditions may cause level failures
* Extended hours trading may affect intraday pivot calculations
Market Risks
* Extreme market volatility can invalidate all technical levels
* News events, economic announcements, and market manipulation can cause gaps
* Liquidity issues may prevent execution at calculated levels
* Currency fluctuations, inflation, and interest rate changes affect all levels
* Black swan events and market crashes cannot be predicted by technical analysis
USER RESPONSIBILITIES
Due Diligence
* You are solely responsible for your trading decisions
* Conduct your own research before using this indicator
* Verify calculations with multiple sources before trading
* Consider multiple timeframes and confirm levels with other technical tools
* Never rely solely on one indicator for trading decisions
Risk Management
* Always use proper risk management and position sizing
* Set appropriate stop-losses for all positions
* Never risk more than you can afford to lose
* Consider the inherent risks of leverage and margin trading
* Diversify your portfolio and trading strategies
Professional Consultation
* Consult with qualified financial advisors before trading
* Consider your tax obligations and legal requirements
* Understand the regulations in your jurisdiction
* Seek professional advice for complex trading strategies
LIMITATION OF LIABILITY
Indemnification
The creator and distributor of this indicator shall not be liable for:
* Any trading losses, whether direct or indirect
* Inaccurate or delayed price data
* System failures or technical malfunctions
* Loss of data or profits
* Interruption of service or connectivity issues
No Warranty
This indicator is provided "as is" without warranties of any kind:
* No guarantee of accuracy or completeness
* No warranty of uninterrupted or error-free operation
* No warranty of merchantability or fitness for a particular purpose
* The software may contain bugs or errors
Maximum Liability
In no event shall the liability exceed the purchase price (if any) paid for this indicator. This limitation applies regardless of the theory of liability, whether contract, tort, negligence, or otherwise.
REGULATORY COMPLIANCE
Jurisdiction-Specific Risks
* Regulations vary by country and region
* Some jurisdictions prohibit or restrict certain trading strategies
* Tax implications differ based on your location and trading frequency
* Commodity futures and options trading may have additional requirements
* Currency trading may be regulated differently than stock trading
Professional Trading
* If you are a professional trader, ensure compliance with all applicable regulations
* Adhere to fiduciary duties and best execution requirements
* Maintain required records and reporting
* Follow market abuse regulations and insider trading laws
TECHNICAL SPECIFICATIONS
Data Sources
* Calculations based on TradingView data feeds
* Data accuracy depends on broker and exchange reporting
* Historical data may be subject to adjustments and corrections
* Real-time data may have delays depending on data providers
Software Limitations
* Internet connectivity required for proper operation
* Software updates may change calculations or functionality
* TradingView platform dependencies may affect performance
* Third-party integrations may introduce additional risks
MONEY MANAGEMENT RECOMMENDATIONS
Conservative Approach
* Risk only 1-2% of capital per trade
* Use position sizing based on volatility
* Maintain adequate cash reserves
* Avoid over-leveraging accounts
Portfolio Management
* Diversify across multiple strategies
* Don't put all capital into one approach
* Regularly review and adjust trading strategies
* Maintain detailed trading records
FINAL LEGAL NOTICES
Acceptance of Terms
* By using this indicator, you acknowledge that you have read and understood this disclaimer
* You agree to assume all risks associated with trading
* You confirm that you are legally permitted to trade in your jurisdiction
Updates and Changes
* This disclaimer may be updated without notice
* Continued use constitutes acceptance of any changes
* It is your responsibility to stay informed of updates
Governing Law
* This disclaimer shall be governed by the laws of the jurisdiction where the indicator was created
* Any disputes shall be resolved in the appropriate courts
* Severability clause: If any part of this disclaimer is invalid, the remainder remains enforceable
REMEMBER: THERE ARE NO GUARANTEES IN TRADING. THE MAJORITY OF RETAIL TRADERS LOSE MONEY. TRADE AT YOUR OWN RISK.
Contact Information:
* Creator: Hitesh_Nimje
* Phone: Contact@8087192915
* Source: Thought Magic Trading
© HiteshNimje - All Rights Reserved
This disclaimer should be prominently displayed whenever the indicator is shared, sold, or distributed to ensure users are fully aware of the risks and limitations involved in trading.
Stoch RSI Buy/Sell Signals with AlertsMy charts show HBM and CMCL graphs. The colors show you when to buy and when to sell.
The script is data-driven:
It calculates RSI and Stoch RSI based on each ticker’s own price movement.
The %K and %D lines are smoothed from that ticker’s momentum.
Signals only fire when that ticker’s %K crosses %D in the right zone.
So if CMCL is oversold and HBM is overbought, you’ll get:
✅ Green K line and green background on CMCL
❌ Red K line and red background on HBM
Even if they both show gray at the same time, it’s because neither is in a signal zone — not because the charts are duplicates.
Structure Breakout - Buy Sell IndicatorStructure Breakout - Buy Sell Indicator
📈 OVERVIEW:
A minimalist indicator that identifies market structure breakouts using swing point analysis.
Displays clear blue buy arrows and red sell arrows when price breaks key swing levels.
🔧 HOW IT WORKS:
1. Identifies swing highs and lows using configurable lookback period
2. Triggers BUY signal (blue arrow) when price closes above previous swing high
3. Triggers SELL signal (red arrow) when price closes below previous swing low
4. Uses clean visual arrows without cluttering the chart
⚙️ KEY FEATURES:
• Clean, uncluttered visual signals
• Customizable sensitivity period
• Blue arrows for buy signals (below bars)
• Red arrows for sell signals (above bars)
• No lagging repainting
• Works on all timeframes
🎯 TRADING APPLICATIONS:
• Swing trading entries
• Breakout confirmation
• Trend continuation signals
• Support/resistance breaks
⚡ SETTINGS:
• Structure Detection Period (default: 20) - Adjust sensitivity of swing detection
⚠️ RISK DISCLAIMER:
This is an educational tool. Always use proper risk management.
Past performance does not guarantee future results.
Multi-Timeframe QuartilesThis indicator helps you identify the position of price in comparison with distance to key reference levels on multiple timeframes. Statistically, when the price is opening in the lower quartile of a timeframe, there is a higher chance for that previous low to be taken, depending on the market structure already formed
N-Consecutive Candle Marker (SMA Filter & Consolidated Alert)Certainly, here is the English version of the Pine Script description for posting on TradingView.
---
## 📈 N-Consecutive Candle Marker (SMA Filter & Consolidated Alert)
### 📝 Overview
This indicator automatically displays a **signal mark** on the chart when a user-defined number ($N$) of **consecutive bullish or bearish candles** occurs.
It includes an optional **SMA (Simple Moving Average) filter** to restrict signals to conditions favoring a **short-term counter-trend (reversal) trade**. It also consolidates both bullish and bearish signals into a **single alert mechanism** for simplified management.
### ⚙️ Key Features
#### 1. N-Consecutive Candle Detection
* **Consecutive Count (N)**: The indicator detects continuous candles of the same color based on the `Consecutive Candle Count (N)` input setting.
* **Bullish Signal (Red Marker)**: A mark is placed above the high of the closing candle after the bullish sequence is complete.
* **Bearish Signal (Blue Marker)**: A mark is placed below the low of the closing candle after the bearish sequence is complete.
#### 2. SMA Filter (Counter-Trend Logic)
When **`Use SMA Filter`** is enabled, the signal conditions are filtered against the SMA, which focuses on potential **short-term bounces or pullbacks** against the broader trend.
* **Bullish Signal Condition**: The consecutive bullish candles must close **below** the SMA (`close < sma_value`). This typically targets a bounce in a downtrend.
* **Bearish Signal Condition**: The consecutive bearish candles must close **above** the SMA (`close > sma_value`). This typically targets a pullback/dip in an uptrend.
#### 3. Performance & Alert Consolidation
* **Display Limit**: Enabling **`Use Display Limit`** restricts the plotted marks to the **last N bars** defined by `Limit Display to Last N Bars`. This automatically deletes old labels, helping to **maintain chart performance**.
* **Consolidated Alert**: Both bullish and bearish signals trigger the same **single `alert()` function**, simplifying the process of setting up notifications in TradingView.
### 💡 How to Use
1. Add the indicator to your chart.
2. Set the **`Consecutive Candle Count (N)`** to your desired number of consecutive bars (e.g., 3, 4, etc.).
3. If you want to use the reversal filter, switch **`Use SMA Filter (On/Off)`** to **On**. Adjust the `SMA Period` as needed.
4. In the TradingView alert creation menu, select this indicator and choose **"Any function call"** or **"N-Consecutive Candle Marker (SMA Filter & Consolidated Alert)"** to set up your consolidated alert.
> ⚠️ **Disclaimer**: This indicator detects specific candle patterns. Always combine this signal with other forms of technical analysis and context for making trading decisions.
ご要望いただいたTradingViewに投稿する際のインジケーターの説明文として、機能、使い方、フィルターロジックに焦点を当てた文章を作成しました。
この説明文は、Pine Scriptの公開ライブラリの投稿テンプレートに合わせて、**概要、使い方、主要機能**を明確に伝える構造にしています。
---
## 📈 N-Consecutive Candle Marker (SMA Filter & Consolidated Alert)
### 📝 概要 (Overview)
このインジケーターは、設定した本数($N$)の**連続した陽線または陰線**が出現した際に、チャート上に**サイン(マーク)**を自動で表示します。
オプションで**SMA(単純移動平均線)フィルター**を適用することができ、トレンドの状況に応じた**短期的な逆張りサイン**に限定することが可能です。また、陽線サインと陰線サインを**一つのアラート**で統合して通知できるため、管理が容易です。
### ⚙️ 主要機能 (Key Features)
#### 1. N連続ローソク足の検出
* **連続本数の設定 (N)**: `Consecutive Candle Count (N)` の設定値に基づき、連続した同色ローソク足を検出します。
* **陽線サイン (Red Marker)**: 連続陽線が完了した足の高値の上にマークを表示します。
* **陰線サイン (Blue Marker)**: 連続陰線が完了した足の安値の下にマークを表示します。
#### 2. SMAフィルター (逆張りロジック)
`Use SMA Filter` を **オン** にすることで、サインの出現条件にトレンドフィルターを追加します。これは、トレンド方向に対する**一時的な反発・押し目**を狙う、**逆張り的なロジック**を採用しています。
* **陽線サインの出現条件**: 終値がSMAの**下**にある状態で、連続陽線が出現した場合。
* **陰線サインの出現条件**: 終値がSMAの**上**にある状態で、連続陰線が出現した場合。
#### 3. パフォーマンス最適化とアラート統合
* **表示制限**: `Use Display Limit` をオンにすると、描画されるマークの数を**直近のN本**に制限し、古いマークを自動で削除することで、チャート描画の**パフォーマンスを維持**します。
* **統合アラート**: 陽線・陰線どちらのサインが出た場合でも、**単一の `alert()` 関数**でメッセージを出し分けます。これにより、アラート設定をシンプルに保てます。
### 💡 使い方 (How to Use)
1. インジケーターをチャートに追加します。
2. **`Consecutive Candle Count (N)`** を希望する連続本数に設定します(例: 3本連続、4本連続など)。
3. トレンドフィルターを使用したい場合は、**`Use SMA Filter (On/Off)`** をオンに切り替えます。
4. TradingViewのアラート設定画面で、このインジケーターを選択し、**「どんな関数呼び出しでも」**または**「N-Consecutive Candle Marker (SMA Filter & Consolidated Alert)」**を選んでアラートを設定してください。
> ⚠️ **注意点**: このインジケーターは、連続足という特定のパターンのみを検出するものです。トレード判断を行う際は、他のテクニカル分析や環境認識と組み合わせてご利用ください。
Trend Step Channel [BigBeluga]🔵 OVERVIEW
Trend Step Channel identifies directional bias by forming a dynamic volatility-based step channel. It detects trend shifts when candle lows close above the upper band (bullish) or when candle highs drop below the lower band (bearish). A step-style midline tracks the trend evolution, while an integrated dashboard shows price positioning percentages across multiple timeframes.
🔵 CONCEPTS
ATR-Based Channel — The indicator constructs upper and lower channel boundaries using ATR distance around a single adaptive trend line, providing automatic scaling with volatility.
Trend Direction Logic —
• Low above upper band → uptrend confirmation.
• High below lower band → downtrend confirmation.
Step Trend Line — A reactive midline that locks onto price swings, stepping upward or downward as new trend confirmations occur.
Channel Width — Defines the total volatility range around the midline; a wider channel smooths market noise, while a narrower one reacts faster.
Price Position Ratio — Calculates the relative position of the close within the channel, from 0% (bottom) to 100% (top).
🔵 FEATURES
Volatility-Adaptive Channel — Expands and contracts dynamically to match market volatility, maintaining consistent distance scaling.
Configurable MA Source — Choose from SMA, EMA, SMMA, WMA, or VWMA as the base smoothing method.
Color-Coded Step Line —
• Green indicates an uptrend.
• Orange indicates a downtrend.
Channel Fill Visualization — Semi-transparent fills highlight active volatility zones for clear trend identification.
Price Position Label — Displays a “<” marker and percentage at the channel edge showing how far the current close is from the lower or upper band.
Multi-Timeframe Dashboard —
• Displays alignment across 1H–5H charts.
• Each cell shows an arrow (↑ / ↓) with price % positioning.
• Cell background color reflects bullish or bearish bias.
Real-Time Updating — The channel, midline, and dashboard refresh dynamically every bar for continuous feedback.
🔵 HOW TO USE
Trend Confirmation —
• Bullish trend forms when candle low closes above the upper band.
• Bearish trend forms when candle high closes below the lower band.
Trend Continuation — Maintain bias while the step line color remains consistent.
Volatility Breakouts — Sudden candle breaks outside the band suggest new directional strength.
Dashboard Alignment — Confirm trend consistency across multiple timeframes before entering trades.
Entry Planning — In uptrends, consider entries near the lower band; in downtrends, focus on upper-band rejections.
Price Position Insight — Use the % label to judge whether price is extended (near 100%) or compressed (near 0%) within the channel.
🔵 CONCLUSION
Trend Step Channel delivers a precise, volatility-driven view of trend structure using ATR-based boundaries and a step-line framework. The integrated dashboard, color-coded channel, and live positioning metrics give traders a complete picture of market direction, trend strength, and price location within evolving conditions.
Stage 2 Trend Signals (10/21/50/200) *Trend-following indicator designed to focus on **strong Stage 2 uptrends**, not bottom-fishing or chop.
* Plots **10 EMA, 21 EMA, 50 SMA, and 200 SMA** as core moving averages.
* Uses a **trend filter** so buy signals only occur when:
* Price is above the **50 SMA** (and optionally above the **200 SMA**), and
* The **50 SMA is above the 200 SMA**, reflecting classic Stage 2 alignment.
* Prints a **green “BUY” label** when the **10 EMA crosses above the 21 EMA** within this bullish environment, signaling momentum turning up in an established uptrend.
* Prints a **red “SELL” label** when the **10 EMA crosses below the 21 EMA** or when price is in a bearish context and closes below the 21 EMA, prompting risk reduction as trend/momentum weaken.
* Light **green background shading** highlights periods where the bullish Stage 2 conditions are active (“trend-on” zones).
* Works on **any timeframe**; commonly used on:
* **Weekly charts** for big-picture trend confirmation.
* **Daily charts** for swing entries, exits, and active trade management.
Stoch RSI Buy/Sell Signals with AlertsThis color code helps a novice know when to buy and when to sell
What Each Section Does
Header: //@version=5 tells TradingView which Pine Script version to use.
Indicator setup: indicator("Stoch RSI Buy/Sell Signals with Alerts", overlay=false) names your script and sets it to plot in a separate panel.
Inputs: Adjustable parameters for RSI length, Stoch length, and smoothing. You can tweak these in the settings panel.
Calculations: Builds RSI, then Stoch RSI, then smooths into %K and %D lines.
Signals: Defines buy (green) and sell (red) conditions based on crossovers and thresholds.
Color logic: Dynamically changes the %K line color (green/red/gray).
Plots: Draws %K (colored) and %D (blue) lines.
Background shading: Adds light green/red shading when signals fire for easy visual scanning.
Alerts: Pops up TradingView alerts when buy/sell conditions trigger, so you don’t miss them.
✅ Publishing Notes
Paste this into a new blank Pine Script editor starting at line 1.
Save and add it to your chart.
You’ll see the %K line flip colors, background shading, and alerts firing when conditions are met.






















