//@LibraryID:805,0 //@LibraryID:804,0 //@LibraryID:798,0 //@Name:Colour Change MA2 //@Description:Changes the colour of the candles when the MAs cross above or below each other. // Care has been taken in preparing this code but it is provided without guarantee. // You are welcome to modify and extend it. Please add your name as a modifier if you distribute it. var period1 = 20; var period2 = 100; var ma1; var ma2; var outputList = ["Simple","Exponential", "Weighted", "Triangular" , "Variable VHF" , "Variable CMO" , "VIDYA", "TEMA", "Hull"]; var title = ["SMA","EMA","WMA","TMA","VHF","CMO","VIDYA", "TEMA", "Hull"]; var maType1 = 0; var maType2 = 0; var clrAbove = Colour.Blue; var clrBelow = Colour.Red; var maColor1 = Colour.Green; var maColor2 = Colour.Yellow; function init(status) { if (status == Loading || status == Editing) { period1 = storage.getAt(0); maType1 = storage.getAt(1); clrAbove = storage.getAt(2); clrBelow = storage.getAt(3); period2 = storage.getAt(4); maType2 = storage.getAt(5); maColor1 = storage.getAt(6); maColor2 = storage.getAt(7); } if (status == Adding || status == Editing) { dlg = new Dialog("MA Settings", 210, 100); dlg.addOkButton(); dlg.addCancelButton(); dlg.addIntEdit("INT1",8,-1,-1,-1,"","Short Period",period1,2,1000); dlg.addDropList("DL1",8,-1,-1,-1,outputList,"","",maType1); dlg.addIntEdit("INT2",8,-1,-1,-1,"","Long Period",period2,2,1000); dlg.addDropList("DL2",8,-1,-1,-1,outputList,"","",maType2); dlg.addColPicker("COL1",8,75,-1,-1, "","Above", clrAbove); dlg.addColPicker("COL2",75,75,-1,-1, "","Normal", clrBelow); dlg.addColPicker("COL3",90,5,-1,-1, "","", maColor1); dlg.addColPicker("COL4",90,35,-1,-1, "","", maColor2); if (dlg.show()==Dialog.Cancel) return false; period1 = dlg.getValue("INT1"); maType1 = dlg.getValue("DL1"); period2 = dlg.getValue("INT2"); maType2 = dlg.getValue("DL2"); clrAbove = dlg.getValue("COL1"); clrBelow = dlg.getValue("COL2"); maColor1 = dlg.getValue("COL3"); maColor2 = dlg.getValue("COL4"); storage.setAt(0, period1); storage.setAt(1, maType1); storage.setAt(2, clrAbove); storage.setAt(3, clrBelow); storage.setAt(4, period2); storage.setAt(5, maType2); storage.setAt(6, maColor1); storage.setAt(7, maColor2); } setTitle(period1 + " " + title[maType1] + " | Close +/- " + period2 + " " + title[maType2] ) } function onNewChart() { clearDisplay(); draw(); } function onNewBarUpdate() { clearDisplay(); draw(); } function draw() { if (maType1 == 7) var ma1 = new TEMA(period1) else if (maType1 == 8) var ma1 = new Hull(period1) else var ma1 = new MA(period1, maType1); if (maType2 == 7) var ma2 = new TEMA(period2) else if (maType2 == 8) var ma2 = new Hull(period2) else var ma2 = new MA(period2, maType2); var maVal1 = new Array(); var maVal2 = new Array(); for (var i=0;i maVal2[i]) { bars[i].colour = clrAbove; } else { bars[i].colour = clrBelow; } } setPenStyle(0,0,maColor1); beginPath(); for(var i=0;i