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);


Staff member
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:

Similar threads