Indicator · Pine Script v5 · On the chart

Fedra Algotrading LR + TTP Indicator Lite

by fbarberis

This indicator plots Linear Regression lines with deviation bands on the price chart to identify support and resistance levels.

View on GitHub

GitHub stars3on the repository
Pine versionv5runs as is
Lines of code379
Settings30inputs
LicenceNone statedfile: MPL-2.0
Last update3 years ago27 Mar 2023

Add It to Your TradingView Chart

  1. 1Copy the scriptPress Copy script above, or the copy button on the code below.
  2. 2Open the Pine EditorOpen a TradingView chart and choose Pine Editor at the bottom of the screen.
  3. 3Paste over the templateCreate a new indicator, select all of the template text and paste. Press Save and give it a name.
  4. 4Add it to the chartPress Add to chart, then adjust the settings with the gear icon next to its name.

Source Code

379 lines of Pine Script v5 from [Fedra Algotrading LR + TTP Indicator Lite].pine, published under MPL-2.0 (file header). Keep the author's credit and licence lines when you reuse it.

[Fedra Algotrading LR + TTP Indicator Lite].pine
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © fbarberis
// User Version

//@version=5
indicator('[Fedra Algotrading LR + TTP Indicator Lite]', '[Fedra Algotrading LR + TTP Indicator Lite] 3.5', overlay = true, format=format.price, precision=2, max_labels_count=500)

///////////////SESSION
InSession(sessionTimes, sessionTimeZone=syminfo.timezone) =>
    not na(time(timeframe.period, sessionTimes, sessionTimeZone))


// Create the inputs
sessionInput = input.session("0000-0000", title="Session Times", 
     group="Trading Session", tooltip="Use the checkboxes to select " + 
     "on which days of the week this session is active. The session " +
     "has to be active on at least one day.")
monSession = input.bool(true, title="Mon ", group="Trading Session", inline="d1")
tueSession = input.bool(true, title="Tue ", group="Trading Session", inline="d1")
wedSession = input.bool(true, title="Wed ", group="Trading Session", inline="d1")
thuSession = input.bool(true, title="Thu ", group="Trading Session", inline="d1")
friSession = input.bool(true, title="Fri   ", group="Trading Session", inline="d2")
satSession = input.bool(true, title="Sat  ", group="Trading Session", inline="d2")
sunSession = input.bool(true, title="Sun ", group="Trading Session", inline="d2")

BGSession = input.bool(false, title="Session Background?", group="Trading Session")
// Make a days of week string based on the value of the checkboxes
sessionDays = ""

if sunSession
    sessionDays += "1"
if monSession
    sessionDays += "2"
if tueSession
    sessionDays += "3"
if wedSession
    sessionDays += "4"
if thuSession
    sessionDays += "5"
if friSession
    sessionDays += "6"
if satSession
    sessionDays += "7"

// Make the session string by joining the time with the days
tradingSession = sessionInput + ":" + sessionDays
bgcolor(InSession(tradingSession) and BGSession ? color.new(color.fuchsia, 85) : na)

// Highlight background when bars happen inside session specified
///////////////////////////
source = input.source(open, group='LR Settings (BUY & SELL)')
length = input.int(title='Lenght', defval= 10, step = 10, minval=1, group='LR Settings (BUY & SELL)', tooltip="Number of candles used to calculate the Linear Regression. Recommended values are between 10 and 100.")
offset = 0//input.int(0, minval=0, group='LR Settings (BUY & SELL)')

dev = input.float(title='Deviation: -3/0/3', defval= 2.0, step = 0.5, group='LR Settings (BUY & SELL)', tooltip="Linear regression deviation to establish the range. Recommended values are between 0 and 3.")
smoothing = 1//input.int(1, minval=1, group='LR Settings (BUY & SELL)')
mtf_val = input.timeframe('', 'Resolution', group='LR Settings (BUY & SELL)')
line_thick = 1//input.int(1, 'S&R Thickness', minval=1, maxval=4, group='LR Settings')
p = 'Lime'//input.string('Lime', 'Up Color', options=['Red', 'Lime', 'Orange', 'Teal', 'Yellow', 'White', 'Black'], group='LR Settings')
q = 'Red'//input.string('Red', 'Down Color', options=['Red', 'Lime', 'Orange', 'Teal', 'Yellow', 'White', 'Black'], group='LR Settings')
goto = 0//input.int(0, 'End At Bar Index', group='LR Settings')

var totalPnl = 0.0
var pnlPos = 0
var pnlNeg = 0
var totalTrades = 0
var hold = 0.0
byh = (((close-hold)/hold)*100)
var start = timestamp(year, month, dayofweek, hour, minute, second)
enableEma200 = input.bool(title='Enable confirmation MA Filter?', defval=false, group='MA Settings to determine downtrend (BUY & SELL)', tooltip="Add an MA for trend confirmation")
bigTrend_lenght = input.int(title= "Lenght of the confirmation MA Filter", defval= 200, step = 10, group='MA Settings to determine downtrend (BUY & SELL)', tooltip="Longs only when green")
MAsource = input.source(open, title= "MAs Source", group='MA Settings to determine downtrend (BUY & SELL)')

emaLength = input.int(title='Fast MA Length', defval=20, group='MA Settings to determine downtrend (BUY & SELL)', tooltip="Yellow line: Suggested optimization values, between 10 and 50")

showSTfilter = input.bool(title='Apply Supertrend Filter?', defval=false, group='SuperTrend Settings (BUY)', tooltip="Add super trend confirmation to the trend filter")


//showTSL = input.bool(title='Enable SL?', defval=true, group='Fine Tunning Settings (SELL)', tooltip="This option enables the stop loss (red line).")
//enableSL = input.bool(title='Enable "Exit in Loss"?', defval=true, group='Fine Tunning Settings (SELL)', tooltip="This option enables selling at a loss when it determines that the trade is unlikely to be favorable: the price is below 'Exit in loss' (fuchsia line) and breaks upwards the deviation of the linear regression (orange triangle).")
//enableBE = input.bool(title='Enable Break Even?', defval=false, group='Fine Tunning Settings (SELL)', tooltip="This option enables a take profit on break even when the price is between the fast MA (yellow line) and the slow MA (blue line) and the default percentage of 1.5% is reached.")
//showSLEMAfilter = input.bool(title='Apply Trend Filter to "Exit in Loss"?', defval=true, group='Fine Tunning Settings (SELL)', tooltip="With this condition enabled, the Fast MA (yellow line) must be above the Slow MA (blue line), for 'Sell in loss' to be allowed.")


string i_maType = input.string("SMA", "Fast MA type", options = ["SMA","EMA", "RMA", "WMA","HMA", "CHANGE","CMO","COG","DEV","HIGHEST","LOWEST","MEDIAN","MOM","RANGE","STDEV","VARIANCE"], group='MA Settings to determine downtrend (BUY & SELL)')

float ma = switch i_maType
    "SMA" => ta.sma(MAsource, emaLength)
    "EMA" => ta.ema(MAsource, emaLength)
    "RMA" => ta.rma(MAsource, emaLength)
    "HMA" => ta.hma(MAsource, emaLength)
    "CHANGE" => ta.change(MAsource, emaLength)
    "CMO" => ta.cmo(MAsource, emaLength)
    "COG" => ta.cog(MAsource, emaLength)
    "DEV" => ta.dev(MAsource, emaLength)
    "HIGHEST" => ta.highest(MAsource, emaLength)
    "LOWEST" => ta.lowest(MAsource, emaLength)
    "MEDIAN" => ta.median(MAsource, emaLength)
    "MOM" => ta.mom(MAsource, emaLength)
    "RANGE" => ta.range(MAsource, emaLength)
    "STDEV" => ta.stdev(MAsource, emaLength)
    "VARIANCE" => ta.variance(MAsource, emaLength)
    // Default used when the three first cases do not match.
    => ta.wma(MAsource, emaLength)

emaLength2 = input.int(title='Slow MA Length', defval=100, step=10, group='MA Settings to determine downtrend (BUY & SELL)', tooltip="Blue line: Suggested optimization values, between 50 and 200")
string i_maType2 = input.string("SMA", "Slow MA type", options = ["SMA","EMA","RMA", "WMA","HMA", "CHANGE", "CMO","COG","DEV","HIGHEST","LOWEST","MEDIAN", "MOM","RANGE","STDEV","VARIANCE"], group='MA Settings to determine downtrend (BUY & SELL)')

float ma2 = switch i_maType2
    "SMA" => ta.sma(MAsource, emaLength2)
    "EMA" => ta.ema(MAsource, emaLength2)
    "RMA" => ta.rma(MAsource, emaLength2)
    "HMA" => ta.hma(MAsource, emaLength2)
    "CHANGE" => ta.change(MAsource, emaLength2)
    "CMO" => ta.cmo(MAsource, emaLength2)
    "COG" => ta.cog(MAsource, emaLength2)
    "DEV" => ta.dev(MAsource, emaLength2)
    "HIGHEST" => ta.highest(MAsource, emaLength2)
    "LOWEST" => ta.lowest(MAsource, emaLength2)
    "MEDIAN" => ta.median(MAsource, emaLength2)
    "MOM" => ta.mom(MAsource, emaLength2)
    "RANGE" => ta.range(MAsource, emaLength2)
    "STDEV" => ta.stdev(MAsource, emaLength2)
    "VARIANCE" => ta.variance(MAsource, emaLength2)
    // Default used when the three first cases do not match.
    => ta.wma(MAsource, emaLength2)

ema200 = ta.sma(open, bigTrend_lenght)
linecolor = (open > ema200)  ? color.new(color.green, 50) : (open < ema200) ? color.new(color.red, 50) : na    
line200 = plot(enableEma200 ? ema200 : na, linewidth=4, title= "SMA 200", color=linecolor)

//showLRplot = input.bool(title='Show LR line', defval=false, group='Appearance')
showMA = input.bool(title='Show SMA', defval=true, group='Appearance')

showBGcolor = true//input.bool(title='Show BG Color', defval=true, group='Appearance')
showBGcolorSL = true//input.bool(title='Show SL Active Color', defval=true, group='Appearance')

EMAfilter = ma > ma2 

redBars = 1//input.int(title='Bars in Downtrend to sell', defval=1, minval= 0, group='Fine Tunning Settings (SELL)')
d = ta.barssince(ta.crossunder(ma, ma2))
if ta.crossover(ma,ma2)
    d:=0

downStreak = redBars == d
EMAbuy = ta.crossover(ma,ma2)
line1 = plot(showMA ? ma : na, linewidth=2, color=color.new(color.yellow, 0))
line2 = plot(showMA ? ma2 : na, linewidth=2, color=color.new(color.blue, 0))
fill(line1, line2, color = ma > ma2 ? color.green : color.red, transp=85)
//Opcional//plotshape(buy2, title= "Buy2", location=location.abovebar, color=color.blue, transp=0, style=shape.labelup)


price = input.source(close, title= "Price source.", group='Fine Tunning Settings (SELL)')
uptrend = price > ma
downtrend = price < ma


////////LR
cc(x) =>
    x == 'Red' ? color.red : x == 'Lime' ? color.lime : x == 'Orange' ? color.orange : x == 'Teal' ? color.teal : x == 'Yellow' ? color.yellow : x == 'Black' ? color.black : color.white
data(x) =>
    ta.sma(request.security(syminfo.tickerid, mtf_val != '' ? mtf_val : timeframe.period, x), smoothing)


linreg = data(ta.linreg(source, length, offset))
linreg_p = data(ta.linreg(source, length, offset + 1))
//plot(linreg, "Regression Line", cc(linreg>linreg[1]?p:q), editable=false)

x = bar_index
slope = linreg - linreg_p
intercept = linreg - x * slope
deviationSum = 0.0
for i = 0 to length - 1 by 1
    deviationSum := deviationSum + math.pow(source[i] - (slope * (x - i) + intercept), 2)
    deviationSum
deviation = math.sqrt(deviationSum / length)
x1 = x - length
x2 = x
y1 = slope * (x - length) + intercept
y2 = linreg

updating = goto <= 0 or x < goto

if updating
    line b = line.new(x1, y1, x2, y2, xloc.bar_index, extend.right, color.aqua, width=line_thick)
    line.delete(b[1])
    line dp = line.new(x1, deviation * dev + y1, x2, deviation * dev + y2, xloc.bar_index, extend.right, cc(q), width=line_thick)
    line.delete(dp[1])
    line dm = line.new(x1, -deviation * dev + y1, x2, -deviation * dev + y2, xloc.bar_index, extend.right, cc(p), width=line_thick)
    line.delete(dm[1])

dm_current = -deviation * dev + y2
dp_current = deviation * dev + y2

sellup = ta.crossover(price, dp_current)


/////////////Trailing Take Profit

//////////////////////////////SUPERTREND
Periods = input.int(title="ATR Period", defval=10, group='SuperTrend Settings (BUY)')
src2 = input(hl2, title="Source", group='SuperTrend Settings (BUY)')
Multiplier = input.float(title="ATR Multiplier", step=0.1, defval=3.0, group='SuperTrend Settings (BUY)')
changeATR= false//input.bool(title="Change ATR Calculation Method ?", defval=false, group='SuperTrend Settings (BUY)')
//showsignals = input.bool(title="Show Buy/Sell Signals ?", defval=true)
//highlighting = input.bool(title="Highlighter On/Off ?", defval=true, group='SuperTrend Settings')
atr2 = ta.sma(ta.tr, Periods)
atr= changeATR ? ta.atr(Periods) : atr2
up=src2-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? math.max(up,up1) : up
dn=src2+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
//showST = input.bool(title='Show Super Trend', defval=false, group='Appearance')
upPlot = plot(showSTfilter and trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=1, color=color.aqua)
buySignal = trend == 1 and trend[1] == -1
//plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
//plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(showSTfilter and trend != 1 ? dn : na, title="Down Trend", style=plot.style_linebr, linewidth=1, color=color.maroon)
sellSignal = trend == -1 and trend[1] == 1
//plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
//plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
isup = trend == 1 ? up : na
isdn = trend == 1 ? dn : na
//////////////////////////////
mapositive = ma-ma2 > ma[1]-ma2[1]
//////////////////////////////




//////////
buy = ((EMAfilter == false and ta.crossunder(price, dm_current) and isup) and mapositive) 
buy2 = open > ma2 and ma < ma2

if enableEma200
    if showSTfilter == true
        buy := ta.crossunder(price, dm_current) and isup  and mapositive and close > ema200
    else
        buy := ta.crossunder(price, dm_current)  and mapositive and close > ema200
else
    if showSTfilter == true
        buy := ta.crossunder(price, dm_current) and isup  and mapositive
    else
        buy := ta.crossunder(price, dm_current)  and mapositive
        
var S_sell = false
var S_buy = false

buyalert = not S_sell and buy and EMAfilter and mapositive
entry_price = ta.valuewhen(buyalert, close, 0)

takePer = input.float(3.0, title='Take Profit %', group='Fine Tunning Settings (SELL)', tooltip="Green line") / 100
breakEven = input.float(1.5, title='Break Even % (<TP)', step= 0.1, group='Fine Tunning Settings (SELL)', tooltip="Put any value > to TP to disable it") / 100
longTake = entry_price * (1 + takePer)
longBreakeven = entry_price * (1 + breakEven)
TraditionalPer = input.float(3.0, title='Stop Loss %', group='Fine Tunning Settings (SELL)', tooltip="Red line") / 100
sl = entry_price * (1 - TraditionalPer)



trailpoints = 0.00001 //input.float(title='Trail Points', defval=0.01, minval=0.0, maxval=2.0, step=0.01, group='Fine Tunning Settings (SELL)')
//trailoffset = input.float(title='Trail Offset (0.01 = 1%)', defval=0.010, minval=0.0, maxval=2.0, step=0.005, group='Fine Tunning Settings (SELL)', tooltip = "Percentage for the trailing stop loss that is triggered once the TP is reached. Expressed in float for ease of calculation (0.01 = 1%).")
trailloss = 0.01 //input.float(title='Trail loss', defval=0.01, minval=0.0, maxval=2.0, step=0.01, group='Fine Tunning Settings (SELL)')


if showSTfilter == true
    buyalert := not S_sell and buy and EMAfilter and isup  and mapositive and InSession(tradingSession)
else
    buyalert := not S_sell and buy and EMAfilter  and mapositive and InSession(tradingSession)

//enterLong = input(title = 'Enter Long Command', defval="", group='Optional bot Command Settings {{strategy.order.comment}}', tooltip="Enter here the command provided by your preferred bot platform to enter long.")
//exitLong = input(title= 'Exit Long Command', defval="", group='Optional bot Command Settings {{strategy.order.comment}}', tooltip="Enter here the command provided by your preferred bot platform to exit long.")
plotshape(buy, title='buy', location=location.belowbar, color=color.new(color.yellow, 0), style=shape.triangleup)
//plotshape(sellup, title='sellup', location=location.abovebar, color=color.new(color.orange, 0), style=shape.triangledown)
var tradecloseprice = 0.0

if close > 0 and not S_buy
    tplabel = label.new(x=bar_index[0], y=high[0]+high[0]*0.02, color=color.gray, textcolor=color.white, style=label.style_label_down, text='Unr.PnL: ' + str.tostring(((close-tradecloseprice)/tradecloseprice)*100)+'%')
    //pnl = (((close-tradecloseprice)/tradecloseprice)*100)
    //totalPnl := totalPnl + pnl
    tplabel 
    label.delete(tplabel[1])
    
if buyalert
    buylabel = label.new(x=bar_index, y=low[0] - low[0]*0.02, color=color.blue, textcolor=color.white, style=label.style_label_up, text='BUY :' + str.tostring(close))
    buylabel
    if totalPnl == 0.0
        hold := close
        //start := timestamp(timezone, year, month, day, hour, minute, second)
    //(((close-tradecloseprice)/tradecloseprice)*100)
    //entry_price := 
    longTake := entry_price * (1 + takePer)
    longBreakeven = entry_price * (1 + breakEven)
    tradecloseprice := close 
    S_sell := true
    S_buy := false


sellTPalert = not S_buy and price >= longTake
if sellTPalert
    tplabel = label.new(x=bar_index[0], y=high[0] + high[0] * 0.02, color=color.green, textcolor=color.white, style=label.style_label_down, text='TP P/L: ' + str.tostring(((close-tradecloseprice)/tradecloseprice)*100)+'%')
    pnl = (((close-tradecloseprice)/tradecloseprice)*100)
    totalPnl := totalPnl + pnl
    tplabel 
    S_sell := false
    S_buy := true
    pnlPos := pnlPos + 1
    totalTrades := totalTrades +1
    
        
sellBEalert = not S_buy and price >= longBreakeven and downtrend
if sellBEalert
    belabel = label.new(x=bar_index, y=high[0] + high[0] * 0.02, color=color.orange, textcolor=color.white, style=label.style_label_down, text='BE P/L: ' + str.tostring(((close-tradecloseprice)/tradecloseprice)*100)+'%')
    pnl = (((close-tradecloseprice)/tradecloseprice)*100)
    
    totalPnl := totalPnl + pnl
    belabel
    S_sell := false
    S_buy := true
    pnlPos := pnlPos + 1
    totalTrades := totalTrades +1
    
sellSLalert = not S_buy and price <= sl 
if sellSLalert
    sllabel = label.new(x=bar_index, y=low[0] - low[0]*0.02, color=color.red, textcolor=color.white, style=label.style_label_up, text='SL P/L: ' + str.tostring(((close-tradecloseprice)/tradecloseprice)*100)+'%')
    pnl = (((close-tradecloseprice)/tradecloseprice)*100)
    
    totalPnl := totalPnl + pnl
    sllabel
    S_sell := false
    S_buy := true
    pnlNeg := pnlNeg + 1
    totalTrades := totalTrades +1
    
winratio = pnlPos/pnlNeg
        
var pnlTable = table.new(position = position.top_right, columns = 4, rows = 4, border_color = color.white, border_width = 1)

table.cell(table_id = pnlTable, column = 0, row = 0, bgcolor = color.gray, text_color = color.white, text = "Closed Trades")
table.cell(table_id = pnlTable, column = 1, row = 0, bgcolor = color.gray, text_color = color.white, text = "Profit Factor")
table.cell(table_id = pnlTable, column = 2, row = 0, bgcolor = color.gray, text_color = color.white, text = "Cumulative PnL")
table.cell(table_id = pnlTable, column = 3, row = 0, bgcolor = color.gray,  text_color = color.white, text = "Buy & Hold")
table.cell(table_id = pnlTable, column = 0, row = 1, bgcolor = color.gray, text_color = color.white, text = str.tostring(totalTrades))
table.cell(table_id = pnlTable, column = 1, row = 1, bgcolor = color.gray, text_color = color.yellow, text = str.tostring(winratio))
table.cell(table_id = pnlTable, column = 2, row = 1, bgcolor = color.gray, text_color = color.white,text = str.tostring(totalPnl)+'%')
table.cell(table_id = pnlTable, column = 3, row = 1, bgcolor = color.gray, text_color = color.yellow, text = str.tostring(byh)+'%')
if totalPnl > 0
    table.cell_set_bgcolor(pnlTable, column = 2, row = 1, bgcolor = color.green) 
else
    table.cell_set_bgcolor(pnlTable, column = 2, row = 1, bgcolor = color.red) 
if winratio > 1
    table.cell_set_bgcolor(pnlTable, column = 1, row = 1, bgcolor = color.green) 
else
    table.cell_set_bgcolor(pnlTable, column = 1, row = 1, bgcolor = color.red) 
    table.cell(table_id = pnlTable, column = 0, row = 2, bgcolor = color.blue, text_color = color.white, text =  'Fedra Algotrading Scripts')
table.merge_cells(pnlTable, 0, 2, 3, 2)
//table.cell(table_id = pnlTable, column = 0, row = 3, bgcolor = color.green, text_color = color.white, text =  'Support me in https://www.patreon.com/fedra_strategy')
//table.merge_cells(pnlTable, 0, 3, 3, 3)

//if byh > close
//    table.cell_set_bgcolor(pnlTable, column = 2, row = 1, bgcolor = color.green) 
//else
//    table.cell_set_bgcolor(pnlTable, column = 2, row = 1, bgcolor = color.red)
    
//debuglabel = label.new(x=bar_index, y=low[0] - low[0]*0.02, color=color.red, textcolor=color.white, style=label.style_label_up, text='Win Ratio ' + str.tostring(winratio)+'%')
//label.delete(debuglabel[1])
alertcondition(buyalert, title='BUY Alert')
alertcondition(sellTPalert or sellBEalert, title='SELL Alert TP')
alertcondition(sellBEalert or sellBEalert, title='SELL Alert BE')
alertcondition(sellSLalert or sellBEalert, title='SELL Alert SL')

plot(S_sell ? longTake : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='Long Take Profit')
plot(S_sell ? sl : na, style=plot.style_linebr, color=color.new(color.maroon, 0), linewidth=1, title='Long Take Profit')
disclaimer = input.bool (defval = false, title = '🔥🔥This indicator is a simplified version of my automatic trading strategy for bots "Fedra Algotrading Strategy". In order to function as an indicator, several sacrifices had to be made: - No backtesting to optimize the parameters. -Cannot use the current price on each tick, so the calculations are made at the closing value of each candle and trailing take profit isnt possible. -Automation for automatic trading is limited. -It is not possible to take advantage of advanced risk management and capital management functions. If you are interested in more advanced versions, please check my other scripts..🔥🔥', tooltip = "Check out the advanced script 'Fedra Algotrading Strategy'")

Overview

Fedra Algotrading LR + TTP Indicator Lite filters signals using configurable EMA lines and optional Supertrend filter. A session filter restricts calculations to specified trading days and times. Additional ATR-based take profit and stop loss percentages are provided for potential trade management. The script is a simplified version of an automated trading strategy and draws directly on the main price chart.

Details

Published by

fbarberis on GitHub

Type

Indicator, Pine Script v5

Draws

On the price chart

Category

Trend, Support & resistance, Moving averages, Volatility & bands

Markets

Any symbol

Timeframes

Any timeframe

Risk Notes

No repainting, lookahead or stacked entries were found in its code or README. That says nothing about how well it works: test it first.

Settings

The inputs you can change from the gear icon on the chart. Defaults are the author's.

SettingTypeDefaultVariable
Session Timessession0000-0000sessionInput
Mon booltruemonSession
Tue booltruetueSession
Wed booltruewedSession
Thu booltruethuSession
Fri   booltruefriSession
Sat  booltruesatSession
Sun booltruesunSession
Session Background?boolfalseBGSession
sourcesourceopensource
Lenghtint10length
Deviation: -3/0/3float2.0dev
Show all 30 settings
SettingTypeDefaultVariable
Resolutiontimeframemtf_val
Enable confirmation MA Filter?boolfalseenableEma200
Lenght of the confirmation MA Filterint200bigTrend_lenght
MAs SourcesourceopenMAsource
Fast MA Lengthint20emaLength
Apply Supertrend Filter?boolfalseshowSTfilter
Fast MA typestringSMAi_maType
Slow MA Lengthint100emaLength2
Slow MA typestringSMAi_maType2
Show SMAbooltrueshowMA
Price source.sourcecloseprice
ATR Periodint10Periods
Sourcesourcehl2src2
ATR Multiplierfloat3.0Multiplier
Take Profit %float3.0takePer
Break Even % (<TP)float1.5breakEven
Stop Loss %float3.0TraditionalPer
🔥🔥This indicator is a simplified version of my automatic trading strategy for bots "Fedra Algotrading Strategy". In ordeboolfalsedisclaimer
Third-party code. ForexR did not write, test or endorse this script, and the summary above was generated automatically from its code and README. Indicators describe the past, and a strategy's backtest can look better than live trading, especially when a script repaints. Check it in the Strategy Tester and on a demo account before you rely on it.

Similar Pine Scripts

MA Envelope (MAE)

by mihakralj
99 stars

The MA Envelope indicator calculates upper and lower channel bands shifted by a user-defined percentage around a baseline moving average. It supports Simple Moving Average, Exponential Moving Average, and Weighted Moving Average calculation types. The script p

Indicator v6 Moving averagesSupport & resistance
Updated 4 weeks ago · Apache-2.0 GitHub repository of MA Envelope (MAE)

Trend Compass 4H

by chris-c-thomas
14 stars

Trend Compass 4H plots a multi-EMA ribbon (10/21/50) along with higher-timeframe reference levels on the price chart. It classifies trend phase into six states and calculates a composite weighted trend score. The script detects RSI and MACD divergences, analyz

Indicator v6 TrendMoving averages
Updated 6 months ago · MIT GitHub repository of Trend Compass 4H
10 stars

My Macro Cycle Indicator plots daily and weekly simple and exponential moving averages on the price chart, plus Pi Cycle and Mayer Multiple levels derived from the 200-day average. Optional toggles add support-band fills, a Keltner channel, CME futures gaps, a

Indicator v4 Moving averagesVolatility & bands
Updated 5 years ago · None stated GitHub repository of My Macro Cycle Indicator

This indicator plots a double-smoothed Supertrend baseline on the price chart, combining a Supertrend midline with WMA and EMA smoothing to show trend direction. Direction uses an ATR-scaled baseline slope with hysteresis, while percentile-ranked slope magnitu

Indicator v6 TrendMoving averages
Updated yesterday · MIT GitHub repository of Smooth Trend Radar [WavesUnchained]

SRI Indicator ft. MSB

by kingmalitha
7 stars

This indicator overlays an all-in-one technical analysis toolkit on the price chart. It plots multiple moving averages, including standard EMAs, SMAs, and a Trend Regularity Adaptive Moving Average, alongside Bollinger Bands, Supertrend, Nadaraya-Watson envelo

Indicator v5 Moving averagesTrend Repaints
Updated 3 years ago · None stated GitHub repository of SRI Indicator ft. MSB

More indicators

Trade Your Charts With a Regulated Broker

Compare brokers that connect to TradingView, with spreads, minimum deposits and leverage side by side.

Compare brokers