Azeem EMA - 3It combines 3 EMA into 1 indicator. It is good if you want multiple indicator on at the same time
Moving Averages
ESM1! EXPONENTIAL MOVING TRENDLINE (EMT)This indicator uses various calculations to find brake out entries as well as continuation during trends.
The indicator triggers and displays yellow arrows and notifications so users know exactly when and what type of position they should take.
Every position should be taken with a 5 points Stop Loss
Take profit targets are up to each user, but have in mind the indicator has a 90% win rate at 30
-50% profit targets
RD Indicator - v 2.0Indicator with provides market structure , Custom opening range , coloured channel with strength or EMA cloud , Coloured candles showing high buying & selling , Buy & sell Zone showing buying & selling power , stop loss , Fib extension based on Previous day high - low and most important green / red lines showing smaller support & resistances. Coined with all above it also provide buy/sell signals potential signals. In all a comprehensive toolkit for traders
Trend Filter (Higher Timeframe EMA)English (EN)
This indicator overlays the higher timeframe (default: 1H) EMA trend onto your current chart to serve as a directional filter for trading decisions.
- Fetches and plots EMA20 / EMA50 / EMA200 from a higher timeframe (user-configurable)
- Identifies LONG trend when EMA20 > EMA50 > EMA200, SHORT trend when EMA20 < EMA50 < EMA200
- Changes background color based on trend direction (Green = Long, Red = Short)
- Can trigger alerts when a new trend direction is detected
1. Apply this script to lower timeframes such as 5m or 15m charts to see the higher timeframe trend.
2. When the background is green, consider long setups; when red, consider short setups.
3. Use this as a filter in conjunction with your main entry signals, not as a standalone strategy.
- Default higher timeframe is 1 hour, but you can change it in the settings.
- This script does not provide financial advice. Use at your own risk.
日本語(JP)
このインジケーターは、現在のチャートに上位足(デフォルト:1時間足)のEMAトレンドを重ねて表示し、売買方向のフィルターとして利用できます。
【機能】
- 上位足(設定可能)のEMA20 / EMA50 / EMA200 を取得して表示
- EMA20 > EMA50 > EMA200 でロングトレンド、EMA20 < EMA50 < EMA200 でショートトレンド判定
- トレンド方向に応じて背景色を変化(緑=ロング、赤=ショート)
- トレンド発生時にアラートを送信可能
【使い方】
1. 5分足や15分足など短期足に適用し、背景色で上位足の流れを確認します。
2. 背景が緑の時は買い目線、赤の時は売り目線で短期エントリーを検討します。
3. 単独での売買判断ではなく、他のテクニカル指標と併用してご利用ください。
【注意】
- デフォルトは1時間足で計算していますが、設定から変更可能です。
- 本スクリプトは投資助言を行うものではありません。ご利用は自己責任でお願いします。
Multi SMA + Golden/Death + Heatmap + BB**Multi SMA (50/100/200) + Golden/Death + Candle Heatmap + BB**
A practical trend toolkit that blends classic 50/100/200 SMAs with clear crossover labels, special 🚀 Golden / 💀 Death Cross markers, and a readable candle heatmap based on a dynamic regression midline and volatility bands. Optional Bollinger Bands are included for context.
* See trend direction at a glance with SMAs.
* Get minimal, de-cluttered labels on important crosses (50↔100, 50↔200, 100↔200).
* Highlight big regime shifts with special Golden/Death tags.
* Read momentum and volatility with the candle heatmap.
* Add Bollinger Bands if you want classic mean-reversion context.
Designed to be lightweight, non-repainting on confirmed bars, and flexible across timeframes.
# What This Indicator Does (plain English)
* **Tracks trend** using **SMA 50/100/200** and lets you optionally compute each SMA on a higher or different timeframe (HTF-safe, no lookahead).
* **Prints labels** when SMAs cross each other (up or down). You can force signals only after bar close to avoid repaint.
* **Marks Golden/Death Crosses** (50 over/under 200) with special labels so major regime changes stand out.
* **Colors candles** with a **heatmap** built from a regression midline and volatility bands—greenish above, reddish below, with a smooth gradient.
* **Optionally shows Bollinger Bands** (basis SMA + stdev bands) and fills the area between them.
* **Includes alert conditions** for Golden and Death Cross so you can automate notifications.
---
# Settings — Simple Explanations
## Source
* **Source**: Price source used to calculate SMAs and Bollinger basis. Default: `close`.
## SMA 50
* **Show 50**: Turn the SMA(50) line on/off.
* **Length 50**: How many bars to average. Lower = faster but noisier.
* **Color 50** / **Width 50**: Visual style.
* **Timeframe 50**: Optional alternate timeframe for SMA(50). Leave empty to use the chart timeframe.
## SMA 100
* **Show 100**: Turn the SMA(100) line on/off.
* **Length 100**: Bars used for the mid-term trend.
* **Color 100** / **Width 100**: Visual style.
* **Timeframe 100**: Optional alternate timeframe for SMA(100).
## SMA 200
* **Show 200**: Turn the SMA(200) line on/off.
* **Length 200**: Bars used for the long-term trend.
* **Color 200** / **Width 200**: Visual style.
* **Timeframe 200**: Optional alternate timeframe for SMA(200).
## Signals (crossover labels)
* **Show crossover signals**: Prints triangle labels on SMA crosses (50↔100, 50↔200, 100↔200).
* **Wait for bar close (confirmed)**: If ON, signals only appear after the candle closes (reduces repaint).
* **Min bars between same-pair signals**: Minimum spacing to avoid duplicate labels from the same SMA pair too often.
* **Trend filter (buy: 50>100>200, sell: 50<100<200)**: Only show bullish labels when SMAs are stacked bullish (50 above 100 above 200), and only show bearish labels when stacked bearish.
### Label Offset
* **Offset mode**: Choose how to push labels away from price:
* **Percent**: Offset is a % of price.
* **ATR x**: Offset is ATR(14) × multiplier.
* **Percent of price (%)**: Used when mode = Percent.
* **ATR multiplier (for ‘ATR x’)**: Used when mode = ATR x.
### Label Colors
* **Bull color** / **Bear color**: Background of triangle labels.
* **Bull label text color** / **Bear label text color**: Text color inside the triangles.
## Golden / Death Cross
* **Show 🚀 Golden Cross (50↑200)**: Show a special “Golden” label when SMA50 crosses above SMA200.
* **Golden label color** / **Golden text color**: Styling for Golden label.
* **Show 💀 Death Cross (50↓200)**: Show a special “Death” label when SMA50 crosses below SMA200.
* **Death label color** / **Death text color**: Styling for Death label.
## Candle Heatmap
* **Enable heatmap candle colors**: Turns the heatmap on/off.
* **Length**: Lookback for the regression midline and volatility measure.
* **Deviation Multiplier**: Band width around the midline (bigger = wider).
* **Volatility basis**:
* **RMA Range** (smoothed high-low range)
* **Stdev** (standard deviation of close)
* **Upper/Middle/Lower color**: Gradient colors for the heatmap.
* **Heatmap transparency (0..100)**: 0 = solid, 100 = invisible.
* **Force override base candles**: Repaint base candles so heatmap stays visible even if your chart has custom coloring.
## Bollinger Bands (optional)
* **Show Bollinger Bands**: Toggle the overlay on/off.
* **Length**: Basis SMA length.
* **StdDev Multiplier**: Distance of bands from the basis in standard deviations.
* **Basis color** / **Band color**: Line colors for basis and bands.
* **Bands fill transparency**: Opacity of the fill between upper/lower bands.
---
# Features & How It Works
## 1) HTF-Safe SMAs
Each SMA can be calculated on the chart timeframe or a higher/different timeframe you choose. The script pulls HTF values **without lookahead** (non-repainting on confirmed bars).
## 2) Crossover Labels (Three Pairs)
* **50↔100**, **50↔200**, **100↔200**:
* **Triangle Up** label when the first SMA crosses **above** the second.
* **Triangle Down** label when it crosses **below**.
* Optional **Trend Filter** ensures only signals aligned with the overall stack (50>100>200 for bullish, 50<100<200 for bearish).
* **Debounce** spacing avoids repeated labels for the same pair too close together.
## 3) Golden / Death Cross Highlights
* **🚀 Golden Cross**: SMA50 crosses **above** SMA200 (often a longer-term bullish regime shift).
* **💀 Death Cross**: SMA50 crosses **below** SMA200 (often a longer-term bearish regime shift).
* Separate styling so they stand out from regular cross labels.
## 4) Candle Heatmap
* Builds a **regression midline** with **volatility bands**; colors candles by their position inside that channel.
* Smooth gradient: lower side → reddish, mid → yellowish, upper side → greenish.
* Helps you see momentum and “where price sits” relative to a dynamic channel.
## 5) Bollinger Bands (Optional)
* Classic **basis SMA** ± **StdDev** bands.
* Light visual context for mean-reversion and volatility expansion.
## 6) Alerts
* **Golden Cross**: `🚀 GOLDEN CROSS: SMA 50 crossed ABOVE SMA 200`
* **Death Cross**: `💀 DEATH CROSS: SMA 50 crossed BELOW SMA 200`
Add these to your alerts to get notified automatically.
---
# Tips & Notes
* For fewer false positives, keep **“Wait for bar close”** ON, especially on lower timeframes.
* Use the **Trend Filter** to align signals with the broader stack and cut noise.
* For HTF context, set **Timeframe 50/100/200** to higher frames (e.g., H1/H4/D) while you trade on a lower frame.
* Heatmap “Length” and “Deviation Multiplier” control smoothness and channel width—tune for your asset’s volatility.
EMA21 Cross with 3-Bar Confirmation//@version=5
indicator("EMA21 Cross with 3-Bar Confirmation", overlay=true)
// Calculate 21-period EMA
ema21 = ta.ema(close, 21)
plot(ema21, "EMA21", color=color.blue, linewidth=2)
// Buy Conditions
crossover = ta.crossover(close, ema21)
threeBarsAfterCross = crossover
// Conditions for the 3 bars after crossover:
// 1. At least one red candle (close < open)
// 2. No candle closes below EMA21
// 3. No candle crosses below EMA21
hasRedCandle = (close < open ) or (close < open ) or (close < open)
allAboveEMA = (close > ema21 ) and (close > ema21 ) and (close > ema21)
noCrossDown = not (ta.crossunder(close , ema21 ) or ta.crossunder(close , ema21 ) or ta.crossunder(close, ema21))
buySignal = threeBarsAfterCross and hasRedCandle and allAboveEMA and noCrossDown
// Sell Conditions (opposite logic)
crossunder = ta.crossunder(close, ema21)
threeBarsAfterUnder = crossunder
// Conditions for the 3 bars after crossunder:
// 1. At least one green candle (close > open)
// 2. No candle closes above EMA21
// 3. No candle crosses above EMA21
hasGreenCandle = (close > open ) or (close > open ) or (close > open)
allBelowEMA = (close < ema21 ) and (close < ema21 ) and (close < ema21)
noCrossUp = not (ta.crossover(close , ema21 ) or ta.crossover(close , ema21 ) or ta.crossover(close, ema21))
sellSignal = threeBarsAfterUnder and hasGreenCandle and allBelowEMA and noCrossUp
// Plot Signals
plotshape(buySignal, title="Buy Signal", text="BUY", location=location.belowbar, color=color.green, size=size.small)
plotshape(sellSignal, title="Sell Signal", text="SELL", location=location.abovebar, color=color.red, size=size.small)
// Optional: Plot arrows on chart
plotarrow(buySignal ? 1 : na, title="Buy Arrow", colorup=color.green, maxheight=60)
plotarrow(sellSignal ? -1 : na, title="Sell Arrow", colordown=color.red, maxheight=60)
✅ Elev8+Overview:
The Elev8+ indicator is a multi-layered trading indicator designed to help traders identify high-probability reversal points and trend-following opportunities. By combining the Classic Elev8+ Reversal Indicator, the DI StdDev Filter, and EMA/BB Trend Fills, this indicator offers a powerful toolset for navigating volatile markets with increased accuracy.
Key Features and Logic:
Classic Elev8+ Reversal Logic:
Liquidity Sweep Signals: The indicator detects liquidity sweeps by identifying price action that breaks previous high/low points with significant volume. This is crucial for identifying strong reversal signals when the market is grabbing liquidity.
ADX Trend Filter: The ADX filter ensures that the indicator only triggers signals during strong trending conditions, reducing false signals in range-bound markets. It requires the DI+ to be greater than ADX and ADX to be above 25, confirming a trend.
Bollinger Band Wick Filter: This filter helps identify price action where wicks penetrate the outer Bollinger Bands (3 to 3.5 standard deviations), indicating a potential reversal after price extremes. This adds an extra layer of confirmation for a reversal.
DI StdDev Filter:
Volatility-Adjusted DI Filtering: The DI StdDev Filter adds a volatility component to the classic ADX strategy. It tracks the DI+ and DI- lines' standard deviation, ensuring that trend strength is not only above the threshold but also confirms significant deviations, marking high-probability trend shifts.
Dynamic Thresholds: The upper and lower thresholds for DI are dynamically adjusted based on standard deviations, enhancing the responsiveness of the indicator in fast-moving markets.
EMA and Bollinger Band Trend Fills:
EMA Trend Fill: The Elev8+ Indicator visually highlights trend direction using fast and slow EMAs. A bullish trend is indicated when the fast EMA is above the slow EMA, and a bearish trend is indicated when the fast EMA is below the slow EMA. The background is filled with a semi-transparent color to easily distinguish trending conditions.
Bollinger Band Zones: The fill between the outer Bollinger Bands is used to highlight extreme price levels. These areas often signal overbought or oversold conditions, which traders can use to confirm reversal signals.
How It Works:
The Elev8+ Indicator intelligently combines trend-following and counter-trend signals. When multiple conditions are met, such as a liquidity sweep in the opposite direction of the trend, a reversal is signaled. Traders will benefit from the following:
Buy Signal: When the conditions for a strong reversal align (liquidity sweep, low volume, and confirmed by DI StdDev or BB wick filters), a buy signal is triggered.
Sell Signal: Similarly, when bearish reversal conditions (liquidity sweep and overbought conditions) align with the DI StdDev or BB wick filters, a sell signal is triggered.
Why It's Unique:
Comprehensive Market Filters: The combination of liquidity sweeps, ADX trend strength, DI StdDev volatility filtering, and Bollinger Bands ensures the indicator provides high-quality, high-probability trade setups.
Dual Reversal and Trend Confirmation: By incorporating both trend-following (EMA fills) and reversal logic (liquidity sweeps, BB filters), this script can adapt to different market conditions, providing both trend continuation and counter-trend signals.
Customizable Inputs: Traders can fine-tune the indicator's behavior by adjusting various parameters such as ADX period, Bollinger Band standard deviation, and DI StdDev thresholds to better fit their trading style and timeframes.
How to Use:
Set Up the Indicator: Apply the Elev8+ Indicator to your chart and enable the Classic Elev8 and/or DI StdDev Filter depending on your trading preferences. You can also adjust the EMA Trend Fill for clearer trend visualization.
Monitor Signals: Pay attention to the buy and sell signals generated by the combination of liquidity sweeps, ADX filters, and volatility adjustments. Confirm trades with the EMA trend fill and Bollinger Band zones.
Adapt to Market Conditions: Customize the sensitivity of the indicator by adjusting the ADX and DI StdDev parameters, as well as the Bollinger Band settings to fit different market environments and volatility.
Chart Explanation:
The indicator includes:
Reversal and trend-following signals: Easily identifiable buy and sell signals represented by small up and down triangles.
EMA Trend Fill: A background color fill that shows the prevailing trend.
Bollinger Band Zones: Shaded areas indicating overbought or oversold conditions.
Adjustable Parameters: Users can toggle features and modify parameters to suit their trading strategy.
Reversal Strategy (RSI & Volume & Automantic support resistance)// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © RoseZero
//@version=6
indicator('Chien luoc dao chieu manh(RSI + Volume + Ho tro auto)', overlay = true)
//===Tham so nguoi dung===
rsiOversold = input.int(30, 'Nguong RSI qua ban')
rsiOverbought = input.int(70, 'Nguong RSI qua mua')
rsiLow = input.int(35, 'Nguong qua ban')
rsiHigh = input.int(55, 'Nguong qua mua')
volMultiplier = input.float(1.5, 'nguong khoi luong tang (so voi TB)')
mult = input.float(1.5, 'Nguong nhan do lon nen', step = 0.1)
supportLength = input.int(20, 'Do dai vung ho tro')
resistLength = input.int(20, 'Do dai vung khang cu')
length = input.int(20, 'So nen trung binh')
volume_threshold = input.float(1.2, title = 'Nguong volume dao chieu')
fastEMA = input.int(21, title = 'EMA nhanh')
slowEMA = input.int(55, title = 'EMA cham')
depth = input.int(3, title = 'Pivot Depth')
rsiLen = input.int(14, title = 'RSI Length')
//==============================================================================
// === Dấu hiệu Cạn Cung ===
lowVolMultiplier = input.float(0.5, title = 'Ngưỡng khối lượng thấp (Cạn cung)')
lowRangeMultiplier = input.float(0.7, title = 'Ngưỡng biên độ giá thấp (Cạn cung)')
avgVolCC = ta.sma(volume, 20)
avgRangeCC = ta.sma(high - low, 20)
isLowVolume = volume < avgVolCC * lowVolMultiplier
isNarrowRange = (high - low) < avgRangeCC * lowRangeMultiplier
isSideways = math.abs(close - close ) < avgRangeCC * 0.3
supplyDryUp = isLowVolume and isNarrowRange and isSideways
// === Dấu hiệu Cạn Cầu ===
lowVolMultiplier2 = input.float(0.5, title = 'Ngưỡng khối lượng thấp (Cạn cầu)')
lowRangeMultiplier2 = input.float(0.7, title = 'Ngưỡng biên độ giá thấp (Cạn cầu)')
avgVolCD = ta.sma(volume, 20)
avgRangeCD = ta.sma(high - low, 20)
isLowVolumeCD = volume < avgVolCD * lowVolMultiplier2
isNarrowRangeCD = (high - low) < avgRangeCD * lowRangeMultiplier2
isWeakDemand = close <= close or close - close < avgRangeCD * 0.2
demandDryUp = isLowVolumeCD and isNarrowRangeCD and isWeakDemand
//=====================================================================================
ema34 = ta.ema(close, 34)
ema89 = ta.ema(close, 89)
volAvg = ta.sma(volume, 20)
plot(ema34, color = color.green, title = 'EMA 34')
plot(ema89, color = color.orange, title = 'EMA 89')
emaUp = ta.crossover(ema34, ema89)
emaDow = ta.crossunder(ema34, ema89)
alertcondition(emaUp, title = 'EMA34 cat len tren EMA89', message = 'EMA34 cat len tren EMA89 xu huong gia di len')
alertcondition(emaDow, title = 'EMA34 cat xuong duoi EMA89', message = 'EMA34 cat xuong duoi EMA*9 xu huong gia di xuong')
// dieu kien pha len ema va nguoc lai============================================================================================================
breakoutEma = close < ema34 and close < ema89 and close > ema34 and close > ema89
breakdownEma = close > ema34 and close > ema89 and close < ema34 and close < ema89
//dieu kien test lai EMA sau break
retestUpEma = breakoutEma and close < ema34 * 1.02 and close > ema89 * 0.98
retestDownEma = breakdownEma and close > ema34 * 0.98 and close < ema89 * 1.02
//canh bao gia test lai cum ema
alertcondition(retestUpEma, title = 'Canh bao test lai EMA gia tang', message = 'Gia dang test lai cum EMA khi gia tang')
alertcondition(retestDownEma, title = 'Canh bao test lai EMA gia giam', message = 'Gia dang test lai cum EMA khi gia giam')
//Tinh toan co bao Pivot
pivotHigh = ta.pivothigh(high, depth, depth)
pivotLow = ta.pivotlow(low, depth, depth)
ema = ta.ema(close, fastEMA)
ma = ta.sma(close, slowEMA)
rsii = ta.rsi(close, rsiLen)
//Volume Breakout check
volStrong = volume > ta.sma(volume, 20) * volume_threshold
//Mo hinh nen : Pinbar, Engulfing, Doji
isPinBar = math.abs(close - open) / math.abs(high - low) < 0.2
isBullEngulfing = close > open and open < close and close > open
isBearishEngulfing = close < open and open > close and close < open
isDoji = math.abs(close - open) / math.abs(high - low) < 0.1
//Dao chieu tang manh va giam manh
candlePattern = isPinBar or isBullEngulfing or isDoji
candlePattern2 = isPinBar or isBearishEngulfing or isDoji
priceCondition = close > ema and close > ma and rsii < 30 and volStrong
priceCondition2 = close < ema and close < ma and rsii > 70 and volStrong
bullishSignal = not na(pivotLow) and candlePattern and priceCondition and volStrong
if bullishSignal
alert('Dao chieu tang manh: Xuat hien nen dao chieu Tang(PInBar, BullishEngulf, Doji)', alert.freq_once_per_bar_close)
bearishSignal = not na(pivotHigh) and candlePattern2 and priceCondition2 and volStrong
if bearishSignal
alert('Dao chieu giam manh: Xuat hien nen dao chieu Giam(PinBar, BearishEngul, Doji)', alert.freq_once_per_bar_close)
//EMA & Trend
emaFast = ta.ema(close, fastEMA)
emaSlow = ta.ema(close, slowEMA)
plot(emaFast, title = 'EMA nhanh', color = color.blue)
plot(emaSlow, 'EMA cham', color = color.purple)
//===Ho tro tu dong===
supportZone = ta.lowest(low, supportLength)
resistZone = ta.highest(high, resistLength)
nearSupport = math.abs(low - supportZone) < syminfo.mintick * 100
nearResistance = math.abs(high - resistZone) < syminfo.mintick * 100
plot(supportZone, 'Ho tro', color = color.gray)
plot(resistZone, 'Khang cu', color = color.orange)
//===Mo hinh nen dao chieu tang & giam===
//Bullish: Hammer, Engulfing, piercing
body = math.abs(close - open)
avgbody = ta.sma(body, length)
upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low
isHammerUp = lowerWick > 2 * body and upperWick < body and close > open
//engulfingUp = close < open and close > open and close > open and open < close
piercingUp = close > open and open < close and close > (open + close ) / 2
bullishCandle = isHammerUp or isBullEngulfing or piercingUp
//Bearish: Inverted Hammer, Bearish Engulfing, Dark cloud Cover
isHammerDow = upperWick > 2 * body and lowerWick < body and close < open
//engulfingDow = close > open and close < open and close < open and open > close
darkCloud = close < open and open > close and close < (open + close ) / 2
bearishCandle = isHammerDow or isBearishEngulfing or darkCloud
//========================================================================
//===Chi bao RSI & Volume===
rsi = ta.rsi(close, 14)
oversold = rsi < rsiOversold
overbought = rsi > rsiOverbought
avgVol = ta.sma(volume, 20)
volumeSpike = volume > avgVol * volMultiplier
rsiLL = rsi < rsiLow
rsiHH = rsi > rsiHigh
// nen rut chan 50%
fibo50=high/2+low/2
Pinbarbullish=close>fibo50 and open>fibo50 and volumeSpike and rsiLL // and close ta.ema(close,89)
plotshape(Pinbarbullish, style = shape.labelup, location = location.belowbar, color = color.green, text = 'L', textcolor = color.white, size = size.tiny)
plotshape(Pinbarbearish, style = shape.labeldown, location = location.abovebar, color = color.red, text = 'S', textcolor = color.white, size = size.tiny)
if Pinbarbullish
alert('Pin Bar dao chieu tang', alert.freq_once_per_bar_close)
if Pinbarbearish
alert('Pin Bar dao chieu giam', alert.freq_once_per_bar_close)
//===dieu kien tin hieu===
buySignal = bullishCandle and oversold and volumeSpike and nearSupport
sellSignal = bearishCandle and overbought and volumeSpike and nearResistance
//Canh bao nag cao
if buySignal
alert('Tin hieu MUA manh:Nen dao chieu tai vung ho tro kem RSI thap & Volume lon(LONG)', alert.freq_once_per_bar_close)
if sellSignal
alert('Tin hieu BAN manh:Nen dao chieu tai vung khang cu kem RSI cao & Volume lon(SHORT)', alert.freq_once_per_bar_close)
//===Hien canh bao===
alertcondition(buySignal, title = 'Tin hieu MUA', message = 'Nen dao chieu TANG tai vung ho tro(RSI thap + Volume lon)')
alertcondition(sellSignal, title = 'Tin hieu BAN', message = 'Nen dao chieu GIAM tai vung ho(RSI cao + Volume lon)')
plotshape(buySignal, style = shape.triangleup, location = location.belowbar, color = color.green, text = 'Long', textcolor = color.white)
plotshape(sellSignal, style = shape.triangledown, location = location.abovebar, color = color.red, text = 'Short', textcolor = color.white)
//Pin Bar ket hop volume lon & RSI qua mua / qua ban
isStrongBullPin = close > open and high - close > 2 * (close - open) and volume > volAvg * volMultiplier and rsi < rsiOversold
isStrongBearPin = open > close and close - low > 2 * (open - close) and volume > volAvg * volMultiplier and rsi > rsiOverbought
plotshape(isStrongBullPin, title = 'Canh bao Pinbar MUA manh', location = location.belowbar, color = color.green, style = shape.labelup, text = "Pb Mua", textcolor = color.white)
plotshape(isStrongBearPin, title = 'Canh bao Pinbar BAN manh', location = location.abovebar, color = color.red, style = shape.labeldown, text = 'Pb Ban', textcolor = color.white)
alertcondition(isStrongBullPin, title = 'Canh bao PinBar MUA manh', message = 'Phat hien PinBar MUA manh(vol cao + RSI qua ban)')
alertcondition(isStrongBearPin, title = 'Canh bao PInBar BAN manh', message = 'Phat hien PinBar BAN manh(vol cao+ RSI qua mua)')
if isStrongBullPin
alert('Pin Bar tin hieu mua:Phat hien PinBar MUA manh(vol cao + RSI qua ban)', alert.freq_once_per_bar_close)
if isStrongBearPin
alert('Pin Bar tin hieu ban:Phat hien PinBar BAN manh(vol cao+ RSI qua mua)', alert.freq_once_per_bar_close)
//================================================================
bool pv2_sv = input.bool (true, title='Plot 2nd order pivots')
bool msb_sv = input.bool (true, title='Plot MSB lines')
bool box_sv = input.bool (true, title='Plot Orderblocks')
bool m_sv = input.bool (true, title='Plot Breakerblocks')
bool range_sv = input.bool (true, title='Plot Range')
bool range_eq_sv = input.bool (true, title='Plot Range 0.5 Line')
bool range_q_sv = input.bool (true, title='Plot Range 0.25 and 0.75 Lines')
bool log_sv = input.bool (true, title='Use Log Scale')
bool msb_a_sv = input.bool (true, title='Alert MSB')
bool ob_a_sv = input.bool (true, title='Alert Orderblock test')
bool bb_a_sv = input.bool (true, title='Alert Breakerblock test')
bool r_a_sv = input.bool (true, title='Alert New Range')
bool rt_a_sv = input.bool (true, title='Alert Range test')
color u_s = input.color (color.new(color.red,90), title='Untested Supply Color')
color t_s = input.color (color.new(color.red,70), title='Tested Supply Color')
color u_d = input.color (color.new(color.green,90), title='Untested Demand Color')
color t_d = input.color (color.new(color.green,70), title='Tested Demand Color')
color u_b = input.color ( color.new(color.blue,90), title='Untested Breaker Color')
color t_b = input.color (color.new(color.blue, 70), title='Tested Breaker Color')
var float pvh1_price = array.new_float (30, na) // high
var int pvh1_time = array.new_int (30, na)
var float pvl1_price = array.new_float (30, na) // low
var int pvl1_time = array.new_int (30, na)
var float pvh2_price = array.new_float (10, na) // higher high
var int pvh2_time = array.new_int (10, na)
var float pvl2_price = array.new_float (10, na) // lower low
var int pvl2_time = array.new_int (10, na)
var float htcmrll_price = na // high that created most recent ll
var int htcmrll_time = na
var float ltcmrhh_price = na // low that created most recent hh
var int ltcmrhh_time = na
var box long_boxes = array.new_box() // orderblocks
var box short_boxes = array.new_box()
var box m_long_boxes = array.new_box() // breakerblocks
var box m_short_boxes = array.new_box()
var line bull_bos_lines = array.new_line() // MSB lines
var line bear_bos_lines = array.new_line()
var line range_h_lines = array.new_line() // Range lines
var line range_25_lines = array.new_line()
var line range_m_lines = array.new_line()
var line range_75_lines = array.new_line()
var line range_l_lines = array.new_line()
var label la_ph2 = array.new_label() // 2nd order pivots
var label la_pl2 = array.new_label()
var float temp_pv_0 = na
var float temp_pv_1 = na
var float temp_pv_2 = na
var int temp_time = na
var float last_range_h = na
var float last_range_l = na
var line range_m = na
var line range_25 = na
var line range_75 = na
var float box_top = na
var float box_bottom = na
var int h_a_time = 0
var int l_a_time = 0
var int mh_a_time = 0
var int ml_a_time = 0
var int rh_a_time = 0
var int rl_a_time = 0
bool pvh = high < high and high > high
bool pvl = low > low and low < low
int pv1_time = bar_index
float pv1_high = high
float pv1_low = low
bool new_ph_2nd = false
bool new_pl_2nd = false
string alert = na
if barstate.isconfirmed
if pvh
array.pop(pvh1_price)
array.pop(pvh1_time)
array.unshift(pvh1_price, pv1_high)
array.unshift(pvh1_time, pv1_time)
if array.size(pvh1_price) > 2
temp_pv_0 := array.get(pvh1_price, 0)
temp_pv_1 := array.get(pvh1_price, 1)
temp_pv_2 := array.get(pvh1_price, 2)
if temp_pv_0 < temp_pv_1 and temp_pv_1 > temp_pv_2
array.pop(pvh2_price)
array.pop(pvh2_time)
array.unshift(pvh2_price, temp_pv_1)
array.unshift(pvh2_time, array.get(pvh1_time, 1))
new_ph_2nd := true
if temp_pv_1 > array.get(pvh2_price, 1)
for i = 0 to array.size(pvl2_time) - 1 by 1
temp_ltcmrhh_time = array.get(pvl2_time, i)
if temp_ltcmrhh_time < array.get(pvh2_time, 0)
ltcmrhh_price := array.get(pvl2_price, i)
ltcmrhh_time := temp_ltcmrhh_time
break
if temp_pv_0 < ltcmrhh_price
if msb_sv
array.push(bear_bos_lines, line.new(x1=ltcmrhh_time, y1=ltcmrhh_price, x2=bar_index, y2=ltcmrhh_price, color=color.rgb(11, 238, 18), width=3))
box_top := array.get(pvh2_price, 0)
box_bottom := math.max(low , low )
array.push(short_boxes, box.new(left=array.get(pvh2_time, 0), top=box_top, right=bar_index, bottom=box_bottom, bgcolor= box_sv ? u_s : na ,border_color=na, extend=extend.right))
if msb_a_sv
alert := alert + 'Bearish MSB @ ' + str.tostring(ltcmrhh_price) + ' ' + 'New Supply Zone : '+ str.tostring(box_top) + ' - ' + str.tostring(box_bottom) + ' '
ltcmrhh_price := na
if pvl
array.pop(pvl1_price)
array.pop(pvl1_time)
array.unshift(pvl1_price, pv1_low)
array.unshift(pvl1_time, pv1_time)
if array.size(pvl1_price) > 2
temp_pv_0 := array.get(pvl1_price, 0)
temp_pv_1 := array.get(pvl1_price, 1)
temp_pv_2 := array.get(pvl1_price, 2)
if temp_pv_0 > temp_pv_1 and temp_pv_1 < temp_pv_2
array.pop(pvl2_price)
array.pop(pvl2_time)
array.unshift(pvl2_price, temp_pv_1)
array.unshift(pvl2_time, array.get(pvl1_time, 1))
new_pl_2nd := true
if temp_pv_1 < array.get(pvl2_price, 1)
for i = 0 to array.size(pvh2_time) - 1 by 1
temp_htcmrll_time = array.get(pvh2_time, i)
if temp_htcmrll_time < array.get(pvl2_time, 0)
htcmrll_price := array.get(pvh2_price, i)
htcmrll_time := temp_htcmrll_time
break
if temp_pv_0 > htcmrll_price
if msb_sv
array.push(bull_bos_lines, line.new(x1=htcmrll_time, y1=htcmrll_price, x2=bar_index, y2=htcmrll_price, color=color.rgb(236, 5, 5), width=3))
box_top := math.min(high , high )
box_bottom := array.get(pvl2_price, 0)
array.push(long_boxes, box.new(left=array.get(pvl2_time, 0), top=box_top, right=bar_index, bottom=box_bottom, bgcolor= box_sv ? u_d : na, border_color=na, extend=extend.right))
if msb_a_sv
alert := alert + 'Bullish MSB @ ' + str.tostring(htcmrll_price) + ' ' + 'New Demand Zone : '+ str.tostring(box_bottom) + ' - ' + str.tostring(box_top) + ' '
htcmrll_price := na
if array.size(short_boxes) > 0
for i = array.size(short_boxes) - 1 to 0 by 1
tbox = array.get(short_boxes, i)
top = box.get_top(tbox)
bottom = box.get_bottom(tbox)
ago = box.get_left(tbox)
if array.get(pvh1_price, 0) > bottom
if box_sv
box.set_bgcolor(tbox, t_s)
if ob_a_sv and close < bottom
if array.get(pvh1_time, 0) != h_a_time
h_a_time := array.get(pvh1_time, 0)
alert := alert + 'Supply Zone Test @ ' + str.tostring(array.get(pvh1_price, 0)) + ' (age = ' + str.tostring(bar_index-ago) + ' bars) '
if array.get(pvl1_price, 0) > top
if m_sv
box.set_bgcolor(tbox, u_b)
array.push(m_long_boxes, tbox)
else
box.delete(tbox)
array.remove(short_boxes, i)
if msb_sv
line.delete(array.get(bear_bos_lines, i))
array.remove(bear_bos_lines, i)
if array.size(long_boxes) > 0
for i = array.size(long_boxes) - 1 to 0 by 1
lbox = array.get(long_boxes, i)
top = box.get_top(lbox)
bottom = box.get_bottom(lbox)
ago = box.get_left(lbox)
if array.get(pvl1_price, 0) < top
if box_sv
box.set_bgcolor(lbox, t_d)
if ob_a_sv and close > top
if array.get(pvl1_time, 0) != l_a_time
l_a_time := array.get(pvl1_time, 0)
alert := alert + 'Demand Zone Test @ ' + str.tostring(array.get(pvl1_price, 0)) + ' (age = ' + str.tostring(bar_index-ago) + ' bars) '
if array.get(pvh1_price, 0) < bottom
if m_sv
box.set_bgcolor(lbox, u_b)
array.push(m_short_boxes, lbox)
else
box.delete(lbox)
array.remove(long_boxes, i)
if msb_sv
line.delete(array.get(bull_bos_lines, i))
array.remove(bull_bos_lines, i)
if array.size(m_short_boxes) > 0
for i = array.size(m_short_boxes) - 1 to 0 by 1
tbox = array.get(m_short_boxes, i)
top = box.get_top(tbox)
bottom = box.get_bottom(tbox)
ago = box.get_left(tbox)
if array.get(pvh1_price, 0) > bottom
box.set_bgcolor(tbox, t_b)
if bb_a_sv and close < bottom
if array.get(pvh1_time, 0) != mh_a_time
mh_a_time := array.get(pvh1_time, 0)
alert := alert + 'Breakerblock Test Up @ ' + str.tostring(array.get(pvh1_price, 0)) + ' (age = ' + str.tostring(bar_index-ago) + ' bars) '
if array.get(pvl1_price, 0) > top
box.delete(tbox)
array.remove(m_short_boxes, i)
if array.size(m_long_boxes) > 0
for i = array.size(m_long_boxes) - 1 to 0 by 1
lbox = array.get(m_long_boxes, i)
top = box.get_top(lbox)
bottom = box.get_bottom(lbox)
ago = box.get_left(lbox)
if array.get(pvl1_price, 0) < top
box.set_bgcolor(lbox, t_b)
if bb_a_sv and close > top
if array.get(pvl1_time, 0) != ml_a_time
ml_a_time := array.get(pvl1_time, 0)
alert := alert + 'Breakerblock Test Down @ ' + str.tostring(array.get(pvl1_price, 0)) + ' (age = ' + str.tostring(bar_index-ago) + ' bars) '
if array.get(pvh1_price, 0) < bottom
box.delete(lbox)
array.remove(m_long_boxes, i)
if range_sv and (new_ph_2nd or new_pl_2nd) and (array.get(pvh2_price, 0) < array.get(pvh2_price, 1) and array.get(pvl2_price, 0) > array.get(pvl2_price, 1) and array.get(pvh2_price, 0) > array.get(pvl2_price, 1) and array.get(pvl2_price, 0) < array.get(pvh2_price, 1)) and (array.get(pvl2_price, 1) > nz(last_range_h) or na(last_range_l)? true : (array.get(pvh2_price, 1) < last_range_l))
temp_time := math.min(array.get(pvh2_time, 1), array.get(pvl2_time, 1))
last_range_h := array.get(pvh2_price, 1)
last_range_l := array.get(pvl2_price, 1)
temp_pv_0 := log_sv ? math.exp((math.log(last_range_h) + math.log(last_range_l))/2) : (last_range_h + last_range_l)/2
temp_pv_1 := log_sv ? math.exp((math.log(last_range_h) + math.log(temp_pv_0))/2) : (last_range_h + temp_pv_0)/2
temp_pv_2 := log_sv ? math.exp((math.log(last_range_l) + math.log(temp_pv_0))/2) : (last_range_l + temp_pv_0)/2
array.push(range_h_lines, line.new(x1=temp_time, y1=last_range_h, x2=bar_index, y2=last_range_h, color= color.white, width=2, extend=extend.right))
array.push(range_l_lines, line.new(x1=temp_time, y1=last_range_l, x2=bar_index, y2=last_range_l, color= color.white, width=2, extend=extend.right))
if range_eq_sv
array.push(range_m_lines, line.new(x1=temp_time, y1=temp_pv_0, x2=bar_index, y2=temp_pv_0, color= color.rgb(246, 6, 6), width=2, extend=extend.right))
if range_q_sv
array.push(range_25_lines, line.new(x1=temp_time, y1=temp_pv_1, x2=bar_index, y2=temp_pv_1, style=line.style_dashed, color=color.rgb(1, 54, 249), width=2, extend=extend.right))
array.push(range_75_lines, line.new(x1=temp_time, y1=temp_pv_2, x2=bar_index, y2=temp_pv_2, style=line.style_dashed, color=color.rgb(1, 54, 249), width=2, extend=extend.right))
if r_a_sv
alert := alert + 'New Range : ' + str.tostring(last_range_h) + ' - ' + str.tostring(last_range_l) + '. Mean = ' + str.tostring(temp_pv_0) + ' '
if array.size(range_h_lines) > 0
for i = array.size(range_h_lines) - 1 to 0 by 1
range_h = array.get(range_h_lines, i)
top = line.get_y1(range_h)
range_l = array.get(range_l_lines, i)
bottom = line.get_y1(range_l)
temp_time := line.get_x1(range_h)
if array.get(pvh1_price, 0) > top
if rt_a_sv and close < top
if array.get(pvh1_time, 0) != rh_a_time
rh_a_time := array.get(pvh1_time, 0)
alert := alert + 'Range High Test @ ' + str.tostring(array.get(pvh1_price, 0)) + ' '
if array.get(pvl1_price, 0) < bottom
if rt_a_sv and close > bottom
if array.get(pvl1_time, 0) != rl_a_time
rl_a_time := array.get(pvl1_time, 0)
alert := alert + 'Range Low Test @ ' + str.tostring(array.get(pvl1_price, 0)) + ' '
if range_eq_sv
range_m := array.get(range_m_lines, i)
if range_q_sv
range_25 := array.get(range_25_lines, i)
range_75 := array.get(range_75_lines, i)
if array.get(pvh1_price, 0) < bottom or array.get(pvl1_price, 0) > top
line.delete(range_h)
array.remove(range_h_lines, i)
line.delete(range_l)
array.remove(range_l_lines, i)
if range_eq_sv
line.delete(range_m)
array.remove(range_m_lines, i)
if range_q_sv
line.delete(range_25)
array.remove(range_25_lines, i)
line.delete(range_75)
array.remove(range_75_lines, i)
last_range_h := na
last_range_l := na
if pv2_sv
if new_ph_2nd
array.push(la_ph2, label.new(x = array.get(pvh2_time, 0), y = array.get(pvh2_price, 0), xloc = xloc.bar_index, style = label.style_label_down, color = #770000FF, size = size.tiny))
if new_pl_2nd
array.push(la_pl2, label.new(x = array.get(pvl2_time, 0), y = array.get(pvl2_price, 0), xloc = xloc.bar_index, style = label.style_label_up, color = #007700FF, size = size.tiny))
alert := not na(alert) ? (alert + 'Current price = ' + str.tostring(close) + ' ') : na
exec = not na(alert) ? true : false
//if exec==true
//alert(alert, alert.freq_once_per_bar_close)
//xac dinh dieu kien khoi luong lon
// mau cay nen mua
buyCandle = close > open and volumeSpike ? color.rgb(4, 128, 8) : na
// mau cay nen ban
sellCandle = close < open and volumeSpike ? color.rgb(147, 23, 230) : na
// ve nen tuy chinh
plotcandle(open, high, low, close, color = buyCandle, title = "Buy Candle")
plotcandle(open, high, low, close, color = sellCandle, title = "Sell Candle")
//plot(close)
//=== Lọc pin bar intraday ===
isIntraday = timeframe.multiplier >= 15 and timeframe.multiplier <= 60 // M15 đến H1
//isPinBar = math.abs(close - open) / math.abs(high - low) < 0.2
volSpike = volume > ta.sma(volume, 20) * 1.5
//rsi = ta.rsi(close, 14)
rsiExtreme = rsi < 30 or rsi > 70
//nearSupport = math.abs(low - ta.lowest(low, 20)) < syminfo.mintick * 100
//nearResistance = math.abs(high - ta.highest(high, 20)) < syminfo.mintick * 100
validBullPin = isPinBar and close > open and high - close > 2 * (close - open) and volSpike and rsi < 30 and nearSupport and isIntraday
validBearPin = isPinBar and open > close and close - low > 2 * (open - close) and volSpike and rsi > 70 and nearResistance and isIntraday
plotshape(validBullPin, location = location.belowbar, style = shape.labelup, color = color.green, text = "PB M15-H1")
plotshape(validBearPin, location = location.abovebar, style = shape.labeldown, color = color.red, text = "PB M15-H1")
alertcondition(validBullPin, title = "Pin Bar MUA intraday", message = "Phát hiện Pin Bar MUA mạnh (M15-H1)")
if validBullPin
alert("Pin bar MUA intraday : Phát hiện Pin Bar MUA mạnh (M15-H1)", alert.freq_once_per_bar_close)
alertcondition(validBearPin, title = "Pin Bar BÁN intraday", message = "Phát hiện Pin Bar BÁN mạnh (M15-H1)")
if validBearPin
alert("Pin bar BAN Intrday : Phát hiện Pin Bar BÁN mạnh (M15-H1)", alert.freq_once_per_bar_close)
//=======- Dùng H1 để xác định xu hướng, M15 để vào lệnh.
//Nếu pin bar xuất hiện ở H1, bạn có thể chờ xác nhận phá đỉnh/đáy ở M15 để vào lệnh.
//Kết hợp thêm EMA hoặc vùng cung cầu để tăng độ tin cậy
//====================================
trendUp = ema34 > ema89
trendDow = ema34 < ema89
//tin hieu vao lenh
enterLong = validBullPin and close > high and trendUp
enterShort = validBearPin and close < low and trendDow
plotshape(enterLong, location = location.belowbar, style = shape.triangleup, color = color.lime, text = "Long", textcolor = color.white)
plotshape(enterShort, location = location.abovebar, style = shape.triangledown, color = color.fuchsia, text = "Short", textcolor = color.white)
if enterLong
alert("Vao lenh Long: Pin Bar + Pha dinh + EMA xac nhan", alert.freq_once_per_bar_close)
if enterShort
alert("Vao lenh Short: Pin Bar + Pha day + EMA xac nhan", alert.freq_once_per_bar_close)
//==================================================================================
// === Hiển thị tín hiệu Cạn cung ===
//plotshape(supplyDryUp, title = 'Cạn cung', location = location.belowbar, color = color.yellow, style = shape.circle, size = size.small)
alertcondition(supplyDryUp, title = 'Cảnh báo cạn cung', message = 'Phát hiện dấu hiệu cạn cung: khối lượng thấp + giá đi ngang + biên độ hẹp')
// === Kết hợp với tín hiệu mua/bán để tăng độ tin cậy ===
buySignalCC = buySignal and supplyDryUp
sellSignalCC = sellSignal and supplyDryUp
plotshape(buySignalCC, title = 'Mua + Cạn cung', location = location.belowbar, color = color.lime, style = shape.triangleup, text = 'Long CC', textcolor = color.white)
plotshape(sellSignalCC, title = 'Bán + Cạn cung', location = location.abovebar, color = color.fuchsia, style = shape.triangledown, text = 'Short CC', textcolor = color.white)
alertcondition(buySignalCC, title = 'Mua mạnh + Cạn cung', message = 'Tín hiệu MUA mạnh kết hợp dấu hiệu cạn cung')
alertcondition(sellSignalCC, title = 'Bán mạnh + Cạn cung', message = 'Tín hiệu BÁN mạnh kết hợp dấu hiệu cạn cung')
if buySignalCC
alert('Mua mạnh + Cạn cung : Tín hiệu MUA mạnh kết hợp dấu hiệu cạn cung', alert.freq_once_per_bar_close)
if sellSignalCC
alert('Bán mạnh + Cạn cung : Tín hiệu BÁN mạnh kết hợp dấu hiệu cạn cung', alert.freq_once_per_bar_close)
// === Hiển thị tín hiệu Cạn cầu ===
//plotshape(demandDryUp, title = 'Cạn cầu', location = location.abovebar, color = color.orange, style = shape.circle, size = size.small)
alertcondition(demandDryUp, title = 'Cảnh báo cạn cầu', message = 'Phát hiện dấu hiệu cạn cầu: khối lượng thấp + giá không tăng + biên độ hẹp')
// === Kết hợp với tín hiệu bán để tăng độ tin cậy ===
sellSignalCD = sellSignal and demandDryUp
plotshape(sellSignalCD, title = 'Bán + Cạn cầu', location = location.abovebar, color = color.red, style = shape.triangledown, text = 'Short CCầu', textcolor = color.white)
alertcondition(sellSignalCD, title = 'Bán mạnh + Cạn cầu', message = 'Tín hiệu BÁN mạnh kết hợp dấu hiệu cạn cầu')
if sellSignalCD
alert('Bán mạnh + Cạn cầu : Tín hiệu BÁN mạnh kết hợp dấu hiệu cạn cầu', alert.freq_once_per_bar_close)
//====================================================
EMA72 com Difusor - Cor Dinâmica e Espessuras Ajustadas17 EMA
72 EMA (with diffuser included, green signals buy, red signals sell)
72 EMA on the weekly chart
VHX EMA 135/315📈 EMA 135/315 Cross Strategy – Your Trend Compass with Smart Confirmations
🔍 Core Idea
The EMA 135/315 Cross strategy is a trend-following system.
It tracks two moving averages:
EMA 135 → the “fast” line that reacts to short-term price moves
EMA 315 → the “slow” line that reacts to the bigger trend
When the fast EMA crosses above the slow EMA → market momentum is turning up → BUY signal 🟢
When the fast EMA crosses below the slow EMA → momentum is turning down → SELL signal 🔴
This gives you a clear entry trigger — no guessing, no overcomplication.
✨ On Your Chart
BUY/SELL Arrows
🟢 Green arrow = bullish cross → trend turning up
🔴 Red arrow = bearish cross → trend turning down
Trend Info Panel (Top Left)
Current Trend: BUY / SELL / Neutral
Last Cross: how many bars ago it happened
EMA Gap in %: measures the strength of the trend
Status: “Approaching” if EMAs are getting close → possible cross soon
Automatic TP/SL Levels
📈 TP line (+2% from entry)
📉 SL line (–0.5% from entry)
Saves time — you instantly see your target and protection
EMA Distance Meter
Big % gap = strong trend momentum 🚀
Small % gap = weak or sideways market ⚠️
Real-Time Alerts
You get notified when a cross happens, even if you’re away from the screen
🧠 The Logic Behind It
The EMA 135 reacts faster → it reflects short-term momentum
The EMA 315 moves slower → it reflects the main trend
When the fast EMA overtakes the slow EMA: short-term strength now aligns with the long-term trend → higher probability of a sustained move
The gap % tells you how strong the alignment is — large gap = cleaner moves, small gap = market in transition
“Approaching” status warns that the EMAs are converging, which often happens before a reversal
📊 Boosting the Strategy with Volume Analysis
The EMA cross is a strong trigger, but volume confirms the quality of the move:
High Volume + Cross → more reliable signal, as strong market participation is pushing the trend
Low Volume + Cross → caution, the move might be weak or a false breakout
💡 Tip:
Check the volume histogram or a volume-based indicator (e.g., Volume Profile, OBV).
On a BUY signal: volume should spike above the recent average.
On a SELL signal: watch for strong selling volume bars.
📍 Adding Support & Resistance for Precision
Support and resistance levels help filter out bad trades and optimize entries:
Best BUY setups:
EMA 135 crosses above EMA 315 near a known support zone
Bonus if volume confirms the move
Avoid buying directly into a strong resistance
Best SELL setups:
EMA 135 crosses below EMA 315 near a known resistance zone
Bonus if selling volume is strong
Avoid selling directly into a major support
💡 Use tools like horizontal lines, previous highs/lows, and Volume Profile nodes to spot these zones.
📈 Best Usage Practices
Timeframes
Lower timeframes (1m–5m) → more signals, but more noise → best for scalping with extra filters
Always Combine With Confirmation
EMA Cross = Trigger
Volume spike = Confirmation
S/R zone in your favor = High-probability setup
Manage Risk
Start with the built-in TP/SL
Adjust SL if volatility is higher than usual
Consider trailing stop once price moves in your favor
Avoid Sideways Markets
If EMA gap % is very small and crosses happen often → stand aside until a clear direction forms
Use Alerts
Set alerts for BUY & SELL crosses so you never miss a setup
In short:
This isn’t just an EMA cross indicator — it’s a trend system with built-in risk management, strength measurement, and pre-trade preparation. Combine it with volume confirmation and smart use of support/resistance, and you turn a simple signal into a high-probability trading edge.
Mr.BourssioA professional indicator that combines multiple strategies into one tool ,
Mr.Bourssio indicator that will help you spot ideal entry and exit opportunities.
The best frame for the indicator is the 1 - Hour frame.
Buy/Sell Signal - RSI + EMA + MACD + VWAPdisplays buy/sell along with ema, vwap combined.. so it can be used as one indicator instead of 2 indicators on trading view..
Mouse Manipulation Multi Timeframe By using both timeframes + Indicator, you are essentially building a two-step verification system.
EMA 9, 20, 50Exponential Moving Averages of 9, 20, and 50. Used to gauge buy and sell opportunities in trending markets.
EMA & MACD with AlertsEMA & MACD with Alerts
Version: 1.0
Pine Script Version: 5
Type: Overlay Indicator
What It Does
This script combines classic trend-following EMAs and momentum MACD signals into one clean, actionable package — right on your price chart. It highlights key moving average crossovers and MACD zero-line crossings with visual cues and alert triggers so you never miss critical momentum shifts.
Features
Three EMAs:
EMA 20 (fast) — lime green
EMA 50 (medium) — blue
EMA 200 (slow) — orange
EMA Cross Background Highlights:
Golden Cross: EMA 50 crosses above EMA 200 (bullish trend) — subtle green background
Death Cross: EMA 50 crosses below EMA 200 (bearish trend) — subtle red background
EMA 20 crossing EMA 50 for short-term momentum shifts — stronger green/red backgrounds
MACD Zero Line Cross Signals:
Bullish (MACD line crossing above zero) marked with a green upward triangle below bar
Bearish (MACD line crossing below zero) marked with a red downward triangle above bar
Alert Conditions:
Golden Cross
Death Cross
MACD bullish zero line cross
MACD bearish zero line cross
Alerts include clear, actionable messages.
Why Use This?
Instead of hunting through multiple indicators, this script distills crucial trend and momentum signals into one integrated view with easy-to-spot visual markers and automated alerts. It’s designed for traders who want quick, reliable triggers to align their entries and exits with underlying market strength shifts.
How to Use
Add the script to any TradingView chart (works best on daily and higher timeframes for trend signals).
Watch for background color changes signaling EMA crossovers (Golden/Death Cross).
Use plotted shapes as entry/exit signals based on MACD zero line cross.
Set up alerts in TradingView using the built-in alert conditions to get notified in real time.
Limitations
Signals are best combined with volume and price action context—don’t blindly follow crosses.
MACD zero line crosses can be noisy on lower timeframes; use with discretion.
No trade management or risk controls included; this is a pure signal tool.
The Golden TriggerThe Golden Trigger - XAUUSD
Unlock your trading potential with The Golden Trigger, a powerful technical analysis strategy designed for XAUUSD. This custom indicator combines the synergy of moving averages and the MACD to provide clear buy and sell signals, optimizing your trading decisions.
Key Features:
SMA Crossovers: Utilizes the 2-period and 7-period Simple Moving Averages (SMAs) to spot short-term price momentum shifts, triggering buy or sell signals.
MACD Confirmation: The strategy only acts when the MACD aligns with the price action, ensuring you’re trading with the market's momentum.
Long-Term Trend Filter: The 200-period SMA ensures that your trades align with the overall market trend, helping you avoid counter-trend moves.
Real-Time Alerts: Get notified when it's time to act with the built-in alert conditions for both Buy and Sell signals.
Customizable and User-Friendly: Tailor the strategy to your preferences and trade with confidence.
This indicator is perfect for traders looking to catch short-term trends in gold (XAUUSD), with clear visual buy and sell markers that appear directly on the chart.
Why You Need This Indicator:
Stay ahead of the market with real-time signals
Filter trades to match the prevailing market trend
Enhance your trading strategy with a clear, simple-to-follow system
Unlock the power of The Golden Trigger today and make smarter, more confident trades!
EMA Pullback Entry SignalsEMA Pullback Entry Signals is a tool designed to help traders identify trend continuation opportunities by detecting price pullbacks toward a slow EMA (Exponential Moving Average) during trending conditions.
This indicator combines moving average crossovers, price interaction with EMAs, and optional filtering to improve the timing and quality of trend entries.
Core Features:
Golden Cross / Death Cross Detection
Golden Cross: Fast EMA crossing above Slow EMA
Death Cross: Fast EMA crossing below Slow EMA
Optional X-shaped markers for crossover visualization
Pullback Signal on Slow EMA
Green triangle: Price crosses up through the slow EMA during a bullish trend
Red triangle: Price crosses down through the slow EMA during a bearish trend
Designed to capture continuation entries after a trend pullback
Optional Fast EMA Signals
Green arrow: Price crosses above fast EMA in a bull trend
Red arrow: Price crosses below fast EMA in a bear trend
Helps confirm minor retracements or short-term momentum shifts
Sideways Market Filter
Suppresses signals when the fast and slow EMAs are too close
Prevents entries during low-trend or choppy price action
Cooldown Timer
Enforces a minimum bar interval between signals to reduce overtrading
Helps avoid multiple entries from clustered signals
Custom Alerts
Alerts available for all signal types
Include ticker and timeframe in each alert message
Configurable Settings:
Fast and slow EMA lengths1
Toggle individual signal types (pullbacks, fast EMA crosses, crossovers)
Enable/disable cooldown logic and set bar duration
Sideways market detection sensitivity (EMA proximity threshold)
Primary Use Case
This script is most useful for trend-following traders seeking to enter pullbacks after a trend is established. When the price retraces to the slow EMA and then resumes in the trend direction, it can offer high-quality continuation setups. Works well across timeframes and markets.
Sigma Expected Movement [D/W/M] - Jez WhitakerThis indicator aims to help those with lower levels of TradingView add day trading indicators without going over their limits. You can toggle on and off the indicators you want and change the settings but you should see:
MAs - 5, 20, 50, 100, 200
VWAPS - daily, WTD, MTD, YTD
Previous close, previous highs, previous lows etc.
Trident Pattern [SpeculationLab]This indicator is based on the increasingly popular Trident strategy, and is best suited for the 30-minute timeframe. It performs particularly well on naturally bullish instruments such as gold, Bitcoin, and Nasdaq.All components of this indicator are original work by Speculation Lab.
Rather than stacking random features, this script is designed as a modular structure where each part works in synergy to build the Trident logic.
🔧 Modules Included:
Session Highlight — Visual display of the London Kill Zone
5 Customizable EMAs — Fully adjustable length, color, and toggling
Bullish Fair Value Gap (FVG) detection
Four types of Doji candlestick recognition
🧫 Logic Breakdown:
1. Time Session Filter
By default, the indicator highlights the London Kill Zone, defined as 03:00–06:30 New York time.Users can freely adjust the time zone, time range, and background color, with preconfigured zones including New York, London, Tokyo, Shanghai, and Sydney.
⚠️ Note: To maintain flexibility, the London Kill Zone is not enforced as a mandatory entry condition.
Users may apply it as an optional filter based on their own trading style.
2. 5 EMA Trend Filter
The script uses a five-EMA structure to confirm market trend.The default EMA lengths are 5, 9, 13, 21, and 200.A valid entry requires:
EMAs 5, 9, 13, 21 stacked in descending order
AND the 1-hour close is above EMA(200)
All EMAs are fully customizable and can be toggled on/off.
3. Bullish Fair Value Gap (FVG)
Bullish FVGs are detected using a 3-bar logic, from high to low .To filter noise, the gap must be greater than 0.7 × ATR(14) by default.Both the ATR period and multiplier are adjustable.
The FVG Extend setting has two roles:
It controls how many bars the FVG box extends to the right (default: 20)
It defines the active window for confirming entries within the FVG zone
Users can fully customize the box color, text, and center line.
4. Doji Detection
The script detects four types of Doji candlesticks:
Standard Doji
Long-legged Doji
Dragonfly Doji
Gravestone Doji
The Body Ratio setting controls how small the candle body must be relative to the full range (default ≤ 0.1).Long Wick Ratio and Short Wick Ratio further help fine-tune wick length criteria.
✅ Entry Signal Logic:
A Trident entry is confirmed when all the following conditions are met:
Trend Filter Passes
EMAs are stacked: 5 > 9 > 13 > 21
1H close is above EMA(200)
A Doji candle appears inside an active FVG zone
The next candle closes below the Doji’s high
If all conditions are satisfied, a Trident signal is triggered at the close of the confirming candle.
⚠️ Disclaimer
This indicator is intended for educational and research purposes only. It does not constitute financial advice or trading signals.Trading involves high risk. Please act according to your own risk management.Speculation Lab and the author bear no responsibility for any financial outcomes resulting from the use of this script.
本指标基于近年来日益流行的 Trident(三叉戟)策略,推荐使用在 30分钟时间框架,尤其适用于黄金、比特币、纳斯达克等具有自然上涨倾向的交易品种。本指标由 Speculation Lab 原创开发,结构严谨,逻辑清晰。
本指标采用模块化设计,各部分功能相辅相成,共同构建三叉戟策略逻辑,而非杂乱堆砌。
🔧 指标包含以下功能模块:
交易时段高亮 — 默认显示 伦敦杀戮区
五条可调节 EMA 均线 — 长度与颜色可自定义,模块可单独开关
看涨 Fair Value Gap(公平价值缺口)检测
四种 Doji(十字星)K线形态识别
🧫 逻辑说明:
1. 交易时段过滤
默认高亮显示的伦敦杀戮区为 纽约时间03:00–06:30。用户可自由调整 参考时区、具体时段和 背景颜色,支持预设时区包括纽约、伦敦、东京、上海和悉尼。
⚠️ 说明:为保持策略灵活性,伦敦杀戮区并非强制入场条件。
是否采用此过滤,可由用户自行决定。
2. 趋势过滤(五条EMA)
该指标采用五条 EMA 来确认市场趋势。默认长度为 5、9、13、21、200。入场信号要求满足以下条件:
EMA 5、9、13、21 从上到下依次排列(多头排列)
且 1小时图上的收盘价高于 EMA200
所有均线均可单独启用/关闭,长度与颜色均可自定义。
3. 看涨 FVG 区域识别
FVG 使用 3 根K线结构进行检测,从 high 到 low 。默认要求缺口 大于等于 0.7 × ATR(14),以过滤微小无效缺口。ATR周期与乘数均可自定义设置。
“FVG Extend”参数有两个作用:
控制图表上 FVG 区域箱体的右延伸长度(默认20根K线)
用作 FVG 活跃期的判断标准,仅在此区间内出现的 Doji 才会被视为有效信号触发条件
用户可自由设置 FVG 的背景颜色、文字样式与中线颜色。
4. Doji(十字星)识别
支持以下四种常见 Doji 形态识别:
标准十字星
长腿十字星
蜻蜓线(下影线长)
墓碑线(上影线长)
“Body Ratio” 控制实体占K线全长的比例,默认不超过0.2。“Long Wick Ratio” 与 “Short Wick Ratio” 可进一步调节影线长度识别标准。
✅ 入场信号逻辑:
符合以下所有条件时,触发三叉戟入场信号:
趋势过滤通过
EMA 依次排列为 5 > 9 > 13 > 21
且 1小时收盘价高于 EMA200
在 FVG 区域内出现有效 Doji 十字星
下一根K线收盘价 低于 Doji 的最高价
若以上条件均满足,则在确认K线收盘时触发三叉戟入场信号。
⚠️ 免责声明 Disclaimer
本指标旨在提供技术分析工具,仅用于教育与研究目的,不构成任何投资建议或交易指令。交易具有高风险,请根据自身风险承受能力合理操作。使用本脚本所导致的任何盈亏,作者与 Speculation Lab 不承担任何责任。
Average VolatilityThis script offers a unique and practical approach to visualizing average volatility by calculating a simple moving average of the daily high-low ranges, directly reflecting price fluctuations over a user-defined period. Unlike standard volatility indicators, it provides customizable options such as adjustable period length, display of absolute and percentage volatility values, and flexible text formatting for clear and tailored insights. This makes it a valuable tool for traders seeking to better understand market volatility trends and manage risk more effectively. Its straightforward visualization supports informed decision-making across various instruments and timeframes.
The indicator displays the average volatility over a configurable period as a bar chart (originally designed for daily intervals). It visualizes the price range (difference between high and low) across a selectable number of periods, as well as its ratio to the closing price, offering various customization options.
For many traders, assets with daily moves of 1% or more may offer greater profit opportunities, especially for short-term trading strategies. Instruments with lower volatility are generally less favored and often not recommended in such approaches due to reduced trading potential. Please note that higher volatility also implies increased risk, and potential losses can be significant. Always use proper risk management.
Detailed description:
The script calculates average volatility as a simple moving average of the high-low ranges (default: 5 periods, intended for daily timeframes). Volatility can be shown as either a bar or line chart. Users can choose to display the absolute volatility values and/or the volatility expressed as a percentage of the closing price. Text size and spacing between labels are adjustable to ensure readability across different instruments. Additionally, the last (unconfirmed) bar can be shown or hidden, since its value depends on the current price. Overall, the script provides a flexible and clear visualization of an instrument’s volatility.
---
Russian:
Индикатор отображает среднюю волатильность как простое скользящее среднее диапазонов «максимум-минимум» (по умолчанию 5 периодов, предназначено для дневных таймфреймов). Волатильность может отображаться в виде столбчатой или линейной диаграммы. Пользователи могут выбрать отображение абсолютных значений волатильности и/или волатильности, выраженной в процентах от цены закрытия. Размер текста и расстояния между надписями регулируются для удобочитаемости на разных инструментах. Кроме того, последний (неподтверждённый) столбец можно показать или скрыть, так как его значение зависит от текущей цены. В общем, скрипт обеспечивает гибкое и наглядное отображение волатильности инструмента.
Активы с волатильностью от 1% и выше дают больше возможностей для краткосрочной торговли, но риск также выше. Инструменты с низкой волатильностью не рекомендуются для таких подходов из-за ограниченного торгового потенциала и сложности в реализации прибыльных сделок. Всегда применяйте риск-менеджмент.
---
Spanish:
El script calcula la volatilidad promedio como un promedio móvil simple de las diferencias entre máximos y mínimos (por defecto 5 periodos, pensado para intervalos diarios). La volatilidad puede mostrarse como gráfico de barras o de líneas. El usuario puede elegir mostrar los valores absolutos de la volatilidad y/o los valores expresados en porcentaje respecto al precio de cierre. El tamaño del texto y el espacio entre las etiquetas son ajustables para garantizar la legibilidad en diferentes instrumentos. Además, se puede mostrar u ocultar la última barra (no confirmada), ya que su valor depende del precio actual. En conjunto, el script proporciona una visualización flexible y clara de la volatilidad del instrumento.
Los activos con una volatilidad del 1% o más ofrecen mayores oportunidades para el trading a corto plazo, pero también conllevan un mayor riesgo. Los instrumentos con baja volatilidad no se recomiendan para este tipo de estrategias debido a su limitado potencial de trading y la dificultad para obtener ganancias. Siempre utilice una gestión de riesgos adecuada.
D1 Momentum Trigger (Filter ADX)D1 MOMENTUM TRIGGER + ADX – Added ADX filter to avoid strong trend periods during reversal trades. The ADX period is configurable.
Crypto Trend Master Pro + Hull Trend (MARK804 Enhanced)Strategy Overview: Crypto Trend Master Pro + Hull Signals
Strategy Essence
This script merges multi-dimensional trend analysis by blending EMA-ATR trend filters with the precision of Hull Moving Averages. Focused solely on arrow-based trade signals, it delivers clean, high-conviction entries via fortified dual confirmation logic—all while maintaining a minimalist aesthetic for traders who prize clarity.
Key Components & Design Philosophy
Dual Confirmation Structure
Only triggers a BUY arrow when both the EMA-ATR slope indicates bullishness and the Hull MA confirms upward momentum. Similarly, a SELL arrow appears only when both bearish signals align—filtering noise and reinforcing signal conviction.
Hull MA Variant Flexibility
Traders can toggle between HMA, EHMA, or THMA versions of the Hull MA, calibrating the balance between responsiveness and smoothing based on preference and timeframe.
Minimalist Visual Interface
Discrete arrow shapes—green for BUY, red for SELL—appear directly on the chart, delivering precise signal points with no extraneous labeling or clutter.
Alert-Ready for Seamless Automation
Each signal format (BUY/SELL) is natively benchmarked with alertcondition, enabling seamless integration into automated workflows or notification systems.
Clean Code Architecture
Structured around strong boolean logic (longSignal, shortSignal), the script remains efficient, readable, and straightforward to adapt or integrate into broader systems.
Pro-Level Considerations
Feature Advantage for Professional Traders
Dual Confirmation Boosts reliability by aligning trend filters
Hull Variant Options Tailors sensitivity to different market volatilities
Arrow-Only UI Keeps chart focused and minimizes visual distraction
Alert Compatibility Straightforward integration with alert/automation tools
Modular Design Supports expansion—add stop-loss, multi-timeframe logic
Community-Level Insight
As one seasoned user put it:
“If you're a pro, you know where repaint comes in and how to avoid it. You understand slippage and test on demo accounts regularly.”