AD Pro//@version=5
indicator("AD Pro", overlay=true)
// === Inputs
atrLen = input.int(14, "ATR Length")
factor = input.float(0.7, "Factor")
slMultiplier = input.float(2.0, "SL Multiplier")
// Volatility Filter Input
atrFilterStrength = input.float(1.0, "Volatility Threshold (x Avg ATR)", step=0.1, minval=0.1)
// Min % Price Change Filter
enableMinMove = input.bool(true, "Enable Min % Price Change Filter")
lookbackBars = input.int(20, "Lookback Bars")
minMovePct = input.float(0.005, "Min % Price Change", step=0.001, minval=0)
// TP Buy colors
tp1BuyColor = input.color(color.lime, "TP1 Buy Color")
tp2BuyColor = input.color(color.green, "TP2 Buy Color")
tp3BuyColor = input.color(color.teal, "TP3 Buy Color")
// TP Sell colors
tp1SellColor = input.color(color.fuchsia, "TP1 Sell Color")
tp2SellColor = input.color(color.red, "TP2 Sell Color")
tp3SellColor = input.color(color.maroon, "TP3 Sell Color")
// SL colors
slBuyColor = input.color(color.blue, "SL Buy Color")
slSellColor = input.color(color.blue, "SL Sell Color")
// === Indicator Calculations
atr = ta.atr(atrLen)
avgATR = ta.sma(atr, 50)
atrCondition = atr > avgATR * atrFilterStrength
priceChange = math.abs(close - close ) / close
priceMoveOK = priceChange > minMovePct
priceChangeCondition = not enableMinMove or priceMoveOK
volatilityOK = atrCondition and priceChangeCondition
// === UT Bot Logic
src = close
var float trailPrice = na
var bool dirLong = true
longStop = src - factor * atr
shortStop = src + factor * atr
if na(trailPrice)
trailPrice := longStop
dirLong := true
else
if dirLong
trailPrice := math.max(trailPrice, longStop)
dirLong := src > trailPrice
else
trailPrice := math.min(trailPrice, shortStop)
dirLong := src > trailPrice
rawBuy = dirLong and not dirLong
rawSell = not dirLong and dirLong
// Apply Volatility Filter
buySignal = rawBuy and volatilityOK
sellSignal = rawSell and volatilityOK
// === Entry & Label Storage
var float entryPrice = na
var bool lastSignalIsBuy = na
var label tp1Lbl = na
var label tp2Lbl = na
var label tp3Lbl = na
var label slLbl = na
var line tp1Line = na
var line tp2Line = na
var line tp3Line = na
var line slLine = na
if buySignal or sellSignal
if not na(tp1Lbl)
label.delete(tp1Lbl)
if not na(tp2Lbl)
label.delete(tp2Lbl)
if not na(tp3Lbl)
label.delete(tp3Lbl)
if not na(slLbl)
label.delete(slLbl)
if not na(tp1Line)
line.delete(tp1Line)
if not na(tp2Line)
line.delete(tp2Line)
if not na(tp3Line)
line.delete(tp3Line)
if not na(slLine)
line.delete(slLine)
entryPrice := close
lastSignalIsBuy := buySignal
tp1 = entryPrice + (buySignal ? 1 : -1) * atr
tp2 = entryPrice + (buySignal ? 2 : -2) * atr
tp3 = entryPrice + (buySignal ? 3 : -3) * atr
sl = entryPrice - (buySignal ? 1 : -1) * factor * atr * slMultiplier
tp1Lbl := label.new(bar_index, tp1, "TP1 " + str.tostring(tp1, format.mintick),
style=label.style_label_right,
color=buySignal ? tp1BuyColor : tp1SellColor,
textcolor=color.black)
tp2Lbl := label.new(bar_index, tp2, "TP2 " + str.tostring(tp2, format.mintick),
style=label.style_label_right,
color=buySignal ? tp2BuyColor : tp2SellColor,
textcolor=color.white)
tp3Lbl := label.new(bar_index, tp3, "TP3 " + str.tostring(tp3, format.mintick),
style=label.style_label_right,
color=buySignal ? tp3BuyColor : tp3SellColor,
textcolor=color.white)
slLbl := label.new(bar_index, sl, "SL " + str.tostring(sl, format.mintick),
style=label.style_label_right,
color=buySignal ? slBuyColor : slSellColor,
textcolor=color.white)
tp1Line := line.new(bar_index, tp1, bar_index + 1, tp1,
color=buySignal ? tp1BuyColor : tp1SellColor, style=line.style_dashed)
tp2Line := line.new(bar_index, tp2, bar_index + 1, tp2,
color=buySignal ? tp2BuyColor : tp2SellColor, style=line.style_dashed)
tp3Line := line.new(bar_index, tp3, bar_index + 1, tp3,
color=buySignal ? tp3BuyColor : tp3SellColor, style=line.style_dashed)
slLine := line.new(bar_index, sl, bar_index + 1, sl,
color=buySignal ? slBuyColor : slSellColor, style=line.style_dashed)
// === Plot Signals
plotshape(buySignal, title="Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// === Alerts
alertcondition(buySignal, title="Buy Alert", message="Buy Signal!")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal!")
Penunjuk dan strategi
STD Fast vs Slow (Manual Bar Inputs)Kenny Camo
I need to write more, not really sure what to put. TradingView says I need a longer description.
Basically, attempting to not get wrekt by Kenny and Co.
PineTraderOT_V6Library "PineTraderOT_V6"
TODO: Simplify the order ticket generation for Pinetrader.io
GenerateOT(license_id, symbol, action, order_type, trade_type, size, price, tp, sl, risk, trailPrice, trailOffset)
CreateOrderTicket: Establishes a order ticket following appropriate guidelines.
Parameters:
license_id (string) : Provide your license index
symbol (string) : Symbol on which to execute the trade
action (string) : Execution method of the trade : "MRKT" or "PENDING"
order_type (string) : Direction type of the order: "BUY" or "SELL"
trade_type (string) : Is it a "SPREAD" trade or a "SINGLE" symbol execution?
size (float) : Size of the trade, in units
price (float) : If the order is pending you must specify the execution price
tp (float) : (Optional) Take profit of the order
sl (float) : (Optional) Stop loss of the order
risk (float) : Percent to risk for the trade, if size not specified
trailPrice (float) : (Optional) Price at which trailing stop is starting
trailOffset (float) : (Optional) Amount to trail by
Returns: Return Order string
FVG Strategy 5minThat's the early of my new strat, can't wait to upgrade it and take bigggg profit guys
Market State [wundaba]General market overview indicator
Add your own symbols
Credits to Luon MC for the idea
OBHOW-TO: Advanced Order Block & Liquidity Mapping Tool
This script combines order block detection using 3- and 5-bar fractal structures with dynamic and static liquidity zones, plus optional time-based label calculations.
Key features:
– Fractal-based detection of bullish and bearish order blocks
– Automatic removal of broken OBs to keep charts clean
– Optional FVG validation for higher-quality OBs
– Custom time label logic for bar/session analysis
– Configurable visuals: line styles, widths, label placement, and time offsets
The logic for liquidity detection is adapted from the open-source LiquidityFinderLibrary by TFlab. This version adds custom cleanup behavior and visual enhancements to improve usability.
This script is published as open-source and intended for educational and analytical use only. No performance guarantees are implied.
If you have questions or suggestions, feel free to message me privately on TradingView.
Bilateral Filter For Loop [BackQuant]Bilateral Filter For Loop
The Bilateral Filter For Loop is an advanced technical indicator designed to filter out market noise and smooth out price data, thus improving the identification of underlying market trends. It employs a bilateral filter, which is a sophisticated non-linear filter commonly used in image processing and price time series analysis. By considering both spatial and range differences between price points, this filter is highly effective at preserving significant trends while reducing random fluctuations, ultimately making it suitable for dynamic trend-following strategies.
Please take the time to read the following:
Key Features
1. Bilateral Filter Calculation:
The bilateral filter is the core of this indicator and works by applying a weight to each data point based on two factors: spatial distance and price range difference. This dual weighting process allows the filter to preserve important price movements while reducing the impact of less relevant fluctuations. The filter uses two primary parameters:
Spatial Sigma (σ_d): This parameter adjusts the weight applied based on the distance of each price point from the current price. A larger spatial sigma means more smoothing, as further away values will contribute more heavily to the result.
Range Sigma (σ_r): This parameter controls how much weight is applied based on the difference in price values. Larger price differences result in smaller weights, while similar price values result in larger weights, thereby preserving the trend while filtering out noise.
The output of this filter is a smoothed version of the original price series, which eliminates short-term fluctuations, helping traders focus on longer-term trends. The bilateral filter is applied over a rolling window, adjusting the level of smoothing dynamically based on both the distance between values and their relative price movements.
2. For Loop Calculation for Trend Scoring:
A for-loop is used to calculate the trend score based on the filtered price data. The loop compares the current value to previous values within the specified window, scoring the trend as follows:
+1 for upward movement (when the filtered value is greater than the previous value).
-1 for downward movement (when the filtered value is less than the previous value).
The cumulative result of this loop gives a continuous trend score, which serves as a directional indicator for the market's momentum. By summing the scores over the window period, the loop provides an aggregate value that reflects the overall trend strength. This score helps determine whether the market is experiencing a strong uptrend, downtrend, or sideways movement.
3. Long and Short Conditions:
Once the trend score has been calculated, it is compared against predefined threshold levels:
A long signal is generated when the trend score exceeds the upper threshold, indicating that the market is in a strong uptrend.
A short signal is generated when the trend score crosses below the lower threshold, signaling a potential downtrend or trend reversal.
These conditions provide clear signals for potential entry points, and the color-coding helps traders quickly identify market direction:
Long signals are displayed in green.
Short signals are displayed in red.
These signals are designed to provide high-confidence entries for trend-following strategies, helping traders capture profitable movements in the market.
4. Trend Background and Bar Coloring:
The script offers customizable visual settings to enhance the clarity of the trend signals. Traders can choose to:
Color the bars based on the trend direction: Bars are colored green for long signals and red for short signals.
Change the background color to provide additional context: The background will be shaded green for a bullish trend and red for a bearish trend. This visual feedback helps traders to stay aligned with the prevailing market sentiment.
These features offer a quick visual reference for understanding the market's direction, making it easier for traders to identify when to enter or exit positions.
5. Threshold Lines for Visual Feedback:
Threshold lines are plotted on the chart to represent the predefined long and short levels. These lines act as clear markers for when the market reaches a critical threshold, triggering a potential buy (long) or sell (short) signal. By showing these threshold lines on the chart, traders can quickly gauge the strength of the market and assess whether the trend is strong enough to warrant action.
These thresholds can be adjusted based on the trader's preferences, allowing them to fine-tune the indicator for different market conditions or asset behaviors.
6. Customizable Parameters for Flexibility:
The indicator offers several parameters that can be adjusted to suit individual trading preferences:
Window Period (Bilateral Filter): The window size determines how many past price values are used to calculate the bilateral filter. A larger window increases smoothing, while a smaller window results in more responsive, but noisier, data.
Spatial Sigma (σ_d) and Range Sigma (σ_r): These values control how sensitive the filter is to price changes and the distance between data points. Fine-tuning these parameters allows traders to adjust the degree of noise reduction applied to the price series.
Threshold Levels: The upper and lower thresholds determine when the trend score crosses into long or short territory. These levels can be customized to better match the trader's risk tolerance or asset characteristics.
Visual Settings: Traders can customize the appearance of the chart, including the line width of trend signals, bar colors, and background shading, to make the indicator more readable and aligned with their charting style.
7. Alerts for Trend Reversals:
The indicator includes alert conditions for real-time notifications when the market crosses the defined thresholds. Traders can set alerts to be notified when:
The trend score crosses the long threshold, signaling an uptrend.
The trend score crosses the short threshold, signaling a downtrend.
These alerts provide timely information, allowing traders to take immediate action when the market shows a significant change in direction.
Final Thoughts
The Bilateral Filter For Loop indicator is a robust tool for trend-following traders who wish to reduce market noise and focus on the underlying trend. By applying the bilateral filter and calculating trend scores, this indicator helps traders identify strong uptrends and downtrends, providing reliable entry signals with minimal market noise. The customizable parameters, visual feedback, and alerting system make it a versatile tool for traders seeking to improve their timing and capture profitable market movements.
Thus following all of the key points here are some sample backtests on the 1D Chart
Disclaimer: Backtests are based off past results, and are not indicative of the future.
INDEX:BTCUSD
INDEX:ETHUSD
CRYPTO:SOLUSD
A+ Trade Checklist (Table Only)This is the only A+ trading checklist you'll ever need.
Let me know if you'd like anything added!
If you want to help my journey USDT address is below :)
Network
BNB Smart Chain
0x539c59b98b6ee346072dd2bafbf9418dad475dbc
Follow my insta:
@liviupircalabu10
BTC ETF Flows & Correlation with BTC Pricebtc etf flows and correlation with btc price, btc etf flows and correlation with btc price, btc etf flows and correlation with btc price, btc etf flows and correlation with btc price
ATR Bands PRO + Sweep Label + Divergence [MASTER]🔰 ATR Bands PRO + Liquidity Sweep & Divergence (RSI/MACD)
## 🔰 ATR Bands PRO + Liquidity Sweep & Divergence
A powerful institutional-grade toolkit that combines advanced ATR band visualization, customizable stop bands, dynamic grid lines, real-time liquidity sweep detection, and built-in swing-point divergence signals (RSI/MACD) – all fully adjustable.
**Key Features:**
- **Multi-Timeframe ATR Bands:**
Visualize ATR-based bands from any higher timeframe, fully customizable in color, width, style, and extension.
- **Smart Stops & Grid:**
Add stop bands and dynamic ATR grid lines with user control over appearance and step.
- **Liquidity Sweep Detection:**
Instantly see “Bull Sweep” or “Bear Sweep” labels every time price touches high/low liquidity sweeps from your chosen timeframe.
- **Divergence Alerts (RSI/MACD):**
Detect bullish or bearish divergence at swing highs/lows (on the main timeframe) – complete with highly visible, color-customizable labels.
- **Professional, Non-Cluttered Visuals:**
All labels and lines are managed with smart array handling – zero repaint, zero overlay clutter.
**How to Use:**
1. Choose your ATR “base” timeframe and customize band/stop/grid appearance.
2. Pick the Liquidity Sweep timeframe (e.g., H1, H4, D1) for institutional swing levels.
3. Enable divergence detection (RSI or MACD) to reveal hidden reversal signals at market pivots.
4. Adjust label offsets and colors for maximum clarity on your chart.
**Perfect for:**
- Liquidity-driven scalping, swing, and positional strategies.
- Spotting liquidity grabs, institutional sweeps, and “trap” price action.
- Fast visual confirmation of potential reversal zones using built-in divergence signals.
- Traders who demand high-performance, flexible visuals without chart clutter.
---
**Credit:**
Original logic inspired by RunStrat, AlgoAlpha, and custom adaptations by MILO888.
---
*For educational and professional use. Test on your own symbol/timeframe before live trading. Enjoy an edge!*
OBV PanelOBV Panel – Volume-Based Price Prediction & Signal Dashboard
Powered by Pine Script v6
🔍 Overview
This multi-functional indicator is designed around the On-Balance Volume (OBV) concept, enhancing it with prediction models, trend tracking, and actionable buy/sell signals. It uses a combination of real-time OBV movement, smoothed OBV with EMA, and linear regression-based OBV forecasts to deliver both intraday and weekly insights — all neatly displayed in a table panel and directly plotted on your chart.
⚙️ Core Components
📌 1. OBV Core
OBV is calculated based on volume flowing into or out of a stock as price moves up or down.
Tracks raw OBV and its EMA (Exponential Moving Average) for smoother trend reading.
Computes a Predicted OBV using Linear Regression (ta.linreg) over a user-defined number of bars.
🔮 2. Predicted Price Forecast
Uses OBV percentage changes combined with a user-set sensitivity factor to project next day’s expected price.
Offers an AI-style price forecast based on OBV strength, not just price action.
💹 3. Buy/Sell Signal Logic
Daily Signals: Triggered when OBV, OBV EMA, and Predicted OBV all move upward or downward from the previous day.
Weekly Signals: Based on EMA changes over a 5-bar period (approx. 1 week).
Signal markers are drawn on the chart for visual reference.
📊 Table Panel (Top-Right Overlay)
A detailed visual panel shows:
Metric Description
OBV, OBV EMA, Predicted OBV From previous close to current value
OBV - Predicted OBV Difference In lakhs (scaled for readability)
% Change Stats Daily percentage change in OBV, EMA, and Predicted OBV
Weekly OBV EMA Change Actual & % change over 5 bars
Signal Summary BUY/SELL or HOLD based on logic
OBV Dominance Whether OBV > EMA and Predicted OBV
Predicted Price (Next Day) Based on OBV dynamics and sensitivity
내 스크립트//@version=5
indicator("Support/Resistance Scalping Strategy", overlay=true)
// === 사용자 설정 ===
support_level = input.float(101000, title="지지선", step=10)
resistance_level = input.float(104000, title="저항선", step=10)
rsi = ta.rsi(close, 14)
bb_upper = ta.bb(close, 20, 2).upper
bb_lower = ta.bb(close, 20, 2).lower
// === 조건 ===
// 롱 조건: 지지선 근처 도달 + RSI < 40 + 볼린저 하단 근접
long_condition = (low <= support_level * 1.002) and (rsi < 40) and (close <= bb_lower)
plotshape(long_condition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
// 숏 조건: 저항선 근처 도달 + RSI > 60 + 볼린저 상단 근접
short_condition = (high >= resistance_level * 0.998) and (rsi > 60) and (close >= bb_upper)
plotshape(short_condition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")
// 시각적 지지/저항선 표시
hline(support_level, "지지선", color=color.green, linestyle=hline.style_dashed)
hline(resistance_level, "저항선", color=color.red, linestyle=hline.style_dashed)
내 스크립트//@version=5
indicator("Support/Resistance Scalping Strategy", overlay=true)
// === 사용자 설정 ===
support_level = input.float(101000, title="지지선", step=10)
resistance_level = input.float(104000, title="저항선", step=10)
rsi = ta.rsi(close, 14)
bb_upper = ta.bb(close, 20, 2).upper
bb_lower = ta.bb(close, 20, 2).lower
// === 조건 ===
// 롱 조건: 지지선 근처 도달 + RSI < 40 + 볼린저 하단 근접
long_condition = (low <= support_level * 1.002) and (rsi < 40) and (close <= bb_lower)
plotshape(long_condition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
// 숏 조건: 저항선 근처 도달 + RSI > 60 + 볼린저 상단 근접
short_condition = (high >= resistance_level * 0.998) and (rsi > 60) and (close >= bb_upper)
plotshape(short_condition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")
// 시각적 지지/저항선 표시
hline(support_level, "지지선", color=color.green, linestyle=hline.style_dashed)
hline(resistance_level, "저항선", color=color.red, linestyle=hline.style_dashed)
Sterke Trendwissel SignalenOverview
The indicator combines three technical analysis tools to generate strong buy and sell signals:
Moving Averages (MA): Short-term (9-period) and long-term (21-period) simple moving averages.
Relative Strength Index (RSI): A 14-period RSI to measure overbought and oversold conditions.
Volume: A volume multiplier (1.2x) compared to the average volume over 20 periods.
Signals
The indicator generates two types of signals:
Strong Buy: When the short-term MA crosses above the long-term MA (bullish crossover), the relative volume is above the threshold (1.2x average), and the RSI is oversold (< 30).
Strong Sell: When the short-term MA crosses below the long-term MA (bearish crossover), the relative volume is above the threshold (1.2x average), and the RSI is overbought (> 70).
Visualizations
The indicator plots:
The short-term MA (blue line)
The long-term MA (orange line)
"STRONG BUY" labels (green) below the bar when a strong buy signal is generated
"STRONG SELL" labels (red) above the bar when a strong sell signal is generated
Alerts
The indicator sets up alerts for strong buy and sell signals, which can be configured in TradingView's alert system.
In summary, this indicator aims to identify strong trend changes by combining moving average crossovers, high volume, and RSI overbought/oversold conditions.
RONALD SMA BUY and SELL Indicator//@version=6
indicator('RONALD SMA BUY and SELL Indicator', overlay=true, max_labels_count=500)
// 1. Instellingen met standaardwaarden
fastLength = input.int(3, 'Fast SMA Lengte', minval=1, tooltip='Kortere periode voor snellere SMA')
slowLength = input.int(40, 'Slow SMA Lengte', minval=1, tooltip='Langere periode voor tragere SMA')
signalColor = input.color(color.yellow, 'Signaalkleur', tooltip='Kleur voor alle signalen')
// 2. SMA berekeningen
fastSMA = ta.sma(close, fastLength)
slowSMA = ta.sma(close, slowLength)
// 3. Plot SMA lijnen
plot(fastSMA, 'Fast SMA', color.new(color.blue, 0), 2)
plot(slowSMA, 'Slow SMA', color.new(color.red, 0), 2)
// 4. Signaal detectie
bullish = ta.crossover(fastSMA, slowSMA)
bearish = ta.crossunder(fastSMA, slowSMA)
// 5. Geavanceerde label positioning
yPosBuy = low - (ta.tr(true) * 0.5)
yPosSell = high + (ta.tr(true) * 0.5)
// 6. Dynamische labels met vingers
if bullish
label.new(
bar_index, yPosBuy,
text='BUY', color=signalColor,
style=label.style_label_up, textcolor=color.white,
yloc=yloc.price, size=size.normal)
if bearish
label.new(
bar_index, yPosSell,
text='SELL', color=signalColor,
style=label.style_label_down, textcolor=color.white,
yloc=yloc.price, size=size.normal)
// 7. Alternatieve plotshapes (optioneel)
plotshape(bullish, style=shape.triangleup, location=location.belowbar, color=signalColor, size=size.small)
plotshape(bearish, style=shape.triangledown, location=location.abovebar, color=signalColor, size=size.small)
useTrendFilter = input(true, "Gebruik Trendfilter")
trendLength = input(50, "Trend SMA Lengte")
trendSMA = ta.sma(close, trendLength)
DI+ Trend Tracker & Prediction (v6) DI+ Trend Tracker & Prediction – Pine Script v6
🔍 Overview
This custom TradingView indicator focuses exclusively on the +DI (Positive Directional Indicator) component of the ADX (Average Directional Index) system. It tracks recent DI+ values, analyzes trend strength and direction, and applies a simple predictive model to estimate DI+ for the next trading day.
🧠 Key Features
✅ 1. DI+ History Table (Last 4 Days)
Displays DI+ values for the past 4 completed bars.
Helps traders observe momentum and directional strength in a structured view.
📈 2. Percentage Change Calculations
Daily % Change: Shows change between the current DI+ and the previous day.
Average % Change (3 Days): Measures average change over the last 3 sessions to identify the directional consistency.
🔮 3. Predictive DI+ Estimation
Uses a linear regression (ta.linreg) over the last 4 DI+ values to estimate the next day’s DI+ reading.
This is a simple "AI-style" statistical model, providing a forecast for tomorrow’s directional strength.
📉 4. Buy/Sell Signal Generation
Buy Signal: Triggered when DI+ rises steadily over 3 days.
Sell Signal: Triggered when DI+ drops steadily over 3 days.
These signals are shown both in the table and directly on the chart with triangle markers.
📋 5. Clean Table Display
The indicator uses a top-right table to clearly present:
4-day DI+ history
Daily and average percentage changes
Predicted DI+ value
Current signal
DI+ for today
🔧 Inputs
ADX Length: Period for the DI+ calculation (default: 14)
ADX Smoothing: Smoothing period for the ADX and DMI components (default: 14)
🎯 Use Case
This indicator is ideal for:
Traders who focus on trend strength and directional movement.
Those seeking a quantitative edge by forecasting DI+.
Anyone wanting a visual cue system without overly complex strategy rules.
📌 Notes
This indicator does not include full ADX or DI− components.
It is meant for signal analysis, trend confirmation, and forecasting, not full strategy backtesting.
10 EMA -3*ATRThis custom indicator plots the line calculated as 10-period Exponential Moving Average (EMA) minus 3 times the 14-period Average True Range (ATR). It helps traders identify dynamic support levels or pullback zones during strong trends by adjusting for market volatility. A falling line may signal increasing volatility or weakening momentum, while a rising line may indicate strengthening trend stability. Suitable for trend-following strategies and volatility-aware entries.
_CM_MacD_Ult_MTF_V2.1//------New V2 Update 07-28-2021----------
//Thanks to @SKTennis for help in Updating code to V2
//Added Groups to Settings Pane.
//Added Color Plots to Settings Pane
//Switched MTF Logic to turn ON/OFF automatically w/ TradingView's Built in Feature
//Updated Color Transparency plots to work in future update
//Added Ability to Turn ON/OFF Show MacD & Signal Line
//Added Ability to Turn ON/OFF Show Histogram
//Added Ability to Change MACD Line Colors Based on Trend
//Added Ability to Highlight Price Bars Based on Trend
//Added Alerts to Settings Pane.
//Customized how Alerts work. Must keep Checked in Settings Pane, and...
//When you go to Alerts Panel, Change Symbol to Indicator (CM_Ult_MacD_MTF_V2)
//Customized Alerts to Show Symbol, TimeFrame, Closing Price, MACD Crosses Up & MACD Crosses Down Signals in Alert
//Alerts are Pre-Set to only Alert on Bar Close
//------New V2.1 Update 08-03-2021----------
//Added back in ability to show Dots when MACD Crosses.
//Added Ability to Change Plot Widths in Settings Pane
//Added in Alert Feature where Cross Up if above 0 or cross down if below 0 (OFF By Default) user Request. @creid58
//FIXED - Plot Orders to Default what Plots are on top of each other
//FIXED - Two of the histogrm colors were backwrds
//------New V2.1 Update 12-07-2021----------
//Updated to PineScript V5
//------Minor Update 02-16-2022----------
//Per user request...Increased the Maxval for Signal Smoothing
//Next Add in Plot Types to Settings Pane.
//Next Add in more Moving Average types.
//See Video for Detailed Overview
//@version=5
indicator(title="_CM_MacD_Ult_MTF_V2.1", shorttitle="_CM_Ult_MacD_MTF_V2.1")
//Plot Inputs
res = input.timeframe("", "Indicator TimeFrame")
fast_length = input.int(title="Fast Length", defval=12)
slow_length = input.int(title="Slow Length", defval=26)
src = input.source(title="Source", defval=close)
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 999, defval = 9)
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options= )
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options= )
// Show Plots T/F
show_macd = input.bool(true, title="Show MACD Lines", group="Show Plots?", inline="SP10")
show_macd_LW = input.int(3, minval=0, maxval=5, title = "MACD Width", group="Show Plots?", inline="SP11")
show_signal_LW= input.int(2, minval=0, maxval=5, title = "Signal Width", group="Show Plots?", inline="SP11")
show_Hist = input.bool(true, title="Show Histogram", group="Show Plots?", inline="SP20")
show_hist_LW = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP20")
show_trend = input.bool(true, title = "Show MACD Lines w/ Trend Color", group="Show Plots?", inline="SP30")
show_HB = input.bool(false, title="Show Highlight Price Bars", group="Show Plots?", inline="SP40")
show_cross = input.bool(false, title = "Show BackGround on Cross", group="Show Plots?", inline="SP50")
show_dots = input.bool(true, title = "Show Circle on Cross", group="Show Plots?", inline="SP60")
show_dots_LW = input.int(5, minval=0, maxval=5, title = "-- Width", group="Show Plots?", inline="SP60")
//show_trend = input(true, title = "Colors MACD Lines w/ Trend Color", group="Show Plots?", inline="SP5")
// MACD Lines colors
col_macd = input.color(#FF6D00, "MACD Line ", group="Color Settings", inline="CS1")
col_signal = input.color(#2962FF, "Signal Line ", group="Color Settings", inline="CS1")
col_trnd_Up = input.color(#4BAF4F, "Trend Up ", group="Color Settings", inline="CS2")
col_trnd_Dn = input.color(#B71D1C, "Trend Down ", group="Color Settings", inline="CS2")
// Histogram Colors
col_grow_above = input.color(#26A69A, "Above Grow", group="Histogram Colors", inline="Hist10")
col_fall_above = input.color(#B2DFDB, "Fall", group="Histogram Colors", inline="Hist10")
col_grow_below = input.color(#FF5252, "Below Grow", group="Histogram Colors", inline="Hist20")
col_fall_below = input.color(#FFCDD2, "Fall", group="Histogram Colors", inline="Hist20")
// Alerts T/F Inputs
alert_Long = input.bool(true, title = "MACD Cross Up", group = "Alerts", inline="Alert10")
alert_Short = input.bool(true, title = "MACD Cross Dn", group = "Alerts", inline="Alert10")
alert_Long_A = input.bool(false, title = "MACD Cross Up & > 0", group = "Alerts", inline="Alert20")
alert_Short_B = input.bool(false, title = "MACD Cross Dn & < 0", group = "Alerts", inline="Alert20")
// Calculating
fast_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length))
slow_ma = request.security(syminfo.tickerid, res, sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length))
macd = fast_ma - slow_ma
signal = request.security(syminfo.tickerid, res, sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length))
hist = macd - signal
// MACD Trend and Cross Up/Down conditions
trend_up = macd > signal
trend_dn = macd < signal
cross_UP = signal >= macd and signal < macd
cross_DN = signal <= macd and signal > macd
cross_UP_A = (signal >= macd and signal < macd) and macd > 0
cross_DN_B = (signal <= macd and signal > macd) and macd < 0
// Condition that changes Color of MACD Line if Show Trend is turned on..
trend_col = show_trend and trend_up ? col_trnd_Up : trend_up ? col_macd : show_trend and trend_dn ? col_trnd_Dn: trend_dn ? col_macd : na
//Var Statements for Histogram Color Change
var bool histA_IsUp = false
var bool histA_IsDown = false
var bool histB_IsDown = false
var bool histB_IsUp = false
histA_IsUp := hist == hist ? histA_IsUp : hist > hist and hist > 0
histA_IsDown := hist == hist ? histA_IsDown : hist < hist and hist > 0
histB_IsDown := hist == hist ? histB_IsDown : hist < hist and hist <= 0
histB_IsUp := hist == hist ? histB_IsUp : hist > hist and hist <= 0
hist_col = histA_IsUp ? col_grow_above : histA_IsDown ? col_fall_above : histB_IsDown ? col_grow_below : histB_IsUp ? col_fall_below :color.silver
// Plot Statements
//Background Color
bgcolor(show_cross and cross_UP ? col_trnd_Up : na, editable=false)
bgcolor(show_cross and cross_DN ? col_trnd_Dn : na, editable=false)
//Highlight Price Bars
barcolor(show_HB and trend_up ? col_trnd_Up : na, title="Trend Up", offset = 0, editable=false)
barcolor(show_HB and trend_dn ? col_trnd_Dn : na, title="Trend Dn", offset = 0, editable=false)
//Regular Plots
plot(show_Hist and hist ? hist : na, title="Histogram", style=plot.style_columns, color=color.new(hist_col ,0),linewidth=show_hist_LW)
plot(show_macd and signal ? signal : na, title="Signal", color=color.new(col_signal, 0), style=plot.style_line ,linewidth=show_signal_LW)
plot(show_macd and macd ? macd : na, title="MACD", color=color.new(trend_col, 0), style=plot.style_line ,linewidth=show_macd_LW)
hline(0, title="0 Line", color=color.new(color.gray, 0), linestyle=hline.style_dashed, linewidth=1, editable=false)
plot(show_dots and cross_UP ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)
plot(show_dots and cross_DN ? macd : na, title="Dots", color=color.new(trend_col ,0), style=plot.style_circles, linewidth=show_dots_LW, editable=false)
//Alerts
if alert_Long and cross_UP
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Up.", alert.freq_once_per_bar_close)
if alert_Short and cross_DN
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD Crosses Down.", alert.freq_once_per_bar_close)
//Alerts - Stricter Condition - Only Alerts When MACD Crosses UP & MACD > 0 -- Crosses Down & MACD < 0
if alert_Long_A and cross_UP_A
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD > 0 And Crosses Up.", alert.freq_once_per_bar_close)
if alert_Short_B and cross_DN_B
alert("Symbol = (" + syminfo.tickerid + ") TimeFrame = (" + timeframe.period + ") Current Price (" + str.tostring(close) + ") MACD < 0 And Crosses Down.", alert.freq_once_per_bar_close)
//End Code
10 EMA -1.5*ATRHelps identify potential support zones below the EMA by subtracting market volatility (ATR) from the EMA.
Useful for trend-following traders and pullback strategies to estimate dynamic entry zones.
Can act as a volatility-adjusted trailing level.