//@Name:Fibonacci Bands //@Description:Displays an EMA with 3 series of bands. // 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 period = 20; var b1 = 1.62; var b2 = 2.62; var b3 = 4.23; var line1 = [Colour.Red,Pen.Solid,1]; var line2 = [Colour.Blue,Pen.Solid,0]; var line3 = [Colour.Magenta,Pen.Solid,0]; var line4 = [Colour.Green,Pen.Solid,0]; function init(status) { if (status == Loading || status == Editing) { period = storage.getAt(0); b1 = storage.getAt(1); b2 = storage.getAt(2); b3 = storage.getAt(3); var F = new File(); F.open("/Output/FibBands.cfg"); line1[0] = F.readLine(); line1[1] = F.readLine(); line1[2] = F.readLine(); line2[0] = F.readLine(); line2[1] = F.readLine(); line2[2] = F.readLine(); line3[0] = F.readLine(); line3[1] = F.readLine(); line3[2] = F.readLine(); line4[0] = F.readLine(); line4[1] = F.readLine(); line4[2] = F.readLine(); F.close(); } if (status == Adding || status == Editing) { dlg = new Dialog("Line settings",180,80); dlg.addOkButton(); dlg.addCancelButton(); dlg.addNumEdit("NUM1",12,-1,-1,-1,"","period",period,2,1000); dlg.addColLinePicker("COL1",80,5,-1,-1,"","",line1[0],line1[1],line1[2]); dlg.addNumEdit("NUM2",12,-1,-1,-1,"","band 1",b1,0,10); dlg.addColLinePicker("COL2",80,23,-1,-1,"","",line2[0],line2[1],line2[2]); dlg.addNumEdit("NUM3",12,-1,-1,-1,"","band 2",b2,0,10); dlg.addColLinePicker("COL3",80,41,-1,-1,"","",line3[0],line3[1],line3[2]); dlg.addNumEdit("NUM4",12,-1,-1,-1,"","band 3",b3,0,10); dlg.addColLinePicker("COL4",80,59,-1,-1,"","",line4[0],line4[1],line4[2]); if (dlg.show()==Dialog.Cancel) return false; period = dlg.getValue("NUM1"); b1 = dlg.getValue("NUM2"); b2 = dlg.getValue("NUM3"); b3 = dlg.getValue("NUM4"); line1[0] = dlg.getValue("COL1").colour; line1[1] = dlg.getValue("COL1").pen; line1[2] = dlg.getValue("COL1").width; line2[0] = dlg.getValue("COL2").colour; line2[1] = dlg.getValue("COL2").pen; line2[2] = dlg.getValue("COL2").width; line3[0] = dlg.getValue("COL3").colour; line3[1] = dlg.getValue("COL3").pen; line3[2] = dlg.getValue("COL3").width; line4[0] = dlg.getValue("COL4").colour; line4[1] = dlg.getValue("COL4").pen; line4[2] = dlg.getValue("COL4").width; storage.setAt(0, period); storage.setAt(1, b1); storage.setAt(2, b2); storage.setAt(3, b3); var F = new File(); F.open("FibBands.cfg",File.WriteMode); F.writeLine(line1[0]); F.writeLine(line1[1]); F.writeLine(line1[2]); F.writeLine(line2[0]); F.writeLine(line2[1]); F.writeLine(line2[2]); F.writeLine(line3[0]); F.writeLine(line3[1]); F.writeLine(line3[2]); F.writeLine(line4[0]); F.writeLine(line4[1]); F.writeLine(line4[2]); F.close(); } setRange(Range.Parent); setSeriesColour(0,line1[0]); setSeriesLineStyle(0,line1[1],line1[2]); setSeriesColour(1,line2[0]); setSeriesColour(2,line3[0]); setSeriesColour(3,line4[0]); setSeriesLineStyle(1,line2[1],line2[2]); setSeriesLineStyle(2,line3[1],line3[2]); setSeriesLineStyle(3,line4[1],line4[2]); setSeriesColour(4,line2[0]); setSeriesColour(5,line3[0]); setSeriesColour(6,line4[0]); setSeriesLineStyle(4,line2[1],line2[2]); setSeriesLineStyle(5,line3[1],line3[2]); setSeriesLineStyle(6,line4[1],line4[2]); } function getGraph(share, data) { var ma1 = new MA(period, MA.Exponential); var ma2 = new MA(period, MA.Exponential); var EMA = []; var band1 = []; var band2 = []; var band3 = []; var band4 = []; var band5 = []; var band6 = []; for (var i=1;i