Re: TradingView Indicators to MT4 Indicators

731
Hello respected traders and coders. Please convert this tradingview indicator to MT4 or MT5.

I find these levels incredibly useful because they act as powerfull S/R.

Thank you so much in advance .

This indicator is called SATY ATR Levels and has an open source script.

https://es.tradingview.com/v/Ty6CMBw9/

Code: Select all

// Saty ATR Levels
// Copyright (C) 2022 Saty Mahajan
// Author is not responsible for your trading using this script.
// Data provided in this script is not financial advice.
//
// Features:
// - Day, Multiday, Swing, Position, Long-term, Keltner trading modes
// - Range against ATR for each period
// - Put and call trigger idea levels
// - Intermediate levels
// - Full-range levels
// - Extension levels
// - Trend label based on the 8-21-34 Pivot Ribbon
//
// Special thanks to Gabriel Viana.
// Based on my own ideas and ideas from Ripster, drippy2hard, 
// Adam Sliver, and others.

//@version=5
indicator('Saty ATR Levels', shorttitle='Saty ATR Levels', overlay=true)

// Options
day_trading = 'Day'
multiday_trading = 'Multiday'
swing_trading = 'Swing'
position_trading = 'Position'
longterm_trading = 'Long-term'
trading_type = input.string(day_trading, 'Trading Type', options=[day_trading, multiday_trading, swing_trading, position_trading, longterm_trading])
use_options_labels = input(true, 'Use Options Labels')
atr_length = input(14, 'ATR Length')
trigger_percentage = input(0.236, 'Trigger Percentage')
previous_close_level_color = input(color.white, 'Previous Close Level Color')
lower_trigger_level_color = input(color.yellow, 'Lower Trigger Level Color')
upper_trigger_level_color = input(color.aqua, 'Upper Trigger Level Color')
key_target_level_color = input(color.silver, 'Key Target Level Color')
atr_target_level_color = input(color.white, 'ATR Target Level Color')
intermediate_target_level_color = input(color.gray, 'Intermediate Target Level Color')
show_all_fibonacci_levels = input(true, 'Show All Fibonacci Levels')
show_extensions = input(false, 'Show Extensions')
level_size = input(2, 'Level Size')
show_info = input(true, 'Show Info Label')
use_current_close = input(false, 'Use Current Close')
fast_ema = input(8, 'Fast EMA')
pivot_ema = input(21, 'Pivot EMA')
slow_ema = input(34, 'Slow EMA')

// Set the appropriate timeframe based on trading mode
timeframe_func() =>
    timeframe = 'D'
    if trading_type == day_trading
        timeframe := 'D'
    else if trading_type == multiday_trading
        timeframe := 'W'
    else if trading_type == swing_trading
        timeframe := 'M'
    else if trading_type == position_trading
        timeframe := '3M'
    else if trading_type == longterm_trading
        timeframe := '12M'
    else
        timeframe := 'D'

// Trend
price = close
fast_ema_value = ta.ema(price, fast_ema)
pivot_ema_value = ta.ema(price, pivot_ema)
slow_ema_value = ta.ema(price, slow_ema)
bullish = price >= fast_ema_value and fast_ema_value >= pivot_ema_value and pivot_ema_value >= slow_ema_value
bearish = price <= fast_ema_value and fast_ema_value <= pivot_ema_value and pivot_ema_value <= slow_ema_value

// Data
period_index = use_current_close ? 0 : 1
ticker = ticker.new(syminfo.prefix, syminfo.ticker, session=session.extended)
previous_close = request.security(ticker, timeframe_func(), close[period_index], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
atr = request.security(ticker, timeframe_func(), ta.atr(atr_length)[period_index], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
period_high = request.security(ticker, timeframe_func(), high, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
period_low = request.security(ticker, timeframe_func(), low, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
range_1 = period_high - period_low
tr_percent_of_atr = range_1 / atr * 100
lower_trigger = previous_close - trigger_percentage * atr
upper_trigger = previous_close + trigger_percentage * atr
lower_0382 = previous_close - atr * 0.382
upper_0382 = previous_close + atr * 0.382
lower_0500 = previous_close - atr * 0.5
upper_0500 = previous_close + atr * 0.5
lower_0618 = previous_close - atr * 0.618
upper_0618 = previous_close + atr * 0.618
lower_0786 = previous_close - atr * 0.786
upper_0786 = previous_close + atr * 0.786
lower_1000 = previous_close - atr
upper_1000 = previous_close + atr
lower_1236 = lower_1000 - atr * 0.236
upper_1236 = upper_1000 + atr * 0.236
lower_1382 = lower_1000 - atr * 0.382
upper_1382 = upper_1000 + atr * 0.382
lower_1500 = lower_1000 - atr * 0.5
upper_1500 = upper_1000 + atr * 0.5
lower_1618 = lower_1000 - atr * 0.618
upper_1618 = upper_1000 + atr * 0.618
lower_1786 = lower_1000 - atr * 0.786
upper_1786 = upper_1000 + atr * 0.786
lower_2000 = lower_1000 - atr
upper_2000 = upper_1000 + atr
lower_2236 = lower_2000 - atr * 0.236
upper_2236 = upper_2000 + atr * 0.236
lower_2382 = lower_2000 - atr * 0.382
upper_2382 = upper_2000 + atr * 0.382
lower_2500 = lower_2000 - atr * 0.5
upper_2500 = upper_2000 + atr * 0.5
lower_2618 = lower_2000 - atr * 0.618
upper_2618 = upper_2000 + atr * 0.618
lower_2786 = lower_2000 - atr * 0.786
upper_2786 = upper_2000 + atr * 0.786
lower_3000 = lower_2000 - atr
upper_3000 = upper_2000 + atr

// Add Labels
tr_vs_atr_color = color.green
if tr_percent_of_atr <= 70
    tr_vs_atr_color := color.green
else if tr_percent_of_atr >= 90
    tr_vs_atr_color := color.red
else
    tr_vs_atr_color := color.orange

trading_mode = 'Day'
if trading_type == day_trading
    trading_mode := 'Day'
else if trading_type == multiday_trading
    trading_mode := 'Multiday'
else if trading_type == swing_trading
    trading_mode := 'Swing'
else if trading_type == position_trading
    trading_mode := 'Position'
else if trading_type == longterm_trading
    trading_mode := 'Long-term'
else
    trading_mode := ''

long_label = ''
short_label = ''
if use_options_labels
    long_label := 'Calls'
    short_label := 'Puts'
else
    long_label := 'Long'
    short_label := 'Short'

trend_color = color.orange
if bullish
    trend_color := color.green
else if bearish
    trend_color := color.red
else
    trend_color := color.orange

var tbl = table.new(position.top_right, 1, 4)
if barstate.islast and show_info
    table.cell(tbl, 0, 0, 'Saty ATR Levels', bgcolor=trend_color)
    table.cell(tbl, 0, 1, trading_mode + ' Range ($' + str.tostring(range_1, '#.##') + ') is ' + str.tostring(tr_percent_of_atr, '#.#') + '% of ATR ($' + str.tostring(atr, '#.##') + ')', bgcolor=tr_vs_atr_color)
    table.cell(tbl, 0, 2, long_label + ' > $' + str.tostring(upper_trigger, '#.##') + ' | +1 ATR $' + str.tostring(upper_1000, '#.##'), bgcolor=upper_trigger_level_color)
    table.cell(tbl, 0, 3, short_label + ' < $' + str.tostring(lower_trigger, '#.##') + ' | -1 ATR: $' + str.tostring(lower_1000, '#.##'), bgcolor=lower_trigger_level_color)

// Add levels
plot(show_extensions ? lower_3000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='-300.0%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? lower_2786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-278.6%', style=plot.style_stepline)
plot(show_extensions ? lower_2618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-261.8%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? lower_2500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-250.0%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? lower_2382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-238.2%', style=plot.style_stepline)
plot(show_extensions ? lower_2236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-223.6%', style=plot.style_stepline)
plot(show_extensions ? lower_2000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='-200.0%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? lower_1786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-178.6%', style=plot.style_stepline)
plot(show_extensions ? lower_1618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-161.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? lower_1500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-150.0%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? lower_1382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-138.2%', style=plot.style_stepline)
plot(show_extensions ? lower_1236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-123.6%', style=plot.style_stepline)
plot(lower_1000, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='-100%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? lower_0786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-78.6%', style=plot.style_stepline)
plot(lower_0618, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-61.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? lower_0500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-50.0%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? lower_0382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-38.2%', style=plot.style_stepline)
plot(lower_trigger, color=color.new(lower_trigger_level_color, 40), linewidth=level_size, title='Lower Trigger', style=plot.style_stepline)
plot(previous_close, color=color.new(previous_close_level_color, 40), linewidth=level_size, title='Previous Close', style=plot.style_stepline)
plot(upper_trigger, color=color.new(upper_trigger_level_color, 40), linewidth=level_size, title='Upper Trigger', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? upper_0382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='38.2%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? upper_0500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='50.0%', style=plot.style_stepline)
plot(upper_0618, color=color.new(key_target_level_color, 40), linewidth=level_size, title='61.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? upper_0786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='78.6%', style=plot.style_stepline)
plot(upper_1000, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='100%', style=plot.style_stepline)
plot(show_extensions ? upper_1236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='123.6%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? upper_1382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='138.2%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? upper_1500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='150.0%', style=plot.style_stepline)
plot(show_extensions ? upper_1618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='161.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? upper_1786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='178.6%', style=plot.style_stepline)
plot(show_extensions ? upper_2000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='200.0%', style=plot.style_stepline)
plot(show_extensions ? upper_2236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='223.6%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? upper_2382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='238.2%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? upper_2500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='250.0%', style=plot.style_stepline)
plot(show_extensions ? upper_2618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='261.8%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? upper_2786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='278.6%', style=plot.style_stepline)
plot(show_extensions ? upper_3000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='300%', style=plot.style_stepline)

Re: TradingView Indicators to MT4 Indicators

732
dani17 wrote: Sun Mar 29, 2026 10:12 am Hello respected traders and coders. Please convert this tradingview indicator to MT4 or MT5.

I find these levels incredibly useful because they act as powerfull S/R.

Thank you so much in advance .

This indicator is called SATY ATR Levels and has an open source script.

https://es.tradingview.com/v/Ty6CMBw9/

Code: Select all

// Saty ATR Levels
// Copyright (C) 2022 Saty Mahajan
// Author is not responsible for your trading using this script.
// Data provided in this script is not financial advice.
//
// Features:
// - Day, Multiday, Swing, Position, Long-term, Keltner trading modes
// - Range against ATR for each period
// - Put and call trigger idea levels
// - Intermediate levels
// - Full-range levels
// - Extension levels
// - Trend label based on the 8-21-34 Pivot Ribbon
//
// Special thanks to Gabriel Viana.
// Based on my own ideas and ideas from Ripster, drippy2hard, 
// Adam Sliver, and others.

//@version=5
indicator('Saty ATR Levels', shorttitle='Saty ATR Levels', overlay=true)

// Options
day_trading = 'Day'
multiday_trading = 'Multiday'
swing_trading = 'Swing'
position_trading = 'Position'
longterm_trading = 'Long-term'
trading_type = input.string(day_trading, 'Trading Type', options=[day_trading, multiday_trading, swing_trading, position_trading, longterm_trading])
use_options_labels = input(true, 'Use Options Labels')
atr_length = input(14, 'ATR Length')
trigger_percentage = input(0.236, 'Trigger Percentage')
previous_close_level_color = input(color.white, 'Previous Close Level Color')
lower_trigger_level_color = input(color.yellow, 'Lower Trigger Level Color')
upper_trigger_level_color = input(color.aqua, 'Upper Trigger Level Color')
key_target_level_color = input(color.silver, 'Key Target Level Color')
atr_target_level_color = input(color.white, 'ATR Target Level Color')
intermediate_target_level_color = input(color.gray, 'Intermediate Target Level Color')
show_all_fibonacci_levels = input(true, 'Show All Fibonacci Levels')
show_extensions = input(false, 'Show Extensions')
level_size = input(2, 'Level Size')
show_info = input(true, 'Show Info Label')
use_current_close = input(false, 'Use Current Close')
fast_ema = input(8, 'Fast EMA')
pivot_ema = input(21, 'Pivot EMA')
slow_ema = input(34, 'Slow EMA')

// Set the appropriate timeframe based on trading mode
timeframe_func() =>
    timeframe = 'D'
    if trading_type == day_trading
        timeframe := 'D'
    else if trading_type == multiday_trading
        timeframe := 'W'
    else if trading_type == swing_trading
        timeframe := 'M'
    else if trading_type == position_trading
        timeframe := '3M'
    else if trading_type == longterm_trading
        timeframe := '12M'
    else
        timeframe := 'D'

// Trend
price = close
fast_ema_value = ta.ema(price, fast_ema)
pivot_ema_value = ta.ema(price, pivot_ema)
slow_ema_value = ta.ema(price, slow_ema)
bullish = price >= fast_ema_value and fast_ema_value >= pivot_ema_value and pivot_ema_value >= slow_ema_value
bearish = price <= fast_ema_value and fast_ema_value <= pivot_ema_value and pivot_ema_value <= slow_ema_value

// Data
period_index = use_current_close ? 0 : 1
ticker = ticker.new(syminfo.prefix, syminfo.ticker, session=session.extended)
previous_close = request.security(ticker, timeframe_func(), close[period_index], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
atr = request.security(ticker, timeframe_func(), ta.atr(atr_length)[period_index], gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
period_high = request.security(ticker, timeframe_func(), high, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
period_low = request.security(ticker, timeframe_func(), low, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
range_1 = period_high - period_low
tr_percent_of_atr = range_1 / atr * 100
lower_trigger = previous_close - trigger_percentage * atr
upper_trigger = previous_close + trigger_percentage * atr
lower_0382 = previous_close - atr * 0.382
upper_0382 = previous_close + atr * 0.382
lower_0500 = previous_close - atr * 0.5
upper_0500 = previous_close + atr * 0.5
lower_0618 = previous_close - atr * 0.618
upper_0618 = previous_close + atr * 0.618
lower_0786 = previous_close - atr * 0.786
upper_0786 = previous_close + atr * 0.786
lower_1000 = previous_close - atr
upper_1000 = previous_close + atr
lower_1236 = lower_1000 - atr * 0.236
upper_1236 = upper_1000 + atr * 0.236
lower_1382 = lower_1000 - atr * 0.382
upper_1382 = upper_1000 + atr * 0.382
lower_1500 = lower_1000 - atr * 0.5
upper_1500 = upper_1000 + atr * 0.5
lower_1618 = lower_1000 - atr * 0.618
upper_1618 = upper_1000 + atr * 0.618
lower_1786 = lower_1000 - atr * 0.786
upper_1786 = upper_1000 + atr * 0.786
lower_2000 = lower_1000 - atr
upper_2000 = upper_1000 + atr
lower_2236 = lower_2000 - atr * 0.236
upper_2236 = upper_2000 + atr * 0.236
lower_2382 = lower_2000 - atr * 0.382
upper_2382 = upper_2000 + atr * 0.382
lower_2500 = lower_2000 - atr * 0.5
upper_2500 = upper_2000 + atr * 0.5
lower_2618 = lower_2000 - atr * 0.618
upper_2618 = upper_2000 + atr * 0.618
lower_2786 = lower_2000 - atr * 0.786
upper_2786 = upper_2000 + atr * 0.786
lower_3000 = lower_2000 - atr
upper_3000 = upper_2000 + atr

// Add Labels
tr_vs_atr_color = color.green
if tr_percent_of_atr <= 70
    tr_vs_atr_color := color.green
else if tr_percent_of_atr >= 90
    tr_vs_atr_color := color.red
else
    tr_vs_atr_color := color.orange

trading_mode = 'Day'
if trading_type == day_trading
    trading_mode := 'Day'
else if trading_type == multiday_trading
    trading_mode := 'Multiday'
else if trading_type == swing_trading
    trading_mode := 'Swing'
else if trading_type == position_trading
    trading_mode := 'Position'
else if trading_type == longterm_trading
    trading_mode := 'Long-term'
else
    trading_mode := ''

long_label = ''
short_label = ''
if use_options_labels
    long_label := 'Calls'
    short_label := 'Puts'
else
    long_label := 'Long'
    short_label := 'Short'

trend_color = color.orange
if bullish
    trend_color := color.green
else if bearish
    trend_color := color.red
else
    trend_color := color.orange

var tbl = table.new(position.top_right, 1, 4)
if barstate.islast and show_info
    table.cell(tbl, 0, 0, 'Saty ATR Levels', bgcolor=trend_color)
    table.cell(tbl, 0, 1, trading_mode + ' Range ($' + str.tostring(range_1, '#.##') + ') is ' + str.tostring(tr_percent_of_atr, '#.#') + '% of ATR ($' + str.tostring(atr, '#.##') + ')', bgcolor=tr_vs_atr_color)
    table.cell(tbl, 0, 2, long_label + ' > $' + str.tostring(upper_trigger, '#.##') + ' | +1 ATR $' + str.tostring(upper_1000, '#.##'), bgcolor=upper_trigger_level_color)
    table.cell(tbl, 0, 3, short_label + ' < $' + str.tostring(lower_trigger, '#.##') + ' | -1 ATR: $' + str.tostring(lower_1000, '#.##'), bgcolor=lower_trigger_level_color)

// Add levels
plot(show_extensions ? lower_3000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='-300.0%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? lower_2786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-278.6%', style=plot.style_stepline)
plot(show_extensions ? lower_2618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-261.8%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? lower_2500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-250.0%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? lower_2382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-238.2%', style=plot.style_stepline)
plot(show_extensions ? lower_2236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-223.6%', style=plot.style_stepline)
plot(show_extensions ? lower_2000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='-200.0%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? lower_1786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-178.6%', style=plot.style_stepline)
plot(show_extensions ? lower_1618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-161.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? lower_1500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-150.0%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? lower_1382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-138.2%', style=plot.style_stepline)
plot(show_extensions ? lower_1236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-123.6%', style=plot.style_stepline)
plot(lower_1000, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='-100%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? lower_0786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-78.6%', style=plot.style_stepline)
plot(lower_0618, color=color.new(key_target_level_color, 40), linewidth=level_size, title='-61.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? lower_0500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-50.0%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? lower_0382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='-38.2%', style=plot.style_stepline)
plot(lower_trigger, color=color.new(lower_trigger_level_color, 40), linewidth=level_size, title='Lower Trigger', style=plot.style_stepline)
plot(previous_close, color=color.new(previous_close_level_color, 40), linewidth=level_size, title='Previous Close', style=plot.style_stepline)
plot(upper_trigger, color=color.new(upper_trigger_level_color, 40), linewidth=level_size, title='Upper Trigger', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? upper_0382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='38.2%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? upper_0500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='50.0%', style=plot.style_stepline)
plot(upper_0618, color=color.new(key_target_level_color, 40), linewidth=level_size, title='61.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels ? upper_0786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='78.6%', style=plot.style_stepline)
plot(upper_1000, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='100%', style=plot.style_stepline)
plot(show_extensions ? upper_1236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='123.6%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? upper_1382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='138.2%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? upper_1500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='150.0%', style=plot.style_stepline)
plot(show_extensions ? upper_1618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='161.8%', style=plot.style_stepline)
plot(show_all_fibonacci_levels and show_extensions ? upper_1786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='178.6%', style=plot.style_stepline)
plot(show_extensions ? upper_2000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='200.0%', style=plot.style_stepline)
plot(show_extensions ? upper_2236 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='223.6%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? upper_2382 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='238.2%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? upper_2500 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='250.0%', style=plot.style_stepline)
plot(show_extensions ? upper_2618 : na, color=color.new(key_target_level_color, 40), linewidth=level_size, title='261.8%', style=plot.style_stepline)
//plot(show_all_fibonacci_levels and show_extensions ? upper_2786 : na, color=color.new(intermediate_target_level_color, 40), linewidth=level_size, title='278.6%', style=plot.style_stepline)
plot(show_extensions ? upper_3000 : na, color=color.new(atr_target_level_color, 40), linewidth=level_size, title='300%', style=plot.style_stepline)

Compiled with Claude. I don't know if it meets the standards of your indicator
These users thanked the author Sepo for the post (total 4):
dani17, Akela, ashdays, global
Trust the process:)

ChartAdaptive Regime Filter + Divergence [KeyAlgos]

734
Adaptive Regime Filter + Divergence [KeyAlgos]


Original TV code available at :
https://www.tradingview.com/script/cZh1 ... -KEYALGOS/

MT5 version available here:
post1295581747.html#p1295581747


:exclaim: Professional Grade Market Regime Classification with Advanced Divergence Detection

Precision trend identification using Adaptive Efficiency Ratio methodology
Volatility-normalized thresholds that adjust to real-time market conditions
Automatic divergence detection (Regular and Hidden) with visual confirmation lines
Four distinct market regimes with color-coded clarity
Zero-lag signal generation with confirmation logic


:exclaim: OVERVIEW

The Adaptive Regime Filter with Volatility Normalization (AER-VN) represents a sophisticated evolution of traditional trend filtering methodologies. This proprietary indicator combines Kaufman's Efficiency Ratio principles with dynamic volatility adaptation to classify market conditions into four actionable regimes: Uptrend, Downtrend, Choppiness, and Consolidation.

The integrated Divergence Detection System operates as a secondary analytical layer, identifying momentum exhaustion and trend continuation patterns through comparative analysis of price action versus efficiency metrics. Unlike standard oscillators that measure raw momentum, this system evaluates the quality of price movement, providing earlier and more reliable reversal signals.

:exclaim: METHODOLOGY AND TECHNIQUE

1. Adaptive Efficiency Ratio (AER) Core

Traditional efficiency ratios utilize static thresholds that fail across varying volatility environments. The AER-VN methodology introduces dynamic threshold calculation that self-adjusts based on current volatility relative to historical norms.

Displacement Measurement: Calculates net price movement over the lookback period
Path Distance Analysis: Sums absolute bar-to-bar movements to determine movement quality
Efficiency Calculation: Ratio of displacement to path distance (0.0 to 1.0 scale)
Threshold Adaptation: Baseline efficiency requirements scale proportionally with the ATR ratio

When volatility expands (ATR above mean), the system automatically raises the efficiency threshold required to qualify as "trending." This prevents false trend signals during volatile chop. Conversely, during low volatility periods, the threshold contracts to capture subtle trending behavior.

2. Volatility Normalization Engine

The Volatility Normalization component creates a relative volatility index by comparing current ATR readings against a rolling historical average. This produces an ATR Ratio that serves as the scaling factor for dynamic threshold calculation.

Current ATR: Short-term volatility measurement (default 14 periods)
Mean ATR: Long-term volatility baseline (default 50 periods)
Adaptive Scaling: Raw threshold = Base Threshold x ATR Ratio
Ceiling Protection: Maximum threshold cap prevents mathematically impossible requirements during extreme volatility events


3. Four Regime Classification System

Uptrend (Teal): Efficiency exceeds dynamic threshold with positive price displacement. Indicates high-quality upward movement with minimal retracement.
Downtrend (Maroon): Efficiency exceeds dynamic threshold with negative price displacement. Indicates sustained selling pressure with directional clarity.
Choppiness (Orange): Efficiency below threshold during above-average volatility. Characterized by noisy, directionless movement with large wicks and whipsaws.
Consolidation (Gray): Efficiency below threshold during below-average volatility. Represents quiet, range-bound markets with compressed price action.


4. Zero-Lag Divergence Detection

The divergence system employs confirmed swing detection to identify pivotal highs and lows without repainting. Once a swing point is confirmed (price violates the extreme), the system evaluates four divergence classifications:

Regular Bearish Divergence: Price records higher highs while Efficiency Ratio records lower highs. Indicates trend exhaustion and potential reversal to the downside.
Regular Bullish Divergence: Price records lower lows while Efficiency Ratio records higher lows. Indicates selling exhaustion and potential reversal to the upside.
Hidden Bearish Divergence: Price records lower highs while Efficiency Ratio records higher highs. Suggests continuation of the current downtrend after a pullback.
Hidden Bullish Divergence: Price records higher lows while Efficiency Ratio records lower lows. Suggests continuation of the current uptrend after a retracement.


Visual confirmation lines connect the relevant swing points on the indicator panel, allowing traders to verify divergence validity visually. :exclaim: INPUT PARAMETERS AND CONFIGURATION

Efficiency Ratio Settings

ER Lookback (N)
Default: 10 | Range: 2+
The calculation period for efficiency measurement. Shorter values increase sensitivity to recent price action, suitable for scalping lower timeframes. Longer values smooth the oscillator, better for swing trading higher timeframes.

Base ER Threshold
Default: 0.25 | Range: 0.05 to 0.80 | Step: 0.05
The foundational efficiency level required in normalized volatility conditions. Higher values demand cleaner, more directional movement to trigger trending regime classification. Lower values allow noisier price action to qualify as trending.

Max Threshold Cap
Default: 0.65 | Range: 0.10 to 0.99 | Step: 0.05
The absolute ceiling for the dynamic threshold. This safety mechanism prevents the threshold from rising to levels mathematically impossible to achieve during extreme volatility expansion.

Volatility Normalization Settings

ATR Length
Default: 14 | Range: 1+
The lookback period for Average True Range calculation. Determines how quickly the system responds to changing volatility conditions.

ATR Mean Lookback
Default: 50 | Range: 5+
The historical window for establishing the volatility baseline. Longer periods create a smoother volatility reference, while shorter periods adapt more quickly to regime changes in volatility.

Divergence Detection Settings

Swing Definition Length
Default: 10 | Range: 3+
The lookback window for identifying swing highs and lows. Determines the minimum number of bars required to establish a pivot point. Lower values detect micro-swings (more signals, more noise). Higher values detect major swings (fewer signals, higher quality).

:exclaim: INTERPRETATION GUIDE

Reading the Oscillator

The main panel displays three critical elements:

Efficiency Ratio Line: The primary oscillator colored by current regime. Values near 1.0 indicate perfect efficiency (strong trend). Values near 0.0 indicate complete inefficiency (chop).
Dynamic Threshold: The white crossed line representing the current volatility-adjusted efficiency requirement. When the ER line crosses above this threshold, the regime shifts to trending.
Base Threshold Reference: The gray dotted line showing the static baseline (0.25 default) for reference.


Divergence Signal Interpretation

Red Circle (Regular Bearish): Momentum divergence at highs. Consider reducing long exposure or preparing short entries. Highest probability when appearing near resistance or after extended uptrends.
Lime Circle (Regular Bullish): Momentum divergence at lows. Consider reducing short exposure or preparing long entries. Highest probability when appearing near support or after extended downtrends.
Orange Circle (Hidden Bearish): Trend continuation signal in downtrends. Pullback likely ending, downtrend resumption probable.
Aqua Circle (Hidden Bullish): Trend continuation signal in uptrends. Retracement likely ending, uptrend resumption probable.


:exclaim: TRADING APPLICATIONS

Strategy 1: Regime-Based Trend Following

Enter long positions only when the indicator displays Teal coloring (Uptrend regime) and short positions only during Maroon coloring (Downtrend regime). Exit positions when the regime shifts to Orange or Gray, indicating the trending condition has ended.

Best for: Directional traders and trend followers
Timeframe: M15 and higher recommended for stability
Confluence: Combine with moving average alignment or breakout patterns


Strategy 2: Divergence Reversal Trading

Monitor for Regular Divergences (Red or Lime circles) as early warning systems. Wait for price confirmation (engulfing candles, pin bars) at the divergence point before entering. Use the connecting lines to visualize the divergence strength.

Best for: Counter-trend scalpers and swing traders
Timeframe: M5 to H1 depending on swing length settings
Confluence: Combine with support/resistance levels and volume analysis


Strategy 3: Chop Avoidance and Consolidation Breakout

Use the Orange (Choppiness) and Gray (Consolidation) regimes as "No Trade" zones or reduction zones. Wait for a divergence to form within these regimes, then enter when the regime shifts back to trending (Teal or Maroon), capturing the breakout momentum.

Best for: Patience-based traders seeking high-probability setups
Timeframe: Effective across all timeframes
Confluence: Combine with volume expansion on regime change


Strategy 4: Hidden Divergence Continuation

In established trends (Teal lasting 5+ bars), look for Hidden Bullish Divergences (Aqua) on pullbacks to enter additional long positions. In established downtrends (Maroon), look for Hidden Bearish Divergences (Orange) on rallies to add to shorts.

Best for: Position traders adding to winners
Timeframe: H1 to Daily for best results
Confluence: Combine with Fibonacci retracement levels
Scalping the Century TimeFrame since 1999

Re: TradingView Indicators to MT4 Indicators

738
ionone wrote: Tue Apr 07, 2026 11:40 pm Can someone who knows Pinescript or who can pass the indicator through some kind of "replay" mode tell me if this indicator repaints or is causal or not ? before I spend 20 hours converting it :)

https://www.tradingview.com/script/9Sgt ... end-Aslan/
thanks

Jef
I don't see explicit lookahead logic, so it does not show classic repainting.
On the other side, it repaints intra-bar and enableTickPressure accumulates pressure tick by tick and is not reload-invariant. It means that after a reload/ refresh a part of the historical data is missing and the adaptive state can easily diverge.

I'd say not worth 20 hours of your work time.
"I conjure from shadows and shape fortunes from the unseen. The treasure lies hidden in plain sight, beneath the sunlight." - Cagliostro

Re: TradingView Indicators to MT4 Indicators

739
Cagliostro wrote: Tue Apr 07, 2026 11:50 pm I don't see explicit lookahead logic, so it does not show classic repainting.
On the other side, it repaints intra-bar and enableTickPressure accumulates pressure tick by tick and is not reload-invariant. It means that after a reload/ refresh a part of the historical data is missing and the adaptive state can easily diverge.

I'd say not worth 20 hours of your work time.
thanks ! i'll thake that into consideration, maybe bypass the "feature" all together or use MT5 tick rerieving capability

Jef
These users thanked the author ionone for the post (total 2):
Cagliostro, waal69
Scalping the Century TimeFrame since 1999