input fastLength = 12;
input slowLength = 26;
input MACDLength = 9;
input averageType = AverageType.EXPONENTIAL;
input crossingType = {default "Positive to Negative", "Negative to Positive"};
def d = MACD(fastLength, slowLength, MACDLength, averageType).Diff;
def v = MACD(fastLength, slowLength, MACDLength, averageType).value;
def a = MACD(fastLength, slowLength, MACDLength, averageType).Avg;
def signal = if Crosses(v, a, crossingType == crossingType."Negative to Positive")
then a else signal[1];
def signal1 = if signal != signal[1]
then signal[1] else signal1[1];
plot x = if signal[1] < signal1[1] and signal > signal1 then signal else Double.NaN;
x.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
input debug = yes;
AddChartBubble(debug == yes and signal > signal1 and x == signal,
signal,
signal + "\n " + signal1,
if signal > signal1 then Color.GREEN else Color.YELLOW, no);
AddLabel(debug, signal1 + " " + signal, color.yellow);