Need Help with Code Review


New member
Here's a code I drafted early last week to produce a list of S&P500 stocks that match the 3 EMA (15, 50, 100) criteria on a 5 min aggregation period. The scanner produces nothing. However, when I manually search for the last 5-minute candles of S&P500 stocks, a number of stocks matched the criteria.
What's wrong with the code? What do I need to fix?
Please help.

Many thanks.

input choice = {default "Above","Below"};
input price = close;
input start_price = open;
input AverageType = averagetype.EXPONENTIAL;

def ma1 = movingAverage(averageType,price,15);
def ma2 = movingAverage(averageType,price,50);
def ma3 = movingAverage(averageType,price,100);

plot scan;
switch (Choice){

case "Above":

    scan = ((start_price >= ma2) OR (start_price < ma2) AND start_price > ma3) AND (price < ma1 AND price < ma2 AND price < ma3);

case "Below":
  #  scan = price < ma1 < ma2 < ma3;
    scan = (start_price <= ma3 AND start_price < ma2) AND (price > ma2 AND price > ma1);


You do not need to create any script for this sort of scan. You can build one from the Scan Custom Filter.



New member
Thanks BenTen.. That's really nice. I also want the open of the candle to meet the EMA criteria. How would I add those to the conditions?

NM... Figured it out. Thank you.
Last edited by a moderator: