SMA Cross PreventionTraditional MA crossover indicators are reactive — they tell you a cross happened after the fact.
This indicator is prescriptive — it tells you exactly what price action is required to prevent a cross from happening.
The Core Insight
When a fast MA is above a slow MA but they're converging, traders ask: "Will we get a death cross?"
This indicator answers a more useful question:
"What is the minimum price path required to prevent the cross?"
By treating the MA structure as a constraint and solving for the required input (future prices), we transform a lagging indicator into a forward-looking risk assessment tool.
Trendanalyse
EMA Color Buy/Sell
indicator("EMA Color & Buy/Sell Signals", overlay=true, max_lines_count=500, max_labels_count=500)
EMA
emaShortLen = input.int(9, "Kısa EMA")
emaLongLen = input.int(21, "Uzun EMA")
EMA
emaShort = ta.ema(close, emaShortLen)
emaLong = ta.ema(close, emaLongLen)
EMA renkleri (trend yönüne göre)
emaShortColor = emaShort > emaShort ? color.green : color.red
emaLongColor = emaLong > emaLong ? color.green : color.red
EMA
plot(emaShort, color=emaShortColor, linewidth=3, title="EMA Short")
plot(emaLong, color=emaLongColor, linewidth=3, title="EMA Long")
buySignal = ta.crossover(emaShort, emaLong)
sellSignal = ta.crossunder(emaShort, emaLong)
plotshape(buySignal, title="Buy", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.large)
plotshape(sellSignal, title="Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.large)
barcolor(close > open ? color.new(color.green, 0) : color.new(color.red, 0))
var line buyLine = na
var line sellLine = na
if buySignal
buyLine := line.new(bar_index, low, bar_index, high, color=color.lime, width=2)
if sellSignal
sellLine := line.new(bar_index, high, bar_index, low, color=color.red, width=2)
Basit BUY SELL//@version=5
indicator("Basit Yeşil Al - Kırmızı Sat", overlay=true)
// Mum renkleri
yesil = close > open
kirmizi = close < open
// Yeşil mumda AL oku
plotshape(yesil, title="AL", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.large, text="AL")
// Kırmızı mumda SAT oku
plotshape(kirmizi, title="SAT", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.large, text="SAT")
Renkli Parabolic SAR - Sade Versiyon//@version=5
indicator("Renkli Parabolic SAR - Sade Versiyon", overlay=true)
// === PSAR Ayarları ===
psarStart = input.float(0.02, "PSAR Başlangıç (Step)", step=0.01)
psarIncrement = input.float(0.02, "PSAR Artış (Increment)", step=0.01)
psarMax = input.float(0.2, "PSAR Maksimum (Max)", step=0.01)
// === PSAR Hesaplama ===
psar = ta.sar(psarStart, psarIncrement, psarMax)
// === Trend Tespiti ===
bull = close > psar
bear = close < psar
// === Renk Ayarları ===
barColor = bull ? color.new(color.green, 0) : color.new(color.red, 0)
psarColor = bull ? color.green : color.red
bgColor = bull ? color.new(color.green, 90) : color.new(color.red, 90)
// === Mum ve PSAR ===
barcolor(barColor)
plotshape(bull, title="PSAR Bull", location=location.belowbar, style=shape.circle, size=size.tiny, color=color.green)
plotshape(bear, title="PSAR Bear", location=location.abovebar, style=shape.circle, size=size.tiny, color=color.red)
// === Arka Plan ===
bgcolor(bgColor)
// === Al / Sat Sinyalleri ===
buySignal = ta.crossover(close, psar)
sellSignal = ta.crossunder(close, psar)
plotshape(buySignal, title="AL", location=location.belowbar, style=shape.triangleup, size=size.large, color=color.lime)
plotshape(sellSignal, title="SAT", location=location.abovebar, style=shape.triangledown, size=size.large, color=color.red)
// === Alarm Koşulları ===
alertcondition(buySignal, title="AL Sinyali", message="Parabolic SAR Al Sinyali")
alertcondition(sellSignal, title="SAT Sinyali", message="Parabolic SAR Sat Sinyali")
T3 MA Basit ve Stabil//@version=5
indicator("T3 MA Basit ve Stabil", overlay=true)
length = input.int(14, "T3 Length")
vFactor = input.float(0.7, "vFactor")
lineWidth = input.int(3, "Çizgi Kalınlığı")
ema1 = ta.ema(close, length)
ema2 = ta.ema(ema1, length)
ema3 = ta.ema(ema2, length)
ema4 = ta.ema(ema3, length)
ema5 = ta.ema(ema4, length)
ema6 = ta.ema(ema5, length)
c1 = -vFactor * vFactor * vFactor
c2 = 3 * vFactor * vFactor + 3 * vFactor * vFactor * vFactor
c3 = -6 * vFactor * vFactor - 3 * vFactor - 3 * vFactor * vFactor * vFactor
c4 = 1 + 3 * vFactor + vFactor * vFactor * vFactor + 3 * vFactor * vFactor
t3 = c1*ema6 + c2*ema5 + c3*ema4 + c4*ema3
colorUp = color.green
colorDown = color.red
col = t3 > t3 ? colorUp : colorDown
plot(t3, color=col, linewidth=lineWidth)
barcolor(col)
plotshape(t3 > t3 and t3 <= t3 , location=location.belowbar, color=colorUp, style=shape.triangleup, size=size.small)
plotshape(t3 < t3 and t3 >= t3 , location=location.abovebar, color=colorDown, style=shape.triangledown, size=size.small)
Momentum Candle V3 by Sekolah TradingMomentum Candle v3 by Sekolah Trading
Description:
Momentum Candle v3 is a technical indicator designed to identify market momentum signals based on price movement within a single candle. The indicator measures the size of the candle's body and wick to determine if the market is showing strong bullish or bearish momentum.
Key Features:
Candle Size: Measures price movement within a single candle to assess market momentum.
Short Wick: Focuses on wick length, with short wicks indicating that the closing price is more significant than the opening price.
Bullish/Bearish Momentum: Provides bullish signals when the closing price is higher than the open, and bearish signals when the closing price is lower than the open.
Customizable Minimum Body: Users can adjust the minimum body size for XAUUSD and USDJPY pairs according to their trading preferences.
Timeframe: Works on M5 and M15 timeframes for XAUUSD and USDJPY currency pairs.
How to Use:
Bullish Signal: The indicator signals bullish momentum when the candle body is sufficiently large and the wick is short, with the closing price higher than the open.
Bearish Signal: The indicator signals bearish momentum when the candle body is sufficiently large and the wick is short, with the closing price lower than the open.
Pip Parameters: Adjust the pip values for XAUUSD and USDJPY according to market conditions or your trading preferences.
Note: This indicator is a tool for technical analysis and does not guarantee specific trading results. It is recommended to use it alongside other strategies and analyses for better accuracy.
Realistic Backtest Results:
To ensure transparency and honesty in the backtest, here are some key factors to consider:
Position Size: The backtest uses a realistic position size of about 5-10% of the account equity per trade.
Commission & Slippage: A commission of 0.1% per trade and slippage of 1 pip were used in the backtest simulation to reflect real market conditions.
Number of Trades: The backtest sample includes more than 100 trades for a representative result.
Example of Backtest Results:
Profitability: The backtest results on XAUUSD and USDJPY show consistent performance with this strategy on the M5 and M15 timeframes.
Commission and Slippage: Adjusting for commission and slippage showed better accuracy under more realistic market scenarios.
How to Use the Indicator:
Signals from this indicator can be used to confirm market momentum in trending conditions. However, it is highly recommended to combine this indicator with other technical analysis tools to minimize the risk of false signals.
Important Notes:
Honesty & Transparency: This indicator is designed to provide signals based on technical analysis and does not guarantee specific trading results.
No Over-Claims: The backtest results displayed represent realistic scenarios and are not intended to promise certain profits.
Original Content: The code for this indicator is original and does not violate any copyrights.
Tagging:
Smart Tags: Momentum, Candle, XAUUSD, USDJPY, Bullish, Bearish, M5, M15, Technical Indicator, Market Momentum.
Heikin-Ashi Bar & Line with Signals//@version=6
indicator("Heikin-Ashi Bar & Line with Signals", overlay=true)
// Heikin-Ashi hesaplamaları
var float haOpen = na // İlk değer için var kullanıyoruz
haClose = (open + high + low + close) / 4
haOpen := na(haOpen) ? (open + close)/2 : (haOpen + haClose )/2
haHigh = math.max(high, haOpen, haClose)
haLow = math.min(low, haOpen, haClose)
// Renkler
haBull = haClose >= haOpen
haColor = haBull ? color.new(color.green, 0) : color.new(color.red, 0)
// HA Barları
plotcandle(haOpen, haHigh, haLow, haClose, color=haColor, wickcolor=haColor)
// HA Line
plot(haClose, title="HA Close Line", color=color.yellow, linewidth=2)
// Trend arka planı
bgcolor(haBull ? color.new(color.green, 85) : color.new(color.red, 85))
// Al/Sat sinyalleri
longSignal = haBull and haClose > haOpen and haClose < haOpen
shortSignal = not haBull and haClose < haOpen and haClose > haOpen
plotshape(longSignal, title="Al Sinyali", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortSignal, title="Sat Sinyali", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
SuperTrend Long/Short Signals“Provides trend-based long and short signals. With regular use while adhering to the entry, stop-loss, and take-profit levels, profits can be achieved.”
ForzAguanno - Premium / Discount (Range Glissant)Premium / Discount Zones – Dynamic Range (Fibo-based)
This indicator highlights Premium, Discount, and Equilibrium zones using a dynamic Fibonacci range calculated from recent price action.
It is designed to help traders contextualize price and avoid taking trades in unfavorable locations (e.g. buying too high or selling too low).
- How it works
The indicator automatically:
- Detects the highest high (HH) and lowest low (LL) over a rolling range
- Builds a Fibonacci-style structure between LL → HH
- Defines three key areas:
Discount Zone (lower part of the range)
Equilibrium Zone (around the 50% level)
Premium Zone (upper part of the range)
Two additional extreme levels are used:
0.075 → deep discount
0.925 → deep premium
These levels help isolate areas where price is statistically stretched.
- Visual elements
- Horizontal levels:
- Green → Discount
- Purple → Equilibrium
- Red → Premium
- Text labels are placed inside each zone for instant readability.
Zones are extended into the future for cleaner visualization.
- How to use it
This tool is best used as a context filter, not a standalone signal generator.
Typical use cases:
Look for longs in Discount
Look for shorts in Premium
Use Equilibrium as a neutral / decision zone
Combine with structure, momentum, or entry models
It works particularly well with:
Market structure concepts
Smart money / range-based trading
Session-based strategies
⚠️ Important notes
This indicator does not predict direction
It provides context, not signals
Always combine with proper risk management
Final thoughts
The goal of this indicator is simplicity and clarity:
Know where price is located inside its range before taking a trade.
If you find it useful, feel free to share feedback.
USOIL BOS Retest Overlay (HTF + Blocks + Profit Zone + Lot Size)This is a test overlay that should show entry positions and lot sizes to take based on R20 000 account. This was made purely for USOIL
Ultimate Reversion BandsURB – The Smart Reversion Tool
URB Final filters out false breakouts using a real retest mechanism that most indicators miss. Instead of chasing wicks that fail immediately, it waits for price to confirm rejection by retesting the inner band—proving sellers/buyers are truly exhausted.
Eliminates fakeouts – The retest filter catches only genuine reversions
Triple confirmation – Wick + retest + optional volume/RSI filters
Clear visuals – Outer bands show extremes, inner bands show retest zones
Works on any timeframe – From scalping to swing trading
Perfect for traders tired of getting stopped out by false breakouts.
Core Construction:
Smart Dynamic Bands:
Basis = Weighted hybrid EMA of HLC3, SMA, and WMA
Outer Bands = Basis ± (ATR × Multiplier)
Inner Bands = Basis ± (ATR × Multiplier × 0.5) → The "retest zone"
The Unique Filter: The Real Retest
Step 1: Identify an extreme wick touching the outer band
Step 2: Wait 1-3 bars for price to return and touch the inner band
Why it works: Most false breakouts never retest. A genuine reversal shows seller/buyer exhaustion by allowing price to come back to the "halfway" level.
Optional Confirmations:
Volume surge filter (default ON)
RSI extremes filter (optional)
Each can be toggled ON/OFF
How to Use:
Watch for extreme wicks touching the red/lime outer bands
Wait for the retest – price must return to touch the inner band (dotted line) within 3 bars
Enter on confirmation with built-in volume/RSI filters
Set stops beyond the extreme wick
EMA Color Cross + Trend Arrows V6//@version=5
indicator("EMA Color Cross + Trend Arrows V6", overlay=true, max_bars_back=500)
// === Inputs ===
fastLen = input.int(9, "Hızlı EMA")
slowLen = input.int(21, "Yavaş EMA")
// === EMA Hesapları ===
emaFast = ta.ema(close, fastLen)
emaSlow = ta.ema(close, slowLen)
// Trend Yönü
trendUp = emaFast > emaSlow
trendDown = emaFast < emaSlow
// === Çizgi Renkleri ===
lineColor = trendUp ? color.new(color.green, 0) : color.new(color.red, 0)
// === EMA Çizgileri (agresif kalın) ===
plot(emaFast, "Hızlı EMA", lineColor, 4)
plot(emaSlow, "Yavaş EMA", color.new(color.gray, 70), 2)
// === Ok Sinyalleri ===
buySignal = ta.crossover(emaFast, emaSlow)
sellSignal = ta.crossunder(emaFast, emaSlow)
// Büyük Oklar
plotshape(buySignal, title="AL", style=shape.triangleup, color=color.green, size=size.large, location=location.belowbar)
plotshape(sellSignal, title="SAT", style=shape.triangledown, color=color.red, size=size.large, location=location.abovebar)
// === Trend Bar Color ===
barcolor(trendUp ? color.green : color.red)
T3 Al-Sat Sinyalli//@version=5
indicator("T3 Al-Sat Sinyalli", overlay=true, shorttitle="T3 Signal")
// Kullanıcı ayarları
length = input.int(14, minval=1, title="Periyot")
vFactor = input.float(0.7, minval=0.0, maxval=1.0, title="Volatility Factor (0-1)")
// EMA hesaplamaları
ema1 = ta.ema(close, length)
ema2 = ta.ema(ema1, length)
ema3 = ta.ema(ema2, length)
// T3 hesaplaması
c1 = -vFactor * vFactor * vFactor
c2 = 3 * vFactor * vFactor + 3 * vFactor * vFactor * vFactor
c3 = -6 * vFactor * vFactor - 3 * vFactor - 3 * vFactor * vFactor * vFactor
c4 = 1 + 3 * vFactor + vFactor * vFactor * vFactor + 3 * vFactor * vFactor
t3 = c1 * ema3 + c2 * ema2 + c3 * ema1 + c4 * close
// T3 çizimi
plot(t3, color=color.new(color.blue, 0), linewidth=2, title="T3")
// Mum renkleri
barcolor(close > t3 ? color.new(color.green, 0) : color.new(color.red, 0))
// Al-Sat sinyalleri
buySignal = ta.crossover(close, t3)
sellSignal = ta.crossunder(close, t3)
// Okları çiz
plotshape(buySignal, title="Al", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sat", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
Session Range Control [PointAlgo]Session Range Control (SRC)
The Session Range Control (SRC) indicator provides a structured view of intraday price behavior by tracking where the current price sits within the session’s high–low range and how today’s volatility compares to the Average Daily Range (ADR). It combines range analytics, momentum context, volatility interpretation, and visual cues to help traders understand session strength and shifts in intraday conditions.
Core Concept
Every trading session forms a unique high and low. SRC continuously reads these values and calculates the Position in Range, expressed on a scale from 0% to 100%:
0% → Price at Day Low
100% → Price at Day High
50% → Mid-range equilibrium
By normalizing price into a percentage, traders can quickly interpret where market pressure is concentrated during the session.
Trend Zones and Market State
SRC divides the range into logical zones to show the likely sentiment of the session:
1. Strong Uptrend Zone (Above Threshold)
When price consistently holds above the user-defined upper threshold (e.g., 60%), the indicator marks a Strong Uptrend.
This typically reflects:
Persistent intraday buying pressure
Price acceptance near the upper part of the range
Reduced likelihood of deep pullbacks
2. Strong Downtrend Zone (Below Threshold)
When price remains below the lower threshold (e.g., 40%), SRC signals a Strong Downtrend, indicating:
Dominant intraday selling
Consistent pressure keeping price near session lows
3. Bullish / Bearish Zones
Between the midline and strong thresholds, SRC displays softer trend zones:
Above 50% = Bullish Zone
Below 50% = Bearish Zone
These zones help classify whether price is trending, balanced, or drifting.
4. Neutral Territory
When price hovers around the mid-level without conviction, the indicator treats it as a neutral or undecided phase.
Signal Logic :
SRC includes built-in momentum shift signals based on range transitions:
Long Signal
Triggered when price crosses upward through 50%, often showing:
A shift from intraday weakness to strength
Buyers gaining control of the session
Short Signal
Triggered when price crosses downward through 50%, suggesting:
Loss of intraday strength
Sellers taking control
These signals help highlight potential turning points inside the session.
Extreme Levels :
SRC highlights the top and bottom 10% of the range:
> 90% = Extreme High (Overbought intraday condition)
< 10% = Extreme Low (Oversold intraday condition)
These conditions can be useful for identifying overextended movements or potential reaction zones.
ADR Comparison and Volatility Context :
The indicator also measures how today’s price range compares to the Average Daily Range (ADR):
Range Expanding: Today’s range is significantly larger than the ADR
Indicates heightened volatility
Often associated with trending or breakout environments
Range Compressing: Today’s range is much smaller
Suggests low volatility
Common before breakout phases
Characteristic of consolidation or balanced markets
This volatility context helps traders assess whether the session is behaving within normal boundaries or deviating significantly.
Dashboard Overview :
When enabled, the dashboard summarizes key intraday metrics in a structured table:
Trend status (Strong Uptrend, Strong Downtrend, Bullish, Bearish, Neutral)
Range position (%)
Signal status (Long Cross, Short Cross, Extreme High/Low, or None)
Day range calculation
Range vs ADR (%)
Day High / Day Low
Current price level
Simplified action label based on current conditions
This provides a quick reference system to interpret both trend and volatility at a glance without analyzing the full chart visually.
Visual Elements
SRC includes:
Colored dynamic plot for easy trend recognition
Horizontal reference lines at key levels (0%, 50%, 100%, strong-trend thresholds)
Background shading during extreme zone conditions
A separate ADR comparison plot
These visuals ensure the indicator remains intuitive regardless of chart style or timeframe.
Alerts
The script includes alert conditions for:
Long cross
Short cross
Strong trend detection
Extreme high / extreme low
These allow users to automate notifications during key market events without manually monitoring the chart.
Customization Options
Users can configure:
ADR length
Strong trend thresholds
Dashboard visibility
Dashboard position on chart
This makes SRC adaptable to different trading instruments and intraday styles.
Usage Notes
Works best on intraday timeframes where session boundaries are clearly defined.
Designed for analytical interpretation—trend bias, volatility phase, and range structure.
Can complement other tools such as moving averages, volume, or market structure analysis.
Disclaimer :
This indicator is intended for chart analysis and educational purposes only.
It does not generate financial, investment, or trading advice.
Users should validate signals with additional research and apply proper risk management.
NYSE Open Close Session Map by o0psiNYSE Open Close Session Map by o0psi
This indicator highlights the regular US cash session window (default 09:30–16:00 New York time) and makes the key session bars obvious on the chart.
What it shows
A marker on the session OPEN bar
A marker on the session CLOSE bar (last in-session candle)
Optional background highlight for the full session window
Optional labels for the session high and session low bars (based on intraday price during the session)
How it works
The script detects bars inside the selected session window (New York timezone). It anchors OPEN on the first in-session bar, updates the session high/low while the session is active, then anchors CLOSE on the final in-session bar and labels the high/low bars where they occurred.
Notes
Session range precision depends on chart timeframe (lower timeframes capture extremes more precisely).
This is a charting/visualization tool and does not provide trading advice.
EMA Cross BUY SELL
ema1Length = input.int(10, "EMA1 Periyodu")
ema2Length = input.int(20, "EMA2 Periyodu")
emaLineWidth = input.int(3, "EMA Çizgi Kalınlığı", minval=1, maxval=10)
bgTransparency = input.int(85, "Arka Plan Saydamlığı", minval=0, maxval=100)
ema1 = ta.ema(close, ema1Length)
ema2 = ta.ema(close, ema2Length)
longSignal = ta.crossover(ema1, ema2)
shortSignal = ta.crossunder(ema1, ema2)
var int trend = 0
trend := longSignal ? 1 : shortSignal ? -1 : trend
barcolor(trend == 1 ? color.green : trend == -1 ? color.red : na)
bgcolor(trend == 1 ? color.new(color.green, bgTransparency) : trend == -1 ? color.new(color.red, bgTransparency) : na)
plot(ema1, color=trend == 1 ? color.green : trend == -1 ? color.red : color.gray, linewidth=emaLineWidth, title="EMA1")
plot(ema2, color=trend == 1 ? color.green : trend == -1 ? color.red : color.gray, linewidth=emaLineWidth, title="EMA2")
plotshape(longSignal, title="Al Ok", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.large)
plotshape(shortSignal, title="Sat Ok", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.large)
Renkli EMA BAR//@version=5
indicator("EMA Color Cross + Trend Arrows V6", overlay=true, max_bars_back=500)
// === Inputs ===
fastLen = input.int(9, "Hızlı EMA")
slowLen = input.int(21, "Yavaş EMA")
// === EMA Hesapları ===
emaFast = ta.ema(close, fastLen)
emaSlow = ta.ema(close, slowLen)
// Trend Yönü
trendUp = emaFast > emaSlow
trendDown = emaFast < emaSlow
// === Çizgi Renkleri ===
lineColor = trendUp ? color.new(color.green, 0) : color.new(color.red, 0)
// === EMA Çizgileri (agresif kalın) ===
plot(emaFast, "Hızlı EMA", lineColor, 4)
plot(emaSlow, "Yavaş EMA", color.new(color.gray, 70), 2)
// === Ok Sinyalleri ===
buySignal = ta.crossover(emaFast, emaSlow)
sellSignal = ta.crossunder(emaFast, emaSlow)
// Büyük Oklar
plotshape(buySignal, title="AL", style=shape.triangleup, color=color.green, size=size.large, location=location.belowbar)
plotshape(sellSignal, title="SAT", style=shape.triangledown, color=color.red, size=size.large, location=location.abovebar)
// === Trend Bar Color ===
barcolor(trendUp ? color.green : color.red)
NeoChartLabs POCOne of our Favorite Indicators - the High Time Frame Point of Control with a Volume Profile.
Shout out to p2pasta for the original script, we updated to v6.
Currently included: Monthly, 3 months and 6 months.
/* DEFINITION */
Point Of Control (= POC) is a price level at which the heaviest volumes were traded.
Value Area High/Low (=VAH/VAL) is a range of prices where the majority of trading volume took place. Naturally, Value Area High being the top price level and Value Area Low being the lowest. POC always is between the two.
/* HOW TO TRADE WITH THIS INDICATOR */
The basis for POC is determining bias on whichever timeframe you choose.
1. Identify a POC on the timeframe of your choosing.
/* If you choose a "low" timeframe (monthly here) then make sure to look at the higher timeframes to see how it is playing against a higher timeframe POC.
2. When the price is moving away from the POC (either to the upside or downside) this will confirm or invalidate the trade.
3. You can now enter the trade on bias or wait for a retest of the same POC.
Jurik Angle Flow [Kodexius]Jurik Angle Flow is a Jurik based momentum and trend strength oscillator that converts Jurik Moving Average behavior into an intuitive angle based flow gauge. Instead of showing a simple moving average line, this tool measures the angular slope of a smoothed Jurik curve, normalizes it and presents it as a bounded oscillator between plus ninety and minus ninety degrees.
The script uses two Jurik engines with different responsiveness, then blends their information into a single power score that drives both the oscillator display and the on chart gauge. This makes it suitable for identifying trend direction, trend strength, exhaustion conditions and early shifts in market structure. Built in divergence detection between price and the Jurik angle slope helps highlight potential reversal zones while bar coloring and a configurable no trade zone assist with visual filtering of choppy conditions.
🔹 Features
🔸 Dual Jurik slope engine
The indicator internally runs two Jurik Moving Average calculations on the selected source price. A slower Jurik stream models the primary trend while a faster Jurik stream reacts more quickly to recent changes. Their slopes are measured as angles in degrees, scaled by Average True Range so that the slope is comparable across different instruments and timeframes.
🔸 Angle based oscillator output
Both Jurik streams are converted into angle values by comparing the current value to a lookback value and normalizing by ATR. The result is passed through the arctangent function and expressed in degrees. This creates a smooth oscillator that directly represents steepness and direction of the Jurik curve instead of raw price distance.
🔸 Normalized power score
The angle values are transformed into a normalized score between zero and one hundred based on their absolute magnitude, then the sign of the angle is reapplied. This yields a symmetric score where extreme positive values represent strong bullish pressure and extreme negative values represent strong bearish pressure. The final power score is a weighted blend of the slow and fast Jurik scores.
🔸 Adaptive color gradients
The main oscillator area and the fast slope line use gradient colors that react to the angle strength and direction. Rising green tones reflect bullish angular momentum while red tones reflect bearish pressure. Neutral or shallow slopes remain visually softer to indicate indecision or consolidation.
🔸 Trend flip markers
Whenever the primary Jurik slope crosses through zero from negative to positive, an up marker is printed at the bottom of the oscillator panel. Whenever it crosses from positive to negative, a down marker is drawn at the top. These flips act as clean visual signals of potential trend initiation or termination.
🔸 Divergence detection on Jurik slope
The script optionally scans the fast Jurik slope for pivot highs and lows. It then compares those oscillator pivots against corresponding price pivots.
Regular bullish divergence is detected when the oscillator prints a higher low while price prints a lower low.
Regular bearish divergence is detected when the oscillator prints a lower high while price prints a higher high.
When detected, the tool draws matching divergence lines both on the oscillator and on the chart itself, making divergence zones easy to notice at a glance.
🔸 Bar coloring and no trade filter
Bars can be colored according to the primary Jurik slope gradient so that price bars reflect the same directional information as the oscillator. Additionally a configurable no trade threshold can visually mute bars when the absolute angle is small. This highlights trending sequences and visually suppresses noisy sideways stretches.
🔸 On chart power gauge
A creative on chart gauge displays the composite power score beside the current price action. It shows a vertical range from plus ninety to minus ninety with a filled block that grows proportionally to the normalized score. Color and label updates occur in real time and provide a quick visual summary of current Jurik flow strength without needing to read exact oscillator levels.
🔹 Calculations
Below are the main calculation blocks that drive the core logic of Jurik Angle Flow.
Jurik core update
method update(JMA self, float _src) =>
self.src := _src
float phaseRatio = self.phase < -100 ? 0.5 : self.phase > 100 ? 2.5 : self.phase / 100.0 + 1.5
float beta = 0.45 * (self.length - 1) / (0.45 * (self.length - 1) + 2)
float alpha = math.pow(beta, self.power)
if na(self.e0)
self.e0 := _src
self.e1 := 0.0
self.e2 := 0.0
self.jma := 0.0
self.e0 := (1 - alpha) * _src + alpha * self.e0
self.e1 := (_src - self.e0) * (1 - beta) + beta * self.e1
float prevJma = self.jma
self.e2 := (self.e0 + phaseRatio * self.e1 - prevJma) * math.pow(1 - alpha, 2) + math.pow(alpha, 2) * self.e2
self.jma := self.e2 + prevJma
self.jma
This method implements the Jurik Moving Average engine with internal state and phase control, producing a smooth adaptive value stored in self.jma.
Angle calculation in degrees
method getAngle(float src, int lookback=1) =>
float rad2degree = 180 / math.pi
float slope = (src - src ) / ta.atr(14)
float ang = rad2degree * math.atan(slope)
ang
The slope between the current value and a lookback value is divided by ATR, then converted from radians to degrees through the arctangent. This creates a volatility normalized angle oscillator.
Normalized score from angle
method normScore(float ang) =>
float s = math.abs(ang)
float p = s / 60.0 * 100.0
if p > 100
p := 100
p
The absolute angle is scaled so that sixty degrees corresponds to a score of one hundred. Values above that are capped, which keeps the final score within a fixed range. The sign is later reapplied to restore direction.
Slow and fast Jurik streams and power score
var JMA jmaSlow = JMA.new(jmaLen, jmaPhase, jmaPower, na, na, na, na, na)
var JMA jmaFast = JMA.new(jmaLen, jmaPhase, 2.0, na, na, na, na, na)
float jmaValue = jmaSlow.update(src)
float jmaFastValue = jmaFast.update(src)
float jmaSlope = jmaValue.getAngle()
float jmaFastSlope = jmaFastValue.getAngle()
float scoreJma = normScore(jmaSlope) * math.sign(jmaSlope)
float scoreJmaFast = normScore(jmaFastSlope) * math.sign(jmaFastSlope)
float totalScore = (scoreJma * 0.6 + scoreJmaFast * 0.4)
A slower Jurik and a faster Jurik are updated on each bar, each converted to an angle and then to a signed normalized score. The final composite power score is a weighted blend of the slow and fast scores, where the slow score has slightly more influence. This composite drives the on chart gauge and summarizes the overall Jurik flow.
Multiple Horizontal Lines_SanHorizontal lines can be drawn with given coordinates with defined intervals
RSI with Multi-Level OB/OS (65/70 & 35/30)With a revised 65 and 35 level for higher probability of winning
EMA Cross Color Buy/Sell//@version=5
indicator("EMA Color Cross + Trend Arrows V6", overlay=true, max_bars_back=500)
// === Inputs ===
fastLen = input.int(9, "Hızlı EMA")
slowLen = input.int(21, "Yavaş EMA")
// === EMA Hesapları ===
emaFast = ta.ema(close, fastLen)
emaSlow = ta.ema(close, slowLen)
// Trend Yönü
trendUp = emaFast > emaSlow
trendDown = emaFast < emaSlow
// === Çizgi Renkleri ===
lineColor = trendUp ? color.new(color.green, 0) : color.new(color.red, 0)
// === EMA Çizgileri (agresif kalın) ===
plot(emaFast, "Hızlı EMA", lineColor, 4)
plot(emaSlow, "Yavaş EMA", color.new(color.gray, 70), 2)
// === Ok Sinyalleri ===
buySignal = ta.crossover(emaFast, emaSlow)
sellSignal = ta.crossunder(emaFast, emaSlow)
// Büyük Oklar
plotshape(buySignal, title="AL", style=shape.triangleup, color=color.green, size=size.large, location=location.belowbar)
plotshape(sellSignal, title="SAT", style=shape.triangledown, color=color.red, size=size.large, location=location.abovebar)
// === Trend Bar Color ===
barcolor(trendUp ? color.green : color.red)






















