Professional Documents
Culture Documents
0 at
https://mozilla.org/MPL/2.0/
// @ifahsmiler
//@version=4
study("Super Combo",overlay=true)
RedGan=input(title="On/Off Red line", type=input.bool, defval=true)
BlueGan=input(title="On/Off Blue line", type=input.bool, defval=true)
labelOn=input(title="On/Off Label ", type=input.bool, defval=true)
LabelColor=input(title="Label color", type=input.color,defval=color.black)
Extend=input(title="Extend line", type=input.bool, defval=true)
PriceLevel=input(title="Price Level", defval=3, options=[3, 5])
drawLine(resistance,start,end,extend,linecolor) =>
gannLine=line.new(x1=start, y1=resistance, x2=end, y2=resistance)
line.set_color(gannLine, linecolor)
if extend
line.set_extend(id=gannLine, extend=extend.left)
gannLine
drawLabel(x,y,text) =>
GannLabel=label.new(x, y, text,xloc=xloc.bar_time,style=label.style_none)
GannLabel
max = 20
rangeMin = 0
var GannNum = array.new_float(0)
dt = time - time[1]
labelPosition = time + 3*dt
if barstate.islast
for min=rangeMin to max
for i=0 to 3
gNum=0
if min == rangeMin and i==0
gNum:=min + (min+2)
else if min > rangeMin and i ==0
gNum:=round(array.get(GannNum,array.size(GannNum)-1)) + (min+1) +
min
else
gNum:=round(array.get(GannNum,array.size(GannNum)-1)) + (min+2) +
min
array.push(GannNum,gNum)
maxItem=array.size(GannNum)-1
next=0
denomenator=0.0
if close[0] >= 10000
denomenator :=0.01
else if close[0] >= 1000
denomenator :=0.1
else if close[0] >= 100
denomenator :=1
else if close[0] >=10
denomenator :=10
else if close[0] >=0.05
denomenator :=100
else
denomenator :=1000
price=close[0]*denomenator
resistance=0.0
support=0.0
blueGannPrice1=0.0
GannPos=0
for i=0 to array.size(GannNum)-1
if i==maxItem
next:=i
else
next:=i+1
//Print lines
startLine=bar_index[0]
endLine=bar_index[10]
GannWeightPosition = close[0] >= blueGannPrice1 ? 2 : -1
if RedGan
resistance1=drawLine(resistance,startLine,endLine,Extend,color.red)
support1=drawLine(support,startLine,endLine,Extend,color.red)
if labelOn
rl1:=drawLabel(labelPosition,resistance,"\R1 = " +
tostring(resistance))
label.set_textcolor(rl1,LabelColor)
sl1:=drawLabel(labelPosition,support,"\S1 = " + tostring(support))
label.set_textcolor(sl1,LabelColor)
if PriceLevel == 5
resistancePrice2=array.get(GannNum,GannPos+GannWeightPosition)/denomenator
resistance2=drawLine(resistancePrice2,startLine,endLine,Extend,color.red)
if labelOn
resistanceText2=GannWeightPosition > 0 ? "\R2 = " : "\S2 = "
rl2:=drawLabel(labelPosition,resistancePrice2,resistanceText2 +
tostring(resistancePrice2))
label.set_textcolor(rl2,LabelColor)
if BlueGan
blueGann1=drawLine(blueGannPrice1,startLine,endLine,Extend,color.blue)
if labelOn
BlueText1 = close[0] >= blueGannPrice1 ? "\S1 = " : "\R1 = "
bl1:=drawLabel(labelPosition,blueGannPrice1,BlueText1 +
tostring(blueGannPrice1))
label.set_textcolor(bl1,LabelColor)
if PriceLevel == 5
BlueGannPrice2 = GannWeightPosition > 0 ?
(array.get(GannNum,GannPos+1)+array.get(GannNum,GannPos+2))/2 :
(array.get(GannNum,GannPos-1)+array.get(GannNum,GannPos))/2
BlueGannPrice2 := BlueGannPrice2/denomenator
blueGann2=drawLine(BlueGannPrice2,startLine,endLine,Extend,color.blue)
if labelOn
BlueText2 = GannWeightPosition > 0 ? "\R1 = " : "\S1 = "
bl2:=drawLabel(labelPosition,BlueGannPrice2,BlueText2 +
tostring(BlueGannPrice2))
label.set_textcolor(bl2,LabelColor)
//inputs
_Period1 = input(2, "EMA2 Period")
_Period2 = input(5, "EMA5 Period")
_Period3 = input(7, "EMA7 Period")
_Period4 = input(20, "SMA20 Period")
_Period5 = input(50, "SMA50 Period")
_Period6 = input(200, "SMA200 Period")
_Period7 = input(20, "EMA20 Period")
_Period8 = input(34, "EMA34 Period")
_Period9 = input(50, "EMA50 Period")
_Period10 = input(90, "EMA90 Period")
_Period11 = input(200, "EMA200 Period")
length=input(9,"BB SMA")
src = input(close,"source")
mult = input(2.0, minval=0.001, maxval=50)
start = input(0.02)
increment = input(0.02)
maximum = input(0.2, "Max Value")
basis = sma(src,length)
dev = mult * stdev(src, length)
out = sar(start, increment, maximum)
plot(out, "ParabolicSAR", color=#3A6CA8)
uppr = basis + dev
lowr = basis - dev
conversionPeriods = input(9, minval=1, title="Conversion Line Length")
basePeriods = input(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Length")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
g=bar_index==1
ath()=>
a=0.0
a:=g ? high : high>a[1] ? high:a[1]
atl()=>
r=0.0
r:=g ? low : low<r[1] ? low:r[1]
ftwh()=>
h= highest(high[1],52)
ftwl()=>
l= lowest(low[1],52)