Need help creating premarket scanner based on daily ATR

papipali

New member
I am trying to create a scanner that can scan for stocks that have moved more than a certain percentage of its ATR (exponential, 14 day period). For example, I want to be able to find stocks that have moved 75% of their daily ATR in pre-market. Below is my current code. I am getting an error from thinkScript that says "Secondary period not allowed: Day." Any help would be greatly appreciated.


Code:
# Afterhours / Premarket ATR Scan

input closing_time = 1559;
input open_time = 0930;
input price = close;
input ATR_percent_change = 75.00;

input ATRLength = 14;
input averagetype = AverageType.EXPONENTIAL;
input BasePeriod = AggregationPeriod.DAY;

def ATR = MovingAverage (averagetype, TrueRange(high(period = BasePeriod)[1], close(period = BasePeriod)[1], low(period = BasePeriod)[1]), ATRLength);

def time_until_close = SecondsTillTime(closing_time);
def time_until_open = SecondsTillTime(open_time);
def closing_bell = time_until_close == 0;
rec closing_price = CompoundValue(1, if closing_bell then price else closing_price[1], price);

def valATR = ATR * (ATR_percent_change/100);
def priceDiff = AbsValue(price - closing_price);

def after_closing_bell = time_until_close <= 0;
def before_opening_bell = time_until_open  >= 0  ;
def meet_scan_criteria;

meet_scan_criteria = priceDiff >= valATR;

plot scan = (after_closing_bell or before_opening_bell) AND meet_scan_criteria;
 
Last edited:
Solution
Unfortunately, as covered in myriad other threads, there is a built in limit on one aggregation period for a scanner. There is no work around for a scan in which you want to compare values from multiple aggregations. There are workarounds for scans that can be run on different aggregations sequentially (scan on 1 day, save scan as dynamic watchlist, run second scan on first saved watchlist) but no methods for comparing multiple aggs.

-mashume

mashume

Well-known member
VIP
Unfortunately, as covered in myriad other threads, there is a built in limit on one aggregation period for a scanner. There is no work around for a scan in which you want to compare values from multiple aggregations. There are workarounds for scans that can be run on different aggregations sequentially (scan on 1 day, save scan as dynamic watchlist, run second scan on first saved watchlist) but no methods for comparing multiple aggs.

-mashume
 
Solution

Similar threads

Top