I

#### iifbh

##### New member

How it works:

Some issues/bugs/drawbacks with this indicator:

All credit spork-in-the-moon

reddit.com/r/thewallstreet/comments/8t14xs/multiple_time_frame_trend_indicator/

For example, let's say you're seeing red candles everywhere, but at some point in the day, you notice the 1-minute label turns white and then green. Then the 2 minute, and so on. Ideally, you would be able to open a bullish position during one of the shorter time frames, and ride the momentum up as the other time frames turn greener than a closeup of Shrek's face. Once you start seeing the lower time frames turn red again, you would get out for a profit… well, in theory.Calculations are done using the 5 and 21 period Exponential Moving Averages. (you can tweak this in settings). The indicator displays labels for different time frames. A green label means the 5 EMA is above the 21 EMA, a red label means the opposite. A white label means that the two are crossing over, implying a trend change. Crossovers / changes in trend at the smallest time frames would, in theory, spread "upwards" to longer time frames.

Some issues/bugs/drawbacks with this indicator:

And if this indicator looks a little familiar to some people… there's a certain website that sells something very similar for almost $500. Since I'm pretty cheap — definitely too cheap to shell out hundreds of dollars for something so simple — I just went and coded my own version in Thinkscript so I wouldn't have to waste money on overpriced indicators. I hope everyone here can find some use out of it too.Due to TOS quirks, you can only see labels for whatever time-frame you're on, plus for time frames that are longer. So if you're looking at the daily chart, you won't see any information for, say, the 15 minute time-frame. To get the most out of this indicator, you'll have to look at the 1-minute chart.

This indicator doesn't work on mobile. Since I do most of my trades from my phone, this makes me shed a little tear. :'(. It sometimes stops displaying certain time-frames if you're not looking at something that trades around the clock (like futures).

### thinkScript Code

Rich (BB code):

```
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 then 1 else Double.NaN;
MA_month_lower = if MA_month_shortAvg < MA_month_longAvg 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 then 1 else Double.NaN;
MA_week_lower = if MA_week_shortAvg < MA_week_longAvg 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 then 1 else Double.NaN;
MA_4day_lower = if MA_4day_shortAvg < MA_4day_longAvg 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 then 1 else Double.NaN;
MA_3day_lower = if MA_3day_shortAvg < MA_3day_longAvg 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 then 1 else Double.NaN;
MA_2day_lower = if MA_2day_shortAvg < MA_2day_longAvg 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 then 1 else Double.NaN;
MA_1day_lower = if MA_1day_shortAvg < MA_1day_longAvg 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 then 1 else Double.NaN;
MA_4hour_lower = if MA_4hour_shortAvg < MA_4hour_longAvg 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 then 1 else Double.NaN;
MA_2hour_lower = if MA_2hour_shortAvg < MA_2hour_longAvg 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 then 1 else Double.NaN;
MA_1hour_lower = if MA_1hour_shortAvg < MA_1hour_longAvg 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 then 1 else Double.NaN;
MA_30min_lower = if MA_30min_shortAvg < MA_30min_longAvg 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 then 1 else Double.NaN;
MA_15min_lower = if MA_15min_shortAvg < MA_15min_longAvg 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 then 1 else Double.NaN;
MA_10min_lower = if MA_10min_shortAvg < MA_10min_longAvg 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 then 1 else Double.NaN;
MA_shortAvgmin_lower = if MA_shortAvgmin_shortAvg < MA_shortAvgmin_longAvg 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 then 1 else Double.NaN;
MA_4min_lower = if MA_4min_shortAvg < MA_4min_longAvg 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 then 1 else Double.NaN;
MA_3min_lower = if MA_3min_shortAvg < MA_3min_longAvg 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 then 1 else Double.NaN;
MA_2min_lower = if MA_2min_shortAvg < MA_2min_longAvg 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 then 1 else Double.NaN;
MA_1min_lower = if MA_1min_shortAvg < MA_1min_longAvg 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);
```

### Shareable Link

https://tos.mx/K2Y7vTAll credit spork-in-the-moon

reddit.com/r/thewallstreet/comments/8t14xs/multiple_time_frame_trend_indicator/

Last edited by a moderator: