Specifiche
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © hanabil
//@version=5
indicator("Smarter SnR", overlay=true, max_bars_back=5000, max_labels_count=500, max_lines_count=500)
// General Function
f_barssince(_cond, _count) =>
_barssince = bar_index - ta.valuewhen(_cond, bar_index, _count)
_barssince
barssince(_cond, _count) => int(math.max(1, nz(f_barssince(_cond, _count))))
f_vw(cond, expr, count) => ta.valuewhen(cond, expr, count)
tostring(x, y)=> x + str.tostring(y)
var int dec = str.length(str.tostring(syminfo.mintick))-2
truncate(number) =>
factor = math.pow(10, dec)
int(number * factor) / factor
EndTime = timestamp('19 Jan 2022 00:00 +0000')
inDateRange = time<=EndTime
//-------------------------
// Input Zigzag
gr1 = 'General'
showSnr = input(true, 'SnR', group=gr1)
showTL = input(true, 'TrendLine', group=gr1)
showZZ = input(false, 'Show Zigzag', group=gr1, inline='1')
zzCol = input.color(color.black, title='', group=gr1, inline='1')
// -----------------
// Input SnR
labStyleUp = label.style_label_up
labStyleDn = label.style_label_down
labLeft = label.style_label_left
linDashed = line.style_dashed
gr3 = 'Support and Ressistance'
showPriceSnr= input(true, 'Show Price', group=gr3)
snrType = input.string('Swing HiLo', 'SnR Type', ['Volume', 'Swing HiLo'], group=gr3)
Period = input.int(defval=20, title='Swing Period', minval=1, group=gr3)
lStyleSRI = input.string('Solid', 'Line Style', ['Solid', 'Dashed', 'Dotted'], group=gr3)
lStyleSR = lStyleSRI=='Solid'? line.style_solid : lStyleSRI=='Dashed'? line.style_dashed : line.style_dotted
linWidth = input(1, 'Linewidth', group=gr3)
lineExtendI = input.string('None', 'Line Extend', ['None', 'Left', 'Right', 'Both'], group=gr3)
lineExtend = lineExtendI=='None'? extend.none : lineExtendI=='Left'? extend.left : lineExtendI=='Both'? extend.both : extend.right
supCol = input.color(color.new(color.black, 100), 'Support Label', group=gr3 , inline='1')
supTextCol = input.color(color.red, 'Text', group=gr3 , inline='1')
supLineCol = input.color(color.red, 'Line', group=gr3 , inline='1')
resCol = input.color(color.new(color.black, 100), 'Ressistance Label', group=gr3 , inline='2')
resTextCol = input.color(color.blue, 'Text', group=gr3 , inline='2')
resLineCol = input.color(color.blue, 'Line', group=gr3 , inline='2')
// Snr Pivot
ph = ta.pivothigh(Period, Period)
pl = ta.pivotlow(Period, Period)
ph0 = ta.valuewhen(ph, close[Period], 0)
ph1 = ta.valuewhen(ph, close[Period], 1)
ph2 = ta.valuewhen(ph, close[Period], 2)
pl0 = ta.valuewhen(pl, close[Period], 0)
pl1 = ta.valuewhen(pl, close[Period], 1)
pl2 = ta.valuewhen(pl, close[Period], 2)
P0 = ta.valuewhen(ph or pl, close[Period], 0)
P1 = ta.valuewhen(ph or pl, close[Period], 1)
P2 = ta.valuewhen(ph or pl, close[Period], 2)
bar_pl1 = int(math.max(1, nz(f_barssince(pl, 1))))
highest_1 = ta.highest(high[Period], bar_pl1)
highestbars_1 = ta.highestbars(high[Period], bar_pl1)
bar_ph1 = int(math.max(1, nz(f_barssince(ph, 1))))
lowest_1 = ta.lowest(low[Period], bar_ph1)
lowestbars_1 = ta.lowestbars(low[Period], bar_ph1)
h = ph
hA = pl and P1 == pl1
hAA= pl and P1 == pl1 and P2 == pl2
l = pl
lA = ph and P1 == ph1
lAA= ph and P1 == ph1 and P2 == pl2
h0 = ta.valuewhen(h, high[Period], 0)
h1 = ta.valuewhen(h, high[Period], 1)
hA0= ta.valuewhen(hA, highest_1, 0)
l0 = ta.valuewhen(l, low[Period], 0)
l1 = ta.valuewhen(l, low[Period], 1)
lA0= ta.valuewhen(lA, lowest_1, 0)
//----------------------------------------------
// Fix Zigzag Pivot
f_AA(x, xA, x0, xA0) => ta.valuewhen(x or xA, close, 0) == ta.valuewhen(x, close, 0)? x0 : xA0
f_offset(x, xA, xAbars) => ta.valuewhen(x or xA, close, 0) == ta.valuewhen(x, close, 0)? -Period : xAbars-Period
fixPh = hA or h
fixPl = lA or l
fixPhVal = f_AA(h, hA, h0, hA0)
fixPlVal = f_AA(l, lA, l0, lA0)
fixPhVal1= ta.valuewhen(fixPh, fixPhVal, 1)
fixPlVal1= ta.valuewhen(fixPl, fixPlVal, 1)
offsetPh = -f_barssince(fixPh, 0) + f_offset(h, hA, highestbars_1)
offsetPl = -f_barssince(fixPl, 0) + f_offset(l, lA, lowestbars_1)
offsetPh1= ta.valuewhen(fixPh, offsetPh, 1) - f_barssince(fixPh, 1)
offsetPl1= ta.valuewhen(fixPl, offsetPl, 1) - f_barssince(fixPl, 1)
fixOffset = fixPh? offsetPh : offsetPl
fixPivotVal = fixPh? fixPhVal : fixPlVal
offsetForHa = -f_barssince(l, 1)- Period
offsetForLa = -f_barssince(h, 1)- Period
if hA and showZZ
line.new(bar_index+offsetPh, hA0, bar_index-Period, fixPlVal, xloc.bar_index, color=zzCol)
line.new(bar_index+offsetForHa, l1, bar_index+offsetPh, hA0, color=zzCol)
if lA and showZZ
line.new(bar_index+offsetPl, lA0, bar_index-Period, fixPhVal, xloc.bar_index, color=zzCol)
line.new(bar_index+offsetForLa, h1, bar_index+offsetPl, lA0, color=zzCol)
if h and showZZ
line.new(bar_index-Period, fixPhVal, bar_index+offsetPl, fixPlVal, color=zzCol)
if l and showZZ
line.new(bar_index-Period, fixPlVal, bar_index+offsetPh, fixPhVal, color=zzCol)
// ---------
// SnR Swing HiLo
fVwSeries (x, xVal, xBar)=>
x0 = truncate(ta.valuewhen(x, xVal, 0))
x1 = truncate(ta.valuewhen(x, xVal, 1))
x2 = truncate(ta.valuewhen(x, xVal, 2))
x0Bar = ta.valuewhen(x, xBar, 0) - f_barssince(x, 0)
x1Bar = ta.valuewhen(x, xBar, 1) - f_barssince(x, 1)
x2Bar = ta.valuewhen(x, xBar, 2) - f_barssince(x, 2)
[x0, x1, x2, x0Bar, x1Bar, x2Bar]
[s1, s2, s3, s1Bar, s2Bar, s3Bar] = fVwSeries(fixPl, fixPlVal, offsetPl)
[r1, r2, r3, r1Bar, r2Bar, r3Bar] = fVwSeries(fixPh, fixPhVal, offsetPh)
fLL(show_, showPrice, x1, y1, x2, y2, text_, labelcol, labelstyle, textcol, extend_, linecol, linestyle, linewidth) =>
if close and show_
line_ = line.new(x1, y1, x2, y2, xloc.bar_index, extend_, linecol, linestyle, linewidth)
line.delete (line_ [1])
if showPrice
label_ = label.new(x2, y2, text_, xloc.bar_index, yloc.price, labelcol, labelstyle, textcol)
label.delete(label_[1])
fTst(x, y)=> x + str.tostring(y)
fLL(showSnr, showPriceSnr, bar_index+s1Bar, s1, bar_index+10, s1, fTst('S1 -> ', s1), supCol, labLeft, supTextCol, lineExtend, supLineCol, lStyleSR, linWidth)
fLL(showSnr, showPriceSnr, bar_index+s2Bar, s2, bar_index+10, s2, fTst('S2 -> ', s2), supCol, labLeft, supTextCol, lineExtend, supLineCol, lStyleSR, linWidth)
fLL(showSnr, showPriceSnr, bar_index+s3Bar, s3, bar_index+10, s3, fTst('S3 -> ', s3), supCol, labLeft, supTextCol, lineExtend, supLineCol, lStyleSR, linWidth)
fLL(showSnr, showPriceSnr, bar_index+r1Bar, r1, bar_index+10, r1, fTst('R1 -> ', r1), resCol, labLeft, resTextCol, lineExtend, resLineCol, lStyleSR, linWidth)
fLL(showSnr, showPriceSnr, bar_index+r2Bar, r2, bar_index+10, r2, fTst('R2 -> ', r2), resCol, labLeft, resTextCol, lineExtend, resLineCol, lStyleSR, linWidth)
fLL(showSnr, showPriceSnr, bar_index+r3Bar, r3, bar_index+10, r3, fTst('R3 -> ', r3), resCol, labLeft, resTextCol, lineExtend, resLineCol, lStyleSR, linWidth)
//------------------------------------
// Trendlines
gr5 = 'Trendlines'
showPriceTl = input(true, 'Show Price', group=gr5)
newestTL = input(true, 'Show Newest', group=gr5)
newestBreak = input(true, 'Show Newest Break Only', group=gr5)
period = input(20, 'Trendline Period', group=gr5)
srcI = input.string('Close Body', 'Source', ['Close Body', 'Shadow'], group=gr5)
srcL = srcI=='Shadow'? low : close
srcH = srcI=='Shadow'? high : close
lStyleI = input.string('Dashed', 'Line Style', ['Solid', 'Dashed', 'Dotted'], group=gr5, inline='2')
y2_mult = input(1, title='Trendline Length', group=gr5, inline='2')
lStyle = lStyleI=='Solid'? line.style_solid : lStyleI=='Dashed'? line.style_dashed : line.style_dotted
lWidth = input(1, 'Line Width', group=gr5, inline='1')
lColor = input.color(color.black, '', group=gr5, inline='1')
phFound = ta.pivothigh(srcH, period, period)
plFound = ta.pivotlow (srcL, period, period)
phVal = ta.valuewhen(phFound, srcH[period], 0)
plVal = ta.valuewhen(plFound, srcL[period], 0)
phVal1 = ta.valuewhen(phFound, srcH[period], 1)
plVal1 = ta.valuewhen(plFound, srcL[period], 1)
a_bar_time = time - time[1]
noneCol = color.new(color.red, 100)
fGetPriceTl(slope_, x2_, y2_) =>
current_price = y2_ + (slope_/(x2_ - time))
current_price
f_trendline(cond_, y1Val_, x1Bar_, y2Val_, x2Bar_, color_, tlPriceText, textCol) =>
x1 = ta.valuewhen(cond_, time[x1Bar_], 0)
x2 = ta.valuewhen(cond_, time[x2Bar_], 0)
y1 = ta.valuewhen(cond_, y1Val_, 0)
y2 = ta.valuewhen(cond_, y2Val_, 0)
slope_ = ta.valuewhen(cond_, (y2-y1)/(x2-x1), 0)
currentPrice = truncate(y2 + (time-x2)*slope_)
var label tlPrice = na
if close and newestTL
a_trendline = line.new (x1, y1, time, currentPrice, xloc.bar_time, color=lColor, style=lStyle, width=lWidth)
line.delete (a_trendline[1])
a_trendline
newY2 = x2 + (y2_mult * a_bar_time * 25)
if cond_ and not newestTL
a_trendline = line.new(x1, y1, newY2, currentPrice, xloc.bar_time, color=lColor, style=lStyle, width=lWidth)
a_trendline
if showPriceTl
tlPrice := label.new(bar_index+10, currentPrice, fTst(tlPriceText, currentPrice), color=noneCol, style=label.style_label_left, textcolor=textCol)
label.delete(tlPrice[1])
currentPrice
newUp = phFound and phVal<phVal1 and showTL
newLo = plFound and plVal>plVal1 and showTL
upperTl = f_trendline(newUp, phVal1, f_barssince(phFound,1)+period, phVal, f_barssince(phFound,0)+period,
color.black, 'Upper -> ', resTextCol)
lowerTl = f_trendline(newLo, plVal1, f_barssince(plFound,1)+period, plVal, f_barssince(plFound,0)+period,
color.black, 'Lower -> ', supTextCol)
highestSince = ta.highest(srcH, barssince(phFound and phVal<phVal1 and showTL,0))
lowestSince = ta.lowest (srcL, barssince(plFound and plVal>plVal1 and showTL,0))
breakUpper = srcH[1]<upperTl[1] and srcH>upperTl
breakLower = srcL[1]>lowerTl[1] and srcL<lowerTl
var label bu = na
var label bl = na
if breakUpper and barstate.isconfirmed
bu := label.new(bar_index, low , '🔼', color=resTextCol, style=label.style_label_up)
if newestBreak
label.delete(bu[1])
if breakLower and barstate.isconfirmed
bl := label.new(bar_index, high, '🔽', color=supTextCol)
if newestBreak
label.delete(bl[1])
alertcondition(breakUpper and barstate.isconfirmed, 'Upper Trendline Breaked')
alertcondition(breakLower and barstate.isconfirmed, 'Lower Trendline Breaked')
sCO = ta.crossover (close, s1) or ta.crossover (close, s2) or ta.crossover (close, s3)
sCU = ta.crossunder(close, s1) or ta.crossunder(close, s2) or ta.crossunder(close, s3)
rCO = ta.crossover (close, r1) or ta.crossover (close, r2) or ta.crossover (close, r3)
rCU = ta.crossunder(close, r1) or ta.crossunder(close, r2) or ta.crossunder(close, r3)
alertcondition(rCO, 'Close Price Crossover The Resistance')
alertcondition(rCU, 'Close Price Crossunder The Resistance')
alertcondition(sCO, 'Close Price Crossover The Support')
alertcondition(sCU, 'Close Price Crossunder The Support')
// ----------------------
// Dashboard
gr6 = 'Dashboard'
dash = input(true, 'Dashboard', group=gr6)
dashTitle = input('😎 Smarter Dashboard 😎', 'Title', group=gr6)
dashColor = input.color(color.new(#512da8, 35) , 'Label', group=gr6, inline='3')
dashTextCol = input.color(color.white, 'Text', group=gr6, inline='3')
dashDist = input(50, 'Dashboard Distance', group=gr6)
trendlineText = showTL? '\n〰️〰️〰️〰️〰️〰️〰️〰️〰️'
+ '\nTrendline Price'
+ '\n🔸 Upper = ' + str.tostring(upperTl)
+ '\n🔸 Lower = ' + str.tostring(lowerTl) : na
snrText = showSnr? '\n〰️〰️〰️〰️〰️〰️〰️〰️〰️'
+ '\nSupport and Resistance'
+ '\nS1 = ' + str.tostring(s1) + ', R1 = ' + str.tostring(r1)
+ '\nS2 = ' + str.tostring(s2) + ', R2 = ' + str.tostring(r2)
+ '\nS3 = ' + str.tostring(s3) + ', R3 = ' + str.tostring(r3) : na
smarterDashText = dashTitle
+ snrText
+ trendlineText
if dash
dashSmarter = label.new(bar_index+dashDist, close, smarterDashText, style=label.style_label_center, color=dashColor, textcolor=dashTextCol)
label.delete(dashSmarter[1])
// ------
// quotes
gr50 = 'QUOTES'
showTable = input(true, 'Show Quotes Table', group=gr50)
quote = input('🎓 Smarter Trade Give Better Pain & Gain 🎓', 'Drop Your Quotes Here', group=gr50)
tabPosI_ = input.string('Top', 'Table Position', ['Top', 'Middle', 'Bot'], group=gr50)
tabPos_ = tabPosI_=='Top'? position.top_right : tabPosI_=='Bot'? position.bottom_right : position.middle_right
tabColor = input.color(color.new(#512da8, 35) , 'Background', group=gr50)
borderCol = input.color(color.black , 'Border', group=gr50)
tabTextCol = input.color(color.white, 'Text', group=gr50)
var saTable = table.new(tabPos_, 1, 1, tabColor, borderCol, 1, borderCol, 1)
if showTable
table.cell(saTable, 0, 0, quote, text_color=tabTextCol, text_size=size.small)
// ----------------
// Smart Table
// --------
gr10 = 'Table'
useTab = input(true, 'Show Table?', group=gr10)
tf1 = input.timeframe('', 'Timeframe - A', group=gr10)
tf2 = input.timeframe('45', 'Timeframe - B', group=gr10)
tf3 = input.timeframe('D', 'Timeframe - C', group=gr10)
tabPosI = input.string('Bot', 'Table Position', ['Top', 'Middle', 'Bot'], group=gr10)
bullCol = input.color(color.new(color.green, 0) , 'Oversold' , '', '1', gr10)
bearCol = input.color(color.new(color.red, 0) , 'Overbought' , '', '1', gr10)
neutralCol = input.color(color.new(#bbd9fb, 0) , 'Not Over' , '', '1', gr10)
textCol = input.color(color.white, 'Text', inline='1', group=gr10)
textSizeI = input.string('Small', 'Text Size', ['Small', 'Tiny', 'Normal'], group=gr10)
textSize = textSizeI=='Small'? size.small : textSizeI=='Tiny'? size.tiny : size.normal
tabPos = tabPosI=='Top'? position.top_right : tabPosI=='Bot'? position.bottom_right : position.middle_right
var smartTable = table.new(tabPos, 50, 50, color.new(color.black,100), color.black, 1, color.black,1)
// ----
// RSI
gr11 = 'RSI'
rsiSource = input(close, 'RSI -- Source', '1', gr11)
rsiPeriod = input(14, 'Period', '', '1', gr11)
obRsi = input(80, 'Overbought', '', '2', gr11)
osRsi = input(20, 'Oversold ', '', '2', gr11)
// Stoch
gr12 = 'Stochastic'
stochSource = input(close, 'Stochastic -- Source', '2', group=gr12)
stochPeriod = input(14, 'Period', '', '2', gr12)
periodK = input(14, 'Period -- K', '', '1', gr12)
periodD = input(3 , 'D', '', '1', gr12)
smoothK = input(1 , 'Smooth K', '', '0', gr12)
obStoch = input(80, 'Overbought', '', '2', gr12)
osStoch = input(20, 'Oversold ', '', '2', gr12)
fCol(x)=> x=='Overbought'? bearCol : x=='Oversold'? bullCol : neutralCol
fTable(tf, rowNumber)=>
k = request.security(syminfo.ticker, tf, ta.sma(ta.stoch(close, high, low, periodK), smoothK))
d = ta.sma(k, periodD)
r = request.security(syminfo.ticker, tf, ta.rsi(rsiSource, rsiPeriod))
sStatus = k>obStoch? 'Overbought' : k<osStoch? 'Oversold' : 'Not Over'
rStatus = r>obRsi ? 'Overbought' : r<osRsi ? 'Oversold' : 'Not Over'
sCol = fCol(sStatus)
rCol = fCol(rStatus)
if useTab
table.cell(smartTable, 0, 0, 'Timeframe' , text_color=textCol, text_size=textSize, bgcolor=dashColor)
table.cell(smartTable, 1, 0, 'Stochastic' , text_color=textCol, text_size=textSize, bgcolor=dashColor)
table.cell(smartTable, 2, 0, 'RSI' , text_color=textCol, text_size=textSize, bgcolor=dashColor)
tfDes = tf==''? timeframe.period : tf
table.cell(smartTable, 0, rowNumber, tfDes , text_color=textCol, text_size=textSize, bgcolor=dashColor)
table.cell(smartTable, 1, rowNumber, sStatus, text_color=textCol, text_size=textSize, bgcolor=sCol)
table.cell(smartTable, 2, rowNumber, rStatus, text_color=textCol, text_size=textSize, bgcolor=rCol)
fTable(tf1, 1)
fTable(tf2, 2)
fTable(tf3, 3)
//
// © hanabil
//@version=5
indicator("Smarter SnR", overlay=true, max_bars_back=5000, max_labels_count=500, max_lines_count=500)
// General Function
f_barssince(_cond, _count) =>
_barssince = bar_index - ta.valuewhen(_cond, bar_index, _count)
_barssince
barssince(_cond, _count) => int(math.max(1, nz(f_barssince(_cond, _count))))
f_vw(cond, expr, count) => ta.valuewhen(cond, expr, count)
tostring(x, y)=> x + str.tostring(y)
var int dec = str.length(str.tostring(syminfo.mintick))-2
truncate(number) =>
factor = math.pow(10, dec)
int(number * factor) / factor
EndTime = timestamp('19 Jan 2022 00:00 +0000')
inDateRange = time<=EndTime
//-------------------------
// Input Zigzag
gr1 = 'General'
showSnr = input(true, 'SnR', group=gr1)
showTL = input(true, 'TrendLine', group=gr1)
showZZ = input(false, 'Show Zigzag', group=gr1, inline='1')
zzCol = input.color(color.black, title='', group=gr1, inline='1')
// -----------------
// Input SnR
labStyleUp = label.style_label_up
labStyleDn = label.style_label_down
labLeft = label.style_label_left
linDashed = line.style_dashed
gr3 = 'Support and Ressistance'
showPriceSnr= input(true, 'Show Price', group=gr3)
snrType = input.string('Swing HiLo', 'SnR Type', ['Volume', 'Swing HiLo'], group=gr3)
Period = input.int(defval=20, title='Swing Period', minval=1, group=gr3)
lStyleSRI = input.string('Solid', 'Line Style', ['Solid', 'Dashed', 'Dotted'], group=gr3)
lStyleSR = lStyleSRI=='Solid'? line.style_solid : lStyleSRI=='Dashed'? line.style_dashed : line.style_dotted
linWidth = input(1, 'Linewidth', group=gr3)
lineExtendI = input.string('None', 'Line Extend', ['None', 'Left', 'Right', 'Both'], group=gr3)
lineExtend = lineExtendI=='None'? extend.none : lineExtendI=='Left'? extend.left : lineExtendI=='Both'? extend.both : extend.right
supCol = input.color(color.new(color.black, 100), 'Support Label', group=gr3 , inline='1')
supTextCol = input.color(color.red, 'Text', group=gr3 , inline='1')
supLineCol = input.color(color.red, 'Line', group=gr3 , inline='1')
resCol = input.color(color.new(color.black, 100), 'Ressistance Label', group=gr3 , inline='2')
resTextCol = input.color(color.blue, 'Text', group=gr3 , inline='2')
resLineCol = input.color(color.blue, 'Line', group=gr3 , inline='2')
// Snr Pivot
ph = ta.pivothigh(Period, Period)
pl = ta.pivotlow(Period, Period)
ph0 = ta.valuewhen(ph, close[Period], 0)
ph1 = ta.valuewhen(ph, close[Period], 1)
ph2 = ta.valuewhen(ph, close[Period], 2)
pl0 = ta.valuewhen(pl, close[Period], 0)
pl1 = ta.valuewhen(pl, close[Period], 1)
pl2 = ta.valuewhen(pl, close[Period], 2)
P0 = ta.valuewhen(ph or pl, close[Period], 0)
P1 = ta.valuewhen(ph or pl, close[Period], 1)
P2 = ta.valuewhen(ph or pl, close[Period], 2)
bar_pl1 = int(math.max(1, nz(f_barssince(pl, 1))))
highest_1 = ta.highest(high[Period], bar_pl1)
highestbars_1 = ta.highestbars(high[Period], bar_pl1)
bar_ph1 = int(math.max(1, nz(f_barssince(ph, 1))))
lowest_1 = ta.lowest(low[Period], bar_ph1)
lowestbars_1 = ta.lowestbars(low[Period], bar_ph1)
h = ph
hA = pl and P1 == pl1
hAA= pl and P1 == pl1 and P2 == pl2
l = pl
lA = ph and P1 == ph1
lAA= ph and P1 == ph1 and P2 == pl2
h0 = ta.valuewhen(h, high[Period], 0)
h1 = ta.valuewhen(h, high[Period], 1)
hA0= ta.valuewhen(hA, highest_1, 0)
l0 = ta.valuewhen(l, low[Period], 0)
l1 = ta.valuewhen(l, low[Period], 1)
lA0= ta.valuewhen(lA, lowest_1, 0)
//----------------------------------------------
// Fix Zigzag Pivot
f_AA(x, xA, x0, xA0) => ta.valuewhen(x or xA, close, 0) == ta.valuewhen(x, close, 0)? x0 : xA0
f_offset(x, xA, xAbars) => ta.valuewhen(x or xA, close, 0) == ta.valuewhen(x, close, 0)? -Period : xAbars-Period
fixPh = hA or h
fixPl = lA or l
fixPhVal = f_AA(h, hA, h0, hA0)
fixPlVal = f_AA(l, lA, l0, lA0)
fixPhVal1= ta.valuewhen(fixPh, fixPhVal, 1)
fixPlVal1= ta.valuewhen(fixPl, fixPlVal, 1)
offsetPh = -f_barssince(fixPh, 0) + f_offset(h, hA, highestbars_1)
offsetPl = -f_barssince(fixPl, 0) + f_offset(l, lA, lowestbars_1)
offsetPh1= ta.valuewhen(fixPh, offsetPh, 1) - f_barssince(fixPh, 1)
offsetPl1= ta.valuewhen(fixPl, offsetPl, 1) - f_barssince(fixPl, 1)
fixOffset = fixPh? offsetPh : offsetPl
fixPivotVal = fixPh? fixPhVal : fixPlVal
offsetForHa = -f_barssince(l, 1)- Period
offsetForLa = -f_barssince(h, 1)- Period
if hA and showZZ
line.new(bar_index+offsetPh, hA0, bar_index-Period, fixPlVal, xloc.bar_index, color=zzCol)
line.new(bar_index+offsetForHa, l1, bar_index+offsetPh, hA0, color=zzCol)
if lA and showZZ
line.new(bar_index+offsetPl, lA0, bar_index-Period, fixPhVal, xloc.bar_index, color=zzCol)
line.new(bar_index+offsetForLa, h1, bar_index+offsetPl, lA0, color=zzCol)
if h and showZZ
line.new(bar_index-Period, fixPhVal, bar_index+offsetPl, fixPlVal, color=zzCol)
if l and showZZ
line.new(bar_index-Period, fixPlVal, bar_index+offsetPh, fixPhVal, color=zzCol)
// ---------
// SnR Swing HiLo
fVwSeries (x, xVal, xBar)=>
x0 = truncate(ta.valuewhen(x, xVal, 0))
x1 = truncate(ta.valuewhen(x, xVal, 1))
x2 = truncate(ta.valuewhen(x, xVal, 2))
x0Bar = ta.valuewhen(x, xBar, 0) - f_barssince(x, 0)
x1Bar = ta.valuewhen(x, xBar, 1) - f_barssince(x, 1)
x2Bar = ta.valuewhen(x, xBar, 2) - f_barssince(x, 2)
[x0, x1, x2, x0Bar, x1Bar, x2Bar]
[s1, s2, s3, s1Bar, s2Bar, s3Bar] = fVwSeries(fixPl, fixPlVal, offsetPl)
[r1, r2, r3, r1Bar, r2Bar, r3Bar] = fVwSeries(fixPh, fixPhVal, offsetPh)
fLL(show_, showPrice, x1, y1, x2, y2, text_, labelcol, labelstyle, textcol, extend_, linecol, linestyle, linewidth) =>
if close and show_
line_ = line.new(x1, y1, x2, y2, xloc.bar_index, extend_, linecol, linestyle, linewidth)
line.delete (line_ [1])
if showPrice
label_ = label.new(x2, y2, text_, xloc.bar_index, yloc.price, labelcol, labelstyle, textcol)
label.delete(label_[1])
fTst(x, y)=> x + str.tostring(y)
fLL(showSnr, showPriceSnr, bar_index+s1Bar, s1, bar_index+10, s1, fTst('S1 -> ', s1), supCol, labLeft, supTextCol, lineExtend, supLineCol, lStyleSR, linWidth)
fLL(showSnr, showPriceSnr, bar_index+s2Bar, s2, bar_index+10, s2, fTst('S2 -> ', s2), supCol, labLeft, supTextCol, lineExtend, supLineCol, lStyleSR, linWidth)
fLL(showSnr, showPriceSnr, bar_index+s3Bar, s3, bar_index+10, s3, fTst('S3 -> ', s3), supCol, labLeft, supTextCol, lineExtend, supLineCol, lStyleSR, linWidth)
fLL(showSnr, showPriceSnr, bar_index+r1Bar, r1, bar_index+10, r1, fTst('R1 -> ', r1), resCol, labLeft, resTextCol, lineExtend, resLineCol, lStyleSR, linWidth)
fLL(showSnr, showPriceSnr, bar_index+r2Bar, r2, bar_index+10, r2, fTst('R2 -> ', r2), resCol, labLeft, resTextCol, lineExtend, resLineCol, lStyleSR, linWidth)
fLL(showSnr, showPriceSnr, bar_index+r3Bar, r3, bar_index+10, r3, fTst('R3 -> ', r3), resCol, labLeft, resTextCol, lineExtend, resLineCol, lStyleSR, linWidth)
//------------------------------------
// Trendlines
gr5 = 'Trendlines'
showPriceTl = input(true, 'Show Price', group=gr5)
newestTL = input(true, 'Show Newest', group=gr5)
newestBreak = input(true, 'Show Newest Break Only', group=gr5)
period = input(20, 'Trendline Period', group=gr5)
srcI = input.string('Close Body', 'Source', ['Close Body', 'Shadow'], group=gr5)
srcL = srcI=='Shadow'? low : close
srcH = srcI=='Shadow'? high : close
lStyleI = input.string('Dashed', 'Line Style', ['Solid', 'Dashed', 'Dotted'], group=gr5, inline='2')
y2_mult = input(1, title='Trendline Length', group=gr5, inline='2')
lStyle = lStyleI=='Solid'? line.style_solid : lStyleI=='Dashed'? line.style_dashed : line.style_dotted
lWidth = input(1, 'Line Width', group=gr5, inline='1')
lColor = input.color(color.black, '', group=gr5, inline='1')
phFound = ta.pivothigh(srcH, period, period)
plFound = ta.pivotlow (srcL, period, period)
phVal = ta.valuewhen(phFound, srcH[period], 0)
plVal = ta.valuewhen(plFound, srcL[period], 0)
phVal1 = ta.valuewhen(phFound, srcH[period], 1)
plVal1 = ta.valuewhen(plFound, srcL[period], 1)
a_bar_time = time - time[1]
noneCol = color.new(color.red, 100)
fGetPriceTl(slope_, x2_, y2_) =>
current_price = y2_ + (slope_/(x2_ - time))
current_price
f_trendline(cond_, y1Val_, x1Bar_, y2Val_, x2Bar_, color_, tlPriceText, textCol) =>
x1 = ta.valuewhen(cond_, time[x1Bar_], 0)
x2 = ta.valuewhen(cond_, time[x2Bar_], 0)
y1 = ta.valuewhen(cond_, y1Val_, 0)
y2 = ta.valuewhen(cond_, y2Val_, 0)
slope_ = ta.valuewhen(cond_, (y2-y1)/(x2-x1), 0)
currentPrice = truncate(y2 + (time-x2)*slope_)
var label tlPrice = na
if close and newestTL
a_trendline = line.new (x1, y1, time, currentPrice, xloc.bar_time, color=lColor, style=lStyle, width=lWidth)
line.delete (a_trendline[1])
a_trendline
newY2 = x2 + (y2_mult * a_bar_time * 25)
if cond_ and not newestTL
a_trendline = line.new(x1, y1, newY2, currentPrice, xloc.bar_time, color=lColor, style=lStyle, width=lWidth)
a_trendline
if showPriceTl
tlPrice := label.new(bar_index+10, currentPrice, fTst(tlPriceText, currentPrice), color=noneCol, style=label.style_label_left, textcolor=textCol)
label.delete(tlPrice[1])
currentPrice
newUp = phFound and phVal<phVal1 and showTL
newLo = plFound and plVal>plVal1 and showTL
upperTl = f_trendline(newUp, phVal1, f_barssince(phFound,1)+period, phVal, f_barssince(phFound,0)+period,
color.black, 'Upper -> ', resTextCol)
lowerTl = f_trendline(newLo, plVal1, f_barssince(plFound,1)+period, plVal, f_barssince(plFound,0)+period,
color.black, 'Lower -> ', supTextCol)
highestSince = ta.highest(srcH, barssince(phFound and phVal<phVal1 and showTL,0))
lowestSince = ta.lowest (srcL, barssince(plFound and plVal>plVal1 and showTL,0))
breakUpper = srcH[1]<upperTl[1] and srcH>upperTl
breakLower = srcL[1]>lowerTl[1] and srcL<lowerTl
var label bu = na
var label bl = na
if breakUpper and barstate.isconfirmed
bu := label.new(bar_index, low , '🔼', color=resTextCol, style=label.style_label_up)
if newestBreak
label.delete(bu[1])
if breakLower and barstate.isconfirmed
bl := label.new(bar_index, high, '🔽', color=supTextCol)
if newestBreak
label.delete(bl[1])
alertcondition(breakUpper and barstate.isconfirmed, 'Upper Trendline Breaked')
alertcondition(breakLower and barstate.isconfirmed, 'Lower Trendline Breaked')
sCO = ta.crossover (close, s1) or ta.crossover (close, s2) or ta.crossover (close, s3)
sCU = ta.crossunder(close, s1) or ta.crossunder(close, s2) or ta.crossunder(close, s3)
rCO = ta.crossover (close, r1) or ta.crossover (close, r2) or ta.crossover (close, r3)
rCU = ta.crossunder(close, r1) or ta.crossunder(close, r2) or ta.crossunder(close, r3)
alertcondition(rCO, 'Close Price Crossover The Resistance')
alertcondition(rCU, 'Close Price Crossunder The Resistance')
alertcondition(sCO, 'Close Price Crossover The Support')
alertcondition(sCU, 'Close Price Crossunder The Support')
// ----------------------
// Dashboard
gr6 = 'Dashboard'
dash = input(true, 'Dashboard', group=gr6)
dashTitle = input('😎 Smarter Dashboard 😎', 'Title', group=gr6)
dashColor = input.color(color.new(#512da8, 35) , 'Label', group=gr6, inline='3')
dashTextCol = input.color(color.white, 'Text', group=gr6, inline='3')
dashDist = input(50, 'Dashboard Distance', group=gr6)
trendlineText = showTL? '\n〰️〰️〰️〰️〰️〰️〰️〰️〰️'
+ '\nTrendline Price'
+ '\n🔸 Upper = ' + str.tostring(upperTl)
+ '\n🔸 Lower = ' + str.tostring(lowerTl) : na
snrText = showSnr? '\n〰️〰️〰️〰️〰️〰️〰️〰️〰️'
+ '\nSupport and Resistance'
+ '\nS1 = ' + str.tostring(s1) + ', R1 = ' + str.tostring(r1)
+ '\nS2 = ' + str.tostring(s2) + ', R2 = ' + str.tostring(r2)
+ '\nS3 = ' + str.tostring(s3) + ', R3 = ' + str.tostring(r3) : na
smarterDashText = dashTitle
+ snrText
+ trendlineText
if dash
dashSmarter = label.new(bar_index+dashDist, close, smarterDashText, style=label.style_label_center, color=dashColor, textcolor=dashTextCol)
label.delete(dashSmarter[1])
// ------
// quotes
gr50 = 'QUOTES'
showTable = input(true, 'Show Quotes Table', group=gr50)
quote = input('🎓 Smarter Trade Give Better Pain & Gain 🎓', 'Drop Your Quotes Here', group=gr50)
tabPosI_ = input.string('Top', 'Table Position', ['Top', 'Middle', 'Bot'], group=gr50)
tabPos_ = tabPosI_=='Top'? position.top_right : tabPosI_=='Bot'? position.bottom_right : position.middle_right
tabColor = input.color(color.new(#512da8, 35) , 'Background', group=gr50)
borderCol = input.color(color.black , 'Border', group=gr50)
tabTextCol = input.color(color.white, 'Text', group=gr50)
var saTable = table.new(tabPos_, 1, 1, tabColor, borderCol, 1, borderCol, 1)
if showTable
table.cell(saTable, 0, 0, quote, text_color=tabTextCol, text_size=size.small)
// ----------------
// Smart Table
// --------
gr10 = 'Table'
useTab = input(true, 'Show Table?', group=gr10)
tf1 = input.timeframe('', 'Timeframe - A', group=gr10)
tf2 = input.timeframe('45', 'Timeframe - B', group=gr10)
tf3 = input.timeframe('D', 'Timeframe - C', group=gr10)
tabPosI = input.string('Bot', 'Table Position', ['Top', 'Middle', 'Bot'], group=gr10)
bullCol = input.color(color.new(color.green, 0) , 'Oversold' , '', '1', gr10)
bearCol = input.color(color.new(color.red, 0) , 'Overbought' , '', '1', gr10)
neutralCol = input.color(color.new(#bbd9fb, 0) , 'Not Over' , '', '1', gr10)
textCol = input.color(color.white, 'Text', inline='1', group=gr10)
textSizeI = input.string('Small', 'Text Size', ['Small', 'Tiny', 'Normal'], group=gr10)
textSize = textSizeI=='Small'? size.small : textSizeI=='Tiny'? size.tiny : size.normal
tabPos = tabPosI=='Top'? position.top_right : tabPosI=='Bot'? position.bottom_right : position.middle_right
var smartTable = table.new(tabPos, 50, 50, color.new(color.black,100), color.black, 1, color.black,1)
// ----
// RSI
gr11 = 'RSI'
rsiSource = input(close, 'RSI -- Source', '1', gr11)
rsiPeriod = input(14, 'Period', '', '1', gr11)
obRsi = input(80, 'Overbought', '', '2', gr11)
osRsi = input(20, 'Oversold ', '', '2', gr11)
// Stoch
gr12 = 'Stochastic'
stochSource = input(close, 'Stochastic -- Source', '2', group=gr12)
stochPeriod = input(14, 'Period', '', '2', gr12)
periodK = input(14, 'Period -- K', '', '1', gr12)
periodD = input(3 , 'D', '', '1', gr12)
smoothK = input(1 , 'Smooth K', '', '0', gr12)
obStoch = input(80, 'Overbought', '', '2', gr12)
osStoch = input(20, 'Oversold ', '', '2', gr12)
fCol(x)=> x=='Overbought'? bearCol : x=='Oversold'? bullCol : neutralCol
fTable(tf, rowNumber)=>
k = request.security(syminfo.ticker, tf, ta.sma(ta.stoch(close, high, low, periodK), smoothK))
d = ta.sma(k, periodD)
r = request.security(syminfo.ticker, tf, ta.rsi(rsiSource, rsiPeriod))
sStatus = k>obStoch? 'Overbought' : k<osStoch? 'Oversold' : 'Not Over'
rStatus = r>obRsi ? 'Overbought' : r<osRsi ? 'Oversold' : 'Not Over'
sCol = fCol(sStatus)
rCol = fCol(rStatus)
if useTab
table.cell(smartTable, 0, 0, 'Timeframe' , text_color=textCol, text_size=textSize, bgcolor=dashColor)
table.cell(smartTable, 1, 0, 'Stochastic' , text_color=textCol, text_size=textSize, bgcolor=dashColor)
table.cell(smartTable, 2, 0, 'RSI' , text_color=textCol, text_size=textSize, bgcolor=dashColor)
tfDes = tf==''? timeframe.period : tf
table.cell(smartTable, 0, rowNumber, tfDes , text_color=textCol, text_size=textSize, bgcolor=dashColor)
table.cell(smartTable, 1, rowNumber, sStatus, text_color=textCol, text_size=textSize, bgcolor=sCol)
table.cell(smartTable, 2, rowNumber, rStatus, text_color=textCol, text_size=textSize, bgcolor=rCol)
fTable(tf1, 1)
fTable(tf2, 2)
fTable(tf3, 3)
//
Con risposta
1
Valutazioni
Progetti
60
45%
Arbitraggio
8
50%
/
38%
In ritardo
7
12%
Gratuito
2
Valutazioni
Progetti
55
35%
Arbitraggio
2
0%
/
50%
In ritardo
0
Gratuito
3
Valutazioni
Progetti
460
26%
Arbitraggio
140
20%
/
59%
In ritardo
100
22%
In elaborazione
4
Valutazioni
Progetti
46
24%
Arbitraggio
34
9%
/
85%
In ritardo
10
22%
Gratuito
5
Valutazioni
Progetti
945
47%
Arbitraggio
309
58%
/
27%
In ritardo
125
13%
Gratuito
Ordini simili
Looking for existing EA
30 - 95 USD
SMC, etc.) - Backtest results and the set files you used - Whether you’re willing to make minor tweaks so I can use it as my own If the performance looks good, we can discuss adjustments and next steps. My requirements are screenshot, backtes results, demo fileS Let me know if you have anything that fits the bill
EA to trade GOLD in M5 an account of 500-1000usd
30 - 500 USD
iF you already have an successful EA for scalping in M5 XAUUSD [and eventually EURUSD and USDJPY] working essentially ON the trend when there is an Break Of Structure but also on reversal eventually with strategy Martingale with param ON/OFF eventually with strategy Grid with param ON/OFF eventually with HEDGING with param ON/OFF and on each trade : Stop loss, Trailing sl without High Frequency Trades [means average
Double trade
30+ USD
1-tow trades with take profit stop loss pips trade with take profit stop loss pips trade with stop loss pips take profit candle close 2-buy or sell look for last candle buy or sell 3-trade stop loss stop loss martingale trade lot zise in intry candle running candle or new candle
I need mt4/mt5 EA Bot
30+ USD
can you help me with the strategy for my mt4 or mt5 bot? I am learning trading, while working and I was thinking this could be a good way to still earn from the market while learning. If I have someone like you to guide me on strategy and maintaining the trading bot going forward. I do not have anything setup, I am going to pay a ten to build the EA, I just need the mentorship and we can agree on a unique price to
Ready Made Ninjatrader
100+ USD
I’m looking for a NinjaTrader 8 developer to build or customize a fully automated futures strategy . Goals: Target ~$100/day (consistency over aggression) Long-term survivability (not scalping hype) Requirements: Trade ES/MES or NQ/MNQ Fixed risk per trade Daily profit & loss limits Time/session filters Break-even & trailing stop logic Full NT8 strategy (not indicator) Nice to have: Backtest + optimization
EA bot Fundednext prop firm
50 - 100 USD
Je cherche un développeur pour un bot Fundednext pour le passage de challenge jusqu'au trading quotidien après le passage.le robot va s'occuper du compte du début à la suite du compte de 15k chez Fundednext.après le passage aux challenges,le robot doit être capable de me fournir 6-10% mensuel de rendement de ce compte. Il doit être capable de passer le challenge dans un bref délai de 2-3 semaine ou soit 10-15 jours
🧠 Project Overview We require an automated trading system that performs statistical arbitrage between: XAGUSD (MT5 account) MCX Silver (separate broker / API / account) The bot will calculate custom percentage movement from a daily anchor time and trade based on spread convergence, not broker-provided percentage values. --- 🧩 Core Concept The system must: 1. Capture daily anchor prices at 11:30 PM IST 2. Compute
Job Title MT5 Developer Needed – Sync Data Feed Between Two MT5 Accounts Job Description I am a trader using multiple MT5 accounts and need a reliable way to have the same market data from one MT5 account reflected in another MT5 account. One account already has a stable and accurate data feed, and I want the second MT5 account to receive identical pricing and symbols for analysis and execution purposes. What I Need
Ninjatrader 8 bot
200+ USD
hello great developer We are looking for someone to create a Ninja Trader bot that can identify liquidity sweeps using lux algos indicator. once liquidity sweep occurs we need the bot to use the fibonnachi tool to idenfity the 61% level and 71% level. then enter the trade for us please check the video for better understanding Here is first video: https://youtu.be/ZaGZGNgzZlc?si=we3poeWB91nWqkz5 Here is Second video
Beschreibung: Ich suche einen erfahrenen MQL5-Entwickler, der meinen bestehenden Expert Advisor für MT5 fertigstellt und optimiert. Der EA basiert auf einer 30-Minuten-Breakout-Strategie für XAUUSD (Gold) und enthält bereits die Grundlogik sowie FTMO-Regeln (Tagesverlust, Gesamtverlust, Handelszeiten, Spread-Filter, Lotbegrenzung). Was gemacht werden muss: Code-Feinschliff und Debugging Überprüfung der Breakout-Logik
Informazioni sul progetto
Budget
30+ USD