Friendly Stretch Band Regime + Filters (Close Confirm + Hold)What it is
A calm, regime-based stretch band that highlights only three states: BUY zone, SELL zone, and Neutral. Designed to reduce noise and visual overload by avoiding markers, labels, and background tint.
How it works
Bands are built from an EMA basis ± ATR.
BUY Zone: price below lower band (lower band turns green)
SELL Zone: price above upper band (upper band turns red)
Neutral: price inside bands (bands grey)
Stability Options
Confirm on Close: requires CLOSE beyond the band (reduces wick spikes)
Hold Bars: holds zone state for N bars after the trigger ends (reduces flicker)
Optional Filters (applied only if enabled)
Trend filter (basis slope or slow EMA)
ATR expansion gate
Minimum exceed beyond band (ATR units)
Suggested Use
Best used as a clean “location/context” tool on swing timeframes (e.g., 4H). It can be paired with a separate momentum/confirmation tool.
Repainting & Disclaimer
Uses only current and historical bar data (no security() calls). Values may update on the realtime bar before close. Educational use only; not financial advice.
Indikator dan strategi
Daily Returns Analysis: N vs M
This script displays the moving average of the percentage difference in price over n vs. m periods.
Note: This is a daily average.
Swing IA Cockpit [v2]//@version=5
indicator("Swing IA Cockpit ", overlay=true, max_bars_back=500)
// === INPUTS ===
mode = input.string("Pullback", title="Entry Mode", options= )
corrLen = input.int(60, "Correlation Window Length")
scoreWeightBias = input.float(0.6, title="Weight: Bias", minval=0, maxval=1)
scoreWeightTiming = 1.0 - scoreWeightBias
// === INDICATEURS H1 ===
ema200_H1 = ta.ema(close, 200)
ema50_H1 = ta.ema(close, 50)
rsi_H1 = ta.rsi(close, 14)
donchianHigh = ta.highest(high, 20)
donchianLow = ta.lowest(low, 20)
atr_H1 = ta.atr(14)
avgATR_H1 = ta.sma(atr_H1, 50)
body = math.abs(close - open)
avgBody = ta.sma(body, 20)
// === H4 / D1 ===
close_H4 = request.security(syminfo.tickerid, "240", close)
ema200_H4 = request.security(syminfo.tickerid, "240", ta.ema(close, 200))
rsi_H4 = request.security(syminfo.tickerid, "240", ta.rsi(close, 14))
atr_H4 = request.security(syminfo.tickerid, "240", ta.atr(14))
avgATR_H4 = request.security(syminfo.tickerid, "240", ta.sma(ta.atr(14), 50))
close_D1 = request.security(syminfo.tickerid, "D", close)
ema200_D1 = request.security(syminfo.tickerid, "D", ta.ema(close, 200))
// === CORRÉLATIONS ===
dxy = request.security("TVC:DXY", "60", close)
spx = request.security("SP:SPX", "60", close)
gold = request.security("OANDA:XAUUSD", "60", close)
corrDXY = ta.correlation(close, dxy, corrLen)
corrSPX = ta.correlation(close, spx, corrLen)
corrGold = ta.correlation(close, gold, corrLen)
// === LOGIQUE BIAIS ===
biasLong = close_D1 > ema200_D1 and close_H4 > ema200_H4 and rsi_H4 >= 55
biasShort = close_D1 < ema200_D1 and close_H4 < ema200_H4 and rsi_H4 <= 45
bias = biasLong ? "LONG" : biasShort ? "SHORT" : "NEUTRAL"
// === LOGIQUE TIMING ===
isBreakoutLong = mode == "Breakout" and high > donchianHigh and close > ema200_H1 and rsi_H1 > 50
isBreakoutShort = mode == "Breakout" and low < donchianLow and close < ema200_H1 and rsi_H1 < 50
var float breakoutPrice = na
var int breakoutBar = na
if isBreakoutLong or isBreakoutShort
breakoutPrice := close
breakoutBar := bar_index
validPullbackLong = mode == "Pullback" and not na(breakoutBar) and bar_index <= breakoutBar + 3 and close > ema50_H1 and low <= ema50_H1
validPullbackShort = mode == "Pullback" and not na(breakoutBar) and bar_index <= breakoutBar + 3 and close < ema50_H1 and high >= ema50_H1
timingLong = isBreakoutLong or validPullbackLong
timingShort = isBreakoutShort or validPullbackShort
// === SCORES ===
scoreTrend = (close_D1 > ema200_D1 ? 20 : 0) + (close_H4 > ema200_H4 ? 20 : 0)
scoreMomentumBias = (rsi_H4 >= 55 or rsi_H4 <= 45) ? 20 : 10
scoreCorr = 0
scoreCorr += biasLong and corrDXY < 0 ? 10 : 0
scoreCorr += biasLong and corrSPX > 0 ? 10 : 0
scoreCorr += biasLong and corrGold >= 0 ? 10 : 0
scoreCorr += biasShort and corrDXY > 0 ? 10 : 0
scoreCorr += biasShort and corrSPX < 0 ? 10 : 0
scoreCorr += biasShort and corrGold <= 0 ? 10 : 0
scoreCorr := math.min(scoreCorr, 30)
scoreVolBias = atr_H4 > avgATR_H4 ? 10 : 0
scoreBias = scoreTrend + scoreMomentumBias + scoreCorr + scoreVolBias
scoreStruct = (timingLong or timingShort) ? 40 : 0
scoreMomentumTiming = rsi_H1 > 50 or rsi_H1 < 50 ? 25 : 10
scoreTrendH1 = (close > ema50_H1 and ema50_H1 > ema200_H1) or (close < ema50_H1 and ema50_H1 < ema200_H1) ? 20 : 10
scoreVolTiming = atr_H1 > avgATR_H1 ? 15 : 5
scoreTiming = scoreStruct + scoreMomentumTiming + scoreTrendH1 + scoreVolTiming
scoreTotal = scoreBias * scoreWeightBias + scoreTiming * scoreWeightTiming
scoreLong = biasLong ? scoreTotal : 0
scoreShort = biasShort ? scoreTotal : 0
delta = scoreLong - scoreShort
scoreExtMomentum = (rsi_H4 > 55 ? 10 : 0)
scoreExtVol = atr_H4 > avgATR_H4 ? 10 : 0
scoreExtStructure = body > avgBody ? 10 : 5
scoreExtCorr = (scoreCorr > 15 ? 10 : 5)
scoreExtension = scoreExtMomentum + scoreExtVol + scoreExtStructure + scoreExtCorr
// === VERDICT FINAL ===
verdict = "NO TRADE"
verdict := bias == "NEUTRAL" or math.abs(delta) < 10 or scoreTotal < 70 ? "NO TRADE" :
scoreTotal < 80 ? "WAIT" :
scoreTotal >= 85 and math.abs(delta) >= 20 and scoreExtension >= 60 ? "TRADE A+" :
"TRADE"
// === TABLE COCKPIT ===
var table cockpit = table.new(position.top_right, 2, 9, border_width=1)
if bar_index % 5 == 0
table.cell(cockpit, 0, 0, "Bias", bgcolor=color.gray)
table.cell(cockpit, 1, 0, bias)
table.cell(cockpit, 0, 1, "ScoreBias", bgcolor=color.gray)
table.cell(cockpit, 1, 1, str.tostring(scoreBias))
table.cell(cockpit, 0, 2, "ScoreTiming", bgcolor=color.gray)
table.cell(cockpit, 1, 2, str.tostring(scoreTiming))
table.cell(cockpit, 0, 3, "ScoreTotal", bgcolor=color.gray)
table.cell(cockpit, 1, 3, str.tostring(scoreTotal))
table.cell(cockpit, 0, 4, "ScoreLong", bgcolor=color.gray)
table.cell(cockpit, 1, 4, str.tostring(scoreLong))
table.cell(cockpit, 0, 5, "ScoreShort", bgcolor=color.gray)
table.cell(cockpit, 1, 5, str.tostring(scoreShort))
table.cell(cockpit, 0, 6, "Delta", bgcolor=color.gray)
table.cell(cockpit, 1, 6, str.tostring(delta))
table.cell(cockpit, 0, 7, "Extension", bgcolor=color.gray)
table.cell(cockpit, 1, 7, str.tostring(scoreExtension))
table.cell(cockpit, 0, 8, "Verdict", bgcolor=color.gray)
table.cell(cockpit, 1, 8, verdict, bgcolor=verdict == "TRADE A+" ? color.green : verdict == "TRADE" ? color.lime : verdict == "WAIT" ? color.orange : color.red)
// === ALERTS ===
alertcondition(verdict == "TRADE A+" and bias == "LONG", title="TRADE A+ LONG", message="TRADE A+ signal long")
alertcondition(verdict == "TRADE A+" and bias == "SHORT", title="TRADE A+ SHORT", message="TRADE A+ signal short")
alertcondition(verdict == "NO TRADE", title="NO TRADE / RANGE", message="Marché confus ou neutre — pas de trade")
Break asian range break alerts
- stratégie break ou réintégration possible avec alertes intégrées .
asian range break
SolQuant WatermarkSOLQUANT WATERMARK
The SolQuant Watermark is a professional-grade utility script designed for traders, educators, and content creators who want to keep their charts organized and branded. By utilizing Pine Script’s table functions, this indicator ensures your custom text and symbol data stay pinned to the screen, regardless of where you scroll on the price action.
KEY FEATURES
Customizable Branding: Display your community name, website, or social handles anywhere on the chart.
Automated Symbol Data: Dynamic tracking of the current Asset, Timeframe, and Date—perfect for keeping screenshots contextually accurate.
Precision Placement: Choose from 9 different anchor points (Top-Left, Bottom-Right, etc.) to ensure the UI never interferes with your technical analysis.
Visual Scaling: 5 different size settings (Tiny to Huge) to accommodate high-resolution displays or mobile viewing.
Aesthetic Control: Fully adjustable color palettes, background transparency, and border toggles.
WHY USE A TABLE-BASED WATERMARK?
Unlike standard chart labels which are tied to specific price/time coordinates, this tool uses the Table API . This means:
The watermark stays in place while you scroll through history.
It doesn't disappear when you "hide" other drawing tools.
It scales consistently across different devices.
INSTRUCTIONS
1. Branding: Open settings and type your link or handle into the "Quote Text" area.
2. Symbol Info: Toggle the "Symbol Info" section to automatically display asset names and dates for your records.
3. Layout: Use the X and Y position dropdowns to move the modules if they overlap with your current price action or other indicators.
Note: This is a visual utility tool only. It does not provide trade signals or financial advice.
LDEF SENS Loss Dependent Error Filter Dominance Regime SwitchCAPITALCOM:GOLD
LDEF SENS stands for Loss Dependent Error Filter. This indicator is a dominance regime filter with an adaptive switch boundary. It separates the market into two main states.
Directional tradeable tape (trend and impulse conditions)
Balanced noisy tape (higher fakeout probability)
It also provides a dominance direction bias (bull vs bear) and an adaptive boundary you can use as a market switch signal.
What you see in the indicator pane (bottom panel)
Main line (0 to 100): dominance sensitivity score
Line color meaning
Green: bullish dominance (L greater than R)
Red: bearish dominance (R greater than L)
Gray: low strength or mixed tape
Purple line: adaptive regime boundary (moving threshold)
Violet shading: regime ON (tradeable conditions)
Key idea: height equals strength, color equals direction, violet shading equals regime state.
How to read the three images
Image A - Regime ON in a trending environment
Where to look
Price panel: left to middle shows a clean up move
Indicator panel: directly below the same time window
Violet band is present for a sustained stretch
Main line stays high and mostly green
What it means
When the violet band stays ON, the tape is directional enough for trend following setups to have higher quality. This is not an entry signal. It is an environment filter.
Image B - Switch boundary and state changes
Where to look
Indicator panel: focus on the purple adaptive line and the main line crossing relative to it
Watch the moment the main line moves above the purple line. In the same region, violet shading turns ON.
What it means
The purple line is the adaptive regime boundary.
Cross above: regime switches toward directional tape (state change confirmation)
Cross below: regime fades and chop risk returns
Image C - Direction semantics inside a regime
Where to look
Indicator panel: inside violet shaded regions
Main line is green during bullish dominance (L greater than R)
Main line is red during bearish dominance (R greater than L)
What it means
Violet answers: is this a tradeable regime
Green or red answers: which side is dominating
Together, they provide a filter plus bias framework.
Practical usage
Regime filter
Prefer setups only when the violet band is ON
Reduce size or tighten criteria when the violet band is OFF
Direction bias
Prefer longs when the line is green
Prefer shorts when the line is red
Treat gray as no edge or mixed tape
Switch boundary analysis
Cross above purple: treat as regime shift confirmation
Cross below purple: treat as regime cooling off and higher chop risk
Limitations
This is a regime and dominance tool, not a standalone entry generator. Regime confirmation can be late by design, especially after shocks. Use it with structure, liquidity, and risk management.
Multi-Timeframe EMA LevelsThis indicator will plot 2 different EMA's from 4 different timeframes on your chart. It displays as horizontal dotted lines so does not clutter your chart with loads of MA's. The lines are labeled with timeframe, EMA length and the level value. Levels update in real time.
If you are trading key levels or ma's this plots everything for you on one single chart.
12H Fib MidpointsPrints the .5 fib retrace for final trading levels on the 1 minute chart.
Background process is exactly how its done in the video EverEvolving365 shared
EMA 9 & 26 Crossover By SN TraderEMA 9 & 26 Crossover – Trend & Momentum Indicator For Scalpers
The EMA 9 & EMA 26 Crossover Indicator is a simple yet powerful trend-following tool designed to identify high-probability buy and sell signals based on short-term and medium-term momentum shifts.
This indicator is widely used by scalpers, intraday traders, and swing traders across Forex, Crypto, Stocks, Indices, and Commodities.
🔹 Indicator Logic
EMA 9 (Green) → Fast momentum
EMA 26 (Red) → Trend direction
BUY Signal
When EMA 9 crosses above EMA 26
Indicates bullish momentum and possible trend reversal or continuation
SELL Signal
When EMA 9 crosses below EMA 26
Indicates bearish momentum and potential downside movement
Clear BUY / SELL labels are plotted directly on the chart for easy visual confirmation.
📈 How to Trade Using This Indicator
✔ Enter BUY trades after EMA 9 crosses above EMA 26
✔ Enter SELL trades after EMA 9 crosses below EMA 26
✔ Use higher timeframes (15m, 1H, 4H) for stronger signals
✔ Combine with RSI, MACD, UT Bot, VWAP, Support & Resistance for confirmation
✅ Best Use Cases
Trend reversal identification
Momentum-based entries
Scalping & intraday strategies
Swing trading trend confirmation
Works on all timeframes
⚙️ Features
✔ Lightweight & fast
✔ Beginner-friendly
✔ Non-repainting signals
✔ Pine Script v6 compatible
✔ Clean visual design
⚠️ Disclaimer
This indicator is for educational purposes only and should not be considered financial advice. Always apply proper risk management and confirm signals with additional analysis.
Multi-Metric Valuation IndicatorMulti-Metric Valuation Indicator - Accumulation/Distribution Signal
This indicator combines six proven technical metrics into a single composite valuation score to help identify optimal accumulation and distribution zones for any asset. Built with the Mayer Multiple as its foundation, it provides a comprehensive view of whether an asset is overvalued or undervalued.
Core Components:
Mayer Multiple - Compares current price to 200-day moving average (traditional Bitcoin valuation metric)
RSI (Relative Strength Index) - Identifies overbought/oversold momentum conditions
Bollinger Band Position - Measures price location within volatility bands
50-Day MA Deviation - Tracks short-term trend strength
Rate of Change (ROC) - Captures momentum shifts
Volume Analysis - Confirms price moves with relative volume strength
How It Works:
Each metric is scored from -1 (extremely undervalued) to +1 (extremely overvalued) using granular thresholds. These scores are averaged into a composite valuation score that oscillates around zero:
< -0.4: Strong Accumulation Zone (dark green background)
-0.4 to -0.2: Accumulation Zone (light green background)
-0.2 to +0.2: Neutral Zone (gray background)
+0.2 to +0.4: Distribution Zone (light red background)
> +0.4: Strong Distribution Zone (dark red background)
Key Features:
Real-time scoring table displays all component values and their individual scores
Color-coded composite line (green = undervalued, red = overvalued)
Background shading for instant visual signal recognition
Built-in alerts for strong accumulation/distribution crossovers
Fully customizable inputs for all parameters
Clean, efficient code using ternary operators and one-line declarations
Best Use Cases:
Long-term position accumulation strategies
Identifying macro market tops and bottoms
Dollar-cost averaging entry/exit planning
Multi-timeframe confirmation (works on daily, weekly, monthly charts)
Risk management and position sizing decisions
Interpretation:
When the composite score drops below -0.4, multiple metrics simultaneously indicate undervaluation - a historically favorable accumulation opportunity. Conversely, scores above +0.4 suggest distribution may be prudent as multiple indicators flash overbought signals.
The indicator is most powerful when combined with fundamental analysis and proper risk management. It's designed to keep emotions in check during extreme market conditions.
SACHIN_WITH_SLgears for setting signals use it
lllllllllllllllllllllllllllllllllllllllllllllllllhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
EMA SMA LinesThis script draws 3 EMA lines and 2 SMA lines and each line has label attached to it. It is configurable.
EMA 5/9/21/50/200 + VWAP + Supertrend singhsinnerBest for Intraday and positional. no need to add other indicators. extremely strong trend price move with 5ema, for rentry see 21ema as support. 9 & 21 cross above for fresh entry n cross down for exit. 5ema for early entry
Body/Tail RatioThis is a simple and great tool for filtering strong and weak bars based on their Body to Tail ratio.
It has three areas to show.
Weak when body percentage is below 30.
Mid to Strong when percentage is between 30-70.
Very Strong when percentage is above 70.
You can adjust the color for each section.
You can easily see where strong bars and weaker bars are. It can also be used for signal and entry bar filtering process.
Triple ST + MACD + 7x MTF EMA + VWAP + ORB//@version=6
indicator('Triple ST + MACD + 7x MTF EMA + VWAP + ORB', overlay = true, max_labels_count = 500)
//━━━━━━━━━━━━━━━━━━━
// INPUTS
//━━━━━━━━━━━━━━━━━━━
// SuperTrend Group
atrPeriodPrimary = input.int(18, 'Primary ST ATR Period', group="SuperTrend")
multiplierPrimary = input.float(4.0, 'Primary ST Multiplier', group="SuperTrend")
atrPeriodSecondary = input.int(9, 'Secondary ST ATR Period', group="SuperTrend")
multiplierSecondary = input.float(2.0, 'Secondary ST Multiplier', group="SuperTrend")
atrPeriodTertiary = input.int(12, 'Tertiary ST ATR Period', group="SuperTrend")
multiplierTertiary = input.float(3.0, 'Tertiary ST Multiplier', group="SuperTrend")
// MACD Group
fastLength = input.int(24, 'MACD Fast Length', group="MACD")
slowLength = input.int(52, 'MACD Slow Length', group="MACD")
signalLength = input.int(9, 'MACD Signal Smoothing', group="MACD")
// EMA Group
tfEMA = input.timeframe("60", "EMA Timeframe (Global)", group="EMAs")
ema1Len = input.int(9, 'EMA 1 Length', group="EMAs")
ema2Len = input.int(21, 'EMA 2 Length', group="EMAs")
ema3Len = input.int(27, 'EMA 3 Length', group="EMAs")
ema4Len = input.int(50, 'EMA 4 Length', group="EMAs")
ema5Len = input.int(100, 'EMA 5 Length', group="EMAs")
ema6Len = input.int(150, 'EMA 6 Length', group="EMAs")
ema7Len = input.int(200, 'EMA 7 Length', group="EMAs")
// Visuals & ORB Group
showVwap = input.bool(true, 'Show VWAP?', group="Visuals")
showORB = input.bool(true, "Show ORB (Current Day Only)", group="ORB Settings")
orbTime = input.string("0930-1000", "ORB Time Range", group="ORB Settings")
orbTargetMult1 = input.float(1.0, "Target 1 Mult", group="ORB Settings")
//━━━━━━━━━━━━━━━━━━━
// CALCULATIONS
//━━━━━━━━━━━━━━━━━━━
// 1. Custom SuperTrend Function
f_supertrend(_atrLen, _mult) =>
atr_ = ta.atr(_atrLen)
upperBasic = hl2 + _mult * atr_
lowerBasic = hl2 - _mult * atr_
var float upperFinal = na
var float lowerFinal = na
upperFinal := na(upperFinal ) ? upperBasic : (upperBasic < upperFinal or close > upperFinal ? upperBasic : upperFinal )
lowerFinal := na(lowerFinal ) ? lowerBasic : (lowerBasic > lowerFinal or close < lowerFinal ? lowerBasic : lowerFinal )
var int dir = 1
if not barstate.isfirst
dir := dir
if dir == 1 and close < lowerFinal
dir := -1
else if dir == -1 and close > upperFinal
dir := 1
super = dir == 1 ? lowerFinal : upperFinal
= f_supertrend(atrPeriodPrimary, multiplierPrimary)
= f_supertrend(atrPeriodSecondary, multiplierSecondary)
= f_supertrend(atrPeriodTertiary, multiplierTertiary)
// 2. MACD
macdLine = ta.ema(close, fastLength) - ta.ema(close, slowLength)
signal = ta.ema(macdLine, signalLength)
// 3. MTF EMAs (7 Options)
ema1 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema1Len), gaps = barmerge.gaps_on)
ema2 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema2Len), gaps = barmerge.gaps_on)
ema3 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema3Len), gaps = barmerge.gaps_on)
ema4 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema4Len), gaps = barmerge.gaps_on)
ema5 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema5Len), gaps = barmerge.gaps_on)
ema6 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema6Len), gaps = barmerge.gaps_on)
ema7 = request.security(syminfo.tickerid, tfEMA, ta.ema(close, ema7Len), gaps = barmerge.gaps_on)
// 4. ORB CALCULATION (Current Day Only)
is_new_day = ta.change(time("D")) != 0
in_orb = not na(time(timeframe.period, orbTime))
is_today = (year(time) == year(timenow)) and (month(time) == month(timenow)) and (dayofmonth(time) == dayofmonth(timenow))
var float orbHigh = na
var float orbLow = na
if is_new_day
orbHigh := na
orbLow := na
if in_orb and is_today
orbHigh := na(orbHigh) ? high : math.max(high, orbHigh)
orbLow := na(orbLow) ? low : math.min(low, orbLow)
orbRange = orbHigh - orbLow
t1_up = orbHigh + (orbRange * orbTargetMult1)
t1_dn = orbLow - (orbRange * orbTargetMult1)
//━━━━━━━━━━━━━━━━━━━
// PLOTTING
//━━━━━━━━━━━━━━━━━━━
// VWAP
plot(showVwap ? ta.vwap : na, title="VWAP", color=color.orange, linewidth=2)
// Triple SuperTrends
plot(stPrimary, title='Primary ST', color=dirPrimary == 1 ? color.green : color.red, linewidth=2)
plot(stSecondary, title='Secondary ST', color=dirSecondary == 1 ? color.teal : color.maroon, linewidth=1)
plot(stTertiary, title='Tertiary ST', color=dirTertiary == 1 ? color.lime : color.orange, linewidth=1)
// 7 EMAs
plot(ema1, title='EMA 1', color=color.new(color.white, 50))
plot(ema2, title='EMA 2', color=color.new(color.yellow, 60))
plot(ema3, title='EMA 3', color=color.new(color.orange, 70))
plot(ema4, title='EMA 4', color=color.new(color.blue, 70))
plot(ema5, title='EMA 5', color=color.new(color.purple, 70))
plot(ema6, title='EMA 6', color=color.new(color.fuchsia, 80))
plot(ema7, title='EMA 7', color=color.new(color.gray, 80))
// ORB Plots
plot(showORB and is_today ? orbHigh : na, title="ORB High", color=color.aqua, linewidth=2, style=plot.style_linebr)
plot(showORB and is_today ? orbLow : na, title="ORB Low", color=color.aqua, linewidth=2, style=plot.style_linebr)
plot(showORB and is_today and not in_orb ? t1_up : na, title="Target 1 Up", color=color.new(color.lime, 40), style=plot.style_linebr)
plot(showORB and is_today and not in_orb ? t1_dn : na, title="Target 1 Down", color=color.new(color.red, 40), style=plot.style_linebr)
// MACD Shapes
plotshape(ta.crossover(macdLine, signal), title="MACD Bull", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="MACD+")
plotshape(ta.crossunder(macdLine, signal), title="MACD Bear", style=shape.triangledown, location=location.belowbar, color=color.red, size=size.small, text="MACD-")
// Background (Based on Primary ST)
bgcolor(dirPrimary == 1 ? color.new(color.green, 96) : color.new(color.red, 96))
Relative Performance ComparisonThe Script was made to compare the performance of the YM and the NQ for a period of time that you can adjust with the lookback period. There is also the possibility to adjust the smoothing of the lines in the graph and you can enable or disable the several visuals. If you wish to compare something different then you could also enter the ticker of the assets that you want to compare.
For YM and NQ the idea is that they have a high correlation and that if one of them is weaker than the other one, the stronger one could have more potential in that direction. Or if for example the weaker one is shifting in sctructure then the stronger one could also shift in structure but has the possibility of more gain as it held stronger through the weakness of the other one.
Relative Strength Table (Spring)This indicator helps traders quickly understand the relative strength of different groups and different stocks.




















