# buy startOffset bars into then open
# close endOffset bars before the close
input startOffset = 5;
input endOffset = 2;
def isRollover = GetYYYYMMDD() != GetYYYYMMDD()[1];
def beforeStart = GetTime() < RegularTradingStart(GetYYYYMMDD());
def afterEnd = GetTime() > RegularTradingEnd(GetYYYYMMDD());
def firstBarOfDay = if
(beforeStart[1+startOffset] == 1 and beforeStart[startOffset] == 0) or
(isRollover[startOffset] and beforeStart[startOffset] == 0)
then 1
else 0;
def lastBarOfDay = if
(afterEnd[-1-endOffset] == 1 and afterEnd[endOffset] == 0) or
(isRollover[-1-endOffset] and firstBarOfDay[-1-endOffset])
then 1
else 0;
AddOrder(OrderType.BUY_TO_OPEN, firstBarOfDay[-1], Open[-1], 1);
AddOrder(OrderType.SELL_TO_CLOSE, lastBarOfDay[-1], Open[-1], 1);
declare lower;
input startOffset = 5;
input endOffset = 2;
def isRollover = GetYYYYMMDD() != GetYYYYMMDD()[1];
def beforeStart = GetTime() < RegularTradingStart(GetYYYYMMDD());
def afterEnd = GetTime() > RegularTradingEnd(GetYYYYMMDD());
def firstBarOfDay = if
(beforeStart[1+startOffset] == 1 and beforeStart[startOffset] == 0) or
(isRollover[startOffset] and beforeStart[startOffset] == 0)
then 1
else 0;
def lastBarOfDay = if
(afterEnd[-1-endOffset] == 1 and afterEnd[endOffset] == 0) or
(isRollover[-1-endOffset] and firstBarOfDay[-1-endOffset])
then 1
else 0;
plot x = lastBarOfDay;
input startOffset = 5;
input endOffset = 2;
def isRollover = GetYYYYMMDD() != GetYYYYMMDD()[1];
def beforeStart = GetTime() < RegularTradingStart(GetYYYYMMDD());
def afterEnd = GetTime() > RegularTradingEnd(GetYYYYMMDD());
def firstBarOfDay = if
(beforeStart[1 + startOffset] == 1 and beforeStart[startOffset] == 0) or
(isRollover[startOffset] and beforeStart[startOffset] == 0)
then 1
else 0;
def lastBarOfDay = if
(afterEnd[-1 - endOffset] == 1 and afterEnd[endOffset] == 0) or
(isRollover[-1 - endOffset] and firstBarOfDay[-1 - endOffset])
then 1
else 0;
AddOrder(OrderType.SELL_TO_CLOSE, if lastBarOfDay == 1 then lastBarOfDay else Double.NaN, open, name = "SELL.EndOfDay");
##ADD AT TOP OF CODE##
def CloseAllCondition = SecondstillTime(1558) == 0;
def EOD = if SecondsTillTime(1558) == 0 and
SecondsFromTime(1558) == 0
then 1
else 0;
## ADD TOWARDS BOTTOM WITH OTHER AddOrder calls##
AddOrder(OrderType.Sell_TO_CLOSE, EOD or closeAllCondition, price = close, tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "SELL EOD");
AddOrder(OrderType.BUY_TO_CLOSE, EOD or closeAllCondition, price = close, tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "BUY EOD");