Trader Dogout
“Trader Dogout — Official team template.
Combines EMA20, EMA200, and optimized volume for a clear read of trend, momentum, and decision zones.
Designed for traders who operate with precision, simplicity, and zero distractions.
Perfect for both day trading and swing trading.”
Indikator dan strategi
ICT Macro Slot Algo Event📊 Overview
A powerful multi-timeframe trading indicator that combines Institutional Macro Session Tracking identify optimal trading windows throughout the day. This tool helps traders align with institutional flow patterns and algorithmic activity across major sessions.
🎯 Key Features
1. Macro Algo Event Sessions
Tracks 6 key institutional time windows during NY Session:
NY Sweep (08:50-09:10) - Opening balance flows
Silver Bullet #1 (09:50-10:10) - First major macro move
Silver Bullet #2 (10:50-11:10) - Second chance/retest opportunity
Lunch Macro (11:50-12:10) - Mid-day repositioning
Post-Lunch Rebalance (13:10-13:40) - Post-lunch adjustments
NY Closing Macros (15:15-15:45) - End-of-day flows
Etwas31 Precision zones and trendTitle: Etwas31 Precision zones and trend
Overview: Get a complete market overview at a single glance. This script combines a comprehensive trend/volatility dashboard with automated, high-precision supply and demand zones. It filters out noise and highlights key market structures to improve your trading accuracy.
Key Features:
1. 📊 Advanced MTF Dashboard (5m - 1W)
Trend Monitor: Uses EMA 20 & 50 alignment to accurately detect Bullish, Bearish, or Neutral (Choppy) markets. No more guessing the trend.
Volatility Scanner: Utilizing ATR logic, it signals whether the market is active (High ⚡) or dormant (Low 💤) for each timeframe.
2. 🎯 Precision Support & Resistance Zones
Real Structure: Unlike simple lines, zones are drawn based on candle wicks (High to Body / Low to Body) to reflect the actual "thickness" of market interest.
Visual Hierarchy:
Weak Zones (15m, 30m): Displayed as Hollow/Dashed boxes. Ideal for scalping or short-term targets.
Strong Zones (1H, 4H, 1D, 1W): Displayed as Solid/Filled boxes. These are key levels for reversals and major trend continuation.
Auto-Extension: Zones automatically extend to the current price action for easy tracking.
3. ⚙️ Customizable & Clean
Fully customizable colors and visibility settings.
Optimized to prevent chart clutter while providing maximum information.
How to Use:
Use the Dashboard to align your trades with the higher timeframe trend (e.g., trade with the 4H trend).
Wait for Volatility (⚡) to confirm momentum.
Enter trades when price reacts at Solid Zones (Strong S/R) or use Hollow Zones for intraday scalp targets.
FVG – (auto close + age) GR V1.0FVG – Fair Value Gaps (auto close + age counter)
Short Description
Automatically detects Fair Value Gaps (FVGs) on the current timeframe, keeps them open until price fully fills the gap or a maximum bar age is reached, and shows how many candles have passed since each FVG was created.
Full Description
This indicator automatically finds and visualizes Fair Value Gaps (FVGs) using the classic 3-candle ICT logic on any timeframe.
It works on whatever timeframe you apply it to (M1, M5, H1, H4, etc.) and adapts to the current chart.
FVG detection logic
The script uses a 3-candle pattern:
Bullish FVG
Condition:
low > high
Gap zone:
Lower boundary: high
Upper boundary: low
Bearish FVG
Condition:
high < low
Gap zone:
Lower boundary: high
Upper boundary: low
Each detected FVG is drawn as a colored box (green for bullish, red for bearish in this version, but you can adjust colors in the inputs).
Auto-close rules
An FVG remains on the chart until one of the following happens:
Full fill / mitigation
A bullish FVG closes when any candle’s low goes down to or below the lower boundary of the gap.
A bearish FVG closes when any candle’s high goes up to or above the upper boundary of the gap.
Maximum bar age reached
Each FVG has a maximum lifetime measured in candles.
When the number of candles since its creation reaches the configured maximum (default: 200 bars), the FVG is automatically removed even if it has not been fully filled.
This keeps the chart cleaner and prevents very old gaps from cluttering the view.
Age counter (labels inside the boxes)
Inside every FVG box there is a small label that:
Shows how many bars have passed since the FVG was created.
Moves together with the right edge of the box and stays vertically centered in the gap.
This makes it easy to distinguish fresh gaps from older ones and prioritize which zones you want to pay attention to.
Inputs
FVG color – Main fill color for all FVG boxes.
Show bullish FVGs – Turn bullish gaps on/off.
Show bearish FVGs – Turn bearish gaps on/off.
Max bar age – Maximum number of candles an FVG is allowed to stay on the chart before it is removed.
Usage
Works on any symbol and any timeframe.
Can be combined with your own ICT / SMC concepts, order blocks, session ranges, market structure, etc.
You can also choose to only display bullish or only bearish FVGs depending on your directional bias.
Disclaimer
This script is for educational and informational purposes only and is not financial advice. Always do your own research and use proper risk management when trading.
Coinbase Premium Index (Custom Tickers)📊 Coinbase Premium Index (Auto Symbol Support)
1. Overview
The Coinbase Premium Index is a widely used indicator to gauge the sentiment difference between US institutional investors (Coinbase Pro) and global retail/futures traders (Binance).
This script calculates the percentage difference between the Coinbase (USD pair) price and the Binance (USDT pair) price.
2. Key Features
🔄 Auto Symbol Matching (New): You no longer need to manually change tickers when switching charts.
If you are looking at a SOL/USDT chart, the indicator automatically detects "SOL" and compares COINBASE:SOLUSD vs BINANCE:SOLUSDT.
🛠 Manual Mode: Includes a manual override option if you wish to compare specific fixed tickers (e.g., strictly BTC).
🎨 Dynamic Visuals:
Histogram: Color-coded bars (Green/Red) indicate positive or negative premiums.
Smart Label: Displays the real-time premium value on the chart. The label color adapts to the trend, and hovering over it shows a Tooltip confirming exactly which tickers are being compared.
3. How to Interpret
The premium indicates the flow of funds and buying pressure:
🟢 Positive Premium (Green Bar):
Coinbase Price > Binance Price
Interpretation: Strong buying pressure from US institutions or spot whales. Often considered a Bullish signal.
🔴 Negative Premium (Red Bar):
Coinbase Price < Binance Price
Interpretation: Strong selling from US investors, or overheated buying in the offshore futures market (Binance). Often considered a Bearish or mean-reversion signal.
4. Settings Guide
Ticker Mode:
Auto (Current Chart): Automatically sets the comparison based on your current chart's base currency (Recommended).
Manual (Custom): Uses the specific tickers defined in the manual input fields below.
Manual Inputs: Enter tickers here if using Manual Mode (Default: COINBASE:BTCUSD vs BINANCE:BTCUSDT).
Bar & Label Settings: Customize colors, transparency, and the vertical position (Y-Offset) of the data label to fit your chart layout.
SMC BOS/CHoCH + Auto Fib (5m/any TF) durane//@version=6
indicator('SMC BOS/CHoCH + Auto Fib (5m/any TF)', overlay = true, max_lines_count = 200, max_labels_count = 200)
// --------- Inputs ----------
left = input.int(3, 'Pivot Left', minval = 1)
right = input.int(3, 'Pivot Right', minval = 1)
minSwingSize = input.float(0.0, 'Min swing size (price units, 0 = disabled)', step = 0.1)
fib_levels = input.string('0.0,0.236,0.382,0.5,0.618,0.786,1.0', 'Fibonacci levels (comma separated)')
show_labels = input.bool(true, 'Show BOS/CHoCH labels')
lookbackHighLow = input.int(200, 'Lookback for structure (bars)')
// Parse fib levels
strs = str.split(fib_levels, ',')
var array fibs = array.new_float()
if barstate.isfirst
for s in strs
array.push(fibs, str.tonumber(str.trim(s)))
// --------- Find pivot highs / lows ----------
pHigh = ta.pivothigh(high, left, right)
pLow = ta.pivotlow(low, left, right)
// store last confirmed swings
var float lastSwingHighPrice = na
var int lastSwingHighBar = na
var float lastSwingLowPrice = na
var int lastSwingLowBar = na
if not na(pHigh)
// check min size
if minSwingSize == 0 or pHigh - nz(lastSwingLowPrice, pHigh) >= minSwingSize
lastSwingHighPrice := pHigh
lastSwingHighBar := bar_index - right
lastSwingHighBar
if not na(pLow)
if minSwingSize == 0 or nz(lastSwingHighPrice, pLow) - pLow >= minSwingSize
lastSwingLowPrice := pLow
lastSwingLowBar := bar_index - right
lastSwingLowBar
// --------- Detect BOS & CHoCH (simple robust logic) ----------
var int lastBOSdir = 0 // 1 = bullish BOS (price broke above), -1 = bearish BOS
var int lastBOSbar = na
var float lastBOSprice = na
// Look for price closes beyond last structural swings within lookback
// Bullish BOS: close > recent swing high
condBullBOS = not na(lastSwingHighPrice) and close > lastSwingHighPrice and bar_index - lastSwingHighBar <= lookbackHighLow
// Bearish BOS: close < recent swing low
condBearBOS = not na(lastSwingLowPrice) and close < lastSwingLowPrice and bar_index - lastSwingLowBar <= lookbackHighLow
bosTriggered = false
chochTriggered = false
if condBullBOS
bosTriggered := true
if lastBOSdir != 1
// if previous BOS direction was -1, this is CHoCH (change of character)
chochTriggered := lastBOSdir == -1
chochTriggered
lastBOSdir := 1
lastBOSbar := bar_index
lastBOSprice := close
lastBOSprice
if condBearBOS
bosTriggered := true
if lastBOSdir != -1
chochTriggered := lastBOSdir == 1
chochTriggered
lastBOSdir := -1
lastBOSbar := bar_index
lastBOSprice := close
lastBOSprice
// --------- Plot labels for BOS / CHoCH ----------
if bosTriggered and show_labels
if chochTriggered
label.new(bar_index, high, text = lastBOSdir == 1 ? 'CHoCH ↑' : 'CHoCH ↓', style = label.style_label_up, color = color.new(color.orange, 0), textcolor = color.white, yloc = yloc.abovebar)
else
label.new(bar_index, high, text = lastBOSdir == 1 ? 'BOS ↑' : 'BOS ↓', style = label.style_label_left, color = lastBOSdir == 1 ? color.green : color.red, textcolor = color.white, yloc = yloc.abovebar)
// --------- Auto Fibonacci drawing ----------
var array fib_lines = array.new_line()
var array fib_labels = array.new_label()
var int lastFibId = na
// Function to clear previous fibs
f_clear() =>
if array.size(fib_lines) > 0
for i = 0 to array.size(fib_lines) - 1
line.delete(array.get(fib_lines, i))
if array.size(fib_labels) > 0
for i = 0 to array.size(fib_labels) - 1
label.delete(array.get(fib_labels, i))
array.clear(fib_lines)
array.clear(fib_labels)
// Decide anchors for fib: if lastBOSdir==1 (bullish) anchor from lastSwingLow -> lastSwingHigh
// if lastBOSdir==-1 (bearish) anchor from lastSwingHigh -> lastSwingLow
if lastBOSdir == 1 and not na(lastSwingLowPrice) and not na(lastSwingHighPrice)
// bullish fib: low -> high
startPrice = lastSwingLowPrice
endPrice = lastSwingHighPrice
// draw
f_clear()
for i = 0 to array.size(fibs) - 1 by 1
lvl = array.get(fibs, i)
priceLevel = startPrice + (endPrice - startPrice) * lvl
ln = line.new(x1 = lastSwingLowBar, y1 = priceLevel, x2 = bar_index, y2 = priceLevel, xloc = xloc.bar_index, extend = extend.right, color = color.new(color.green, 60), width = 1, style = line.style_solid)
array.push(fib_lines, ln)
lab = label.new(bar_index, priceLevel, text = str.tostring(lvl * 100, '#.0') + '%', style = label.style_label_right, color = color.new(color.green, 80), textcolor = color.white, yloc = yloc.price)
array.push(fib_labels, lab)
if lastBOSdir == -1 and not na(lastSwingHighPrice) and not na(lastSwingLowPrice)
// bearish fib: high -> low
startPrice = lastSwingHighPrice
endPrice = lastSwingLowPrice
f_clear()
for i = 0 to array.size(fibs) - 1 by 1
lvl = array.get(fibs, i)
priceLevel = startPrice + (endPrice - startPrice) * lvl
ln = line.new(x1 = lastSwingHighBar, y1 = priceLevel, x2 = bar_index, y2 = priceLevel, xloc = xloc.bar_index, extend = extend.right, color = color.new(color.red, 60), width = 1, style = line.style_solid)
array.push(fib_lines, ln)
lab = label.new(bar_index, priceLevel, text = str.tostring(lvl * 100, '#.0') + '%', style = label.style_label_right, color = color.new(color.red, 80), textcolor = color.white, yloc = yloc.price)
array.push(fib_labels, lab)
// --------- Optional: plot lastSwing points ----------
plotshape(not na(lastSwingHighPrice) ? lastSwingHighPrice : na, title = 'LastSwingHigh', location = location.absolute, style = shape.triangledown, size = size.tiny, color = color.red, offset = 0)
plotshape(not na(lastSwingLowPrice) ? lastSwingLowPrice : na, title = 'LastSwingLow', location = location.absolute, style = shape.triangleup, size = size.tiny, color = color.green, offset = 0)
// --------- Alerts ----------
alertcondition(bosTriggered and lastBOSdir == 1, title = 'Bullish BOS', message = 'Bullish BOS detected on {{ticker}} @ {{close}}')
alertcondition(bosTriggered and lastBOSdir == -1, title = 'Bearish BOS', message = 'Bearish BOS detected on {{ticker}} @ {{close}}')
alertcondition(chochTriggered, title = 'CHoCH Detected', message = 'CHoCH detected on {{ticker}} @ {{close}}')
// End
ICT Macro Slot Algo Event📊 Overview
A powerful multi-timeframe trading indicator that combines Institutional Macro Session Tracking to identify optimal trading windows throughout the day. This tool helps traders align with institutional flow patterns and algorithmic activity across major sessions.
🎯 Key Features
1. Macro Algo Event Sessions
Tracks 6 key institutional time windows during NY Session:
NY Sweep (08:50-09:10) - Opening balance flows
Silver Bullet #1 (09:50-10:10) - First major macro move
Silver Bullet #2 (10:50-11:10) - Second chance/retest opportunity
Lunch Macro (11:50-12:10) - Mid-day repositioning
Post-Lunch Rebalance (13:10-13:40) - Post-lunch adjustments
NY Closing Macros (15:15-15:45) - End-of-day flows
Volume Z-Score// This indicator calculates the Z-Score of trading volume to identify
// statistically significant volume spikes. It uses a dynamic percentile-based
// threshold to highlight extreme volume events.
//
// How it works:
// - Z-Score measures how many standard deviations the current volume is from the mean
// - The threshold line represents the top 1% (99th percentile) of historical Z-Score values
// - When volume Z-Score exceeds the threshold, the line turns red
//
// Use cases:
// - Spot unusual institutional activity or large block trades
// - Identify potential breakout or breakdown points with volume confirmation
// - Filter out noise by focusing only on statistically extreme volume events
//
// Parameters:
// - Period Length: Lookback period for calculating mean and standard deviation
// - Percentile Threshold: Defines the extreme volume cutoff (default 99 = top 1%)
// ===================================
HPAS mean reversion strategy testerTakes Krown HPAS values hardcoded and simulates longs and short with configurable standard deviation multiplier TP/SL. Best used on lower timeframes
My script// @version=5 indicator("Custom LuxAlgo-Style Levels", overlay=true, max_lines_count=500)
// --- Trend Detection (EMA Based) fastEMA = ta.ema(close, 9) slowEMA = ta.ema(close, 21) trendUp = fastEMA > slowEMA trendDown = fastEMA < slowEMA
plot(fastEMA, title="Fast EMA", color=color.new(color.blue, 0)) plot(slowEMA, title="Slow EMA", color=color.new(color.orange, 0))
// --- Buy / Sell Signals buySignal = trendUp and ta.crossover(fastEMA, slowEMA) sellSignal = trendDown and ta.crossunder(fastEMA, slowEMA)
plotshape(buySignal, title="Buy", style=shape.labelup, color=color.new(color.green,0), size=size.small, text="BUY") plotshape(sellSignal, title="Sell", style=shape.labeldown, color=color.new(color.red,0), size=size.small, text="SELL")
// --- Auto Support & Resistance length = 20 sup = ta.lowest(length) res = ta.highest(length)
plot(sup, title="Support", color=color.new(color.green,70), linewidth=2) plot(res, title="Resistance", color=color.new(color.red,70), linewidth=2)
// --- Market Structure (Simple Swing High/Low) sh = ta.highest(high, 5) == high sl = ta.lowest(low, 5) == low
plotshape(sh, title="Swing High", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny) plotshape(sl, title="Swing Low", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny)
// --- Alerts alertcondition(buySignal, "Buy Signal", "Trend Buy Signal Detected") alertcondition(sellSignal, "Sell Signal", "Trend Sell Signal Detected")
Day Separators Description:
This script visually separates the trading chart by days of the week. Each day is highlighted with a distinct background color or vertical line, making it easier to analyze daily price patterns and trading activity. Useful for spotting trends, comparing daily performance, or planning strategies based on weekday behavior.
Features:
Divides the chart by weekdays (Monday to Sunday).
Optional background shading or vertical lines for each day.
Customizable colors and line styles for better visibility.
Works on any timeframe.
Use Cases:
Identify patterns or anomalies on specific weekdays.
Track performance trends across the week.
Simplify intraday and daily analysis for more informed trading decisions.
Intraday Close Price VariationShows in the graph the intraday variation, being useful when using the replay feature.
Daily vs Monthly VWAP CrossoverDaily vs Monthly VWAP Crossover Strategy
Description:
Overview This indicator is a trend-following tool designed to identify significant shifts in market sentiment by comparing short-term institutional value against the longer-term trend. It utilizes Anchored VWAP (Volume Weighted Average Price) logic to track the average price paid by traders for the current Day versus the current Month.
How It Works Unlike standard Moving Averages which lag significantly, VWAP factors in volume, making it a preferred benchmark for institutional traders.
Daily VWAP (Fast Line): Anchors at the start of the current trading day. It represents the intraday equilibrium price.
Monthly VWAP (Slow Line): Anchors at the start of the current month. It represents the broader value consensus for the month.
The indicator calculates these values cumulatively on every tick/bar, regardless of the chart timeframe selected (e.g., 30m, 1h).
Trading Logic & Signals The strategy is based on the concept of value migration:
BUY Signal (Bullish Reversal): Triggers when the Daily VWAP crosses ABOVE the Monthly VWAP. This suggests that short-term buying pressure and volume are pushing the price higher than the monthly average cost basis, indicating a potential breakout or trend continuation.
SELL Signal (Bearish Reversal): Triggers when the Daily VWAP crosses BELOW the Monthly VWAP. This indicates that intraday weakness has dragged the price below the month's average value, signaling potential downside momentum.
Features
Visual Crossovers: Clearly marked "B" (Buy) and "S" (Sell) labels on the chart.
Trend Background: The background color changes subtly (Green/Red) to indicate the current dominance of the Daily vs. Monthly trend.
Alerts: Fully compatible with TradingView alerts for real-time notifications on crossovers.
Best Practices
Timeframe: Designed optimally for intraday charts such as 30-minute or 1-hour timeframes.
Confirmation: As with any VWAP strategy, this works best when combined with price action analysis (e.g., breakout of key resistance) rather than used blindly in choppy, sideways markets.
Daily vs Intraday Candle Match Strategy고죠 훈의 차트공부방
Gojo Hoon’s Trading Room
전일 종가 대비 현재 일봉 방향과 시간봉 방향이 일치할 때 진입
Trade when current daily direction (vs. previous close) matches the hourly/15-minute candle direction.
Divergence Channels Indicator — JudasBulletUnique Buy/Sell Indicator. Place stoploss above/below 18 EMA. Low risk/high reward. My No.1 indicator on every chart.
Kill Zone Strategy - Exact Match고죠 훈의 차트공부방
Gojo Hoon’s Trading Room
Kill Zone 시간대 방향성과 일중 추세의 상관관계
The 9–10 AM Kill Zone candle on the KOSPI chart determines the day’s long or short trading direction.
Multi Time Frame EMA & MA IndicatorThis indicator automatically applies prime-number EMAs and MAs based on the current chart timeframe, using faster cool-tone EMAs and slower warm-tone MAs to clearly distinguish momentum vs trend.
It adapts dynamically for 1m, 5m, 15m, 1H, 4H, and 1D charts, and uses a visual hierarchy where thinner lines represent faster averages and thicker lines represent slower ones, ensuring clarity in both light and dark themes.
An on-chart label displays which EMA and MA lengths are active for the selected timeframe.
Smoothed Log RSIMain purpose is to identify the regime change from trend to ranging/choppy environment.
For example if the logRSI turns green , there's good chances the downtrend will be less aggressive.
If the logRSI turns red , there's good chances we don't continue to pump aggressively.
Basically high risk of longing or shorting the asset once it turns green/red.
RealBody Donchian ChannelsThis is an enhancement of the built-in TradingView Donchian Channel indicator.A technical variation of the standard DC, it utilizes candlestick real body data. Instead of using the absolute high and low (shadows) for extreme value calculation, this indicator derives the channel boundaries from the highest Max(Open, Close) and the lowest Min(Open, Close) within the specified length. This approach filters out noise from wicks/shadows, providing a cleaner look at sustained price ranges defined by buying and selling pressure between the open and close.
tdxh short/ This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © ChartPrime & User Customized
// 抗插针版:引入实体止损逻辑,专治影线扫损
//@version=5
indicator("SR空单指标 (抗插针版)", shorttitle="SR Anti-Wick", overlay=true, max_boxes_count=500, max_labels_count=500)
辰锋// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © chenfwng88888
//@version=6
indicator("辰锋", shorttitle="辰锋", overlay=true)
// 关键EMA均线组
plot(ta.ema(close, 12), title="13", color=color.rgb(230, 202, 58), linewidth=1) // 黄色
plot(ta.ema(close, 24), title="24", color=color.rgb(208, 35, 208), linewidth=1) // 粉色
plot(ta.ema(close, 36), title="38", color=color.rgb(129, 169, 238), linewidth=1) // 墨绿
plot(ta.ema(close, 52), title="52", color=color.rgb(39, 208, 226), linewidth=1) // 蓝绿色
plot(ta.ema(close, 104), title="104", color=color.rgb(222, 109, 57), linewidth=1) // 棕色
// Vegas Channel (added EMAs)
ema144 = ta.ema(close, 144)
ema169 = ta.ema(close, 169)
plot(ema144, title="EMA 144", color=color.new(#e3ebf7, 0), linewidth=1)
plot(ema169, title="EMA 169", color=color.new(#e7e7f5, 0), linewidth=1)
// Fill between EMA 144 and EMA 169 with light blue background
fill(plot1 = plot(ema144, display=display.none),
plot2 = plot(ema169, display=display.none),
color = color.new(#deeff4, 70), title = "144-169 Area")
// Colored candles based on volume and price movement
isUp = close > open
isDown = close < open
highVolume = volume > ta.sma(volume, 50) * 3 // 50-period average + 50% threshold
// Define colors
bullishColor = color.new(#a5f1a5, 0) // Light green
bearishColor = color.new(#f2b661, 0) // Orange
// Plot candles
barcolor(isUp and highVolume ? bullishColor : isDown and highVolume ? bearishColor : na)
辰锋// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © chenfwng88888
//@version=6
indicator("辰锋", shorttitle="辰锋", overlay=true)
// 关键EMA均线组
plot(ta.ema(close, 12), title="13", color=color.rgb(230, 202, 58), linewidth=1) // 黄色
plot(ta.ema(close, 24), title="24", color=color.rgb(208, 35, 208), linewidth=1) // 粉色
plot(ta.ema(close, 36), title="38", color=color.rgb(129, 169, 238), linewidth=1) // 墨绿
plot(ta.ema(close, 52), title="52", color=color.rgb(39, 208, 226), linewidth=1) // 蓝绿色
plot(ta.ema(close, 104), title="104", color=color.rgb(222, 109, 57), linewidth=1) // 棕色
// Vegas Channel (added EMAs)
ema144 = ta.ema(close, 144)
ema169 = ta.ema(close, 169)
plot(ema144, title="EMA 144", color=color.new(#e3ebf7, 0), linewidth=1)
plot(ema169, title="EMA 169", color=color.new(#e7e7f5, 0), linewidth=1)
// Fill between EMA 144 and EMA 169 with light blue background
fill(plot1 = plot(ema144, display=display.none),
plot2 = plot(ema169, display=display.none),
color = color.new(#deeff4, 70), title = "144-169 Area")
// Colored candles based on volume and price movement
isUp = close > open
isDown = close < open
highVolume = volume > ta.sma(volume, 50) * 3 // 50-period average + 50% threshold
// Define colors
bullishColor = color.new(#a5f1a5, 0) // Light green
bearishColor = color.new(#f2b661, 0) // Orange
// Plot candles
barcolor(isUp and highVolume ? bullishColor : isDown and highVolume ? bearishColor : na)






















