
Code:
#Guppy Multiple Moving Averages
#Daryl Guppy, an Australian trader who is credited with its development.
#
#https://www.investopedia.com/terms/g/guppy-multiple-moving-average.asp
#Discussion: https://usethinkscript.com/threads/guppy-multiple-moving-averages-indicator.732/
#
#Ported on 20190427 V.01 - diazlaz
input price = close;
input avg1 = AverageType.EXPONENTIAL;
input avg2 = AverageType.EXPONENTIAL;
input len1 = 3;
input len2 = 5;
input len3 = 8;
input len4 = 10;
input len5 = 12;
input len6 = 15;
plot ma1 = MovingAverage(averagetype = avg1, price, len1);
plot ma2 = MovingAverage(averagetype = avg1, price, len2);
plot ma3 = MovingAverage(averagetype = avg1, price, len3);
plot ma4 = MovingAverage(averagetype = avg1, price, len4);
plot ma5 = MovingAverage(averagetype = avg1, price, len5);
plot ma6 = MovingAverage(averagetype = avg1, price, len6);
input len11 = 30;
input len21 = 35;
input len31 = 40;
input len41 = 45;
input len51 = 50;
input len61 = 60;
plot ma11 = MovingAverage(averagetype = avg1, price, len11);
plot ma21 = MovingAverage(averagetype = avg1, price, len21);
plot ma31 = MovingAverage(averagetype = avg1, price, len31);
plot ma41 = MovingAverage(averagetype = avg1, price, len41);
plot ma51 = MovingAverage(averagetype = avg1, price, len51);
plot ma61 = MovingAverage(averagetype = avg1, price, len61);
ma1.AssignValueColor(if ma1 < ma6 then Color.DARK_RED else Color.DARK_GREEN);
ma2.AssignValueColor(if ma2[1] > ma2 then Color.DARK_RED else Color.DARK_GREEN);
ma3.AssignValueColor(if ma3[1] > ma3 then Color.DARK_RED else Color.DARK_GREEN);
ma4.AssignValueColor(if ma4[1] > ma4 then Color.DARK_RED else Color.DARK_GREEN);
ma5.AssignValueColor(if ma5[1] > ma5 then Color.DARK_RED else Color.DARK_GREEN);
ma6.AssignValueColor(if ma6 > ma1 then Color.DARK_RED else Color.DARK_GREEN);
ma11.AssignValueColor(if ma11 < ma61 then Color.DARK_RED else Color.DARK_GREEN);
ma21.AssignValueColor(if ma21[1] > ma21 then Color.DARK_RED else Color.DARK_GREEN);
ma31.AssignValueColor(if ma31[1] > ma31 then Color.DARK_RED else Color.DARK_GREEN);
ma41.AssignValueColor(if ma41[1] > ma41 then Color.DARK_RED else Color.DARK_GREEN);
ma51.AssignValueColor(if ma51[1] > ma51 then Color.DARK_RED else Color.DARK_GREEN);
ma61.AssignValueColor(if ma61 > ma11 then Color.DARK_RED else Color.DARK_GREEN);
AddCloud(ma1, ma6, Color.LIGHT_GREEN, Color.LIGHT_RED);
AddCloud(ma2, ma6, Color.LIGHT_GREEN, Color.LIGHT_RED);
AddCloud(ma3, ma6, Color.LIGHT_GREEN, Color.LIGHT_RED);
AddCloud(ma4, ma6, Color.LIGHT_GREEN, Color.LIGHT_RED);
AddCloud(ma5, ma6, Color.LIGHT_GREEN, Color.LIGHT_RED);
AddCloud(ma11, ma61, Color.LIGHT_GREEN, Color.LIGHT_RED);
AddCloud(ma21, ma61, Color.LIGHT_GREEN, Color.LIGHT_RED);
AddCloud(ma31, ma61, Color.LIGHT_GREEN, Color.LIGHT_RED);
AddCloud(ma41, ma61, Color.LIGHT_GREEN, Color.LIGHT_RED);
AddCloud(ma51, ma61, Color.LIGHT_GREEN, Color.LIGHT_RED);