final ttm wave , normalised both plots so the c wave doesnt "scrunch" the A wave anymore , changed the labels also
declare lower;
def fastLength = 13;
def slowLength = 34;
def MACDLength = 9;
input AverageType = {SMA, default EMA};
def data1 = MACD(fastLength, slowLength, MACDLength, AverageType).Diff*30;
def ldata1 = AbsValue(lowestAll(data1));
def hdata1 = AbsValue(highestAll(data1));
def data2 = 200 * data1/Max(hdata1,ldata1);
plot Diff = data2;
plot zeroline = 0;
Diff.SetDefaultColor(GetColor(5));
Diff.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
Diff.SetLineWeight(2);
Diff.DefineColor("Positive and Up", Color.yellow);
Diff.DefineColor("Positive and Down", Color.dark_red);
Diff.DefineColor("Negative and Down", Color.dark_red);
Diff.DefineColor("Negative and Up", Color.yellow);
Diff.AssignValueColor(if Diff >= 0 then if Diff > Diff[1] then Diff.color("Positive and Up") else Diff.color("Positive and Down") else if Diff < Diff[1] then Diff.color("Negative and Down") else Diff.color("Negative and Up"));
Diff.HideTitle();
ZeroLine.SetDefaultColor(GetColor(5));
zeroline.SetDefaultColor(color.gray);
zeroline.HideTitle();
input longLength1 = 40;
input shortLength1 = 30;
input signalLength1 = 8;
input averageType1 = {SMA, default EMA, WMA};
def diff1 = close - close[1];
plot TSI1;
plot Signal1;
switch (averageType1) {
case SMA:
TSI1 = (Average(Average(diff1, longLength1), shortLength1)) / (Average(Average(AbsValue(diff1), longLength1), shortLength1)) * 1000;
Signal1 = Average(TSI1, signalLength1);
case EMA:
TSI1 = (ExpAverage(ExpAverage(diff1, longLength1), shortLength1)) / (ExpAverage(ExpAverage(AbsValue(diff1), longLength1), shortLength1)) * 800;
Signal1 = ExpAverage(TSI1, signalLength1);
case WMA:
TSI1 = (wma(wma(diff1, longLength1), shortLength1)) / (wma(wma(AbsValue(diff1), longLength1), shortLength1)) * 1000;
Signal1 = wma(TSI1, signalLength1);
}
plot ZeroLine1 = 0;
TSI1.SetDefaultColor(GetColor(1));
tsi1.DefineColor("avgup", CreateColor(30,144, 255));
tsi1.setPaintingStrategy(PaintingStrategy.HISTOGRAM);
tsi1.DefineColor("avgdown", CreateColor(0, 0, 255));
tsi1.SetLineWeight(2);
tsi1.AssignValueColor(if tsi1 >= tsi1[1] then tsi1.color("avgup") else tsi1.color("avgdown"));
Signal1.SetDefaultColor(GetColor(

);
Signal1.hide();
AddChartLabel(if diff > 0 and signal1 >0 then yes else no, "waves positive", CreateColor(0, 255, 205));
AddChartLabel(if diff < 0 and signal1 <0 then yes else no, "waves negetive", CreateColor(0, 0, 205));
AddChartLabel(if signal1> signal1 [1] then yes else no, "C up", CreateColor(0, 255, 255));
AddChartLabel(if signal1 < signal1[1] then yes else no, "C down", CreateColor(0, 0, 205));
AddChartLabel(if diff> diff [1] then yes else no, "A up ", CreateColor(0, 255, 255));
AddChartLabel(if diff < diff[1] then yes else no, "A down", CreateColor(0, 0, 205));
AssignBackgroundColor(color.BLACK);
Read More...