You are on page 1of 10

//@version=4

study("WCI - HL+LL TRADE", overlay=true)

// RSI Settings for user


rsiSource = input(title="RSI Source", type=input.source, defval=close)
rsiLength = input(title="RSI Length", type=input.integer, defval=7)
rsiOverbought = input(title="RSI Overbought", type=input.integer, defval=70,
minval=51, maxval=100)
rsiOvesold = input(title="RSI Oversold", type=input.integer, defval=30, minval=1,
maxval=49)

// RSI value based on inbuilt RSI


rsiValue = rsi(rsiSource, rsiLength)

// Get the current state


isOverbought = rsiValue >= rsiOverbought
isOversold = rsiValue <= rsiOvesold

// State of the last extreme 0 for initialization, 1 = overbought, 2 = oversold


var laststate = 0

// Highest and Lowest prices since the last state change


var hh = low
var ll = high

// Labels
var label labelll = na
var label labelhh = na

// Swing lines
var line line_up = na
var line line_down = na

var last_actual_label_hh_price = 0.0


var last_actual_label_ll_price = 0.0

// FUNCTIONS
obLabelText() =>
if(last_actual_label_hh_price < high)
"HH"
else
"LH"
//plot(last_actual_label_hh_price)
osLabelText() =>
if(last_actual_label_ll_price < low)
"HL"
else
"LL"

// Create oversold or overbought label


createOverBoughtLabel(isIt) =>
if(isIt)
label.new(x=bar_index, y=na ,yloc=yloc.abovebar,
style=label.style_label_down, color=color.red, size=size.tiny, text=obLabelText())
else
label.new(x=bar_index, y=na ,yloc=yloc.belowbar,
style=label.style_label_up, color=color.green, size=size.tiny, text=osLabelText())

// Move the oversold swing and label


moveOversoldLabel() =>
label.set_x(labelll, bar_index)
label.set_y(labelll, low)
label.set_text(labelll, osLabelText())
line.set_x1(line_down, bar_index)
line.set_y1(line_down, low)

moveOverBoughtLabel() =>
label.set_x(labelhh, bar_index)
label.set_y(labelhh, high)
label.set_text(labelhh, obLabelText())
line.set_x1(line_up, bar_index)
line.set_y1(line_up, high)

// We go from oversold straight to overbought NEW DRAWINGS CREATED HERE


if(laststate == 2 and isOverbought)
hh := high
labelhh := createOverBoughtLabel(true)
last_actual_label_ll_price := label.get_y(labelll)
labelll_ts = label.get_x(labelll)
labelll_price = label.get_y(labelll)
line_up := line.new(x1=bar_index, y1=high, x2=labelll_ts, y2=labelll_price,
width=1)

// We go from overbought straight to oversold NEW DRAWINGS CREATED HERE


if(laststate == 1 and isOversold)
ll := low
labelll := createOverBoughtLabel(false)
last_actual_label_hh_price := label.get_y(labelhh)
labelhh_ts = label.get_x(labelhh)
labelhh_price = label.get_y(labelhh)
line_down := line.new(x1=bar_index, y1=high, x2=labelhh_ts, y2=labelhh_price,
width=1)

// If we are overbought
if(isOverbought)
if(high >= hh)
hh := high
moveOverBoughtLabel()
laststate := 1

// If we are oversold
if(isOversold)
if(low <= ll)
ll := low
moveOversoldLabel()
laststate := 2

// If last state was overbought and we are overbought


if(laststate == 1 and isOverbought)
if(hh <= high)
hh := high
moveOverBoughtLabel()

//If we are oversold and the last state was oversold, move the drawings to the
lowest price
if(laststate == 2 and isOversold)
if(low <= ll)
ll := low
moveOversoldLabel()

// If last state was overbought


if(laststate == 1)
if(hh <= high)
hh := high
moveOverBoughtLabel()

// If last stare was oversold


if(laststate == 2)
if(ll >= low)
ll := low
moveOversoldLabel()

//@version=4
MchosenColor(c_)=> c_ == "aqua" ? color.aqua : c_ == "black" ? color.black : c_ ==
"blue" ? color.blue : c_ == "fuchsia" ? color.fuchsia : c_ == "gray" ? color.gray :
c_ == "green" ? color.green : c_ == "lime" ? color.lime : c_ == "maroon" ?
color.maroon : c_ == "navy" ? color.navy : c_ == "olive" ? color.olive : c_ ==
"orange" ? color.orange : c_ == "purple" ? color.purple : c_ == "red" ? color.red :
c_ == "silver" ? color.silver : c_ == "teal" ? color.teal : c_ == "white" ?
color.white : c_ == "yellow" ? color.yellow : color.black

MhigherTF = "M"
Mmy_color = input(title="Monthly Color", defval="red", options=["aqua", "black",
"blue", "fuchsia", "gray", "green", "lime", "maroon", "navy", "olive", "orange",
"purple", "red", "silver", "teal", "white", "yellow"])

MprevCloseHTF = security(syminfo.tickerid, MhigherTF, close[1], lookahead=true)


MprevHighHTF = security(syminfo.tickerid, MhigherTF, high[1], lookahead=true)
MprevLowHTF = security(syminfo.tickerid, MhigherTF, low[1], lookahead=true)

//Monthly Fibonacci Pivots Settings:

MpRange = MprevHighHTF-MprevLowHTF
MpLevel = (MprevHighHTF + MprevLowHTF + MprevCloseHTF) / 3

MR1 = MpLevel + 0.236*MpRange


MS1 = MpLevel - 0.236*MpRange

MR2 = MpLevel + 0.382*MpRange


MS2 = MpLevel - 0.382*MpRange

MR3 = MpLevel + 0.5*MpRange


MS3 = MpLevel - 0.5*MpRange

MR4 = MpLevel + 0.618*MpRange


MS4 = MpLevel - 0.618*MpRange

MR5 = MpLevel + 0.786*MpRange


MS5 = MpLevel - 0.786*MpRange

MR6 = MpLevel + 0.886*MpRange


MS6 = MpLevel - 0.886*MpRange

MR7 = MpLevel + 1*MpRange


MS7 = MpLevel - 1*MpRange

MR8 = MpLevel + 1.127*MpRange


MS8 = MpLevel - 1.127*MpRange

var line MR1L = na


var line MpLine = na
var line MS1L = na
var line MR2L = na
var line MS2L = na
var line MR3L = na
var line MS3L = na
var line MR4L = na
var line MS4L = na
var line MR5L = na
var line MS5L = na
var line MR6L = na
var line MS6L = na
var line MR7L = na
var line MS7L = na
var line MR8L = na
var line MS8L = na

var label MR1LA = na


var label MpL = na
var label MS1LA = na
var label MR2LA = na
var label MS2LA = na
var label MR3LA = na
var label MS3LA = na
var label MR4LA = na
var label MS4LA = na
var label MR5LA = na
var label MS5LA = na
var label MR6LA = na
var label MS6LA = na
var label MR7LA = na
var label MS7LA = na
var label MR8LA = na
var label MS8LA = na

if MpLevel[1] != MpLevel
line.set_x2(MR1L, bar_index)
line.set_x2(MS1L, bar_index)
line.set_x2(MR2L, bar_index)
line.set_x2(MS2L, bar_index)
line.set_x2(MR3L, bar_index)
line.set_x2(MS3L, bar_index)
line.set_x2(MR4L, bar_index)
line.set_x2(MS4L, bar_index)
line.set_x2(MR5L, bar_index)
line.set_x2(MS5L, bar_index)
line.set_x2(MR6L, bar_index)
line.set_x2(MS6L, bar_index)
line.set_x2(MR7L, bar_index)
line.set_x2(MS7L, bar_index)
line.set_x2(MR8L, bar_index)
line.set_x2(MS8L, bar_index)

line.set_extend(MR1L, extend.none)
line.set_extend(MpLine, extend.none)
line.set_extend(MS1L, extend.none)
line.set_extend(MR2L, extend.none)
line.set_extend(MS2L, extend.none)
line.set_extend(MR3L, extend.none)
line.set_extend(MS3L, extend.none)
line.set_extend(MR4L,extend.none)
line.set_extend(MS4L,extend.none)
line.set_extend(MR5L,extend.none)
line.set_extend(MS5L,extend.none)
line.set_extend(MR6L,extend.none)
line.set_extend(MS6L,extend.none)
line.set_extend(MR7L,extend.none)
line.set_extend(MS7L,extend.none)
line.set_extend(MR8L,extend.none)
line.set_extend(MS8L,extend.none)

MR1L := line.new(bar_index, MR1, bar_index, MR1, width=1, extend=extend.right,


style=line.style_dotted, color=MchosenColor(Mmy_color))
MpLine := line.new(bar_index, MpLevel, bar_index, MpLevel, width=2,
extend=extend.right, color=MchosenColor(Mmy_color))
MS1L := line.new(bar_index, MS1, bar_index, MS1, width=1,extend=extend.right,
style=line.style_dotted, color=MchosenColor(Mmy_color))
MR2L := line.new(bar_index, MR2, bar_index, MR2, width=1,
extend=extend.right,style=line.style_dotted, color=MchosenColor(Mmy_color))
MS2L := line.new(bar_index, MS2, bar_index, MS2,
width=1,extend=extend.right,style=line.style_dotted, color=MchosenColor(Mmy_color))
MR3L := line.new(bar_index, MR3, bar_index, MR3, width=1,
extend=extend.right,style=line.style_dotted, color=MchosenColor(Mmy_color))
MS3L := line.new(bar_index, MS3, bar_index, MS3,
width=1,extend=extend.right,style=line.style_dotted, color=MchosenColor(Mmy_color))
MR4L := line.new(bar_index, MR4, bar_index, MR4,
width=2,extend=extend.right,style=line.style_solid, color=MchosenColor(Mmy_color))
MS4L := line.new(bar_index, MS4, bar_index, MS4,
width=2,extend=extend.right,style=line.style_solid, color=MchosenColor(Mmy_color))
MR5L := line.new(bar_index, MR5, bar_index, MR5,
width=1,extend=extend.right,style=line.style_dotted, color=MchosenColor(Mmy_color))
MS5L := line.new(bar_index, MS5, bar_index, MS5,
width=1,extend=extend.right,style=line.style_dotted, color=MchosenColor(Mmy_color))
MR6L := line.new(bar_index, MR6, bar_index, MR6,
width=1,extend=extend.right,style=line.style_dotted, color=MchosenColor(Mmy_color))
MS6L := line.new(bar_index, MS6, bar_index, MS6,
width=1,extend=extend.right,style=line.style_dotted, color=MchosenColor(Mmy_color))
MR7L := line.new(bar_index, MR7, bar_index, MR7,
width=1,extend=extend.right,style=line.style_dotted, color=MchosenColor(Mmy_color))
MS7L := line.new(bar_index, MS7, bar_index, MS7,
width=1,extend=extend.right,style=line.style_dotted, color=MchosenColor(Mmy_color))
MR8L := line.new(bar_index, MR8, bar_index, MR8,
width=2,extend=extend.right,style=line.style_solid, color=MchosenColor(Mmy_color))
MS8L := line.new(bar_index, MS8, bar_index, MS8,
width=2,extend=extend.right,style=line.style_solid, color=MchosenColor(Mmy_color))

MR1LA := label.new(bar_index, MR1, "23", style=label.style_none)


MpL := label.new(bar_index, MpLevel, "Monthly Pivot - 0",
style=label.style_none)
MS1LA := label.new(bar_index, MS1, "23", style=label.style_none)
MR2LA := label.new(bar_index, MR2, "38", style=label.style_none)
MS2LA := label.new(bar_index, MS2, "38", style=label.style_none)
MR3LA := label.new(bar_index, MR3, "50", style=label.style_none)
MS3LA := label.new(bar_index, MS3, "50", style=label.style_none)
MR4LA := label.new(bar_index, MR4, "61", style=label.style_none)
MS4LA := label.new(bar_index, MS4, "61", style=label.style_none)
MR5LA := label.new(bar_index, MR5, "78", style=label.style_none)
MS5LA := label.new(bar_index, MS5, "78", style=label.style_none)
MR6LA := label.new(bar_index, MR6, "88", style=label.style_none)
MS6LA := label.new(bar_index, MS6, "88", style=label.style_none)
MR7LA := label.new(bar_index, MR7, "100", style=label.style_none)
MS7LA := label.new(bar_index, MS7, "100", style=label.style_none)
MR8LA := label.new(bar_index, MR8, "Monthly Resistance - 112",
style=label.style_none)
MS8LA := label.new(bar_index, MS8, "Monthly Support - 112",
style=label.style_none)

label.delete(MR1LA[1])
label.delete(MS1LA[1])
label.delete(MR2LA[1])
label.delete(MS2LA[1])
label.delete(MpL[1])
label.delete(MR3LA[1])
label.delete(MS3LA[1])
label.delete(MR4LA[1])
label.delete(MS4LA[1])
label.delete(MR5LA[1])
label.delete(MS5LA[1])
label.delete(MR6LA[1])
label.delete(MS6LA[1])
label.delete(MR7LA[1])
label.delete(MS7LA[1])
label.delete(MR8LA[1])
label.delete(MS8LA[1])

line.delete(MR1L[1])
line.delete(MS1L[1])
line.delete(MR2L[1])
line.delete(MS2L[1])
line.delete(MpLine[1])
line.delete(MR3L[1])
line.delete(MS3L[1])
line.delete(MR4L[1])
line.delete(MS4L[1])
line.delete(MR5L[1])
line.delete(MS5L[1])
line.delete(MR6L[1])
line.delete(MS6L[1])
line.delete(MR7L[1])
line.delete(MS7L[1])
line.delete(MR8L[1])
line.delete(MS8L[1])

if not na(MpLine) and line.get_x2(MpLine) != bar_index


line.set_x2(MR1L, bar_index)
line.set_x2(MpLine, bar_index)
line.set_x2(MS1L, bar_index)
line.set_x2(MR2L, bar_index)
line.set_x2(MS2L, bar_index)
line.set_x2(MR3L, bar_index)
line.set_x2(MS3L, bar_index)
line.set_x2(MR4L, bar_index)
line.set_x2(MS4L, bar_index)
line.set_x2(MR5L, bar_index)
line.set_x2(MS5L, bar_index)
line.set_x2(MR6L, bar_index)
line.set_x2(MS6L, bar_index)
line.set_x2(MR7L, bar_index)
line.set_x2(MS7L, bar_index)
line.set_x2(MR8L, bar_index)
line.set_x2(MS8L, bar_index)

// WEEKLY PART
WchosenColor(c_)=> c_ == "aqua" ? color.aqua : c_ == "black" ? color.black : c_ ==
"blue" ? color.blue : c_ == "fuchsia" ? color.fuchsia : c_ == "gray" ? color.gray :
c_ == "green" ? color.green : c_ == "lime" ? color.lime : c_ == "maroon" ?
color.maroon : c_ == "navy" ? color.navy : c_ == "olive" ? color.olive : c_ ==
"orange" ? color.orange : c_ == "purple" ? color.purple : c_ == "red" ? color.red :
c_ == "silver" ? color.silver : c_ == "teal" ? color.teal : c_ == "white" ?
color.white : c_ == "yellow" ? color.yellow : color.black

WhigherTF = "W"
Wmy_color = input(title="Weekly Color", defval="blue", options=["aqua", "black",
"blue", "fuchsia", "gray", "green", "lime", "maroon", "navy", "olive", "orange",
"purple", "red", "silver", "teal", "white", "yellow"])

WprevCloseHTF = security(syminfo.tickerid, WhigherTF, close[1], lookahead=true)


WprevHighHTF = security(syminfo.tickerid, WhigherTF, high[1], lookahead=true)
WprevLowHTF = security(syminfo.tickerid, WhigherTF, low[1], lookahead=true)

//Weekly Fibonacci Pivots Settings:


WpRange = WprevHighHTF-WprevLowHTF
WpLevel = (WprevHighHTF + WprevLowHTF + WprevCloseHTF) / 3

WR1 = WpLevel + 0.236*WpRange


WS1 = WpLevel - 0.236*WpRange

WR2 = WpLevel + 0.382*WpRange


WS2 = WpLevel - 0.382*WpRange

WR3 = WpLevel + 0.5*WpRange


WS3 = WpLevel - 0.5*WpRange

WR4 = WpLevel + 0.618*WpRange


WS4 = WpLevel - 0.618*WpRange

WR5 = WpLevel + 0.786*WpRange


WS5 = WpLevel - 0.786*WpRange

WR6 = WpLevel + 0.886*WpRange


WS6 = WpLevel - 0.886*WpRange

WR7 = WpLevel + 1*WpRange


WS7 = WpLevel - 1*WpRange

WR8 = WpLevel + 1.272*WpRange


WS8 = WpLevel - 1.272*WpRange

var line WR1L = na


var line WpLine = na
var line WS1L = na
var line WR2L = na
var line WS2L = na
var line WR3L = na
var line WS3L = na
var line WR4L = na
var line WS4L = na
var line WR5L = na
var line WS5L = na
var line WR6L = na
var line WS6L = na
var line WR7L = na
var line WS7L = na
var line WR8L = na
var line WS8L = na

var label WR1LA = na


var label WpL = na
var label WS1LA = na
var label WR2LA = na
var label WS2LA = na
var label WR3LA = na
var label WS3LA = na
var label WR4LA = na
var label WS4LA = na
var label WR5LA = na
var label WS5LA = na
var label WR6LA = na
var label WS6LA = na
var label WR7LA = na
var label WS7LA = na
var label WR8LA = na
var label WS8LA = na

if WpLevel[1] != WpLevel
line.set_x2(WR1L, bar_index)
line.set_x2(WS1L, bar_index)
line.set_x2(WR2L, bar_index)
line.set_x2(WS2L, bar_index)
line.set_x2(WR3L, bar_index)
line.set_x2(WS3L, bar_index)
line.set_x2(WR4L, bar_index)
line.set_x2(WS4L, bar_index)
line.set_x2(WR5L, bar_index)
line.set_x2(WS5L, bar_index)
line.set_x2(WR6L, bar_index)
line.set_x2(WS6L, bar_index)
line.set_x2(WR7L, bar_index)
line.set_x2(WS7L, bar_index)
line.set_x2(WR8L, bar_index)
line.set_x2(WS8L, bar_index)

line.set_extend(WR1L, extend.none)
line.set_extend(WpLine, extend.none)
line.set_extend(WS1L, extend.none)
line.set_extend(WR2L, extend.none)
line.set_extend(WS2L, extend.none)
line.set_extend(WR3L, extend.none)
line.set_extend(WS3L, extend.none)
line.set_extend(WR4L,extend.none)
line.set_extend(WS4L,extend.none)
line.set_extend(WR5L,extend.none)
line.set_extend(WS5L,extend.none)
line.set_extend(WR6L,extend.none)
line.set_extend(WS6L,extend.none)
line.set_extend(WR7L,extend.none)
line.set_extend(WS7L,extend.none)
line.set_extend(WR8L,extend.none)
line.set_extend(WS8L,extend.none)

WR1L := line.new(bar_index, WR1, bar_index, WR1, width=1, extend=extend.right,


style=line.style_dotted, color=WchosenColor(Wmy_color))
WpLine := line.new(bar_index, WpLevel, bar_index, WpLevel, width=2,
extend=extend.right, color=WchosenColor(Wmy_color))
WS1L := line.new(bar_index, WS1, bar_index, WS1, width=1,extend=extend.right,
style=line.style_dotted, color=WchosenColor(Wmy_color))
WR2L := line.new(bar_index, WR2, bar_index, WR2, width=1,
extend=extend.right,style=line.style_dotted, color=WchosenColor(Wmy_color))
WS2L := line.new(bar_index, WS2, bar_index, WS2,
width=1,extend=extend.right,style=line.style_dotted, color=WchosenColor(Wmy_color))
WR3L := line.new(bar_index, WR3, bar_index, WR3, width=1,
extend=extend.right,style=line.style_dotted, color=WchosenColor(Wmy_color))
WS3L := line.new(bar_index, WS3, bar_index, WS3,
width=1,extend=extend.right,style=line.style_dotted, color=WchosenColor(Wmy_color))
WR4L := line.new(bar_index, WR4, bar_index, WR4,
width=2,extend=extend.right,style=line.style_solid, color=WchosenColor(Wmy_color))
WS4L := line.new(bar_index, WS4, bar_index, WS4,
width=2,extend=extend.right,style=line.style_solid, color=WchosenColor(Wmy_color))
WR5L := line.new(bar_index, WR5, bar_index, WR5,
width=1,extend=extend.right,style=line.style_dotted, color=WchosenColor(Wmy_color))
WS5L := line.new(bar_index, WS5, bar_index, WS5,
width=1,extend=extend.right,style=line.style_dotted, color=WchosenColor(Wmy_color))
WR6L := line.new(bar_index, WR6, bar_index, WR6,
width=1,extend=extend.right,style=line.style_dotted, color=WchosenColor(Wmy_color))
WS6L := line.new(bar_index, WS6, bar_index, WS6,
width=1,extend=extend.right,style=line.style_dotted, color=WchosenColor(Wmy_color))
WR7L := line.new(bar_index, WR7, bar_index, WR7,
width=1,extend=extend.right,style=line.style_dotted, color=WchosenColor(Wmy_color))
WS7L := line.new(bar_index, WS7, bar_index, WS7,
width=1,extend=extend.right,style=line.style_dotted, color=WchosenColor(Wmy_color))
WR8L := line.new(bar_index, WR8, bar_index, WR8,
width=2,extend=extend.right,style=line.style_solid, color=WchosenColor(Wmy_color))
WS8L := line.new(bar_index, WS8, bar_index, WS8,
width=2,extend=extend.right,style=line.style_solid, color=WchosenColor(Wmy_color))

WR1LA := label.new(bar_index, WR1, "23", style=label.style_none)


WpL := label.new(bar_index, WpLevel, "Weekly Pivot - 0",
style=label.style_none)
WS1LA := label.new(bar_index, WS1, "23", style=label.style_none)
WR2LA := label.new(bar_index, WR2, "38", style=label.style_none)
WS2LA := label.new(bar_index, WS2, "38", style=label.style_none)
WR3LA := label.new(bar_index, WR3, "50", style=label.style_none)
WS3LA := label.new(bar_index, WS3, "50", style=label.style_none)
WR4LA := label.new(bar_index, WR4, "61", style=label.style_none)
WS4LA := label.new(bar_index, WS4, "61", style=label.style_none)
WR5LA := label.new(bar_index, WR5, "78", style=label.style_none)
WS5LA := label.new(bar_index, WS5, "78", style=label.style_none)
WR6LA := label.new(bar_index, WR6, "88", style=label.style_none)
WS6LA := label.new(bar_index, WS6, "88", style=label.style_none)
WR7LA := label.new(bar_index, WR7, "100", style=label.style_none)
WS7LA := label.new(bar_index, WS7, "100", style=label.style_none)
WR8LA := label.new(bar_index, WR8, "Weekly Resistance - 127",
style=label.style_none)
WS8LA := label.new(bar_index, WS8, "Weekly Support - 127",
style=label.style_none)

label.delete(WR1LA[1])
label.delete(WS1LA[1])
label.delete(WR2LA[1])
label.delete(WS2LA[1])
label.delete(WpL[1])
label.delete(WR3LA[1])
label.delete(WS3LA[1])
label.delete(WR4LA[1])
label.delete(WS4LA[1])
label.delete(WR5LA[1])
label.delete(WS5LA[1])
label.delete(WR6LA[1])
label.delete(WS6LA[1])
label.delete(WR7LA[1])
label.delete(WS7LA[1])
label.delete(WR8LA[1])
label.delete(WS8LA[1])

line.delete(WR1L[1])
line.delete(WS1L[1])
line.delete(WR2L[1])
line.delete(WS2L[1])
line.delete(WpLine[1])
line.delete(WR3L[1])
line.delete(WS3L[1])
line.delete(WR4L[1])
line.delete(WS4L[1])
line.delete(WR5L[1])
line.delete(WS5L[1])
line.delete(WR6L[1])
line.delete(WS6L[1])
line.delete(WR7L[1])
line.delete(WS7L[1])
line.delete(WR8L[1])
line.delete(WS8L[1])

if not na(WpLine) and line.get_x2(WpLine) != bar_index


line.set_x2(WR1L, bar_index)
line.set_x2(WpLine, bar_index)
line.set_x2(WS1L, bar_index)
line.set_x2(WR2L, bar_index)
line.set_x2(WS2L, bar_index)
line.set_x2(WR3L, bar_index)
line.set_x2(WS3L, bar_index)
line.set_x2(WR4L, bar_index)
line.set_x2(WS4L, bar_index)
line.set_x2(WR5L, bar_index)
line.set_x2(WS5L, bar_index)
line.set_x2(WR6L, bar_index)
line.set_x2(WS6L, bar_index)
line.set_x2(WR7L, bar_index)
line.set_x2(WS7L, bar_index)
line.set_x2(WR8L, bar_index)
line.set_x2(WS8L, bar_index)

You might also like