input agg = aggregationperiod.day;
def ma1 = expaverage(close(period = agg), 5);
def ma2 = expaverage(close(period = agg), 21);
AddLabel(1, if ma1 > ma2 then " 5ma is above 21ma " else if ma1 == ma2 then " 5ma is equal to 21ma " else " 5ma is below 21ma", if ma1 > ma2 then color.green else if ma1 == ma2 then color.white else color.red);
Thanks for the reply. I was looking for a label that had multi time frames-let’s say from 1 minute to weekly. It was something I saw in a video. I think they called it the multi time frame cross.@Cindy
Code:input agg = aggregationperiod.day; [ICODE][/ICODE] def ma1 = expaverage(close(period = agg), 5); def ma2 = expaverage(close(period = agg), 21); AddLabel(1, if ma1 > ma2 then " 5ma is above 21ma " else if ma1 == ma2 then " 5ma is equal to 21ma " else " 5ma is below 21ma", if ma1 > ma2 then color.green else if ma1 == ma2 then color.white else color.red);
Thanks for the reply. I was looking for a label that had multi time frames-let’s say from 1 minute to weekly. It was something I saw in a video. I think they called it the multi time frame cross. I’m not sure how to post an image of this.@Cindy
Code:input agg = aggregationperiod.day; def ma1 = expaverage(close(period = agg), 5); def ma2 = expaverage(close(period = agg), 21); AddLabel(1, if ma1 > ma2 then " 5ma is above 21ma " else if ma1 == ma2 then " 5ma is equal to 21ma " else " 5ma is below 21ma", if ma1 > ma2 then color.green else if ma1 == ma2 then color.white else color.red);
@Cindy The above label code has an input that can be changed to whatever aggregation you want. However, here is an example of multiple aggregation labels together. A limitation of combining aggregations in this way is that your chart aggregation must always be equal to or lower than the shortest aggregation label in order to see any of the labels.Thanks for the reply. I was looking for a label that had multi time frames-let’s say from 1 minute to weekly. It was something I saw in a video. I think they called it the multi time frame cross.
def agg1 = aggregationperiod.five_min;
def agg2 = aggregationperiod.ten_min;
def agg3 = aggregationperiod.fifteen_min;
def agg4 = aggregationperiod.thirty_min;
def agg5 = aggregationperiod.hour;
def agg6 = aggregationperiod.day;
def agg7 = aggregationperiod.week;
def ma1 = expaverage(close(period = agg1), 5) > expaverage(close(period = agg1), 21);
def ma2 = expaverage(close(period = agg2), 5) > expaverage(close(period = agg2), 21);
def ma3 = expaverage(close(period = agg3), 5) > expaverage(close(period = agg3), 21);
def ma4 = expaverage(close(period = agg4), 5) > expaverage(close(period = agg4), 21);
def ma5 = expaverage(close(period = agg5), 5) > expaverage(close(period = agg5), 21);
def ma6 = expaverage(close(period = agg6), 5) > expaverage(close(period = agg6), 21);
def ma7 = expaverage(close(period = agg7), 5) > expaverage(close(period = agg7), 21);
AddLabel(1, " 5 ", if ma1 then color.green else color.red);
AddLabel(1, " 10 ", if ma2 then color.green else color.red);
AddLabel(1, " 15 ", if ma3 then color.green else color.red);
AddLabel(1, " 30 ", if ma4 then color.green else color.red);
AddLabel(1, " HR ", if ma5 then color.green else color.red);
AddLabel(1, " D ", if ma6 then color.green else color.red);
AddLabel(1, " W ", if ma7 then color.green else color.red);
Thanks. That works great.@Cindy The above label code has an input that can be changed to whatever aggregation you want. However, here is an example of multiple aggregation labels together. A limitation of combining aggregations in this way is that your chart aggregation must always be equal to or lower than the shortest aggregation label in order to see any of the labels.
To add additional aggregations, simply duplicate the method used.
Code:def agg1 = aggregationperiod.five_min; def agg2 = aggregationperiod.ten_min; def agg3 = aggregationperiod.fifteen_min; def agg4 = aggregationperiod.thirty_min; def agg5 = aggregationperiod.hour; def agg6 = aggregationperiod.day; def agg7 = aggregationperiod.week; def ma1 = expaverage(close(period = agg1), 5) > expaverage(close(period = agg1), 21); def ma2 = expaverage(close(period = agg2), 5) > expaverage(close(period = agg2), 21); def ma3 = expaverage(close(period = agg3), 5) > expaverage(close(period = agg3), 21); def ma4 = expaverage(close(period = agg4), 5) > expaverage(close(period = agg4), 21); def ma5 = expaverage(close(period = agg5), 5) > expaverage(close(period = agg5), 21); def ma6 = expaverage(close(period = agg6), 5) > expaverage(close(period = agg6), 21); def ma7 = expaverage(close(period = agg7), 5) > expaverage(close(period = agg7), 21); AddLabel(1, " 5 ", if ma1 then color.green else color.red); AddLabel(1, " 10 ", if ma2 then color.green else color.red); AddLabel(1, " 15 ", if ma3 then color.green else color.red); AddLabel(1, " 30 ", if ma4 then color.green else color.red); AddLabel(1, " HR ", if ma5 then color.green else color.red); AddLabel(1, " D ", if ma6 then color.green else color.red); AddLabel(1, " W ", if ma7 then color.green else color.red);
input MAtype = AverageType.EXPONENTIAL;
input ShortAverage = 5;
input LongAverage = 21;
def MA_month_close;
def MA_month_shortAvg;
def MA_month_longAvg;
def MA_month_higher;
def MA_month_lower;
def MA_month_same;
def MA_month_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.MONTH {
MA_month_close = close(period="Month");
MA_month_shortAvg = MovingAverage(MAtype, MA_month_close, ShortAverage);
MA_month_longAvg = MovingAverage(MAtype,MA_month_close, LongAverage);
MA_month_nowcrossing = if Crosses(MA_month_shortAvg, MA_month_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_month_same = if MA_month_nowcrossing == 1 then 1 else Double.NaN;
if MA_month_same == 1 {
MA_month_higher = Double.NaN;
MA_month_lower = Double.NaN;
} else {
MA_month_higher = if MA_month_shortAvg >= MA_month_longAvg[1] then 1 else Double.NaN;
MA_month_lower = if MA_month_shortAvg < MA_month_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_month_close = 0;
MA_month_shortAvg = 0;
MA_month_longAvg = 0;
MA_month_higher = Double.NaN;
MA_month_lower = Double.NaN;
MA_month_same = Double.NaN;
MA_month_nowcrossing = 0;
}
AddLabel(MA_month_higher, "M", Color.DARK_GREEN);
AddLabel(MA_month_lower, "M", Color.DARK_RED);
AddLabel(MA_month_same, "M", Color.WHITE);
def MA_week_close;
def MA_week_shortAvg;
def MA_week_longAvg;
def MA_week_higher;
def MA_week_lower;
def MA_week_same;
def MA_week_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.WEEK {
MA_week_close = close(period="Week");
MA_week_shortAvg = MovingAverage(MAtype, MA_week_close, ShortAverage);
MA_week_longAvg = MovingAverage(MAtype,MA_week_close, LongAverage);
MA_week_nowcrossing = if Crosses(MA_week_shortAvg, MA_week_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_week_same = if MA_week_nowcrossing == 1 then 1 else Double.NaN;
if MA_week_same == 1 {
MA_week_higher = Double.NaN;
MA_week_lower = Double.NaN;
} else {
MA_week_higher = if MA_week_shortAvg >= MA_week_longAvg[1] then 1 else Double.NaN;
MA_week_lower = if MA_week_shortAvg < MA_week_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_week_close = 0;
MA_week_shortAvg = 0;
MA_week_longAvg = 0;
MA_week_higher = Double.NaN;
MA_week_lower = Double.NaN;
MA_week_same = Double.NaN;
MA_week_nowcrossing = 0;
}
AddLabel(MA_week_higher, "W", Color.DARK_GREEN);
AddLabel(MA_week_lower, "W", Color.DARK_RED);
AddLabel(MA_week_same, "W", Color.WHITE);
def MA_4day_close;
def MA_4day_shortAvg;
def MA_4day_longAvg;
def MA_4day_higher;
def MA_4day_lower;
def MA_4day_same;
def MA_4day_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.FOUR_DAYS {
MA_4day_close = close(period="4 days");
MA_4day_shortAvg = MovingAverage(MAtype, MA_4day_close, ShortAverage);
MA_4day_longAvg = MovingAverage(MAtype,MA_4day_close, LongAverage);
MA_4day_nowcrossing = if Crosses(MA_4day_shortAvg, MA_4day_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_4day_same = if MA_4day_nowcrossing == 1 then 1 else Double.NaN;
if MA_4day_same == 1 {
MA_4day_higher = Double.NaN;
MA_4day_lower = Double.NaN;
} else {
MA_4day_higher = if MA_4day_shortAvg >= MA_4day_longAvg[1] then 1 else Double.NaN;
MA_4day_lower = if MA_4day_shortAvg < MA_4day_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_4day_close = 0;
MA_4day_shortAvg = 0;
MA_4day_longAvg = 0;
MA_4day_higher = Double.NaN;
MA_4day_lower = Double.NaN;
MA_4day_same = Double.NaN;
MA_4day_nowcrossing = 0;
}
AddLabel(MA_4day_higher, "4D", Color.DARK_GREEN);
AddLabel(MA_4day_lower, "4D", Color.DARK_RED);
AddLabel(MA_4day_same, "4D", Color.WHITE);
def MA_3day_close;
def MA_3day_shortAvg;
def MA_3day_longAvg;
def MA_3day_higher;
def MA_3day_lower;
def MA_3day_same;
def MA_3day_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.THREE_DAYS {
MA_3day_close = close(period="3 days");
MA_3day_shortAvg = MovingAverage(MAtype, MA_3day_close, ShortAverage);
MA_3day_longAvg = MovingAverage(MAtype,MA_3day_close, LongAverage);
MA_3day_nowcrossing = if Crosses(MA_3day_shortAvg, MA_3day_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_3day_same = if MA_3day_nowcrossing == 1 then 1 else Double.NaN;
if MA_3day_same == 1 {
MA_3day_higher = Double.NaN;
MA_3day_lower = Double.NaN;
} else {
MA_3day_higher = if MA_3day_shortAvg >= MA_3day_longAvg[1] then 1 else Double.NaN;
MA_3day_lower = if MA_3day_shortAvg < MA_3day_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_3day_close = 0;
MA_3day_shortAvg = 0;
MA_3day_longAvg = 0;
MA_3day_higher = Double.NaN;
MA_3day_lower = Double.NaN;
MA_3day_same = Double.NaN;
MA_3day_nowcrossing = 0;
}
AddLabel(MA_3day_higher, "3D", Color.DARK_GREEN);
AddLabel(MA_3day_lower, "3D", Color.DARK_RED);
AddLabel(MA_3day_same, "3D", Color.WHITE);
def MA_2day_close;
def MA_2day_shortAvg;
def MA_2day_longAvg;
def MA_2day_higher;
def MA_2day_lower;
def MA_2day_same;
def MA_2day_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.TWO_DAYS {
MA_2day_close = close(period="2 days");
MA_2day_shortAvg = MovingAverage(MAtype, MA_2day_close, ShortAverage);
MA_2day_longAvg = MovingAverage(MAtype,MA_2day_close, LongAverage);
MA_2day_nowcrossing = if Crosses(MA_2day_shortAvg, MA_2day_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_2day_same = if MA_2day_nowcrossing == 1 then 1 else Double.NaN;
if MA_2day_same == 1 {
MA_2day_higher = Double.NaN;
MA_2day_lower = Double.NaN;
} else {
MA_2day_higher = if MA_2day_shortAvg >= MA_2day_longAvg[1] then 1 else Double.NaN;
MA_2day_lower = if MA_2day_shortAvg < MA_2day_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_2day_close = 0;
MA_2day_shortAvg = 0;
MA_2day_longAvg = 0;
MA_2day_higher = Double.NaN;
MA_2day_lower = Double.NaN;
MA_2day_same = Double.NaN;
MA_2day_nowcrossing = 0;
}
AddLabel(MA_2day_higher, "2D", Color.DARK_GREEN);
AddLabel(MA_2day_lower, "2D", Color.DARK_RED);
AddLabel(MA_2day_same, "2D", Color.WHITE);
def MA_1day_close;
def MA_1day_shortAvg;
def MA_1day_longAvg;
def MA_1day_higher;
def MA_1day_lower;
def MA_1day_same;
def MA_1day_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.DAY {
MA_1day_close = close(period="Day");
MA_1day_shortAvg = MovingAverage(MAtype, MA_1day_close, ShortAverage);
MA_1day_longAvg = MovingAverage(MAtype,MA_1day_close, LongAverage);
MA_1day_nowcrossing = if Crosses(MA_1day_shortAvg, MA_1day_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_1day_same = if MA_1day_nowcrossing == 1 then 1 else Double.NaN;
if MA_1day_same == 1 {
MA_1day_higher = Double.NaN;
MA_1day_lower = Double.NaN;
} else {
MA_1day_higher = if MA_1day_shortAvg >= MA_1day_longAvg[1] then 1 else Double.NaN;
MA_1day_lower = if MA_1day_shortAvg < MA_1day_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_1day_close = 0;
MA_1day_shortAvg = 0;
MA_1day_longAvg = 0;
MA_1day_higher = Double.NaN;
MA_1day_lower = Double.NaN;
MA_1day_same = Double.NaN;
MA_1day_nowcrossing = 0;
}
AddLabel(MA_1day_higher, "1D", Color.DARK_GREEN);
AddLabel(MA_1day_lower, "1D", Color.DARK_RED);
AddLabel(MA_1day_same, "1D", Color.WHITE);
def MA_4hour_close;
def MA_4hour_shortAvg;
def MA_4hour_longAvg;
def MA_4hour_higher;
def MA_4hour_lower;
def MA_4hour_same;
def MA_4hour_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.FOUR_HOURS {
MA_4hour_close = close(period="4 hours");
MA_4hour_shortAvg = MovingAverage(MAtype, MA_4hour_close, ShortAverage);
MA_4hour_longAvg = MovingAverage(MAtype,MA_4hour_close, LongAverage);
MA_4hour_nowcrossing = if Crosses(MA_4hour_shortAvg, MA_4hour_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_4hour_same = if MA_4hour_nowcrossing == 1 then 1 else Double.NaN;
if MA_4hour_same == 1 {
MA_4hour_higher = Double.NaN;
MA_4hour_lower = Double.NaN;
} else {
MA_4hour_higher = if MA_4hour_shortAvg >= MA_4hour_longAvg[1] then 1 else Double.NaN;
MA_4hour_lower = if MA_4hour_shortAvg < MA_4hour_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_4hour_close = 0;
MA_4hour_shortAvg = 0;
MA_4hour_longAvg = 0;
MA_4hour_higher = Double.NaN;
MA_4hour_lower = Double.NaN;
MA_4hour_same = Double.NaN;
MA_4hour_nowcrossing = 0;
}
AddLabel(MA_4hour_higher, "4h", Color.DARK_GREEN);
AddLabel(MA_4hour_lower, "4h", Color.DARK_RED);
AddLabel(MA_4hour_same, "4h", Color.WHITE);
def MA_2hour_close;
def MA_2hour_shortAvg;
def MA_2hour_longAvg;
def MA_2hour_higher;
def MA_2hour_lower;
def MA_2hour_same;
def MA_2hour_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.TWO_HOURS {
MA_2hour_close = close(period="2 hours");
MA_2hour_shortAvg = MovingAverage(MAtype, MA_2hour_close, ShortAverage);
MA_2hour_longAvg = MovingAverage(MAtype,MA_2hour_close, LongAverage);
MA_2hour_nowcrossing = if Crosses(MA_2hour_shortAvg, MA_2hour_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_2hour_same = if MA_2hour_nowcrossing == 1 then 1 else Double.NaN;
if MA_2hour_same == 1 {
MA_2hour_higher = Double.NaN;
MA_2hour_lower = Double.NaN;
} else {
MA_2hour_higher = if MA_2hour_shortAvg >= MA_2hour_longAvg[1] then 1 else Double.NaN;
MA_2hour_lower = if MA_2hour_shortAvg < MA_2hour_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_2hour_close = 0;
MA_2hour_shortAvg = 0;
MA_2hour_longAvg = 0;
MA_2hour_higher = Double.NaN;
MA_2hour_lower = Double.NaN;
MA_2hour_same = Double.NaN;
MA_2hour_nowcrossing = 0;
}
AddLabel(MA_2hour_higher, "2h", Color.DARK_GREEN);
AddLabel(MA_2hour_lower, "2h", Color.DARK_RED);
AddLabel(MA_2hour_same, "2h", Color.WHITE);
def MA_1hour_close;
def MA_1hour_shortAvg;
def MA_1hour_longAvg;
def MA_1hour_higher;
def MA_1hour_lower;
def MA_1hour_same;
def MA_1hour_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.HOUR {
MA_1hour_close = close(period="1 hour");
MA_1hour_shortAvg = MovingAverage(MAtype, MA_1hour_close, ShortAverage);
MA_1hour_longAvg = MovingAverage(MAtype,MA_1hour_close, LongAverage);
MA_1hour_nowcrossing = if Crosses(MA_1hour_shortAvg, MA_1hour_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_1hour_same = if MA_1hour_nowcrossing == 1 then 1 else Double.NaN;
if MA_1hour_same == 1 {
MA_1hour_higher = Double.NaN;
MA_1hour_lower = Double.NaN;
} else {
MA_1hour_higher = if MA_1hour_shortAvg >= MA_1hour_longAvg[1] then 1 else Double.NaN;
MA_1hour_lower = if MA_1hour_shortAvg < MA_1hour_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_1hour_close = 0;
MA_1hour_shortAvg = 0;
MA_1hour_longAvg = 0;
MA_1hour_higher = Double.NaN;
MA_1hour_lower = Double.NaN;
MA_1hour_same = Double.NaN;
MA_1hour_nowcrossing = 0;
}
AddLabel(MA_1hour_higher, "1h", Color.DARK_GREEN);
AddLabel(MA_1hour_lower, "1h", Color.DARK_RED);
AddLabel(MA_1hour_same, "1h", Color.WHITE);
def MA_30min_close;
def MA_30min_shortAvg;
def MA_30min_longAvg;
def MA_30min_higher;
def MA_30min_lower;
def MA_30min_same;
def MA_30min_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.THIRTY_MIN {
MA_30min_close = close(period="30 min");
MA_30min_shortAvg = MovingAverage(MAtype, MA_30min_close, ShortAverage);
MA_30min_longAvg = MovingAverage(MAtype,MA_30min_close, LongAverage);
MA_30min_nowcrossing = if Crosses(MA_30min_shortAvg, MA_30min_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_30min_same = if MA_30min_nowcrossing == 1 then 1 else Double.NaN;
if MA_30min_same == 1 {
MA_30min_higher = Double.NaN;
MA_30min_lower = Double.NaN;
} else {
MA_30min_higher = if MA_30min_shortAvg >= MA_30min_longAvg[1] then 1 else Double.NaN;
MA_30min_lower = if MA_30min_shortAvg < MA_30min_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_30min_close = 0;
MA_30min_shortAvg = 0;
MA_30min_longAvg = 0;
MA_30min_higher = Double.NaN;
MA_30min_lower = Double.NaN;
MA_30min_same = Double.NaN;
MA_30min_nowcrossing = 0;
}
AddLabel(MA_30min_higher, "30m", Color.DARK_GREEN);
AddLabel(MA_30min_lower, "30m", Color.DARK_RED);
AddLabel(MA_30min_same, "30m", Color.WHITE);
def MA_15min_close;
def MA_15min_shortAvg;
def MA_15min_longAvg;
def MA_15min_higher;
def MA_15min_lower;
def MA_15min_same;
def MA_15min_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.FIFTEEN_MIN {
MA_15min_close = close(period="15 min");
MA_15min_shortAvg = MovingAverage(MAtype, MA_15min_close, ShortAverage);
MA_15min_longAvg = MovingAverage(MAtype,MA_15min_close, LongAverage);
MA_15min_nowcrossing = if Crosses(MA_15min_shortAvg, MA_15min_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_15min_same = if MA_15min_nowcrossing == 1 then 1 else Double.NaN;
if MA_15min_same == 1 {
MA_15min_higher = Double.NaN;
MA_15min_lower = Double.NaN;
} else {
MA_15min_higher = if MA_15min_shortAvg >= MA_15min_longAvg[1] then 1 else Double.NaN;
MA_15min_lower = if MA_15min_shortAvg < MA_15min_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_15min_close = 0;
MA_15min_shortAvg = 0;
MA_15min_longAvg = 0;
MA_15min_higher = Double.NaN;
MA_15min_lower = Double.NaN;
MA_15min_same = Double.NaN;
MA_15min_nowcrossing = 0;
}
AddLabel(MA_15min_higher, "15m", Color.DARK_GREEN);
AddLabel(MA_15min_lower, "15m", Color.DARK_RED);
AddLabel(MA_15min_same, "15m", Color.WHITE);
def MA_10min_close;
def MA_10min_shortAvg;
def MA_10min_longAvg;
def MA_10min_higher;
def MA_10min_lower;
def MA_10min_same;
def MA_10min_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.TEN_MIN {
MA_10min_close = close(period="10 min");
MA_10min_shortAvg = MovingAverage(MAtype, MA_10min_close, ShortAverage);
MA_10min_longAvg = MovingAverage(MAtype,MA_10min_close, LongAverage);
MA_10min_nowcrossing = if Crosses(MA_10min_shortAvg, MA_10min_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_10min_same = if MA_10min_nowcrossing == 1 then 1 else Double.NaN;
if MA_10min_same == 1 {
MA_10min_higher = Double.NaN;
MA_10min_lower = Double.NaN;
} else {
MA_10min_higher = if MA_10min_shortAvg >= MA_10min_longAvg[1] then 1 else Double.NaN;
MA_10min_lower = if MA_10min_shortAvg < MA_10min_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_10min_close = 0;
MA_10min_shortAvg = 0;
MA_10min_longAvg = 0;
MA_10min_higher = Double.NaN;
MA_10min_lower = Double.NaN;
MA_10min_same = Double.NaN;
MA_10min_nowcrossing = 0;
}
AddLabel(MA_10min_higher, "10m", Color.DARK_GREEN);
AddLabel(MA_10min_lower, "10m", Color.DARK_RED);
AddLabel(MA_10min_same, "10m", Color.WHITE);
def MA_shortAvgmin_close;
def MA_shortAvgmin_shortAvg;
def MA_shortAvgmin_longAvg;
def MA_shortAvgmin_higher;
def MA_shortAvgmin_lower;
def MA_shortAvgmin_same;
def MA_shortAvgmin_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.FIVE_MIN {
MA_shortAvgmin_close = close(period="5 min");
MA_shortAvgmin_shortAvg = MovingAverage(MAtype, MA_shortAvgmin_close, ShortAverage);
MA_shortAvgmin_longAvg = MovingAverage(MAtype,MA_shortAvgmin_close, LongAverage);
MA_shortAvgmin_nowcrossing = if Crosses(MA_shortAvgmin_shortAvg, MA_shortAvgmin_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_shortAvgmin_same = if MA_shortAvgmin_nowcrossing == 1 then 1 else Double.NaN;
if MA_shortAvgmin_same == 1 {
MA_shortAvgmin_higher = Double.NaN;
MA_shortAvgmin_lower = Double.NaN;
} else {
MA_shortAvgmin_higher = if MA_shortAvgmin_shortAvg >= MA_shortAvgmin_longAvg[1] then 1 else Double.NaN;
MA_shortAvgmin_lower = if MA_shortAvgmin_shortAvg < MA_shortAvgmin_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_shortAvgmin_close = 0;
MA_shortAvgmin_shortAvg = 0;
MA_shortAvgmin_longAvg = 0;
MA_shortAvgmin_higher = Double.NaN;
MA_shortAvgmin_lower = Double.NaN;
MA_shortAvgmin_same = Double.NaN;
MA_shortAvgmin_nowcrossing = 0;
}
AddLabel(MA_shortAvgmin_higher, "5m", Color.DARK_GREEN);
AddLabel(MA_shortAvgmin_lower, "5m", Color.DARK_RED);
AddLabel(MA_shortAvgmin_same, "5m", Color.WHITE);
def MA_4min_close;
def MA_4min_shortAvg;
def MA_4min_longAvg;
def MA_4min_higher;
def MA_4min_lower;
def MA_4min_same;
def MA_4min_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.FOUR_MIN {
MA_4min_close = close(period="4 min");
MA_4min_shortAvg = MovingAverage(MAtype, MA_4min_close, ShortAverage);
MA_4min_longAvg = MovingAverage(MAtype,MA_4min_close, LongAverage);
MA_4min_nowcrossing = if Crosses(MA_4min_shortAvg, MA_4min_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_4min_same = if MA_4min_nowcrossing == 1 then 1 else Double.NaN;
if MA_4min_same == 1 {
MA_4min_higher = Double.NaN;
MA_4min_lower = Double.NaN;
} else {
MA_4min_higher = if MA_4min_shortAvg >= MA_4min_longAvg[1] then 1 else Double.NaN;
MA_4min_lower = if MA_4min_shortAvg < MA_4min_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_4min_close = 0;
MA_4min_shortAvg = 0;
MA_4min_longAvg = 0;
MA_4min_higher = Double.NaN;
MA_4min_lower = Double.NaN;
MA_4min_same = Double.NaN;
MA_4min_nowcrossing = 0;
}
AddLabel(MA_4min_higher, "4m", Color.DARK_GREEN);
AddLabel(MA_4min_lower, "4m", Color.DARK_RED);
AddLabel(MA_4min_same, "4m", Color.WHITE);
def MA_3min_close;
def MA_3min_shortAvg;
def MA_3min_longAvg;
def MA_3min_higher;
def MA_3min_lower;
def MA_3min_same;
def MA_3min_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.THREE_MIN {
MA_3min_close = close(period="3 min");
MA_3min_shortAvg = MovingAverage(MAtype, MA_3min_close, ShortAverage);
MA_3min_longAvg = MovingAverage(MAtype,MA_3min_close, LongAverage);
MA_3min_nowcrossing = if Crosses(MA_3min_shortAvg, MA_3min_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_3min_same = if MA_3min_nowcrossing == 1 then 1 else Double.NaN;
if MA_3min_same == 1 {
MA_3min_higher = Double.NaN;
MA_3min_lower = Double.NaN;
} else {
MA_3min_higher = if MA_3min_shortAvg >= MA_3min_longAvg[1] then 1 else Double.NaN;
MA_3min_lower = if MA_3min_shortAvg < MA_3min_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_3min_close = 0;
MA_3min_shortAvg = 0;
MA_3min_longAvg = 0;
MA_3min_higher = Double.NaN;
MA_3min_lower = Double.NaN;
MA_3min_same = Double.NaN;
MA_3min_nowcrossing = 0;
}
AddLabel(MA_3min_higher, "3m", Color.DARK_GREEN);
AddLabel(MA_3min_lower, "3m", Color.DARK_RED);
AddLabel(MA_3min_same, "3m", Color.WHITE);
def MA_2min_close;
def MA_2min_shortAvg;
def MA_2min_longAvg;
def MA_2min_higher;
def MA_2min_lower;
def MA_2min_same;
def MA_2min_nowcrossing;
if GetAggregationPeriod() <= AggregationPeriod.TWO_MIN {
MA_2min_close = close(period="2 min");
MA_2min_shortAvg = MovingAverage(MAtype, MA_2min_close, ShortAverage);
MA_2min_longAvg = MovingAverage(MAtype,MA_2min_close, LongAverage);
MA_2min_nowcrossing = if Crosses(MA_2min_shortAvg, MA_2min_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_2min_same = if MA_2min_nowcrossing == 1 then 1 else Double.NaN;
if MA_2min_same == 1 {
MA_2min_higher = Double.NaN;
MA_2min_lower = Double.NaN;
} else {
MA_2min_higher = if MA_2min_shortAvg >= MA_2min_longAvg[1] then 1 else Double.NaN;
MA_2min_lower = if MA_2min_shortAvg < MA_2min_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_2min_close = 0;
MA_2min_shortAvg = 0;
MA_2min_longAvg = 0;
MA_2min_higher = Double.NaN;
MA_2min_lower = Double.NaN;
MA_2min_same = Double.NaN;
MA_2min_nowcrossing = 0;
}
AddLabel(MA_2min_higher, "2m", Color.DARK_GREEN);
AddLabel(MA_2min_lower, "2m", Color.DARK_RED);
AddLabel(MA_2min_same, "2m", Color.WHITE);
def MA_1min_close;
def MA_1min_shortAvg;
def MA_1min_longAvg;
def MA_1min_higher;
def MA_1min_lower;
def MA_1min_same;
def MA_1min_nowcrossing;
if GetAggregationPeriod() == AggregationPeriod.MIN {
MA_1min_close = close(period="1 min");
MA_1min_shortAvg = MovingAverage(MAtype, MA_1min_close, ShortAverage);
MA_1min_longAvg = MovingAverage(MAtype,MA_1min_close, LongAverage);
MA_1min_nowcrossing = if Crosses(MA_1min_shortAvg, MA_1min_longAvg, CrossingDirection.ANY) then 1 else 0;
MA_1min_same = if MA_1min_nowcrossing == 1 then 1 else Double.NaN;
if MA_1min_same == 1 {
MA_1min_higher = Double.NaN;
MA_1min_lower = Double.NaN;
} else {
MA_1min_higher = if MA_1min_shortAvg >= MA_1min_longAvg[1] then 1 else Double.NaN;
MA_1min_lower = if MA_1min_shortAvg < MA_1min_longAvg[1] then 1 else Double.NaN;
}
} else {
MA_1min_close = 0;
MA_1min_shortAvg = 0;
MA_1min_longAvg = 0;
MA_1min_higher = Double.NaN;
MA_1min_lower = Double.NaN;
MA_1min_same = Double.NaN;
MA_1min_nowcrossing = 0;
}
AddLabel(MA_1min_higher, "1m", Color.DARK_GREEN);
AddLabel(MA_1min_lower, "1m", Color.DARK_RED);
AddLabel(MA_1min_same, "1m", Color.WHITE);
hello, how can additional EMA be added to this set up? rather than just 5/21 i use 5/8/21/34/55/89 D/4H/1H/15@Cindy The above label code has an input that can be changed to whatever aggregation you want. However, here is an example of multiple aggregation labels together. A limitation of combining aggregations in this way is that your chart aggregation must always be equal to or lower than the shortest aggregation label in order to see any of the labels.
To add additional aggregations, simply duplicate the method used.
Code:def agg1 = aggregationperiod.five_min; def agg2 = aggregationperiod.ten_min; def agg3 = aggregationperiod.fifteen_min; def agg4 = aggregationperiod.thirty_min; def agg5 = aggregationperiod.hour; def agg6 = aggregationperiod.day; def agg7 = aggregationperiod.week; def ma1 = expaverage(close(period = agg1), 5) > expaverage(close(period = agg1), 21); def ma2 = expaverage(close(period = agg2), 5) > expaverage(close(period = agg2), 21); def ma3 = expaverage(close(period = agg3), 5) > expaverage(close(period = agg3), 21); def ma4 = expaverage(close(period = agg4), 5) > expaverage(close(period = agg4), 21); def ma5 = expaverage(close(period = agg5), 5) > expaverage(close(period = agg5), 21); def ma6 = expaverage(close(period = agg6), 5) > expaverage(close(period = agg6), 21); def ma7 = expaverage(close(period = agg7), 5) > expaverage(close(period = agg7), 21); AddLabel(1, " 5 ", if ma1 then color.green else color.red); AddLabel(1, " 10 ", if ma2 then color.green else color.red); AddLabel(1, " 15 ", if ma3 then color.green else color.red); AddLabel(1, " 30 ", if ma4 then color.green else color.red); AddLabel(1, " HR ", if ma5 then color.green else color.red); AddLabel(1, " D ", if ma6 then color.green else color.red); AddLabel(1, " W ", if ma7 then color.green else color.red);
(As per the first code) Simply replace each ma line (i.e ma1, ma2 etc.) with this code below. Also, do the inverse (instead of > do <) for ma1b, ma2b etc.hello, how can additional EMA be added to this set up? rather than just 5/21 i use 5/8/21/34/55/89 D/4H/1H/15
def ma1 = expaverage(close(period = agg1), 5) > expaverage(close(period = agg1), 8) and expaverage(close(period = agg1), 8) > expaverage(close(period = agg1), 21) and expaverage(close(period = agg1), 21) > expaverage(close(period = agg1), 34) and expaverage(close(period = agg1), 34) > expaverage(close(period = agg1), 55) and
expaverage(close(period = agg1), 55) > expaverage(close(period = agg1), 89);
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
Start a new thread and receive assistance from our community.
useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.
We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.
If you are new, or just looking for guidance, here are some helpful links to get you started.