// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © pbghosh
//@version=4
study(title="Gann Angles With Volatility", shorttitle="Gann", overlay=true, format=format.price, precision=2)
var totLn = 0.0
var totLnSqr = 0.0
var lnAvg = 0.0
var lnSqrAvg = 0.0
var variance = 0.0
var dailyVolatility = 0.0
var price = 0.0
var priceRange = 0.0
o = security(syminfo.tickerid, 'D', open, lookahead=true)
ph = security(syminfo.tickerid, 'D', high[1], lookahead=true)
pl = security(syminfo.tickerid, 'D', low[1], lookahead=true)
pc = security(syminfo.tickerid, 'D', close[1], lookahead=true)
lowerTimeframe = timeframe.period == "1" or timeframe.period == "2" or timeframe.period == "3" or timeframe.period == "5" or timeframe.period == "10" or timeframe.period == "15"
c1 = o > ph or o < pl ? o : security(syminfo.tickerid, 'D', close[1], lookahead=barmerge.lookahead_on)
c2 = security(syminfo.tickerid, 'D', close[2], lookahead=barmerge.lookahead_on)
c3 = security(syminfo.tickerid, 'D', close[3], lookahead=barmerge.lookahead_on)
c4 = security(syminfo.tickerid, 'D', close[4], lookahead=barmerge.lookahead_on)
c5 = security(syminfo.tickerid, 'D', close[5], lookahead=barmerge.lookahead_on)
c6 = security(syminfo.tickerid, 'D', close[6], lookahead=barmerge.lookahead_on)
c7 = security(syminfo.tickerid, 'D', close[7], lookahead=barmerge.lookahead_on)
c8 = security(syminfo.tickerid, 'D', close[8], lookahead=barmerge.lookahead_on)
c9 = security(syminfo.tickerid, 'D', close[9], lookahead=barmerge.lookahead_on)
c10 = security(syminfo.tickerid, 'D', close[10], lookahead=barmerge.lookahead_on)
truncate(number, decimals) =>
factor = pow(10, decimals)
int(number * factor) / factor
calculateLN() =>
tot = 0.0
tot := log(c1/c2) + log(c2/c3) + log(c3/c4) + log(c4/c5) + log(c5/c6) + log(c6/c7) + log(c7/c8) + log(c8/c9) + log(c9/c10)
calculateLNSquare() =>
tot = 0.0
tot := pow(log(c1/c2),2) + pow(log(c2/c3),2) + pow(log(c3/c4),2) + pow(log(c4/c5),2) + pow(log(c5/c6),2) + pow(log(c6/c7),2) + pow(log(c7/c8),2) + pow(log(c8/c9),2) + pow(log(c9/c10),2)
calculatePivot() =>
(ph + pl + pc) / 3
degreeFactor(angle) =>
if angle == 1
3.75/180
else
if angle == 2
7.5/180
else
if angle == 3
15.00/180
else
if angle == 4
18.75/180
else
if angle == 5
26.25/180
else
if angle == 6
45.00/180
else
if angle == 7
63.75/180
else
if angle == 8
71.25/180
else
if angle == 9
75.00/180
else
if angle == 10
82.50/180
else
86.25/180
getCycleLevels(cycleNo, prevCycleHigh, prevCycleLow, pRange) =>
if cycleNo == 1
buyAbove = pow(sqrt(pRange) + degreeFactor(3), 2) * degreeFactor(3) + prevCycleHigh
majorResistance = pow(sqrt(pRange) + degreeFactor(6), 2) * degreeFactor(6) + prevCycleHigh
buyTarget = pow(sqrt(pRange) + degreeFactor(11), 2) * degreeFactor(11) + prevCycleHigh
sellBelow = prevCycleHigh - pow(sqrt(pRange) - degreeFactor(3), 2)* degreeFactor(3)
majorSupport = prevCycleHigh - pow(sqrt(pRange) - degreeFactor(6), 2)* degreeFactor(6)
sellTarget = prevCycleHigh - pow(sqrt(pRange) - degreeFactor(11), 2)* degreeFactor(11)
[buyAbove, majorResistance, buyTarget, sellBelow, majorSupport, sellTarget]
else
majorResistance = pow(sqrt(pRange) + degreeFactor(6), 2) * degreeFactor(6) + prevCycleHigh
buyTarget = pow(sqrt(pRange) + degreeFactor(11), 2) * degreeFactor(11) + prevCycleHigh
majorSupport = prevCycleLow - pow(sqrt(pRange) - degreeFactor(6), 2)* degreeFactor(6)
sellTarget = prevCycleLow - pow(sqrt(pRange) - degreeFactor(11), 2)* degreeFactor(11)
[majorResistance, buyTarget, majorSupport, sellTarget, 0.0, 0.0]
pivot = calculatePivot()
totLn := calculateLN()
totLnSqr := calculateLNSquare()
lnAvg := totLn / 9
lnSqrAvg := totLnSqr / 9
variance := lnSqrAvg - pow(lnAvg, 2)
dailyVolatility := sqrt(variance)
price := c1
priceRange := dailyVolatility * price
//Cycle One
[buyAbove, majorResistane1, buytarget1, sellBelow, majorSupport1, sellTarget1] = getCycleLevels(1, price, 0.0, priceRange)
//Cycle Tw0
[majorResistane2, buytarget2, majorSupport2, sellTarget2, dummy1, dummy2] = getCycleLevels(2, buytarget1, sellTarget1, priceRange)
//Cycle Three
[majorResistane3, buytarget3, majorSupport3, sellTarget3, dummy3, dummy4] = getCycleLevels(3, buytarget2, sellTarget2, priceRange)
//Cycle Four
[majorResistane4, buytarget4, majorSupport4, sellTarget4, dummy5, dummy6] = getCycleLevels(4, buytarget3, sellTarget3, priceRange)
//Cycle Five
[majorResistane5, buytarget5, majorSupport5, sellTarget5, dummy7, dummy8] = getCycleLevels(5, buytarget4, sellTarget4, priceRange)
plot(series=lowerTimeframe ? buyAbove : na, title="Buy Above", color = pivot[1] != pivot and lowerTimeframe ? na : color.blue, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? majorResistane1 : na, title="Major Resistance1", color = pivot[1] != pivot and lowerTimeframe ? na : color.gray, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? buytarget1 : na, title="TGT1", color = pivot[1] != pivot and lowerTimeframe ? na : color.green, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? sellBelow : na, title="Sell Below", color = pivot[1] != pivot and lowerTimeframe ? na : color.yellow, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? majorSupport1 : na, title="Major Support1", color = pivot[1] != pivot and lowerTimeframe ? na : color.gray, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? sellTarget1 : na, title="TGT1", color = pivot[1] != pivot and lowerTimeframe ? na : color.red, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? majorResistane2 : na, title="Major Resistance2", color = pivot[1] != pivot and lowerTimeframe ? na : color.gray, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? buytarget2 : na, title="TGT2", color = pivot[1] != pivot and lowerTimeframe ? na : color.green, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? majorSupport2 : na, title="Major Support2", color = pivot[1] != pivot and lowerTimeframe ? na : color.gray, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? sellTarget2 : na, title="TGT2", color = pivot[1] != pivot and lowerTimeframe ? na : color.red, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? majorResistane3 : na, title="Major Resistance3", color = pivot[1] != pivot and lowerTimeframe ? na : color.gray, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? buytarget3 : na, title="TGT3", color = pivot[1] != pivot and lowerTimeframe ? na : color.green, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? majorSupport3 : na, title="Major Support3", color = pivot[1] != pivot and lowerTimeframe ? na : color.gray, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? sellTarget3 : na, title="TGT3", color = pivot[1] != pivot and lowerTimeframe ? na : color.red, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? majorResistane4 : na, title="Major Resistance4", color = pivot[1] != pivot and lowerTimeframe ? na : color.gray, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? buytarget4 : na, title="TGT4", color = pivot[1] != pivot and lowerTimeframe ? na : color.green, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? majorSupport4 : na, title="Major Support4", color = pivot[1] != pivot and lowerTimeframe ? na : color.gray, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? sellTarget4 : na, title="TGT4", color = pivot[1] != pivot and lowerTimeframe ? na : color.red, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? majorResistane5 : na, title="Major Resistance5", color = pivot[1] != pivot and lowerTimeframe ? na : color.gray, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? buytarget5 : na, title="TGT5", color = pivot[1] != pivot and lowerTimeframe ? na : color.green, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? majorSupport5 : na, title="Major Support5", color = pivot[1] != pivot and lowerTimeframe ? na : color.gray, style = plot.style_linebr, transp=0, linewidth=1)
plot(series=lowerTimeframe ? sellTarget5 : na, title="TGT5", color = pivot[1] != pivot and lowerTimeframe ? na : color.red, style = plot.style_linebr, transp=0, linewidth=1)
image.png