# break of custom time range high/low
input timePeriodStart = 800;
input timePeriodEnd = 930;
input tradePeriodStart = 930;
input tradePeriodEnd = 1659;
input numberOfDays = 0;
input numberOfYears = 0;
input target = .100;
input stop = .050;
input tradeSize = 1;
def oneTick = TickSize(GetSymbol());
def okToPlot = GetLastDay() - numberOfDays <= GetDay() and GetLastYear() - numberOfYears <= GetYear();
# the time range window
def startPeriodCounter = SecondsFromTime(timePeriodStart);
def endPeriodCounter = SecondsTillTime(timePeriodEnd);
def timeRangeWindow = if startPeriodCounter >= 0 and endPeriodCounter >= 0 then 1 else 0;
# the trading window
def startTradeCounter = SecondsFromTime(tradePeriodStart);
def endTradeCounter = SecondsTillTime(tradePeriodEnd);
def tradeWindow = if startTradeCounter >= 0 and endTradeCounter >= 0 then 1 else 0;
def timeWindowStart = !timeRangeWindow[1] and timeRangeWindow;
def tradeWindowStart = !tradeWindow[1] and tradeWindow;
def timeRangeWindowHigh = CompoundValue(1, if timeWindowStart then high else if timeRangeWindow then Max(high, timeRangeWindowHigh[1]) else timeRangeWindowHigh[1], 0);
def timeRangeWindowLow = CompoundValue(1, if timeWindowStart then low else if timeRangeWindow then Min(low, timeRangeWindowLow[1]) else timeRangeWindowLow[1], 0);
def timeRangeHigh = if okToPlot and tradeWindow then timeRangeWindowHigh else Double.NaN;
def timeRangeLow = if okToPlot and tradeWindow then timeRangeWindowLow else Double.NaN;
def longSignal = close > timeRangeHigh and close[1] <= timeRangeHigh;
def shortSignal = close < timeRangeLow and close[1] >= timeRangeLow;
def signal = if tradeWindow and ( longSignal or shortSignal ) then 1 else 0;
def tradeCount = if tradeWindowStart then 0 else if tradeWindow and EntryPrice() then 1 else tradeCount[1];
def longEntry = tradeWindow and longSignal and !tradeCount;
def shortEntry = tradeWindow and shortSignal and !tradeCount;
def longEntryPrice = open[-1];
def shortEntryPrice = open[-1];
def longTargetPrice = if longEntry then ((longEntryPrice + target) / oneTick) * oneTick else longTargetPrice[1];
def shortTargetPrice = if shortEntry then ((shortEntryPrice - target) / oneTick) * oneTick else shortTargetPrice[1];
def longTarget = high[-1] >= longTargetPrice;
def shortTarget = low[-1] <= shortTargetPrice;
def longStopPrice = if longEntry then ((longEntryPrice - stop) / oneTick) * oneTick else longStopPrice[1];
def shortStopPrice = if shortEntry then ((shortEntryPrice + stop) / oneTick) * oneTick else shortStopPrice[1];
def longStop = low[-1] <= longStopPrice;
def shortStop = high[-1] >= shortStopPrice;
AddOrder(OrderType.BUY_AUTO, longEntry, longEntryPrice, tradeSize, Color.GREEN, Color.GREEN);
AddOrder(OrderType.SELL_TO_CLOSE, longStop, longStopPrice, tradeSize, Color.GRAY, Color.GRAY);
AddOrder(OrderType.SELL_TO_CLOSE, longTarget, longTargetPrice, tradeSize, Color.MAGENTA, Color.MAGENTA);
AddOrder(OrderType.SELL_AUTO, shortEntry, shortEntryPrice, tradeSize, Color.RED, Color.RED);
AddOrder(OrderType.BUY_TO_CLOSE, shortStop, shortStopPrice, tradeSize, Color.GRAY, Color.GRAY);
AddOrder(OrderType.BUY_TO_CLOSE, shortTarget, shortTargetPrice, tradeSize, Color.YELLOW, Color.YELLOW);