# @Whistlerr you are close but the following discussion could move you closer to your goal
declare upper; # 0) plots in bar area. Good habbit to declare for doc purposes, however, It is the default therefore it is superfluous
# 1) Format for AddVertical builtin call is as folow:
# 2) AddVerticalLine ( boolean visible, Any text, CustomColor color, int stroke) ;
# 3) The thinkscript condition at which the line is to be displayed is termed visible
# 4) You need to supply a condition when met a vertical line to be added to the chart
# 5) If you only supply visible = secondstilltime(1800)==0 then anytime after 1800 there will be a vertical line, however, in order to pinpoint it to an exact spot you need to help the computer and provide both startTime1800 and the end time at which your line needs to be visible
# example NewYork opens
def NYopen0930 = secondsFromTime(0930) > 0 ;
AddVerticalLine(visible = NYopen0930 > 0 && NYopen0930[1] <= 0, text = "NY open", Color = Color.GRAY, stroke = curve.POINTS ) ;
# required code
# AddVerticalLine(secondstilltime(1800)==0, "Forex open; NZX open", color.green, curve.short_dash);
def StartTime1800 = secondsFromTime(1800) > 0 ;
AddVerticalLine(StartTime1800 > 0 && StartTime1800[1] <= 0, "Forex & NZX open", Color.GREEN, curve.short_dash) ;
#AddVerticalLine(secondstilltime(2000)==0, "ASX JPX open", color.green, curve.short_dash);
def sT2000 = secondsFromTime(2000) > 0 ;
AddVerticalLine(sT2000 > 0 && sT2000[1] <= 0, "ASX JPX open", Color.GREEN, curve.short_dash) ;
#AddVerticalLine(secondstilltime(2100)==0, "SGX open", color.green, curve.short_dash);
def trigger2100 = secondsFromTime(2100) > 0 ;
AddVerticalLine(trigger2100 > 0 && trigger2100[1] <= 0, "SGX open", Color.GREEN, curve.short_dash) ;