ICT NEWS MacroTracker

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 36

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.

0
at https://mozilla.org/MPL/2.0/
// © toodegrees
import toodegrees/forex_factory_utility/14 as ffUtil
import toodegrees/forex_factory_decoding/15 as ffDec

//@version=5
indicator("Live Economic Calendar by toodegrees"
, shorttitle="News° [toodegrees]"
, overlay=true
, max_lines_count=500
, max_labels_count=500)

//#region[Timeframe Limitations]
if timeframe.in_seconds(timeframe.period)>86400
runtime.error("Go to the Daily Timeframe or lower!")
else if timeframe.in_seconds(timeframe.period)<30
runtime.error("Go to the 30-Second Timeframe or higher!")
//#endregion

//#region[Global, Functions, Methods]


var mdnCheck = false
if hour(time,"America/New_York")==0 and hour(time[1],"America/New_York")!=0 and not
mdnCheck
mdnCheck := true
newDay = mdnCheck ? hour(time,"America/New_York")==0 and
hour(time[1],"America/New_York")!=0 : timeframe.change("D")

requestData() =>

[request.seed("seed_toodegrees_toogit","TOODEGREES_FOREX_FACTORY_SLOT_1",str.tostri
ng(open)+","+str.tostring(high)+","+str.tostring(low)+","+str.tostring(close)
+","+str.tostring(volume)),

request.seed("seed_toodegrees_toogit","TOODEGREES_FOREX_FACTORY_SLOT_2",str.tostrin
g(open)+","+str.tostring(high)+","+str.tostring(low)+","+str.tostring(close)
+","+str.tostring(volume)),

request.seed("seed_toodegrees_toogit","TOODEGREES_FOREX_FACTORY_SLOT_3",str.tostrin
g(open)+","+str.tostring(high)+","+str.tostring(low)+","+str.tostring(close)
+","+str.tostring(volume)),

request.seed("seed_toodegrees_toogit","TOODEGREES_FOREX_FACTORY_SLOT_4",str.tostrin
g(open)+","+str.tostring(high)+","+str.tostring(low)+","+str.tostring(close)
+","+str.tostring(volume)),

request.seed("seed_toodegrees_toogit","TOODEGREES_FOREX_FACTORY_SLOT_5",str.tostrin
g(open)+","+str.tostring(high)+","+str.tostring(low)+","+str.tostring(close)
+","+str.tostring(volume)),

request.seed("seed_toodegrees_toogit","TOODEGREES_FOREX_FACTORY_SLOT_6",str.tostrin
g(open)+","+str.tostring(high)+","+str.tostring(low)+","+str.tostring(close)
+","+str.tostring(volume)),

request.seed("seed_toodegrees_toogit","TOODEGREES_FOREX_FACTORY_SLOT_7",str.tostrin
g(open)+","+str.tostring(high)+","+str.tostring(low)+","+str.tostring(close)
+","+str.tostring(volume)),

request.seed("seed_toodegrees_toogit","TOODEGREES_FOREX_FACTORY_SLOT_8",str.tostrin
g(open)+","+str.tostring(high)+","+str.tostring(low)+","+str.tostring(close)
+","+str.tostring(volume)),

request.seed("seed_toodegrees_toogit","TOODEGREES_FOREX_FACTORY_SLOT_9",str.tostrin
g(open)+","+str.tostring(high)+","+str.tostring(low)+","+str.tostring(close)
+","+str.tostring(volume))]

method processData(ffUtil.News[] N, string S1, string S2, string S3, string S4,
string S5, string S6, string S7, string S8, string S9) =>
ffDec.readNews(N,S1), ffDec.readNews(N,S2), ffDec.readNews(N,S3)
ffDec.readNews(N,S4), ffDec.readNews(N,S5), ffDec.readNews(N,S6)
ffDec.readNews(N,S7), ffDec.readNews(N,S8), ffDec.readNews(N,S9)
//#endregion

//#region[Tooltips]
var custom_timezoneTT = "The original Time and Date of the News is based on New
York EST. Adjust the Timezone "
+ "by matching this setting to the bottom-right Timezone
setting on your Chart."
var expectedImpactTT = "🔴 High Impact\n🟠 Medium Impact\n🟡 Low Impact\n⚪ Holiday"
var autoTT = "Automatically chooses the Currencies' News based on the
current symbol on Chart."
var onChartTT = "'Today'\nAll historical news will be deleted once a new
day starts, only the current day's news "
+ "will be shown on chart.\n\n'This Week'\nAll historical
news will be deleted once a new week "
+ "starts, only the current week's news will be shown on
chart.\n\n'Manual'\nWill show the current "
+ "week's upcoming news as well as the news in the prior
custom number of days (includes weekend days)."
var labelYTT = "'Auto' will place the label opposite to the candle's
direction."
var sizeTTT = "Depending on the Size of the News Table you will be able
to see a maximum number of Forex Factory "
+ "News events on the chart due to size limitations.\n\nThese
limits are roughly:\n'Tiny' ± 46 Forex "
+ "Factory News Events\n'Small' ± 38 Forex Factory News
Events\n'Normal' ± 28 Forex Factory News Events"
+ "\n'Large' ± 20 Forex Factory News Events\n'Huge' ± 11
Forex Factory News Events"
var tableHeadCTT = "Text Color - Backroung Color"
var tableRowCTT = "Past News Text Color - Future News Text Color - Backroung
Color"
//#endregion

//#region[User Input]
// Custom Timezone
custom_timezone = input.bool(false, title="Custom Timezone?", inline="1")
timezone_h = input.int(1 , title="UTC" , inline="1", minval=-
10, maxval=13)
timezone_m = input.int(0 , title=":" , inline="1", minval=0
, maxval=59, step=15, tooltip=custom_timezoneTT)

// Expected Impact
var high_impact = input.bool(true, title="🔴", group="Expected Impact", inline="1")
var med_impact = input.bool(true, title="🟠", group="Expected Impact", inline="1")
var low_impact = input.bool(true, title="🟡", group="Expected Impact", inline="1")
var holiday = input.bool(true, title="⚪", group="Expected Impact", inline="1",
tooltip=expectedImpactTT)

// Currencies
var AUTO = input.bool(true , title="Automatic?", group="Currencies",
tooltip=autoTT)
var AUD = input.bool(false, title="AUD" , group="Currencies", inline="1")
var CAD = input.bool(false, title="CAD" , group="Currencies", inline="1")
var CHF = input.bool(false, title="CHF" , group="Currencies", inline="1")
var CNY = input.bool(false, title="CNY" , group="Currencies", inline="2")
var EUR = input.bool(false, title="EUR" , group="Currencies", inline="2")
var GBP = input.bool(false, title="GBP" , group="Currencies", inline="2")
var JPY = input.bool(false, title="JPY " , group="Currencies", inline="3")
var NZD = input.bool(false, title="NZD" , group="Currencies", inline="3")
var USD = input.bool(false, title="USD" , group="Currencies", inline="3")

// On Chart
var onChartT = input.string("This Week", title="Chart
History ", group="News On Chart", inline="1", options=["Today", "This
Week", "Manual"])
var onChartLB = input.int(30 , title=""
, group="News On Chart", inline="1", tooltip=onChartTT)
var showLabels = input.bool(true , title="Show Labels?"
, group="News On Chart", inline="2")
var labelS = ffUtil.size(input.string("Normal" , title=""
, group="News On Chart", inline="2", options=["Tiny" , "Small", "Normal", "Large",
"Huge"]))
var labelY = input.string("Auto" , title=""
, group="News On Chart", inline="2", options=["Above", "Below", "Auto"] ,
tooltip=labelYTT)
var lblOutLn = input.bool(true , title="Outline?"
, group="News On Chart", inline="2")
var showLines = input.bool(true , title="Show Lines? "
, group="News On Chart", inline="3")
var lineTime = input.string("Future" , title=""
, group="News On Chart", inline="3", options=["Future", "Past+Future"])
var lineT = ffUtil.lineTrnsp(input.string("Heavy" , title=""
, group="News On Chart", inline="3", options=["Light" , "Medium", "Heavy"]))
var lineS = ffUtil.lineStyle(input.string("Solid" , title=""
, group="News On Chart", inline="3", options=["Dashed", "Dotted", "Solid"]))

// Table
var showTable = input.bool(true , title="Show?" , group="News
Table", inline="1")
var tableType = input.string("This Week", title="" , group="News
Table", inline="1", options=["Today", "This Week"])
var todType = input.string("24H" , title="" , group="News
Table", inline="1", options=["24H" , "AM/PM"])
var headTextC = input.color(#dee1e9 , title="Table Header" , group="News Table",
inline="2")
var headBgC = input.color(#283c70 , title="" , group="News Table",
inline="2", tooltip=tableHeadCTT)
var rowTextCP = input.color(#787b86 , title="Table News ", group="News Table",
inline="3")
var rowTextCF = input.color(#000000 , title="" , group="News Table",
inline="3")
var rowBgC = input.color(#dee1e9 , title="" , group="News Table",
inline="3", tooltip=tableRowCTT)
var tableX = input.string("Right" , title="" , group="News
Table", inline="4", options=["Left", "Center", "Right" ])
var tableY = input.string("Bottom" , title="" , group="News
Table", inline="4", options=["Top" , "Middle", "Bottom"])
var sizeT = input.string("Small" , title="" , group="News
Table", inline="4", options=["Tiny", "Small" , "Normal", "Large", "Huge"],
tooltip=sizeTTT)

// Process User Input


var locT = ffUtil.boxLoc(tableX,tableY)
var impact_filter = ffUtil.impFilter(holiday,low_impact,med_impact,high_impact)
var currency_filter = ffUtil.curFilter(AUTO,AUD,CAD,CHF,CNY,EUR,GBP,JPY,NZD,USD)
onChartT := timeframe.period=="D" and onChartT=="Today"?"This
Week":onChartT
tableType := timeframe.period=="D"?"This Week":tableType
//#endregion

//#region[Import, Decode, Save]


var currWeek = array.new<ffUtil.News>()
var nextWeek = array.new<ffUtil.News>()
var currDay = array.new<ffUtil.News>()

// Import Forex Factory News for next week


[slot1,slot2,slot3,slot4,slot5,slot6,slot7,slot8,slot9] = requestData()

// Save Forex Factory News


if timeframe.change("W")
nextWeek := ffUtil.bubbleSort_News(nextWeek)
if custom_timezone
nextWeek := ffUtil.adjustTimezone(nextWeek, timezone_h, timezone_m)
if todType=="AM/PM"
nextWeek := ffUtil.NewsAMPM_TOD(nextWeek)
currWeek := nextWeek.copy()
currWeek := ffUtil.weekNews(currWeek,currency_filter,impact_filter)
nextWeek.clear()
if newDay
currDay.clear()
currDay := ffUtil.todayNews(currWeek,currDay,mdnCheck)

// Decode Forex Factory News


nextWeek.processData(slot1,slot2,slot3,slot4,slot5,slot6,slot7,slot8,slot9)
//#endregion

//#region[Table & Drawings]


// Forex Factory News Table
var _table = ffUtil.newTable(locT)
if currWeek.size()>0
if showTable
if tableType=="Today"
if newDay
_table :=
ffUtil.FF_Table(currDay,locT,sizeT,headTextC,headBgC,rowTextCF,rowBgC)
ffUtil.timeline(currDay,_table,rowTextCP, timezone_h, timezone_m, true)
else
if timeframe.change("W")
_table :=
ffUtil.FF_Table(currWeek,locT,sizeT,headTextC,headBgC,rowTextCF,rowBgC)
ffUtil.timeline(currWeek,_table,rowTextCP, timezone_h, timezone_m)
else
_table.delete()
else
_table.delete()

// Forex Factory News Drawings


if showLines
if onChartT!="Today" and timeframe.change("W")
ffUtil.FF_OnChartLine(currWeek,lineT,lineS)
else if onChartT=="Today" and newDay
ffUtil.FF_OnChartLine(currDay,lineT,lineS)
if showLabels
ffUtil.FF_OnChartLabel(currWeek,labelY,labelS,lblOutLn)

ffUtil.historical(onChartLB,onChartT=="Today",onChartT=="This Week",lineTime)
//#endregion

//#region[Daily Chart Buffer]


if timeframe.period=="D" and timeframe.change("W")
nextWeek.processData(slot1,slot2,slot3,slot4,slot5,slot6,slot7,slot8,slot9)
//#endregion//#endregion

//
// This source code is subject to the terms of the Mozilla Public License 2.0 at
https://mozilla.org/MPL/2.0/
// ©coldbrewrosh

//@version=5
indicator("ICT Everything @coldbrewrosh", overlay=true, max_lines_count=500,
max_labels_count=5, max_boxes_count=500)

// General Settings Inputs


TZI = input.string (defval="UTC -5", title="Timezone
Selection", options=["UTC -10", "UTC -7", "UTC -6", "UTC -5", "UTC -4", "UTC -3",
"UTC +0", "UTC +1", "UTC +2", "UTC +3", "UTC +3:30", "UTC +4", "UTC +5", "UTC
+5:30", "UTC +6", "UTC +7", "UTC +8", "UTC +9", "UTC +9:30", "UTC +10", "UTC
+10:30", "UTC +11", "UTC +13", "UTC +13:45"], tooltip="Select the Timezone.
( Shifts Chart Elements )", group="Global Settings")
Timezone = TZI == "UTC -10" ? "GMT-10:00" : TZI ==
"UTC -7" ? "GMT-07:00" : TZI == "UTC -6" ? "GMT-06:00" : TZI == "UTC -5" ? "GMT-
05:00" : TZI == "UTC -4" ? "GMT-04:00" : TZI == "UTC -3" ? "GMT-03:00" : TZI ==
"UTC +0" ? "GMT+00:00" : TZI == "UTC +1" ? "GMT+01:00" : TZI == "UTC +2" ?
"GMT+02:00" : TZI == "UTC +3" ? "GMT+03:00" : TZI == "UTC +3:30" ? "GMT+03:30" :
TZI == "UTC +4" ? "GMT+04:00" : TZI == "UTC +5" ? "GMT+05:00" : TZI == "UTC
+5:30" ? "GMT+05:30" : TZI == "UTC +6" ? "GMT+06:00" : TZI == "UTC +7" ?
"GMT+07:00" : TZI == "UTC +8" ? "GMT+08:00" : TZI == "UTC +9" ? "GMT+09:00" : TZI
== "UTC +9:30" ? "GMT+09:30" : TZI == "UTC +10" ? "GMT+10:00" : TZI == "UTC +10:30"
? "GMT+10:30" : TZI == "UTC +11" ? "GMT+11:00" : TZI == "UTC +13" ? "GMT+13:00" :
"GMT+13:45"
inputMaxInterval = input.int (31, title="Hide Indicator Above
Specified Minutes", tooltip="Above 30Min, Chart Will Become Messy & Unreadable",
group="Global Settings")
// Session options
ShowTSO = input.bool (true, title="Show Today's Session
Only", group="Session Options", tooltip="Hide Historical Sessions")
ShowTWO = input.bool (true, title="Show Current Week's
Sessions Only", group="Session Options", tooltip="Show All Sessions from the
current week")
SL4W = input.bool (true, title="Show Last 4 Week
Sessions", group="Session Options", tooltip="Show All Sessions from Last Four Weeks
\nShould Disable Current Week Session to Work")
ShowSFill = input.bool (false, title="Show Session
Highlighting", group="Session Options", tooltip="Highlights Session from Top of the
Chart to Bottom")
//----------------------------------------------
// Historical Lines
ShowMOPL = input.bool (title="Midnight Historical Price
Lines", defval=false, group="Historical Lines", tooltip="Shows Historical Midnight
Price Lines")
MOLHist = input.bool (title="Midnight Historical
Vertical Lines", defval=true, group="Historical Lines", tooltip="Shows Historical
Midnight Vertical Lines")
ShowPrev = input.bool (false, title="Misc. Historical
Price Lines", group="Historical Lines", tooltip="Makes Chart Cluttered, Use For
Backtesting Only")
//----------------------------------------------

// Session Bool
ShowLondon = input.bool (true, "", inline="LONDON",
group="Sessions", tooltip="01:00 to 05:00")
ShowNY = input.bool (true, "", inline="NY",
group="Sessions", tooltip="07:00 to 10:00")
ShowLC = input.bool (true, "", inline="LC",
group="Sessions", tooltip="10:00 to 12:00")
ShowPM = input.bool (true, "",inline="PM",
group="Sessions", tooltip="13:00 to 16:00")
ShowAsian = input.bool (false, "",inline="ASIA2",
group="Sessions", tooltip="20:00 to 00:00")
ShowFreeSesh = input.bool (false, "",inline="FREE",
group="Sessions", tooltip="Custom Session")

// Session Strings
txt2 = input.string ("LONDON", title="",
inline="LONDON", group="Sessions")
txt3 = input.string ("NEW YORK", title="", inline="NY",
group="Sessions")
txt4 = input.string ("LDN CLOSE", title="",
inline="LC", group="Sessions")
txt5 = input.string ("AFTERNOON", title="",
inline="PM", group="Sessions")
txt6 = input.string ("ASIA", title="", inline="ASIA2",
group="Sessions")
txt9 = input.string ("FREE SESH", title="",
inline="FREE", group="Sessions")

// CBDR = input.session ('1600-2000:1234567', "",


inline="CBDR", group="Sessions")
// ASIA = input.session ('2000-0000:1234567', "",
inline="ASIA", group="Sessions")

// Session Times
LDNsesh = input.session ('0200-0500:1234567', "",
inline="LONDON", group="Sessions")
NYsesh = input.session ('0700-1000:1234567', "",
inline="NY", group="Sessions")
LCsesh = input.session ('1000-1200:1234567', "",
inline="LC", group="Sessions")
PMsesh = input.session ('1300-1600:1234567', "",
inline="PM", group="Sessions")
ASIA2sesh = input.session ('2000-2359:1234567', "",
inline="ASIA2", group="Sessions")
FreeSesh = input.session ('0000-0000:1234567', "",
inline="FREE", group="Sessions")
// Session Color
LSFC = input.color (color.new(#787b86, 90), "",
inline="LONDON", group="Sessions")
NYSFC = input.color (color.new(#787b86, 90),
"",inline="NY", group="Sessions")
LCSFC = input.color (color.new(#787b86, 90),
"",inline="LC", group="Sessions")
PMSFC = input.color (color.new(#787b86, 90),
"",inline="PM", group="Sessions")
ASFC = input.color (color.new(#787b86, 90),
"",inline="ASIA2", group="Sessions")
FSFC = input.color (color.new(#787b86, 90),
"",inline="FREE", group="Sessions")
//----------------------------------------------

// Vertical Line Bool


ShowMOP = input.bool (title="", defval=true,
inline="MOP", group="Vertical Lines", tooltip="00:00 AM")
txt12 = input.string ("MIDNIGHT", title="",
inline="MOP", group="Vertical Lines")
ShowLOP = input.bool (title="", defval=false,
inline="LOP", group="Vertical Lines", tooltip="03:00 AM")
txt14 = input.string ("LONDON", title="", inline="LOP",
group="Vertical Lines")
ShowNYOP = input.bool (title="", defval=true,
inline="NYOP", group="Vertical Lines", tooltip="08:30 AM")
txt15 = input.string ("NEW YORK", title="",
inline="NYOP", group="Vertical Lines")
ShowEOP = input.bool (title="", defval=false,
inline="EOP", group="Vertical Lines", tooltip="09:30 AM")
txt16 = input.string ("EQUITIES", title="",
inline="EOP", group="Vertical Lines")

// Vertical Line Color


MOPColor = input.color (color.new(#787b86, 0), "",
inline="MOP", group="Vertical Lines")
LOPColor = input.color (color.rgb(0,128,128,60), "",
inline="LOP", group="Vertical Lines")
NYOPColor = input.color (color.rgb(0,128,128,60), "",
inline="NYOP", group="Vertical Lines")
EOPColor = input.color (color.rgb(0,128,128,60), "",
inline="EOP", group="Vertical Lines")

// Vertical LineStyle
Midnight_Open_LS = input.string ("Dotted", "", options=["Solid",
"Dashed", "Dotted"], inline="MOP", group="Vertical Lines")
london_Open_LS = input.string ("Solid", "", options=["Solid",
"Dashed", "Dotted"], inline="LOP", group="Vertical Lines")
NY_Open_LS = input.string ("Solid", "", options=["Solid",
"Dashed", "Dotted"], inline="NYOP", group="Vertical Lines")
Equities_Open_LS = input.string ("Solid", "", options=["Solid",
"Dashed", "Dotted"], inline="EOP", group="Vertical Lines")

// Vertical LineWidth
Midnight_Open_LW = input.string ("1px", "", options=["1px","2px",
"3px", "4px", "5px"], inline="MOP", group="Vertical Lines")
London_Open_LW = input.string ("1px", "", options=["1px","2px",
"3px", "4px", "5px"], inline="LOP", group="Vertical Lines")
NY_Open_LW = input.string ("1px", "", options=["1px","2px",
"3px", "4px", "5px"], inline="NYOP", group="Vertical Lines")
Equities_Open_LW = input.string ("1px", "", options=["1px","2px",
"3px", "4px", "5px"], inline="EOP", group="Vertical Lines")
//----------------------------------------------

// Opening Price Bool


ShowMOPP = input.bool (title="", defval=true,
inline="MOPP", group="Opening Price Lines", tooltip="00:00 AM")
txt13 = input.string ("MIDNIGHT", title="",
inline="MOPP", group="Opening Price Lines")
ShowNYOPP = input.bool (title="", defval=false,
inline="NYOPP", group="Opening Price Lines", tooltip="08:30 AM")
txt17 = input.string ("NEW YORK", title="",
inline="NYOPP", group="Opening Price Lines")
ShowEOPP = input.bool (title="", defval=false,
inline="EOPP", group="Opening Price Lines", tooltip="09:30 AM")
txt18 = input.string ("EQUITIES", title="",
inline="EOPP", group="Opening Price Lines")
ShowAFTPP = input.bool (title="", defval=false,
inline="AFTOPP", group="Opening Price Lines", tooltip="01:30 PM")
txt1330 = input.string ("AFTERNOON", title="",
inline="AFTOPP", group="Opening Price Lines")

// Opening Price Color


MOPColP = input.color (color.new(#787b86, 0), "",
inline="MOPP", group="Opening Price Lines")
NYOPColP = input.color (color.new(#787b86, 0), "",
inline="NYOPP", group="Opening Price Lines")
EOPColP = input.color (color.new(#787b86, 0), "",
inline="EOPP", group="Opening Price Lines")
AFTOPColP = input.color (color.new(#787b86, 0), "",
inline="AFTOPP", group="Opening Price Lines")

// Opening Price LineStyle


MOPLS = input.string ("Dotted", "", options=["Solid",
"Dashed", "Dotted"], inline="MOPP", group="Opening Price Lines")
NYOPLS = input.string ("Dotted", "", options=["Solid",
"Dashed", "Dotted"], inline="NYOPP", group="Opening Price Lines")
EOPLS = input.string ("Dotted", "", options=["Solid",
"Dashed", "Dotted"], inline="EOPP", group="Opening Price Lines")
AFTOPLS = input.string ("Dotted", "", options=["Solid",
"Dashed", "Dotted"], inline="AFTOPP", group="Opening Price Lines")

// Opening Price LineWidth


i_MOPLW = input.string ("1px", "", options=["1px","2px",
"3px", "4px", "5px"], inline="MOPP", group="Opening Price Lines")
i_NYOPLW = input.string ("1px", "", options=["1px","2px",
"3px", "4px", "5px"], inline="NYOPP", group="Opening Price Lines")
i_EOPLW = input.string ("1px", "", options=["1px","2px",
"3px", "4px", "5px"], inline="EOPP", group="Opening Price Lines")
i_AFTOPLW = input.string ("1px", "", options=["1px","2px",
"3px", "4px", "5px"], inline="AFTOPP", group="Opening Price Lines")

//----------------------------------------------

// W&M Bool
ShowWeekOpen = input.bool (defval=false, title="",
tooltip="Draw Weekly Open Price Line", group="HTF Opening Price Lines",
inline="WO")
showMonthOpen = input.bool (defval=false, title="",
tooltip="Draw Monthly Open Price Line", group="HTF Opening Price Lines",
inline="MO")

// W&M String
txt19 = input.string ("WEEKLY", title="", inline="WO",
group="HTF Opening Price Lines")
txt20 = input.string ("MONTHLY", title="", inline="MO",
group="HTF Opening Price Lines")

// W&M Color
i_WeekOpenCol = input.color (title="",
defval=color.new(#787b86, 0), group="HTF Opening Price Lines", inline="WO")
i_MonthOpenCol = input.color (title="", tooltip="",
defval=color.new(#787b86, 0), group="HTF Opening Price Lines", inline="MO")

// W&M LineStyle
WOLS = input.string ("Dotted", "", options=["Solid",
"Dashed", "Dotted"], inline="WO", group="HTF Opening Price Lines")
MOLS = input.string ("Dotted", "", options=["Solid",
"Dashed", "Dotted"], inline="MO", group="HTF Opening Price Lines")

// W&M LineWidth
i_WOPLW = input.string ("1px", "", options=["1px","2px",
"3px", "4px", "5px"], inline="WO", group="HTF Opening Price Lines")
i_MONPLW = input.string ("1px", "", options=["1px","2px",
"3px", "4px", "5px"], inline="MO", group="HTF Opening Price Lines")
//----------------------------------------------

// CBDR, ASIA & FLOUT


ShowCBDR = input.bool (true, "", inline='CBDR',
group="CBDR, ASIA & FLOUT")
ShowASIA = input.bool (true, "", inline='ASIA',
group="CBDR, ASIA & FLOUT")
ShowFLOUT = input.bool (false, "", inline='FLOUT',
group="CBDR, ASIA & FLOUT")

// Strings
txt0 = input.string ("CBDR", title="", inline="CBDR",
group="CBDR, ASIA & FLOUT", tooltip="16:00 to 20:00 \nSD Increments of 1")
txt1 = input.string ("ASIA", title="", inline="ASIA",
group="CBDR, ASIA & FLOUT", tooltip="20:00 to 00:00 \nSD Increments of 1")
txt7 = input.string ("FLOUT", title="", inline="FLOUT",
group="CBDR, ASIA & FLOUT", tooltip="16:00 to 00:00 \nSD Increments of 0.5")

// Color
CBDRBoxCol = input.color (color.new(#787b86, 0),"",
inline='CBDR', group="CBDR, ASIA & FLOUT")
ASIABoxCol = input.color (color.new(#787b86, 0), "",
inline='ASIA', group="CBDR, ASIA & FLOUT")
FLOUTBoxCol = input.color (color.new(#787b86, 0),"",
inline='FLOUT', group="CBDR, ASIA & FLOUT")

// Extras
box_text_cbdr = input.bool (true, "Show Text", inline="CBDR",
group="CBDR, ASIA & FLOUT")
box_text_cbdr_col = input.color (color.new(color.gray, 80), "",
inline="CBDR", group="CBDR, ASIA & FLOUT")
bool_cbdr_dev = input.bool (true, "SD", inline="CBDR",
group="CBDR, ASIA & FLOUT")

box_text_asia = input.bool (true, "Show Text", inline="ASIA",


group="CBDR, ASIA & FLOUT")
box_text_asia_col = input.color (color.new(color.gray, 80), "",
inline="ASIA", group="CBDR, ASIA & FLOUT")
bool_asia_dev = input.bool (true, "SD", inline="ASIA",
group="CBDR, ASIA & FLOUT")

box_text_flout = input.bool (true, "Show Text", inline="FLOUT",


group="CBDR, ASIA & FLOUT")
box_text_flout_col = input.color (color.new(color.gray, 80), "",
inline="FLOUT", group="CBDR, ASIA & FLOUT")
bool_flout_dev = input.bool (true, "SD", inline="FLOUT",
group="CBDR, ASIA & FLOUT")

// Table

// SD Lines
ShowDevLN = input.bool (title="", defval=true,
inline="DEVLN", group="Standard Deviation", tooltip="Deviation Lines")
DEVLNTXT = input.string ("SD LINES", title="",
inline="DEVLN", group="Standard Deviation")
DevLNCol = input.color (color.new(#787b86, 0), "",
inline="DEVLN", group="Standard Deviation")
DEVLS = input.string ("Solid", "", options=["Solid",
"Dashed", "Dotted"], inline="DEVLN", group="Standard Deviation")
i_DEVLW = input.string ("1px", "", options=["1px","2px",
"3px", "4px", "5px"], inline="DEVLN", group="Standard Deviation")
DEVLSS = DEVLS=="Solid" ? line.style_solid : DEVLS == "Dotted" ?
line.style_dotted : line.style_dashed
DEVLW = i_DEVLW=="1px" ? 1 : i_DEVLW == "2px" ? 2 : i_DEVLW ==
"3px" ? 3 : i_DEVLW == "4px" ? 4 : 5

ShowDev = input.bool (false, '', inline="DEV",


group="Standard Deviation")
txt8 = input.string ("SD COUNT", title="",
inline="DEV", group="Standard Deviation")
SDCountCol = input.color (color.new(#787b86, 0), "",
inline="DEV", group="Standard Deviation")
DevInput = input.string ("2 SD", "", options=["1 SD","2
SD", "3 SD", "4 SD"], inline="DEV", group="Standard Deviation")
DevDirection = input.string ("Both", "", options=["Upside
Only","Both", "Downside Only"], inline="DEV", group="Standard Deviation",
tooltip="SD Count, NULL, SD Count, SD Direction")
DevCount = DevInput == "1 SD" ? 1 : DevInput == "2 SD" ? 2
: DevInput == "3 SD" ? 3 : 4

Auto_Select = input.bool (false, "", group="Standard


Deviation", inline="AUTOSD", tooltip="Auto SD Selection | Charter Content, Range
Table \nMight Bug Out On Mondays" )
txtSD = input.string ("AUTO SD", "", group="Standard
Deviation", inline="AUTOSD")
Tab1txtCol = input.color (color.new(#808080, 0), "",
inline='AUTOSD', group="Standard Deviation")
TabOptionShow = input.string ("Show Table", "", options=["Show
Table", "Hide Table"], inline="AUTOSD", group="Standard Deviation")
Stats = TabOptionShow == "Show Table" ? true : false
TabOption1 = input.string ("Top Right", "", options=["Top
Left", "Top Center", "Top Right", "Middle Left", "Middle Right", "Bottom Left",
"Bottom Center", "Bottom Right"], inline="AUTOSD", group="Standard Deviation")
tabinp1 = TabOption1 == "Top Left" ? position.top_left :
TabOption1 == "Top Center" ? position.top_center : TabOption1 == "Top Right" ?
position.top_right : TabOption1 == "Middle Left" ? position.middle_left :
TabOption1 == "Middle Right" ? position.middle_right : TabOption1 == "Bottom
Left" ? position.bottom_left : TabOption1 == "Bottom Center" ?
position.bottom_center : position.bottom_right
L_Prof = true
CellBG = color.new(#131722, 100)

//----------------------------------------------
// Day Of Week & Labels
// Label Settings Inputs
ShowLabel = input.bool (true, title="", inline="Glabel",
group="Day Of Week & Labels")
txt21 = input.string ("LABEL", title="",
inline="Glabel", group="Day Of Week & Labels")
LabelColor = input.color (color.rgb(0,0,0,100), "",
inline="Glabel", group="Day Of Week & Labels")
LabelSizeInput = input.string ("Normal", "", options=["Auto",
"Tiny", "Small", "Normal", "Large", "Huge"], inline="Glabel", group="Day Of Week &
Labels")
Terminusinp = input.string ("Terminus @ Current Time +1hr",
"", options = ["Terminus @ Next Midnight","Terminus @ Current Time", "Terminus @
Current Time +15min", "Terminus @ Current Time +30min", "Terminus @ Current Time
+45min", "Terminus @ Current Time +1hr", "Terminus @ Current Time +2hr", "Terminus
@ Current Time +3hr"], inline="Glabel", group="Day Of Week & Labels",
tooltip="Select Label Size & Color & Terminus \nHistorical Price Lines needs to be
toggled off for using Terminus")

ShowLabelText = input.bool (true, title="", inline="label",


group="Day Of Week & Labels")
txt22 = input.string ("LABEL TEXT", title="",
inline="label", group="Day Of Week & Labels")
LabelTextColor = input.color (color.new(#787b86, 0), title="",
inline="label", group="Day Of Week & Labels")
LabelTextOptioninput = input.string ("Time", "", options=["Time",
"Text"], inline="label", group="Day Of Week & Labels", tooltip="Choose Between
Descriptive Text as Label or Time \nShow/Hide Prices on Labels")
ShowPricesBool = input.string ("Hide Prices", title="",
options=["Show Prices", "Hide Prices"], group="Day Of Week & Labels",
inline="label")
ShowPrices = ShowPricesBool == "Show Prices" ? true : false

showDOW = input.bool (true, title="", inline="DOW",


group="Day Of Week & Labels")
txt24 = input.string ("DAY OF WEEK", title="",
inline="DOW", group="Day Of Week & Labels")
i_DOWCol = input.color (color.new(#787b86, 0), title="",
inline="DOW", group="Day Of Week & Labels")
DOWTime = input.int (defval = 12, title="",
inline="DOW", group="Day Of Week & Labels")
DOWLoc_inpt = input.string ("Bottom", "", options = ["Top",
"Bottom"], inline="DOW", group="Day Of Week & Labels", tooltip="DOW Color, Time
Alignment, Vertical Location")
DOWLoc = DOWLoc_inpt == "Bottom" ? location.bottom :
location.top
//----------------------------------------------

BIAS_M_Bool = input.bool (false, "", group="BIAS & NOTES


PRECONFIG", inline="stats")
txt100 = input.string ("BIAS", title="", inline="stats",
group="BIAS & NOTES PRECONFIG")
TableBG2 = color.new(#131722, 100)
Tab2txtCol = input.color (color.new(#787b86, 0), "",
inline='stats', group="BIAS & NOTES PRECONFIG")
TabOption2 = input.string ("Bottom Right", "", options=["Top
Left", "Top Center", "Top Right", "Middle Left", "Middle Right", "Bottom Left",
"Bottom Center", "Bottom Right"], inline="stats", group="BIAS & NOTES PRECONFIG")
tabinp2 = TabOption2 == "Top Left" ? position.top_left :
TabOption2 == "Top Center" ? position.top_center : TabOption2 == "Top Right" ?
position.top_right : TabOption2 == "Middle Left" ? position.middle_left :
TabOption2 == "Middle Right" ? position.middle_right : TabOption2 == "Bottom
Left" ? position.bottom_left : TabOption2 == "Bottom Center" ?
position.bottom_center : position.bottom_right
notesbool = false

NOTES_M_Bool = input.bool (true, "", group="BIAS & NOTES


PRECONFIG", inline="stats2")
txt101 = input.string ("NOTES", title="",
inline="stats2", group="BIAS & NOTES PRECONFIG")
Tab3txtCol = input.color (color.new(#787b86, 0), "",
inline='stats2', group="BIAS & NOTES PRECONFIG")
TabOption3 = input.string ("Top Center", "", options=["Top
Left", "Top Center", "Top Right", "Middle Left", "Middle Right", "Bottom Left",
"Bottom Center", "Bottom Right"], inline="stats2", group="BIAS & NOTES PRECONFIG")
tabinp3 = TabOption3 == "Top Left" ? position.top_left :
TabOption3 == "Top Center" ? position.top_center : TabOption3 == "Top Right" ?
position.top_right : TabOption3 == "Middle Left" ? position.middle_left :
TabOption3 == "Middle Right" ? position.middle_right : TabOption3 == "Bottom
Left" ? position.bottom_left : TabOption3 == "Bottom Center" ?
position.bottom_center : position.bottom_right

BIASbool1 = input.bool (true, '', inline="BIAS1",


group="BIAS & NOTES")
txt52 = input.string ("DXY ", title="", inline="BIAS1",
group="BIAS & NOTES")
BIASOption1 = input.string ("Bullish", options=["Bullish",
"Bearish", "Consolidating", "Unclear"], title="", inline="BIAS1", group="BIAS &
NOTES")

BIASbool2 = input.bool (true, '', inline="BIAS2",


group="BIAS & NOTES")
txt53 = input.string ("EURGBP ", title="",
inline="BIAS2", group="BIAS & NOTES")
BIASOption2 = input.string ("Bearish", options=["Bullish",
"Bearish", "Consolidating", "Unclear"], title="", inline="BIAS2", group="BIAS &
NOTES")

BIASbool3 = input.bool (true, '', inline="BIAS3",


group="BIAS & NOTES")
txt54 = input.string ("AUDNZD ", title="",
inline="BIAS3", group="BIAS & NOTES")
BIASOption3 = input.string ("Bullish", options=["Bullish",
"Bearish", "Consolidating", "Unclear"], title="", inline="BIAS3", group="BIAS &
NOTES")

BIASbool4 = input.bool (true, '', inline="BIAS4",


group="BIAS & NOTES")
txt55 = input.string ("NASDAQ ", title="",
inline="BIAS4", group="BIAS & NOTES")
BIASOption4 = input.string ("Bearish", options=["Bullish",
"Bearish", "Consolidating", "Unclear"], title="", inline="BIAS4", group="BIAS &
NOTES")
notes = input.text_area ("@coldbrewrosh", "Notes", group =
"BIAS & NOTES")

//--------------------END OF INPUTS--------------------//

// Pre-Def
DOM = (timeframe.multiplier <= inputMaxInterval) and
(timeframe.isintraday)
newDay = ta.change(dayofweek)
newWeek = ta.change(weekofyear)
newMonth = ta.change(time("M"))

transparentcol = color.rgb(255,255,255,100)

LSVLC = color.rgb(255,255,255,100)
NYSVLC = color.rgb(255,255,255,100)
PMSVLC = color.rgb(255,255,255,100)
ASVLC = color.rgb(255,255,255,100)

LSVLS = "dotted"
NYSVLS = "dotted"
PMSVLS = "dotted"
ASVLS = "dotted"

// Functions
isToday = false
if year(timenow) == year(time) and month(timenow) == month(time) and
dayofmonth(timenow) == dayofmonth(time)
isToday := true

// Current Week
thisweek = year(timenow) == year(time) and weekofyear(timenow) == weekofyear(time)
LastOneWeek = year(timenow) == year(time) and weekofyear(timenow-604800000) ==
weekofyear(time)
LastTwoWeek = year(timenow) == year(time) and weekofyear(timenow-1209600000) ==
weekofyear(time)
LastThreeWeek = year(timenow) == year(time) and weekofyear(timenow-1814400000) ==
weekofyear(time)
LastFourWeek = year(timenow) == year(time) and weekofyear(timenow-2419200000) ==
weekofyear(time)
Last4Weeks = false
if thisweek == true or LastOneWeek == true or LastTwoWeek == true or LastThreeWeek
== true or LastFourWeek == true
Last4Weeks := true

// Function to draw Vertical Lines


vline(Start, Color, linestyle, LineWidth) =>
line.new(x1=Start, y1=low - ta.tr, x2=Start, y2=high + ta.tr,
xloc=xloc.bar_time, extend=extend.both, color=Color, style=linestyle,
width=LineWidth)

// Function to convert forex pips into whole numbers


atr = ta.atr(14)
toWhole(number) =>
if syminfo.type == "forex" // This method only works on forex pairs
_return = atr < 1.0 ? (number / syminfo.mintick) / 10 : number
_return := atr >= 1.0 and atr < 100.0 and syminfo.currency == "JPY" ?
_return * 100 : _return
else
number

// Function for determining the Start of a Session (taken from the Pinescript
manual: https://www.tradingview.com/pine-script-docs/en/v5/concepts/Sessions.html )
SessionBegins(sess) =>
t = time("", sess , Timezone)
DOM and (not barstate.isfirst) and na(t[1]) and not na(t)

// BarIn Session
BarInSession(sess) =>
time(timeframe.period, sess, Timezone) != 0

// Label Type Logic


var SFistrue = true
if LabelTextOptioninput == "Time"
SFistrue := true
else
SFistrue := false

// Session String to int


SeshStartHour(Session) =>
math.round(str.tonumber(str.substring(Session,0,2)))
SeshStartMins(Session) =>
math.round(str.tonumber(str.substring(Session,2,4)))
SeshEndHour(Session) =>
math.round(str.tonumber(str.substring(Session,5,7)))
SeshEndMins(Session) =>
math.round(str.tonumber(str.substring(Session,7,9)))

// Time periods
CBDR = "1600-2000:1234567"
ASIA = "2000-0000:1234567"
FLOUT = "1600-0000:1234567"
midsesh = "0000-1600:1234567"

cbdrOpenTime = timestamp (Timezone, year, month, dayofmonth,


SeshStartHour(CBDR), SeshStartMins(CBDR), 00)
cbdrEndTime = timestamp (Timezone, year, month, dayofmonth,
SeshEndHour(CBDR), SeshEndMins(CBDR), 00)
asiaOpenTime = timestamp (Timezone, year, month, dayofmonth,
SeshStartHour(ASIA), SeshStartMins(ASIA), 00)
asiaEndTime = timestamp (Timezone, year, month, dayofmonth,
SeshEndHour(ASIA), SeshEndMins(ASIA), 00)+86400000
floutOpenTime = timestamp (Timezone, year, month, dayofmonth,
SeshStartHour(FLOUT), SeshStartMins(FLOUT), 00)
floutEndTime = timestamp (Timezone, year, month, dayofmonth,
SeshEndHour(FLOUT), SeshEndMins(FLOUT), 00)+86400000
CBDRTime = time (timeframe.period, CBDR, Timezone)
ASIATime = time (timeframe.period, ASIA, Timezone)
FLOUTTime = time (timeframe.period, FLOUT, Timezone)

LabelOnlyToday = true

// Time Periods
LondonStartTime = timestamp(Timezone, year, month, dayofmonth,
SeshStartHour(LDNsesh), SeshStartMins(LDNsesh), 00)
LondonEndTime = timestamp(Timezone, year, month, dayofmonth,
SeshEndHour(LDNsesh), SeshEndMins(LDNsesh), 00)
NYStartTime = timestamp(Timezone, year, month, dayofmonth,
SeshStartHour(NYsesh), SeshStartMins(NYsesh), 00)
NYEndTime = timestamp(Timezone, year, month, dayofmonth,
SeshEndHour(NYsesh), SeshEndMins(NYsesh), 00)
LCStartTime = timestamp(Timezone, year, month, dayofmonth,
SeshStartHour(LCsesh), SeshStartMins(LCsesh), 00)
LCEndTime = timestamp(Timezone, year, month, dayofmonth,
SeshEndHour(LCsesh), SeshEndMins(LCsesh), 00)

PMStartTime = timestamp(Timezone, year, month, dayofmonth,


SeshStartHour(PMsesh), SeshStartMins(PMsesh), 00)
PMEndTime = timestamp(Timezone, year, month, dayofmonth,
SeshEndHour(PMsesh), SeshEndMins(PMsesh), 00)
AsianStartTime = timestamp(Timezone, year, month, dayofmonth,
SeshStartHour(ASIA2sesh), SeshStartMins(ASIA2sesh), 00)
AsianEndTime = timestamp(Timezone, year, month, dayofmonth,
SeshEndHour(ASIA2sesh), SeshEndMins(ASIA2sesh), 00)

FreeStartTime = timestamp(Timezone, year, month, dayofmonth,


SeshStartHour(FreeSesh), SeshStartMins(FreeSesh), 00)
FreeEndTime = timestamp(Timezone, year, month, dayofmonth,
SeshEndHour(FreeSesh), SeshEndMins(FreeSesh), 00)

MidnightOpenTime = timestamp(Timezone, year, month, dayofmonth, 0, 0, 00)


CLEANUPTIME = timestamp(Timezone, year, month, dayofmonth, 0, 0, 00) -
16200000
LondonOpenTime = timestamp(Timezone, year, month, dayofmonth, 3, 0, 00)
NYOpenTime = timestamp(Timezone, year, month, dayofmonth, 8, 30, 00)
EquitiesOpenTime = timestamp(Timezone, year, month, dayofmonth, 9, 30, 00)
AfternoonOpenTime = timestamp(Timezone, year, month, dayofmonth, 13, 30, 00)
tMidnight = time("1", "0000-0001:1234567", Timezone)

// Cleanup - Remove old drawing objects


Cleanup(days) =>
// Delete old drawing objects
// One day is 86400000 milliseconds
removal_timestamp = (CLEANUPTIME) - (days * 86400000) // Remove every
drawing object older than the start of the Today's Midnight
a_allLines = line.all
a_allLabels = label.all
a_allboxes = box.all
// Remove old lines
if array.size(a_allLines) > 0
for i = 0 to array.size(a_allLines) - 1
line_x2 = line.get_x2(array.get(a_allLines, i))
if line_x2 < (removal_timestamp)
line.delete(array.get(a_allLines, i))
// Remove old labels
if array.size(a_allLabels) > 0
for i = 0 to array.size(a_allLabels) - 1
label_x = label.get_x(array.get(a_allLabels, i))
if label_x < removal_timestamp
label.delete(array.get(a_allLabels, i))
// Remove old boxes
if array.size(a_allboxes) > 0
for i = 0 to array.size(a_allboxes) - 1
box_x = box.get_right(array.get(a_allboxes, i))
if box_x < (removal_timestamp - 86400000)
box.delete(array.get(a_allboxes, i))
// End of Cleanup function

// Terminus Function
Terminus(Terminus_Inp)=>
if Terminus_Inp == "Terminus @ Current Time"
_return = timenow
else if Terminus_Inp == "Terminus @ Current Time +15min"
_return = timenow + 900000
else if Terminus_Inp == "Terminus @ Current Time +30min"
_return = timenow + 1800000
else if Terminus_Inp == "Terminus @ Current Time +45min"
_return = timenow + 2700000
else if Terminus_Inp == "Terminus @ Current Time +1hr"
_return = timenow + 3600000
else if Terminus_Inp == "Terminus @ Current Time +2hr"
_return = timenow + 7200000
else
_return = timenow + 10800000

// Linestyle Function
MNOPLS = Midnight_Open_LS=="Solid" ? line.style_solid :
Midnight_Open_LS == "Dotted" ? line.style_dotted : line.style_dashed
LNOPLS = london_Open_LS=="Solid" ? line.style_solid :
london_Open_LS == "Dotted" ? line.style_dotted : line.style_dashed
NWYOPLS = NY_Open_LS=="Solid" ? line.style_solid : NY_Open_LS ==
"Dotted" ? line.style_dotted : line.style_dashed
EQOPLS = Equities_Open_LS=="Solid" ? line.style_solid :
Equities_Open_LS == "Dotted" ? line.style_dotted : line.style_dashed

MOPLSS = MOPLS=="Solid" ? line.style_solid : MOPLS == "Dotted" ?


line.style_dotted : line.style_dashed
NYOPLSS = NYOPLS=="Solid" ? line.style_solid : NYOPLS == "Dotted" ?
line.style_dotted : line.style_dashed
EOPLSS = EOPLS=="Solid" ? line.style_solid : EOPLS == "Dotted" ?
line.style_dotted : line.style_dashed
AFTOPLSS = AFTOPLS=="Solid" ? line.style_solid : AFTOPLS == "Dotted"
? line.style_dotted : line.style_dashed

WeekOpenLS = WOLS=="Solid" ? line.style_solid : WOLS == "Dotted" ?


line.style_dotted : line.style_dashed
MonthOpenLS = MOLS=="Solid" ? line.style_solid : MOLS == "Dotted" ?
line.style_dotted : line.style_dashed

// Linewidth Function
MOPLW = Midnight_Open_LW=="1px" ? 1 : Midnight_Open_LW == "2px" ?
2 : Midnight_Open_LW == "3px" ? 3 : Midnight_Open_LW == "4px" ? 4 : 5
LOPLW = London_Open_LW=="1px" ? 1 : London_Open_LW == "2px" ? 2 :
London_Open_LW == "3px" ? 3 : London_Open_LW == "4px" ? 4 : 5
NYOPLW = NY_Open_LW=="1px" ? 1 : NY_Open_LW == "2px" ? 2 :
NY_Open_LW == "3px" ? 3 : NY_Open_LW == "4px" ? 4 : 5
EOPLW = Equities_Open_LW=="1px" ? 1 : Equities_Open_LW == "2px" ?
2 : Equities_Open_LW == "3px" ? 3 : Equities_Open_LW == "4px" ? 4 : 5

MOPPLW = i_MOPLW=="1px" ? 1 : i_MOPLW == "2px" ? 2 : i_MOPLW ==


"3px" ? 3 : i_MOPLW == "4px" ? 4 : 5
NYOPPLW = i_NYOPLW=="1px" ? 1 : i_NYOPLW == "2px" ? 2 : i_NYOPLW ==
"3px" ? 3 : i_NYOPLW == "4px" ? 4 : 5
EOPPLW = i_EOPLW=="1px" ? 1 : i_EOPLW == "2px" ? 2 : i_EOPLW ==
"3px" ? 3 : i_EOPLW == "4px" ? 4 : 5
AFTOPLW = i_AFTOPLW=="1px" ? 1 : i_AFTOPLW == "2px" ? 2 : i_AFTOPLW
== "3px" ? 3 : i_AFTOPLW == "4px" ? 4 : 5

WEEKOPPLW = i_WOPLW=="1px" ? 1 : i_WOPLW == "2px" ? 2 : i_WOPLW ==


"3px" ? 3 : i_WOPLW == "4px" ? 4 : 5
MONTHOPPLW = i_MONPLW=="1px" ? 1 : i_MONPLW == "2px" ? 2 : i_MONPLW ==
"3px" ? 3 : i_MONPLW == "4px" ? 4 : 5

// Label Size Function


LabelSize =LabelSizeInput=="Auto" ? size.auto :
LabelSizeInput=="Tiny" ? size.tiny : LabelSizeInput=="Small" ? size.small :
LabelSizeInput=="Normal" ? size.normal : LabelSizeInput=="Large" ? size.large :
size.huge

// Creating Variables
var London_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,
y2=close, color=LSVLC, width=1)
var London_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,
y2=close, color=LSVLC, width=1)
var LondonFill = linefill.new(London_Start_Vline, London_End_Vline, LSFC)

var NY_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,


y2=close, color=NYSVLC, width=1)
var NY_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,
y2=close, color=NYSVLC, width=1)
var NYFill = linefill.new(NY_Start_Vline, NY_End_Vline, NYSFC)

var LC_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,


y2=close, color=NYSVLC, width=1)
var LC_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,
y2=close, color=NYSVLC, width=1)
var LCFill = linefill.new(LC_Start_Vline, LC_End_Vline, LCSFC)

var PM_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,


y2=close, color=PMSVLC, width=1)
var PM_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,
y2=close, color=PMSVLC, width=1)
var PMFill = linefill.new(PM_Start_Vline, PM_End_Vline, PMSFC)
var Asian_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,
y2=close, color=ASVLC, width=1)
var Asian_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,
y2=close, color=ASVLC, width=1)
var AsianFill = linefill.new(Asian_Start_Vline, Asian_End_Vline, ASFC)

var Free_Start_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,


y2=close, color=ASVLC, width=1)
var Free_End_Vline = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,
y2=close, color=ASVLC, width=1)
var FreeFill = linefill.new(Free_Start_Vline, Free_End_Vline, FSFC)

var Midnight_Open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,


y2=close, color=MOPColor, width=1)
var London_Open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,
y2=close, color=LOPColor, width=1)
var NY_Open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,
y2=close, color=NYOPColor, width=1)
var Equities_Open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time,
y2=close, color=EOPColor, width=1)

// When a New Day Starts, Start Drawing all lines


if newDay and dayofweek != dayofweek.sunday
// London Session
if (ShowLondon and DOM)
if ShowTSO
line.delete(London_Start_Vline[1])
line.delete(London_End_Vline[1])
linefill.delete(LondonFill[1])
London_Start_Vline := vline(LondonStartTime,transparentcol,
line.style_solid, 1)
London_End_Vline := vline(LondonEndTime, transparentcol,
line.style_solid, 1)
if ShowSFill
LondonFill := linefill.new(London_Start_Vline, London_End_Vline, LSFC)

// New York Session


if (ShowNY and DOM)
if ShowTSO
line.delete(NY_Start_Vline[1])
line.delete(NY_End_Vline[1])
linefill.delete(NYFill[1])
NY_Start_Vline := vline(NYStartTime, transparentcol, line.style_solid, 1)
NY_End_Vline := vline(NYEndTime, transparentcol, line.style_solid, 1)
if ShowSFill
NYFill := linefill.new(NY_Start_Vline, NY_End_Vline, NYSFC)

// London Close
if (ShowLC and DOM)
if ShowTSO
line.delete(LC_End_Vline[1])
linefill.delete(LCFill[1])
LC_Start_Vline := vline(LCStartTime, transparentcol, line.style_solid, 1)
LC_End_Vline := vline(LCEndTime, transparentcol, line.style_solid, 1)
if ShowSFill
LCFill := linefill.new(LC_Start_Vline, LC_End_Vline, LCSFC)
// PM Session
if (ShowPM and DOM)
if ShowTSO
line.delete(PM_Start_Vline[1])
line.delete(PM_End_Vline[1])
linefill.delete(PMFill[1])
PM_Start_Vline := vline(PMStartTime, transparentcol, line.style_solid, 1)
PM_End_Vline := vline(PMEndTime, transparentcol, line.style_solid, 1)
if ShowSFill
PMFill := linefill.new(PM_Start_Vline, PM_End_Vline, PMSFC)

// Asian Session
if (ShowAsian and DOM)
if ShowTSO
line.delete(Asian_Start_Vline[1])
line.delete(Asian_End_Vline[1])
linefill.delete(AsianFill[1])
Asian_Start_Vline := vline(AsianStartTime, transparentcol,
line.style_solid, 1)
Asian_End_Vline := vline(AsianEndTime, transparentcol, line.style_solid,
1)
// if dayofweek == dayofweek.friday
// // line.delete(Asian_Start_Vline)
// // line.delete(Asian_End_Vline)
// Asian_Start_Vline := vline(MidnightOpenTime+244800000,
transparentcol, line.style_solid, 1)
// Asian_End_Vline := vline(MidnightOpenTime+259200000,
transparentcol, line.style_solid, 1)
if ShowSFill
AsianFill := linefill.new(Asian_Start_Vline, Asian_End_Vline, ASFC)

// Free Session
if (ShowFreeSesh and DOM)
if ShowTSO
line.delete(Free_Start_Vline[1])
line.delete(Free_End_Vline[1])
linefill.delete(FreeFill[1])
Free_Start_Vline := vline(FreeStartTime, transparentcol, line.style_solid,
1)
Free_End_Vline := vline(FreeEndTime, transparentcol, line.style_solid, 1)
if ShowSFill
FreeFill := linefill.new(Free_Start_Vline, Free_End_Vline, FSFC)

// Midnight Opening Price


if (ShowMOP and DOM)
if MOLHist == false
line.delete(Midnight_Open[1])
Midnight_Open := vline(MidnightOpenTime, MOPColor, MNOPLS, MOPLW)

// London Opening Price


if (ShowLOP and DOM)
if ShowTSO
line.delete(London_Open[1])
London_Open := vline(LondonOpenTime, LOPColor, LNOPLS, LOPLW)

// New York Opening Price


if (ShowNYOP and DOM)
if ShowTSO
line.delete(NY_Open[1])
NY_Open := vline(NYOpenTime, NYOPColor, NWYOPLS, NYOPLW)

// Equities Opening Price


if (ShowEOP and DOM)
if ShowTSO
line.delete(Equities_Open[1])
Equities_Open := vline(EquitiesOpenTime, EOPColor, EQOPLS, EOPLW)

// Variables
var label MOPLB = na
var line MOPLN = na
var label NYOPLB = na
var line NYOPLN = na
var label EOPLB = na
var line EOPLN = na
var line AFTLN = na
var label AFTLB = na

// New York Midnight Open Price line


var openMidnight = 0.0
if tMidnight
if not tMidnight[1]
openMidnight := open
else
openMidnight := math.max(open, openMidnight)

if (ShowMOPP and (openMidnight != openMidnight[1]) and DOM and


barstate.isconfirmed)
label.delete(MOPLB[1])
if ShowMOPL == false
line.delete(MOPLN[1])
MOPLN := line.new(x1=tMidnight, y1=openMidnight, x2=tMidnight+86400000,
xloc=xloc.bar_time, y2=openMidnight, color=MOPColP, style=MOPLSS, width=MOPPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(MOPLN, tMidnight+259200000)
if ShowLabel
MOPLB := label.new(x=tMidnight+86400000, y=openMidnight,
xloc=xloc.bar_time, color=LabelColor, textcolor=MOPColP,
style=label.style_label_left, size=LabelSize, tooltip="Midnight Opening Price")
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(MOPLB, tMidnight+259200000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(MOPLB, " 00:00 | " + str.tostring(open))
else
label.set_text(MOPLB, " 00:00 ")
label.set_tooltip(MOPLB, "Midnight Opening Price")
else
if ShowPrices == true
label.set_text(MOPLB, " Midnight Opening Price | " +
str.tostring(open))
else
label.set_text(MOPLB, " Midnight Opening Price ")
label.set_tooltip(MOPLB, "")
label.set_textcolor(MOPLB, LabelTextColor)
label.set_size(MOPLB,LabelSize)
if time > PMEndTime and time < (MidnightOpenTime + 86400000)
line.delete(MOPLN[0])
if Terminusinp != "Terminus @ Next Midnight" and ShowMOPL == false
line.set_x2(MOPLN, Terminus(Terminusinp))
label.set_x(MOPLB, Terminus(Terminusinp))

// New York Opening Price Line


if (ShowNYOPP and (time == NYOpenTime) and DOM)
label.delete(NYOPLB[1])
if ShowPrev == false
line.delete(NYOPLN[1])
NYOPLN := line.new(x1=NYOpenTime, y1=open, x2=NYOpenTime+55800000,
xloc=xloc.bar_time, y2=open, color=NYOPColP, style=NYOPLSS, width=NYOPPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(NYOPLN, NYOpenTime+228600000)
if ShowLabel
NYOPLB := label.new(x=NYOpenTime+55800000, y=open, xloc=xloc.bar_time,
color=LabelColor, textcolor=NYOPColP, style=label.style_label_left, size=LabelSize,
tooltip="New York Opening Price")
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(NYOPLB, NYOpenTime+228600000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(NYOPLB, " 08:30 | " + str.tostring(open))
else
label.set_text(NYOPLB, " 08:30 ")
label.set_tooltip(NYOPLB, "New York Opening Price")
else
if ShowPrices == true
label.set_text(NYOPLB, " New York Opening Price | " +
str.tostring(open))
else
label.set_text(NYOPLB, " New York Opening Price ")
label.set_tooltip(NYOPLB, "")
label.set_textcolor(NYOPLB, LabelTextColor)
label.set_size(NYOPLB,LabelSize)
if Terminusinp != "Terminus @ Next Midnight" and ShowPrev == false
line.set_x2(NYOPLN, Terminus(Terminusinp))
label.set_x(NYOPLB, Terminus(Terminusinp))

// Equities Opening Price Line


if (ShowEOPP and (time == EquitiesOpenTime) and DOM)
label.delete(EOPLB[1])
if ShowPrev == false
line.delete(EOPLN[1])
EOPLN := line.new(x1=EquitiesOpenTime, y1=open, x2=EquitiesOpenTime+52200000,
xloc=xloc.bar_time, y2=open, color=EOPColP, style=EOPLSS, width=EOPPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(EOPLN, EquitiesOpenTime+225000000)
if ShowLabel
EOPLB := label.new(x=EquitiesOpenTime+52200000, y=open, xloc=xloc.bar_time,
color=LabelColor, textcolor=EOPColP, style=label.style_label_left, size=LabelSize,
tooltip="Equities Opening Price")
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(EOPLB, EquitiesOpenTime+225000000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(EOPLB, " 09:30 | " + str.tostring(open))
else
label.set_text(EOPLB, " 09:30 ")
label.set_tooltip(EOPLB, "Equities Opening Price")
else
if ShowPrices == true
label.set_text(EOPLB, " Equities Opening Price | " +
str.tostring(open))
else
label.set_text(EOPLB, " Equities Opening Price ")
label.set_tooltip(EOPLB, "")
label.set_textcolor(EOPLB, LabelTextColor)
label.set_size(EOPLB,LabelSize)
if Terminusinp != "Terminus @ Next Midnight" and ShowPrev == false
line.set_x2(EOPLN, Terminus(Terminusinp))
label.set_x(EOPLB, Terminus(Terminusinp))

// Afternoon Opening Price Line


if (ShowAFTPP and (time == AfternoonOpenTime) and DOM)
label.delete(AFTLB[1])
if ShowPrev == false
line.delete(AFTLN[1])
AFTLN := line.new(x1=AfternoonOpenTime, y1=open, x2=EquitiesOpenTime+52200000,
xloc=xloc.bar_time, y2=open, color=AFTOPColP, style=AFTOPLSS, width=AFTOPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(AFTLN, EquitiesOpenTime+225000000)
if ShowLabel
AFTLB := label.new(x=EquitiesOpenTime+52200000, y=open, xloc=xloc.bar_time,
color=LabelColor, textcolor=AFTOPColP, style=label.style_label_left,
size=LabelSize, tooltip="Equities Opening Price")
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(AFTLB, EquitiesOpenTime+225000000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(AFTLB, " 01:30 | " + str.tostring(open))
else
label.set_text(AFTLB, " 01:30 ")
label.set_tooltip(AFTLB, " Afternoon Opening Price")
else
if ShowPrices == true
label.set_text(AFTLB, " Afternoon Opening Price | " +
str.tostring(open))
else
label.set_text(AFTLB, " Afternoon Opening Price ")
label.set_tooltip(AFTLB, "")
label.set_textcolor(AFTLB, LabelTextColor)
label.set_size(AFTLB,LabelSize)
if Terminusinp != "Terminus @ Next Midnight" and ShowPrev == false
line.set_x2(AFTLN, Terminus(Terminusinp))
label.set_x(AFTLB, Terminus(Terminusinp))

// HTF Variables
var Weekly_open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close,
color=i_WeekOpenCol, style=WeekOpenLS, width=1)
var Weekly_openlbl = label.new(x=na, y=na, xloc=xloc.bar_time, color=LabelColor,
textcolor=LabelTextColor, style=label.style_label_left, size=LabelSize)
var WeeklyOpenTime = time

var Monthly_open = line.new(x1=na, y1=na, x2=na, xloc=xloc.bar_time, y2=close,


color=i_MonthOpenCol, style=MonthOpenLS, width=1)
var Monthly_openlbl = label.new(x=na, y=na, xloc=xloc.bar_time, color=LabelColor,
textcolor=LabelTextColor, style=label.style_label_left, size=LabelSize)
var MonthlyOpenTime = time

// Get HTF Price levels


WeeklyOpen = request.security(syminfo.tickerid, "W", open, lookahead =
barmerge.lookahead_on)
MonthlyOpen = request.security(syminfo.tickerid, "M", open, lookahead =
barmerge.lookahead_on)

// Weekly Open
if newWeek
WeeklyOpenTime := time

if ShowWeekOpen and newDay and Last4Weeks


label.delete(Weekly_openlbl[1])
line.delete(Weekly_open[1])
// if ShowPrev == false
// line.delete(Weekly_open[1])
Weekly_open:= line.new(x1=WeeklyOpenTime-25200000, y1=WeeklyOpen,
x2=EquitiesOpenTime+52200000, xloc=xloc.bar_time, y2=WeeklyOpen,
color=i_WeekOpenCol, style=WeekOpenLS, width=WEEKOPPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(Weekly_open, EquitiesOpenTime+225000000)
if ShowLabel
Weekly_openlbl := label.new(x=EquitiesOpenTime+52200000, y=WeeklyOpen,
xloc=xloc.bar_time, color=LabelColor, textcolor=LabelTextColor,
style=label.style_label_left, size=LabelSize, tooltip="Weekly Open: " +
str.tostring(WeeklyOpen))
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(Weekly_openlbl, EquitiesOpenTime+225000000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(Weekly_openlbl," W.O. | " +
str.tostring(WeeklyOpen))
else
label.set_text(Weekly_openlbl," W.O. ")
label.set_tooltip(Weekly_openlbl, " Weekly Opening Price ")
else
if ShowPrices == true
label.set_text(Weekly_openlbl," Weekly Open | " +
str.tostring(WeeklyOpen))
else
label.set_text(Weekly_openlbl," Weekly Open ")
label.set_tooltip(Weekly_openlbl, "")
label.set_textcolor(Weekly_openlbl, LabelTextColor)
label.set_size(Weekly_openlbl, LabelSize)
if timeframe.multiplier > 60
line.set_x2(Weekly_open, AsianEndTime + 232000000)
label.set_x(Weekly_openlbl, AsianEndTime + 232000000)
if timeframe.period == "D"
line.set_x2(Weekly_open, AsianEndTime + 832000000)
label.set_x(Weekly_openlbl, AsianEndTime + 832000000)
if timeframe.period == "M"
line.delete(Weekly_open)
label.delete(Weekly_openlbl)
if Terminusinp != "Terminus @ Next Midnight" and DOM
line.set_x2(Weekly_open, Terminus(Terminusinp))
label.set_x(Weekly_openlbl, Terminus(Terminusinp))

// Monthly Open
if newMonth
MonthlyOpenTime := time

if showMonthOpen and newDay


line.delete(Monthly_open[1])
label.delete(Monthly_openlbl[1])
Monthly_open:= line.new(x1=MonthlyOpenTime, y1=MonthlyOpen, x2=AsianEndTime,
xloc=xloc.bar_time, y2=MonthlyOpen, color=i_MonthOpenCol, style=MonthOpenLS,
width=MONTHOPPLW)
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
line.set_x2(Monthly_open, EquitiesOpenTime+225000000)
if ShowLabel
Monthly_openlbl := label.new(x=AsianEndTime, y=MonthlyOpen,
xloc=xloc.bar_time, color=LabelColor, textcolor=LabelTextColor,
style=label.style_label_left, size=LabelSize, tooltip="Monthly Open: " +
str.tostring(MonthlyOpen))
if dayofweek == dayofweek.friday and syminfo.type != "crypto"
label.set_x(Monthly_openlbl, EquitiesOpenTime+225000000)
if ShowLabelText
if SFistrue
if ShowPrices == true
label.set_text(Monthly_openlbl," M.O. | " +
str.tostring(MonthlyOpen))
else
label.set_text(Monthly_openlbl," M.O. ")
label.set_tooltip(Monthly_openlbl, " Monthly Opening Price ")
else
if ShowPrices == true
label.set_text(Monthly_openlbl, " Monthly Open | " +
str.tostring(MonthlyOpen))
else
label.set_text(Monthly_openlbl, " Monthly Open ")
label.set_tooltip(Monthly_openlbl, "")
label.set_textcolor(Monthly_openlbl, LabelTextColor)
label.set_size(Monthly_openlbl, LabelSize)
if timeframe.multiplier > 60
line.set_x2(Monthly_open, AsianEndTime + 232000000)
label.set_x(Monthly_openlbl, AsianEndTime + 232000000)
if timeframe.period == "D"
line.set_x2(Monthly_open, AsianEndTime + 832000000)
label.set_x(Monthly_openlbl, AsianEndTime + 832000000)
if timeframe.period == "W"
line.set_x2(Monthly_open, AsianEndTime + 2592000000)
label.set_x(Monthly_openlbl, AsianEndTime + 2592000000)
if timeframe.period == "M"
line.delete(Monthly_open)
label.delete(Monthly_openlbl)
if Terminusinp != "Terminus @ Next Midnight" and DOM
line.set_x2(Monthly_open, Terminus(Terminusinp))
label.set_x(Monthly_openlbl, Terminus(Terminusinp))

// CBDR Stuff
var float cbdr_hi = na
var float cbdr_lo = na
var float cbdr_diff = na
var box cbdrbox = na
var line cbdr_hi_line = na
var line cbdr_lo_line = na
var line dev01negline = na
var line dev02negline = na
var line dev03negline = na
var line dev04negline = na
var line dev01posline = na
var line dev02posline = na
var line dev03posline = na
var line dev04posline = na

if SessionBegins(CBDR) and DOM


cbdr_hi := high
cbdr_lo := low
cbdr_diff := cbdr_hi - cbdr_lo
if ShowTSO
box.delete(cbdrbox[1])
line.delete(dev01posline[1])
line.delete(dev01negline[1])
line.delete(dev02posline[1])
line.delete(dev02negline[1])
line.delete(dev03posline[1])
line.delete(dev03negline[1])
line.delete(dev04posline[1])
line.delete(dev04negline[1])
if ShowCBDR
cbdrbox := box.new(cbdrOpenTime, cbdr_hi, cbdrEndTime, cbdr_lo,
color.new(CBDRBoxCol,90), 1, line.style_solid, extend.none, xloc.bar_time,
color.new(CBDRBoxCol,90), txt0, size.auto, color.new(box_text_cbdr_col,80),
text_wrap=text.wrap_auto)
if dayofweek == dayofweek.friday
box.set_right(cbdrbox, cbdrOpenTime+187200000)
line.set_x2(cbdr_hi_line, cbdrOpenTime+187200000)
line.set_x2(cbdr_lo_line, cbdrOpenTime+187200000)
if box_text_cbdr == false
box.set_text(cbdrbox, "")
if ShowDev and ShowCBDR and bool_cbdr_dev
for i = 1 to DevCount by 1
if i == 1
dev01posline := line.new(cbdrOpenTime, cbdr_hi + cbdr_diff * i,
cbdrEndTime, cbdr_hi + cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev01negline := line.new(cbdrOpenTime, cbdr_hi - cbdr_diff * i,
cbdrEndTime, cbdr_lo - cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev01posline, cbdrOpenTime+187200000)
line.set_x2(dev01negline, cbdrOpenTime+187200000)
if i == 2
dev02posline := line.new(cbdrOpenTime, cbdr_hi + cbdr_diff * i,
cbdrEndTime, cbdr_lo + cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev02negline := line.new(cbdrOpenTime, cbdr_hi - cbdr_diff * i,
cbdrEndTime, cbdr_lo - cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev02posline, cbdrOpenTime+187200000)
line.set_x2(dev02negline, cbdrOpenTime+187200000)
if i == 3
dev03posline := line.new(cbdrOpenTime, cbdr_hi + cbdr_diff * i,
cbdrEndTime, cbdr_lo + cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev03negline := line.new(cbdrOpenTime, cbdr_hi - cbdr_diff * i,
cbdrEndTime, cbdr_lo - cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev03posline, cbdrOpenTime+187200000)
line.set_x2(dev03negline, cbdrOpenTime+187200000)
if i == 4
dev04posline := line.new(cbdrOpenTime, cbdr_hi + cbdr_diff * i,
cbdrEndTime, cbdr_lo + cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev04negline := line.new(cbdrOpenTime, cbdr_hi - cbdr_diff * i,
cbdrEndTime, cbdr_lo - cbdr_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev04posline, cbdrOpenTime+187200000)
line.set_x2(dev04negline, cbdrOpenTime+187200000)
else if CBDRTime
cbdr_hi := math.max(high, cbdr_hi)
cbdr_lo := math.min(low, cbdr_lo)
cbdr_diff := cbdr_hi - cbdr_lo
for i = 1 to DevCount by 1
if i == 1 and ShowDev
line.set_y1(dev01posline, cbdr_hi + cbdr_diff * i)
line.set_y2(dev01posline, cbdr_hi + cbdr_diff * i)

line.set_y1(dev01negline, cbdr_lo - cbdr_diff * i)


line.set_y2(dev01negline, cbdr_lo - cbdr_diff * i)
if i == 2 and ShowDev
line.set_y1(dev02posline, cbdr_hi + cbdr_diff * i)
line.set_y2(dev02posline, cbdr_hi + cbdr_diff * i)

line.set_y1(dev02negline, cbdr_lo - cbdr_diff * i)


line.set_y2(dev02negline, cbdr_lo - cbdr_diff * i)
if i == 3 and ShowDev
line.set_y1(dev03posline, cbdr_hi + cbdr_diff * i)
line.set_y2(dev03posline, cbdr_hi + cbdr_diff * i)

line.set_y1(dev03negline, cbdr_lo - cbdr_diff * i)


line.set_y2(dev03negline, cbdr_lo - cbdr_diff * i)
if i == 4 and ShowDev
line.set_y1(dev04posline, cbdr_hi + cbdr_diff * i)
line.set_y2(dev04posline, cbdr_hi + cbdr_diff * i)

line.set_y1(dev04negline, cbdr_lo - cbdr_diff * i)


line.set_y2(dev04negline, cbdr_lo - cbdr_diff * i)
if (cbdr_hi > cbdr_hi[1])
if ShowCBDR
box.set_top(cbdrbox, cbdr_hi)
if (cbdr_lo < cbdr_lo[1])
if ShowCBDR
box.set_bottom(cbdrbox, cbdr_lo)

if DevDirection == "Upside Only"


line.delete(dev01negline)
line.delete(dev02negline)
line.delete(dev03negline)
line.delete(dev04negline)
else if DevDirection == "Downside Only"
line.delete(dev01posline)
line.delete(dev02posline)
line.delete(dev03posline)
line.delete(dev04posline)

// ASIA Stuff
var float asia_hi = na
var float asia_lo = na
var float asia_diff = na
var box asia_box = na
var line asia_hi_line = na
var line asia_lo_line = na
var line dev01negline_asia = na
var line dev02negline_asia = na
var line dev03negline_asia = na
var line dev04negline_asia = na
var line dev01posline_asia = na
var line dev02posline_asia = na
var line dev03posline_asia = na
var line dev04posline_asia = na
if SessionBegins(ASIA) and DOM
asia_hi := high
asia_lo := low
asia_diff := asia_hi - asia_lo
if ShowTSO
box.delete(asia_box[1])
line.delete(dev01posline_asia[1])
line.delete(dev01negline_asia[1])
line.delete(dev02posline_asia[1])
line.delete(dev02negline_asia[1])
line.delete(dev03posline_asia[1])
line.delete(dev03negline_asia[1])
line.delete(dev04posline_asia[1])
line.delete(dev04negline_asia[1])
if ShowASIA
asia_box := box.new(asiaOpenTime, asia_hi, asiaEndTime, asia_lo,
color.new(ASIABoxCol,90), 1, line.style_solid, extend.none, xloc.bar_time,
color.new(ASIABoxCol,90), txt1, size.auto, color.new(box_text_asia_col,80),
text_wrap=text.wrap_auto)
if box_text_asia == false
box.set_text(asia_box, "")
if ShowDev and ShowASIA and bool_asia_dev
for i = 1 to DevCount by 1
if i == 1
dev01posline_asia := line.new(asiaOpenTime, asia_hi + asia_diff *
i, asiaEndTime, asia_hi + asia_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev01negline_asia := line.new(asiaOpenTime, asia_hi - asia_diff *
i, asiaEndTime, asia_lo - asia_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
if i == 2
dev02posline_asia := line.new(asiaOpenTime, asia_hi + asia_diff *
i, asiaEndTime, asia_lo + asia_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev02negline_asia := line.new(asiaOpenTime, asia_hi - asia_diff *
i, asiaEndTime, asia_lo - asia_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
if i == 3
dev03posline_asia := line.new(asiaOpenTime, asia_hi + asia_diff *
i, asiaEndTime, asia_lo + asia_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev03negline_asia := line.new(asiaOpenTime, asia_hi - asia_diff *
i, asiaEndTime, asia_lo - asia_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
if i == 4
dev04posline_asia := line.new(asiaOpenTime, asia_hi + asia_diff *
i, asiaEndTime, asia_lo + asia_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev04negline_asia := line.new(asiaOpenTime, asia_hi - asia_diff *
i, asiaEndTime, asia_lo - asia_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
else if ASIATime
asia_hi := math.max(high, asia_hi)
asia_lo := math.min(low, asia_lo)
asia_diff := asia_hi - asia_lo
for i = 1 to DevCount by 1
if i == 1 and ShowDev
line.set_y1(dev01posline_asia, asia_hi + asia_diff * i)
line.set_y2(dev01posline_asia, asia_hi + asia_diff * i)

line.set_y1(dev01negline_asia, asia_lo - asia_diff * i)


line.set_y2(dev01negline_asia, asia_lo - asia_diff * i)
if i == 2 and ShowDev
line.set_y1(dev02posline_asia, asia_hi + asia_diff * i)
line.set_y2(dev02posline_asia, asia_hi + asia_diff * i)

line.set_y1(dev02negline_asia, asia_lo - asia_diff * i)


line.set_y2(dev02negline_asia, asia_lo - asia_diff * i)
if i == 3 and ShowDev
line.set_y1(dev03posline_asia, asia_hi + asia_diff * i)
line.set_y2(dev03posline_asia, asia_hi + asia_diff * i)

line.set_y1(dev03negline_asia, asia_lo - asia_diff * i)


line.set_y2(dev03negline_asia, asia_lo - asia_diff * i)
if i == 4 and ShowDev
line.set_y1(dev04posline_asia, asia_hi + asia_diff * i)
line.set_y2(dev04posline_asia, asia_hi + asia_diff * i)

line.set_y1(dev04negline_asia, asia_lo - asia_diff * i)


line.set_y2(dev04negline_asia, asia_lo - asia_diff * i)
if (asia_hi > asia_hi[1])
box.set_top(asia_box, asia_hi)
if (asia_lo < asia_lo[1])
box.set_bottom(asia_box, asia_lo)

if DevDirection == "Upside Only"


line.delete(dev01negline_asia)
line.delete(dev02negline_asia)
line.delete(dev03negline_asia)
line.delete(dev04negline_asia)
else if DevDirection == "Downside Only"
line.delete(dev01posline_asia)
line.delete(dev02posline_asia)
line.delete(dev03posline_asia)
line.delete(dev04posline_asia)

// FLOUT Stuff
var float flout_hi = na
var float flout_lo = na
var float flout_diff = na
var box floutbox = na
var line flout_hi_line = na
var line flout_lo_line = na
var line dev01negline_flout = na
var line dev02negline_flout = na
var line dev03negline_flout = na
var line dev04negline_flout = na
var line dev01posline_flout = na
var line dev02posline_flout = na
var line dev03posline_flout = na
var line dev04posline_flout = na
if SessionBegins(FLOUT) and DOM
flout_hi := high
flout_lo := low
flout_diff := flout_hi - flout_lo
if ShowTSO
box.delete(floutbox[1])
line.delete(dev01posline_flout[1])
line.delete(dev01negline_flout[1])
line.delete(dev02posline_flout[1])
line.delete(dev02negline_flout[1])
line.delete(dev03posline_flout[1])
line.delete(dev03negline_flout[1])
line.delete(dev04posline_flout[1])
line.delete(dev04negline_flout[1])
if ShowFLOUT
floutbox := box.new(floutOpenTime, flout_hi, floutEndTime, flout_lo,
color.new(FLOUTBoxCol,90), 1, line.style_solid, extend.none, xloc.bar_time,
color.new(FLOUTBoxCol,90), txt7, size.auto, color.new(box_text_flout_col,80),
text_wrap=text.wrap_auto)
if dayofweek == dayofweek.friday
box.set_right(floutbox, floutOpenTime+201600000)
line.set_x2(flout_hi_line, floutOpenTime+201600000)
line.set_x2(flout_lo_line, floutOpenTime+201600000)
if box_text_cbdr == false
box.set_text(floutbox, "")
if ShowDev and ShowFLOUT and bool_flout_dev
for i = 0.5 to DevCount by 0.5
if i == 0.5
dev01posline_flout := line.new(floutOpenTime, flout_hi + flout_diff
* i, floutEndTime, flout_hi + flout_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev01negline_flout := line.new(floutOpenTime, flout_hi - flout_diff
* i, floutEndTime, flout_lo - flout_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev01posline_flout, floutOpenTime+201600000)
line.set_x2(dev01negline_flout, floutOpenTime+201600000)
if i == 1
dev02posline_flout := line.new(floutOpenTime, flout_hi + flout_diff
* i, floutEndTime, flout_lo + flout_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev02negline_flout := line.new(floutOpenTime, flout_hi - flout_diff
* i, floutEndTime, flout_lo - flout_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev02posline_flout, floutOpenTime+201600000)
line.set_x2(dev02negline_flout, floutOpenTime+201600000)
if i == 1.5
dev03posline_flout := line.new(floutOpenTime, flout_hi + flout_diff
* i, floutEndTime, flout_lo + flout_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev03negline_flout := line.new(floutOpenTime, flout_hi - flout_diff
* i, floutEndTime, flout_lo - flout_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev03posline_flout, floutOpenTime+201600000)
line.set_x2(dev03negline_flout, floutOpenTime+201600000)
if i == 2
dev04posline_flout := line.new(floutOpenTime, flout_hi + flout_diff
* i, floutEndTime, flout_lo + flout_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
dev04negline_flout := line.new(floutOpenTime, flout_hi - flout_diff
* i, floutEndTime, flout_lo - flout_diff * i, xloc=xloc.bar_time, color=DevLNCol,
style=DEVLSS, width=DEVLW)
if dayofweek == dayofweek.friday
line.set_x2(dev04posline_flout, floutOpenTime+201600000)
line.set_x2(dev04negline_flout, floutOpenTime+201600000)
else if FLOUTTime
flout_hi := math.max(high, flout_hi)
flout_lo := math.min(low, flout_lo)
flout_diff := flout_hi - flout_lo
for i = 0.5 to DevCount by 0.5
if i == 0.5 and ShowDev
line.set_y1(dev01posline_flout, flout_hi + flout_diff * i)
line.set_y2(dev01posline_flout, flout_hi + flout_diff * i)

line.set_y1(dev01negline_flout, flout_lo - flout_diff * i)


line.set_y2(dev01negline_flout, flout_lo - flout_diff * i)
if i == 1 and ShowDev
line.set_y1(dev02posline_flout, flout_hi + flout_diff * i)
line.set_y2(dev02posline_flout, flout_hi + flout_diff * i)

line.set_y1(dev02negline_flout, flout_lo - flout_diff * i)


line.set_y2(dev02negline_flout, flout_lo - flout_diff * i)
if i == 1.5 and ShowDev
line.set_y1(dev03posline_flout, flout_hi + flout_diff * i)
line.set_y2(dev03posline_flout, flout_hi + flout_diff * i)

line.set_y1(dev03negline_flout, flout_lo - flout_diff * i)


line.set_y2(dev03negline_flout, flout_lo - flout_diff * i)
if i == 2 and ShowDev
line.set_y1(dev04posline_flout, flout_hi + flout_diff * i)
line.set_y2(dev04posline_flout, flout_hi + flout_diff * i)

line.set_y1(dev04negline_flout, flout_lo - flout_diff * i)


line.set_y2(dev04negline_flout, flout_lo - flout_diff * i)
if (flout_hi > flout_hi[1])
box.set_top(floutbox, flout_hi)
if (flout_lo < flout_lo[1])
box.set_bottom(floutbox, flout_lo)
if DevDirection == "Upside Only"
line.delete(dev01negline_flout)
line.delete(dev02negline_flout)
line.delete(dev03negline_flout)
line.delete(dev04negline_flout)
else if DevDirection == "Downside Only"
line.delete(dev01posline_flout)
line.delete(dev02posline_flout)
line.delete(dev03posline_flout)
line.delete(dev04posline_flout)

// Start of Table
cbdrpipc = toWhole(cbdr_diff)
asiapipc = toWhole(asia_diff)
var color cbdr_cellt_col = na
var color asia_cellt_col = na
var color L_profile_col = na

var color comp_green = color.new(#1cac78,0)


var color comp_red = color.new(#ff4040,0)
var color comp_gray = color.new(#808080,0)
var L_Profile = ""

if cbdrpipc > 15 and cbdrpipc < 40


cbdr_cellt_col := color.new(#1cac78,0) // Green
else
cbdr_cellt_col := color.new(#ff4040,0) // Red

if asiapipc >= 20 and asiapipc <= 40


asia_cellt_col := color.new(#1cac78,0) // Green
else
asia_cellt_col := color.new(#ff4040,0) // Red

if cbdrpipc > 15 and cbdrpipc < 40


L_Profile := "CBDR"
L_profile_col := Tab1txtCol
else if asiapipc >= 20 and asiapipc <= 40
L_Profile := "ASIA"
L_profile_col := Tab1txtCol
else
L_Profile := "FLOUT"
L_profile_col := Tab1txtCol

if BarInSession(midsesh) and Auto_Select == true and syminfo.type == "forex"


if cbdrpipc > 15 and cbdrpipc < 40
// ASIA
box.delete(asia_box)
line.delete(dev01posline_asia)
line.delete(dev01negline_asia)
line.delete(dev02posline_asia)
line.delete(dev02negline_asia)
line.delete(dev03posline_asia)
line.delete(dev03negline_asia)
line.delete(dev04posline_asia)
line.delete(dev04negline_asia)
// FLOUT
box.delete(floutbox)
line.delete(dev01posline_flout)
line.delete(dev01negline_flout)
line.delete(dev02posline_flout)
line.delete(dev02negline_flout)
line.delete(dev03posline_flout)
line.delete(dev03negline_flout)
line.delete(dev04posline_flout)
line.delete(dev04negline_flout)
else if asiapipc >= 20 and asiapipc <= 40
// CBDR
box.delete(cbdrbox)
line.delete(dev01posline)
line.delete(dev01negline)
line.delete(dev02posline)
line.delete(dev02negline)
line.delete(dev03posline)
line.delete(dev03negline)
line.delete(dev04posline)
line.delete(dev04negline)
// FLOUT
box.delete(floutbox)
line.delete(dev01posline_flout)
line.delete(dev01negline_flout)
line.delete(dev02posline_flout)
line.delete(dev02negline_flout)
line.delete(dev03posline_flout)
line.delete(dev03negline_flout)
line.delete(dev04posline_flout)
line.delete(dev04negline_flout)
else
// CBDR
box.delete(cbdrbox)
line.delete(dev01posline)
line.delete(dev01negline)
line.delete(dev02posline)
line.delete(dev02negline)
line.delete(dev03posline)
line.delete(dev03negline)
line.delete(dev04posline)
line.delete(dev04negline)
// ASIA
box.delete(asia_box)
line.delete(dev01posline_asia)
line.delete(dev01negline_asia)
line.delete(dev02posline_asia)
line.delete(dev02negline_asia)
line.delete(dev03posline_asia)
line.delete(dev03negline_asia)
line.delete(dev04posline_asia)
line.delete(dev04negline_asia)

// Table
var table ICTInfo = table.new(tabinp1, 2, 3, border_width=1)

if barstate.islast and syminfo.type == "forex" and Stats and DOM and (dayofweek !=
dayofweek.sunday)
CBDR_cell = "CBDR "
Asia_cell = "Asian Range "
CBDR_cell_pipc = " " + str.tostring(cbdrpipc) + " pips"
ASIA_cell_pipc = " " + str.tostring(asiapipc) + " pips"

if L_Prof == true
table.cell(ICTInfo, 0, 0, text=" Suggested SD ", bgcolor=CellBG,
text_color=Tab1txtCol, text_halign=text.align_left, text_size=size.auto)
table.cell(ICTInfo, 0, 1, text=" Asian Range ", bgcolor=CellBG,
text_color=Tab1txtCol, text_halign=text.align_left, text_size=size.auto)
table.cell(ICTInfo, 0, 2, text=" CBDR ", bgcolor=CellBG, text_color=Tab1txtCol,
text_halign=text.align_left, text_size=size.auto)

if L_Prof == true
table.cell(ICTInfo, 1, 0, text=" "+ L_Profile + " ", bgcolor=CellBG,
text_color=L_profile_col, text_halign=text.align_right, text_size=size.auto)
table.cell(ICTInfo, 1, 1, text=ASIA_cell_pipc, bgcolor=CellBG,
text_color=asia_cellt_col, text_size=size.auto, text_halign=text.align_right)
table.cell(ICTInfo, 1, 2, text=CBDR_cell_pipc, bgcolor=CellBG,
text_color=cbdr_cellt_col, text_size=size.auto, text_halign=text.align_right)

// Color Coding
var color Option1CC = na
var color Option2CC = na
var color Option3CC = na
var color Option4CC = na

if BIASOption1 == "Bullish"
Option1CC := comp_green
else if BIASOption1 == "Bearish"
Option1CC := comp_red
else
Option1CC := Tab2txtCol

if BIASOption2 == "Bullish"
Option2CC := comp_green
else if BIASOption2 == "Bearish"
Option2CC := comp_red
else
Option2CC := Tab2txtCol

if BIASOption3 == "Bullish"
Option3CC := comp_green
else if BIASOption3 == "Bearish"
Option3CC := comp_red
else
Option3CC := Tab2txtCol

if BIASOption4 == "Bullish"
Option4CC := comp_green
else if BIASOption4 == "Bearish"
Option4CC := comp_red
else
Option4CC := Tab2txtCol

var table BIAS_Table = table.new(tabinp2, 2, 20, bgcolor=TableBG2, border_width=1)


if barstate.islast and BIAS_M_Bool
if BIASbool1
table.cell(BIAS_Table, 0, 1, text = txt52, text_color = Tab2txtCol,
text_halign=text.align_left)
table.cell(BIAS_Table, 1, 1, text = BIASOption1, text_size = size.normal,
text_color = Option1CC, text_halign=text.align_right)
if BIASbool2
table.cell(BIAS_Table, 0, 2, text = txt53, text_color = Tab2txtCol,
text_halign=text.align_left)
table.cell(BIAS_Table, 1, 2, text = BIASOption2, text_size = size.normal,
text_color = Option2CC, text_halign=text.align_right)
if BIASbool3
table.cell(BIAS_Table, 0, 3, text = txt54, text_color = Tab2txtCol,
text_halign=text.align_left)
table.cell(BIAS_Table, 1, 3, text = BIASOption3, text_size = size.normal,
text_color = Option3CC, text_halign=text.align_right)
if BIASbool4
table.cell(BIAS_Table, 0, 4, text = txt55, text_color = Tab2txtCol,
text_halign=text.align_left)
table.cell(BIAS_Table, 1, 4, text = BIASOption4, text_size = size.normal,
text_color = Option4CC, text_halign=text.align_right)

var table NOTES_Table = table.new(tabinp3, 1, 20, bgcolor = TableBG2, border_width


= 1)
if barstate.islast and NOTES_M_Bool
table.cell(NOTES_Table, 0,0, text = notes, text_size = size.normal, text_color
= Tab3txtCol, text_halign=text.align_center)

// Day of the Week


txtMon = "M O N"
txtTue = "T U E"
txtWed = "W E D"
txtThu = "T H U"
txtFri = "F R I"
txtSat = "S A T"
txtSun = "S U N"

plotchar(showDOW and DOM and SL4W and Last4Weeks and (not ShowTWO)? hour == DOWTime
and minute == 0 and dayofweek == dayofweek.monday : false, offset=0, char=" ",
text=txtMon , color=color.new(i_DOWCol,100), location = DOWLoc,
textcolor=i_DOWCol, editable=false)
plotchar(showDOW and DOM and SL4W and Last4Weeks and (not ShowTWO)? hour == DOWTime
and minute == 0 and dayofweek == dayofweek.tuesday : false, offset=0, char=" ",
text=txtTue , color=color.new(i_DOWCol,100), location = DOWLoc,
textcolor=i_DOWCol, editable=false)
plotchar(showDOW and DOM and SL4W and Last4Weeks and (not ShowTWO)? hour == DOWTime
and minute == 0 and dayofweek == dayofweek.wednesday : false, offset=0, char=" ",
text=txtWed , color=color.new(i_DOWCol,100), location = DOWLoc,
textcolor=i_DOWCol, editable=false)
plotchar(showDOW and DOM and SL4W and Last4Weeks and (not ShowTWO)? hour == DOWTime
and minute == 0 and dayofweek == dayofweek.thursday : false, offset=0, char=" ",
text=txtThu , color=color.new(i_DOWCol,100), location = DOWLoc,
textcolor=i_DOWCol, editable=false)
plotchar(showDOW and DOM and SL4W and Last4Weeks and (not ShowTWO)? hour == DOWTime
and minute == 0 and dayofweek == dayofweek.friday : false, offset=0, char=" ",
text=txtFri , color=color.new(i_DOWCol,100), location = DOWLoc,
textcolor=i_DOWCol, editable=false)

plotchar(showDOW and DOM and ShowTWO and thisweek? hour == DOWTime and minute == 0
and dayofweek == dayofweek.monday : false, offset=0, char=" ", text=txtMon ,
color=color.new(i_DOWCol,100), location = DOWLoc, textcolor=i_DOWCol,
editable=false)
plotchar(showDOW and DOM and ShowTWO and thisweek? hour == DOWTime and minute == 0
and dayofweek == dayofweek.tuesday : false, offset=0, char=" ", text=txtTue ,
color=color.new(i_DOWCol,100), location = DOWLoc, textcolor=i_DOWCol,
editable=false)
plotchar(showDOW and DOM and ShowTWO and thisweek? hour == DOWTime and minute == 0
and dayofweek == dayofweek.wednesday : false, offset=0, char=" ", text=txtWed ,
color=color.new(i_DOWCol,100), location = DOWLoc, textcolor=i_DOWCol,
editable=false)
plotchar(showDOW and DOM and ShowTWO and thisweek? hour == DOWTime and minute == 0
and dayofweek == dayofweek.thursday : false, offset=0, char=" ", text=txtThu ,
color=color.new(i_DOWCol,100), location = DOWLoc, textcolor=i_DOWCol,
editable=false)
plotchar(showDOW and DOM and ShowTWO and thisweek? hour == DOWTime and minute == 0
and dayofweek == dayofweek.friday : false, offset=0, char=" ", text=txtFri ,
color=color.new(i_DOWCol,100), location = DOWLoc, textcolor=i_DOWCol,
editable=false)

plotchar(showDOW and DOM and (not ShowTWO) and (not SL4W)? hour == DOWTime and
minute == 0 and dayofweek == dayofweek.monday : false, offset=0, char=" ",
text=txtMon , color=color.new(i_DOWCol,100), location = DOWLoc,
textcolor=i_DOWCol, editable=false)
plotchar(showDOW and DOM and (not ShowTWO) and (not SL4W)? hour == DOWTime and
minute == 0 and dayofweek == dayofweek.tuesday : false, offset=0, char=" ",
text=txtTue , color=color.new(i_DOWCol,100), location = DOWLoc,
textcolor=i_DOWCol, editable=false)
plotchar(showDOW and DOM and (not ShowTWO) and (not SL4W)? hour == DOWTime and
minute == 0 and dayofweek == dayofweek.wednesday : false, offset=0, char=" ",
text=txtWed , color=color.new(i_DOWCol,100), location = DOWLoc,
textcolor=i_DOWCol, editable=false)
plotchar(showDOW and DOM and (not ShowTWO) and (not SL4W)? hour == DOWTime and
minute == 0 and dayofweek == dayofweek.thursday : false, offset=0, char=" ",
text=txtThu , color=color.new(i_DOWCol,100), location = DOWLoc,
textcolor=i_DOWCol, editable=false)
plotchar(showDOW and DOM and (not ShowTWO) and (not SL4W)? hour == DOWTime and
minute == 0 and dayofweek == dayofweek.friday : false, offset=0, char=" ",
text=txtFri , color=color.new(i_DOWCol,100), location = DOWLoc,
textcolor=i_DOWCol, editable=false)

// plotshape(ShowLondon? BarInSession(LDNsesh) : false, style = shape.square,


size=size.auto, location =location.bottom, color = LSFC)

var int daycount = 0


var int SL4WC = 0
if SL4W == true
if dayofweek == dayofweek.monday
SL4WC := 0 + 28
if dayofweek == dayofweek.tuesday
SL4WC := 1 + 28
if dayofweek == dayofweek.wednesday
SL4WC := 2 + 28
if dayofweek == dayofweek.thursday
SL4WC := 3 + 28
if dayofweek == dayofweek.friday
SL4WC := 4 + 28
if dayofweek == dayofweek.saturday
SL4WC := 5 + 28
if dayofweek == dayofweek.sunday
SL4WC := 6 + 28

if SL4W
Cleanup(SL4WC)

if ShowTWO
if dayofweek == dayofweek.monday
daycount := 0
if dayofweek == dayofweek.tuesday
daycount := 1
if dayofweek == dayofweek.wednesday
daycount := 2
if dayofweek == dayofweek.thursday
daycount := 3
if dayofweek == dayofweek.friday
daycount := 4
if dayofweek == dayofweek.saturday
daycount := 5
if dayofweek == dayofweek.sunday
daycount := 6

if ShowTWO
Cleanup(daycount)

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy