• LIMITED TIME ONLY: Take $40 off VIP with code: BTD40.

How do you make a timeframe a variable?


Well-known member
In some code I'm working on I only want the condition to apply if it happens after hours. I tried this and it didn't work,
def Start = 1600;
def End = 930;
def conf = SecondsFromTime(Start) >= 0 and SecondsFromTime(End) <= 0;

When I tried to use conf as a variable it didn't work and the condition was still applied throughout the whole day even though adding conf as a condition should have only let it signal ah.
Any ideas how this is done? This could be useful for many things.

Prison Mike

This may or may not help but I used this to find overnight ATR. Maybe it can be chopped up.

input n = 10;
def bar = BarNumber();
def nan = Double.NaN;
input Agg = AggregationPeriod.day;
input Length = 500;
input AverageType = AverageType.SIMPLE;
input ATRMulti = .75;
def h = high(period = Agg);
def l = low(period = Agg);
def c = close(period = Agg);

def PMhrs = RegularTradingStart (GetYYYYMMDD()) > GetTime();
def RMhrs = RegularTradingStart (GetYYYYMMDD()) < GetTime();
def PMStart = RMhrs[1] and PMhrs;
def PMclose = CompoundValue(1, if PMStart then h else if PMhrs then Max(h, PMclose[1]) else PMclose[1], 0);
def PMHigh = CompoundValue(1, if PMStart then h else if PMhrs then Max(h, PMHigh[1]) else PMHigh[1], 0);
def PMLow = CompoundValue(1, if PMStart then l else if PMhrs then Min(l, PMLow[1]) else PMLow[1], 0);
def highBar = if PMhrs and h == PMHigh then bar else nan;
def lowBar = if PMhrs and l == PMLow then bar else nan;
def PMHighBar = if bar == HighestAll(highBar) then PMHigh else PMHighBar[1];
def PMLowBar = if bar == HighestAll(lowBar) then PMLow else PMLowBar[1];

def ONATR = MovingAverage(AverageType, TrueRange(h, c, l), Length) * ATRMulti;

Similar threads