Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=4
- study("Furious Pivots", overlay=true, max_bars_back=1500, max_lines_count=500)
- linecolor = input(title="Line color", defval = color.gray,inline="q",group="Round Numbers")
- linestyle = input(title="Line style", defval = line.style_dashed, options=[line.style_solid, line.style_dotted, line.style_dashed],inline="q",group="Round Numbers")
- linewidth = input(title="Line width", defval = 1, minval=1, maxval=4,inline="q",group="Round Numbers")
- var number_of_lines_above = input(5, title="No of lines above", type=input.integer,inline="p",group="Round Numbers")
- var number_of_lines_below = input(5, title="No of lines below", type=input.integer,inline="p",group="Round Numbers")
- var no_of_pips_between = 100 //input(100, title="No of pips in between", type=input.integer)
- showPW = input(false,title="Show previous weekly high/low",inline="x",group="Pivots")
- PWColor = input(color.new(color.black,0),title="",inline="x",group="Pivots")
- showPD = input(false,title="Show previous daily high/low",inline="y",group="Pivots")
- PDColor = input(color.new(color.black,0),title="",inline="y",group="Pivots")
- lineWidth = input(1,title="Line width",minval=1,group="Pivots")
- int DailyOpenTime = na, float DailyOpenPrice = na
- checkDO = time(timeframe.period, "1900-1901" + ":1234567")
- isDailyOpen = not na(checkDO)
- DailyOpenTime := isDailyOpen ? time : nz(DailyOpenTime[1])
- DailyOpenPrice := isDailyOpen ? open : nz(DailyOpenPrice[1])
- int weeklyOpenTime = na, float weeklyOpenPrice = na
- checkWO = time(timeframe.period, "1900-1901" + ":1")
- isWeeklyOpen = not na(checkWO)
- weeklyOpenTime := isWeeklyOpen ? time : nz(weeklyOpenTime[1])
- weeklyOpenPrice := isWeeklyOpen ? open : nz(weeklyOpenPrice[1])
- dailyOpenTime = DailyOpenTime //security(syminfo.tickerid,"D",time,lookahead=barmerge.lookahead_on)
- dailyOpenPrice = DailyOpenPrice //security(syminfo.tickerid,"D",open,lookahead=barmerge.lookahead_on)
- dailyCloseTime = (dailyOpenTime + 86400000)
- prevDailyOpenTime = security(syminfo.tickerid,"D",time[1],lookahead=barmerge.lookahead_on)
- prevDayCloseTime = security(syminfo.tickerid,"D",time,lookahead=barmerge.lookahead_on)
- prevDailyHighPrice = security(syminfo.tickerid,"D",high[1],lookahead=barmerge.lookahead_on)
- prevDailyLowPrice = security(syminfo.tickerid,"D",low[1],lookahead=barmerge.lookahead_on)
- monthlyOpenTime = security(syminfo.tickerid,"M",time,lookahead=barmerge.lookahead_on)
- monthlyOpenPrice = security(syminfo.tickerid,"M",open,lookahead=barmerge.lookahead_on)
- prevWeeklyOpenTime = security(syminfo.tickerid,"W",time[1],lookahead=barmerge.lookahead_on)
- prevWeeklyHighPrice = security(syminfo.tickerid,"W",high[1],lookahead=barmerge.lookahead_on)
- prevWeeklyLowPrice = security(syminfo.tickerid,"W",low[1],lookahead=barmerge.lookahead_on)
- if barstate.islast
- if showPD
- prevDhLine = line.new(prevDailyOpenTime,prevDailyHighPrice,(prevDayCloseTime),prevDailyHighPrice,xloc=xloc.bar_time,color=PDColor,width=lineWidth)
- line.delete(prevDhLine[1])
- prevDlLine = line.new(prevDailyOpenTime,prevDailyLowPrice,(prevDayCloseTime),prevDailyLowPrice,xloc=xloc.bar_time,color=PDColor,width=lineWidth)
- line.delete(prevDlLine[1])
- prevDhLabel = label.new(prevDayCloseTime,prevDailyHighPrice,"D High",xloc=xloc.bar_time,color=color.new(color.black,100),textcolor=PDColor,style=label.style_label_left)
- label.delete(prevDhLabel[1])
- prevDlLabel = label.new(prevDayCloseTime,prevDailyLowPrice,"D Low",xloc=xloc.bar_time,color=color.new(color.black,100),textcolor=PDColor,style=label.style_label_left)
- label.delete(prevDlLabel[1])
- //Prev Week
- if showPW
- prevWhLine = line.new(prevWeeklyOpenTime,prevWeeklyHighPrice,(prevWeeklyOpenTime+518400000),prevWeeklyHighPrice,xloc=xloc.bar_time,color=PWColor,width=lineWidth)
- line.delete(prevWhLine[1])
- prevWlLine = line.new(prevWeeklyOpenTime,prevWeeklyLowPrice,(prevWeeklyOpenTime+518400000),prevWeeklyLowPrice,xloc=xloc.bar_time,color=PWColor,width=lineWidth)
- line.delete(prevWlLine[1])
- prevWhLabel = label.new((prevWeeklyOpenTime+518400000),prevWeeklyHighPrice,"W High",xloc=xloc.bar_time,color=color.new(color.black,100),textcolor=PWColor,style=label.style_label_left)
- label.delete(prevWhLabel[1])
- prevWlLabel = label.new((prevWeeklyOpenTime+518400000),prevWeeklyLowPrice,"W Low",xloc=xloc.bar_time,color=color.new(color.black,100),textcolor=PWColor,style=label.style_label_left)
- label.delete(prevWlLabel[1])
- var step_0 = syminfo.mintick*no_of_pips_between*2.5
- if barstate.islast and syminfo.type == 'forex'
- for counter = 0 to number_of_lines_above - 1
- stepUp = ceil(close / step_0) * step_0 + (counter * step_0)
- line.new(bar_index, stepUp, bar_index - 1, stepUp, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
- for counter = 0 to number_of_lines_below - 1
- stepDown = floor(close / step_0) * step_0 - (counter * step_0)
- line.new(bar_index, stepDown, bar_index - 1, stepDown, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
- var step_1 = syminfo.ticker == 'XAUUSD' ? syminfo.mintick*no_of_pips_between*1 : syminfo.ticker == 'GOLD' ? syminfo.mintick*no_of_pips_between*1 : na
- if barstate.islast and (syminfo.ticker == 'XAUUSD' or syminfo.ticker == 'GOLD')
- //label.new(bar_index, low, text=syminfo.type, yloc=yloc.abovebar)
- for counter = 0 to number_of_lines_above - 1
- stepUp = ceil(close / step_1) * step_1 + (counter * step_1)
- line.new(bar_index, stepUp, bar_index - 1, stepUp, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
- for counter = 0 to number_of_lines_below - 1
- stepDown = floor(close / step_1) * step_1 - (counter * step_1)
- line.new(bar_index, stepDown, bar_index - 1, stepDown, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
- var step_2 = syminfo.ticker == 'BTCUSD' ? syminfo.mintick*no_of_pips_between*500 : syminfo.ticker == 'BTCUSDT' ? syminfo.mintick*no_of_pips_between*500 : na
- if barstate.islast and (syminfo.ticker == 'BTCUSD' or syminfo.ticker == 'BTCUSDT')
- for counter = 0 to number_of_lines_above - 1
- stepUp = ceil(close / step_2) * step_2 + (counter * step_2)
- line.new(bar_index, stepUp, bar_index - 1, stepUp, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
- for counter = 0 to number_of_lines_below - 1
- stepDown = floor(close / step_2) * step_2 - (counter * step_2)
- line.new(bar_index, stepDown, bar_index - 1, stepDown, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
- var step_3 = syminfo.ticker == 'NAS100USD' ? syminfo.mintick*no_of_pips_between*1 : na
- if barstate.islast and syminfo.ticker == 'NAS100USD'
- for counter = 0 to number_of_lines_above - 1
- stepUp = ceil(close / step_3) * step_3 + (counter * step_3)
- line.new(bar_index, stepUp, bar_index - 1, stepUp, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
- for counter = 0 to number_of_lines_below - 1
- stepDown = floor(close / step_3) * step_3 - (counter * step_3)
- line.new(bar_index, stepDown, bar_index - 1, stepDown, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
- var step_4 = syminfo.ticker == 'US30' ? syminfo.mintick*no_of_pips_between*0.5 : na
- if barstate.islast and syminfo.ticker == 'US30'
- for counter = 0 to number_of_lines_above - 1
- stepUp = ceil(close / step_4) * step_4 + (counter * step_4)
- line.new(bar_index, stepUp, bar_index - 1, stepUp, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
- for counter = 0 to number_of_lines_below - 1
- stepDown = floor(close / step_4) * step_4 - (counter * step_4)
- line.new(bar_index, stepDown, bar_index - 1, stepDown, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
- var step_5 = syminfo.ticker == 'XRPUSDT' ? syminfo.mintick*no_of_pips_between*1 : na
- if barstate.islast and syminfo.ticker == 'XRPUSDT'
- for counter = 0 to number_of_lines_above - 1
- stepUp = ceil(close / step_5) * step_5 + (counter * step_5)
- line.new(bar_index, stepUp, bar_index - 1, stepUp, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
- for counter = 0 to number_of_lines_below - 1
- stepDown = floor(close / step_5) * step_5 - (counter * step_5)
- line.new(bar_index, stepDown, bar_index - 1, stepDown, xloc=xloc.bar_index, extend=extend.both, color=linecolor, width=linewidth, style=linestyle)
Advertisement
Add Comment
Please, Sign In to add comment