input EnableStrategy = yes; #hint EnableStrategy: Enable or Disable the strategy
input UseMarketTime = no; #hint UseMarketTime: When UseMarketTime is true the Strategy simulates trades from TradeTimeStart to TradeTimeEnd
Input UseTradeOffTradeTime = no; #hint UseTradeOffTradeTime: When UseTradeOffTradeTime is true the Strategy simulates trades from TradeTimeEnd to TradeTimeStart
input TradeTimeStart = 0930;
input TradeTimeEnd = 1600;
input UseMarketTradeTimeToExitPositions = no;#hint UseMarketTradeTimeToExitPositions: When UseMarketTradeTimeToExitPositions is true the Strategy will close any open positions at TradeTimeEnd
input UseDateRange = no; #hint UseDateRange: Strategy simulate trades within the date range specified
input ActiveStartDate = 20230101;
input ActiveEndDate = 20240101;
def activedaterange = GetYYYYMMDD() >= ActiveStartDate and GetYYYYMMDD() <= ActiveEndDate;
def activerange = if UseDateRange then activedaterange else 1;
AddLabel(UseDateRange, if UseDateRange then "Range " + asPrice(ActiveStartDate) + " - " + asPrice(ActiveEndDate) else "" , Color.WHITE );
##################################################################################
####################### ActiveTradeTime ############################
##-------------------------------------------------------------------------------------
def Active = if GetDay() != GetDay()[1] then 0 else if SecondsTillTime(TradeTimeStart) <= 0 and SecondsTillTime(TradeTimeEnd) >= 0 then 1 else 0;
def ActiveTradeTime = if UseTradeOffTradeTime then !Active else if UseMarketTime then if SecondsTillTime(TradeTimeStart) <= 0 and SecondsTillTime(TradeTimeEnd) >= 0 then 1 else 0 else 1;
def closeallmarket = ( if UseMarketTime and UseTradeOffTradeTime then ActiveTradeTime[1] and !ActiveTradeTime and UseMarketTradeTimeToExitPositions else !ActiveTradeTime and ActiveTradeTime[1]) and UseMarketTradeTimeToExitPositions;
AddLabel(UseMarketTime, if ActiveTradeTime then "Active " + asPrice(TradeTimeStart) + " - " + asPrice(TradeTimeEnd) else "" , Color.WHITE );
##-------------------------------------------------------------------------------------
##################################################################################
AddOrder(OrderType.BUY_TO_CLOSE, EnableStrategy and closeallmarket, tickcolor = GetColor(1), arrowcolor = GetColor(1), name = "BxEdt@ " + open[-1]) ;
AddOrder(OrderType.SELL_TO_CLOSE, EnableStrategy and closeallmarket, tickcolor = GetColor(1), arrowcolor = GetColor(1), name = "SxEdt" + open[-1]);
AddOrder(OrderType.BUY_TO_CLOSE, EnableStrategy and !activerange, tickcolor = GetColor(1), arrowcolor = GetColor(1), name = "BxRange@ " + open[-1]) ;
AddOrder(OrderType.SELL_TO_CLOSE, EnableStrategy and !activerange, tickcolor = GetColor(1), arrowcolor = GetColor(1), name = "SxRange@" + open[-1]);
##################################################################################
##################################################################################