I made a label to display when 60% of open & close is above or below the 9 EMA in the 4 hour period.
It appears to work as expected for anything at or above the 15 minute time frame, time frames at 5 minute or below, it shows the incorrect value.
Please tell me what I am doing wrong.
It appears to work as expected for anything at or above the 15 minute time frame, time frames at 5 minute or below, it shows the incorrect value.
Please tell me what I am doing wrong.
Code:
input rangePercentValue = .60;
input period = aggregationPeriod.FOUR_HOURS;
input avgType = averageType.EXPONENTIAL;
input length = 9;
input priceClose = close;
def EMA = MovingAverage(avgType, close(period = period), length);
def greenCandleRange = close - open;
def redCandleRange = open - close;
def greenCandleRangeUp = close - (rangePercentValue * greenCandleRange);
def redCandleRangeDown = open - (rangePercentValue * redCandleRange);
#moveUp
def greenAboveEMA = greenCandleRangeUp > EMA;
def redAboveEMA = redCandleRangeDown > EMA;
def moveUp = greenAboveEMA or redAboveEMA;
#moveDown
def greenBelowEMA = greenCandleRangeUp < EMA;
def redBelowEMA = redCandleRangeDown < EMA;
def moveDown = greenBelowEMA or redBelowEMA;
AddLabel(yes, if moveUp then "Above 9EMA" else if moveDown then "Below 9EMA" else "", if moveUp then Color.LIGHT_GREEN else if moveDown then Color.LIGHT_RED else Color.CURRENT );