#### rlohmeyer

##### Member

The chart is a 1 minute chart I scalped Friday for a high average daily range stock (use several different stocks for this type of scalping). The chart has explanations for what is on the chart. The indicator is the TMO in yellow, and RSI candles in Cyan, on a normalized scale. The are both using the close as the data set, both are set to 5 as the number of data points, and both are smoothed by a Wilders Average, TMO 5 and RSI 2. I like the way this indicator adds to the decision whether I am going to place a short or long bet for a scalp at a pullback area. And in the 2 instances on the chart it only took a quick glance to confirm which choice. I share the indicator if any one wants to fool around with it.

Shout out to @BenTen for the TMO posting. @markos for contributions and @germanburrito for the idea to use RSI candles. If BenTen feels this post should be moved to another thread, my feelings won't be hurt.

Chart is below. Code is below chart.

Code:

```
# TMO ((T)rue (M)omentum (O)scilator)
# Mobius
# V01.05.2018
# hint: TMO calculates momentum using the delta of price. Giving a much better picture of trend, tend reversals and divergence than momentum oscillators using price.#RSI,TMO on_volume normalized scale
# RSI as Candles
# Mobius
# German Burrito mods
#rlohmeyer normalization of scales to compare indicators
declare lower;
#Scale Normaliztion Script
script normalizePlot {
input normalize_data = close;
input MinRng = -1;
input MaxRng = 1;
def HH = HighestAll( normalize_data );
def LL = LowestAll( normalize_data );
plot NR = ((( MaxRng - MinRng ) * ( normalize_data - LL )) / ( HH - LL )) + MinRng;
}
#TMO data
input Tmo_Price = close;
input Tmo_data_length = 10;
input Tmo_Ema_Length = 5;
def o = open;
def TMOdata = fold i = 0 to TMO_data_length with s do s + (if TMO_price > getValue(o, i)
then 1 else if TMO_price < getValue(o, i) then - 1 else 0);
def TMOavg = MovingAverage(AverageType.WILDERS,TMOdata, TMO_EMA_Length);
#RSI data
input RSI_price = close;
def RSI_Average = AverageType.WILDERS;
input RSI_Avg_Length = 2;
def NetChgAvg = MovingAverage(RSI_Average, RSI_price - RSI_price[1], RSI_Avg_Length);
def TotChgAvg = MovingAverage(RSI_Average, AbsValue(RSI_price - RSI_price[1]), RSI_Avg_Length);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;
def RS = 50 * (ChgRatio + 1);
input Rsi_Ema_Length = 2;
def RSIavg = ExpAverage(RS, RSI_EMA_Length);
#Scale parameters
input MaxRng = 100;#Max range value
input MinRng = 0;#Min range value
input OBH = 95;
input OBL = 90;
Addcloud(OBH,OBL,color.green);
input OSH = 10;
input OSL = 5;
Addcloud(OSH,OSL,color.red);
#Scale normalization based on parameters
def newTMO = normalizePlot(TMOavg, MinRng, MaxRng );
def newRSI = normalizePlot(RSIavg, MinRng, MaxRng );
#Plot TMO
plot TMO = newTMO;
TMO.setdefaultColor(color.yellow);
TMO.Hidebubble();
TMO.hidetitle();
#Plot RSI Chart
def h = Max(newRSI, newRSI[1]);
def l = Min(newRSI, newRSI[1]);
def c = newRSI;
def op = c[1];
AddChart(high = h, low = l, open = op, close = c, type = ChartType.CANDLE, Color.cyan);
#Midrange
plot Mid = (MaxRng + MinRng)/2;
Mid.setdefaultColor(color.light_gray);
Mid.hidebubble();
Mid.hidetitle();
```