//@LibraryID:193,7 //@Name:Two MAs //@Description:Displays two MAs as indicators //@Returns:Number //@Width:80 var MAtype1 = 0; var MAtype2 = 0; var var1 = 10; var var2 = 20; var dataType1 = 3; var dataType2 = 3; var indCol1 = Colour.Magenta; var indCol2 = Colour.Green; var indStyle1 = 0; var indStyle2 = 0; var indWidth1 = 1; var indWidth2 = 1; var maList = ["Simple","Exponential","Weighted","Triangular","VariableVHF","VariableCMO","VIDYA","Hull","TEMA","Trend"]; var maTitleList = ["SMA","EMA","WMA","TMA","VVHF","VCMO","VIDYA","HMA","TEMA","Trend"]; var dataList = ["Open","High","Low","Close","Typical","Median","Weighted","HeikenAshi"]; function init(status) { if (status == Loading || status == Editing) { var store1 = restore(storage.getAt(0), [[MAtype1,0,9],[MAtype2,0,9],[indStyle1,0,4],[indStyle2,0,4],[indWidth1,0,7],[indWidth2,0,7],[dataType1,0,7]]) MAtype1 = store1[0][0]; MAtype2 = store1[1][0]; indStyle1 = store1[2][0]; indStyle2 = store1[3][0]; indWidth1 = store1[4][0]; indWidth2 = store1[5][0]; dataType1 = store1[6][0]; var1 = storage.getAt(1); indCol1 = storage.getAt(2); var2 = storage.getAt(3); indCol2 = storage.getAt(4); dataType2 = storage.getAt(5); } if (status == Adding || status == Editing) { dlg = new Dialog("Settings...",280,55); dlg.addOkButton(); dlg.addCancelButton(); dlg.addDropList("DL1",8,5,80,-1,maList,"","",MAtype1); dlg.addIntEdit("INT1",95,5,-1,-1,"","",var1,2,1000); dlg.addColLinePicker("CL1",135,5,-1,-1,"","",indCol1,indStyle1,indWidth1); dlg.addDropList("DL3",175,5,40,-1,dataList,"","",dataType1); dlg.addDropList("DL2",8,23,80,-1,maList,"","",MAtype2); dlg.addIntEdit("INT2",95,23,-1,-1,"","",var2,3,1000); dlg.addColLinePicker("CL2",135,22,-1,-1,"","",indCol2,indStyle2,indWidth2); dlg.addDropList("DL4",175,23,40,-1,dataList,"","",dataType2); if (dlg.show()==Dialog.Cancel) return false; MAtype1 = dlg.getValue("DL1"); var1 = dlg.getValue("INT1"); indCol1 = dlg.getValue("CL1").colour; indStyle1 = dlg.getValue("CL1").pen; indWidth1 = dlg.getValue("CL1").width; MAtype2 = dlg.getValue("DL2"); var2 = dlg.getValue("INT2"); indCol2 = dlg.getValue("CL2").colour; indStyle2 = dlg.getValue("CL2").pen; indWidth2 = dlg.getValue("CL2").width; dataType1 = dlg.getValue("DL3"); dataType2 = dlg.getValue("DL4"); storage.setAt(0, compress([[MAtype1,0,9],[MAtype2,0,9],[indStyle1,0,4],[indStyle2,0,4],[indWidth1,0,7],[indWidth2,0,7],[dataType1,0,7]])); storage.setAt(1, var1); storage.setAt(2, indCol1); storage.setAt(3, var2); storage.setAt(4, indCol2); storage.setAt(5, dataType2); } setSeriesColour(0,indCol1); setSeriesLineStyle(0,indStyle1,indWidth1); setSeriesColour(1,indCol2); setSeriesLineStyle(1,indStyle2,indWidth2); setRange(Range.Parent); setTitle(var1+" "+maTitleList[MAtype1]+", "+var2+" "+maTitleList[MAtype2]); } function getGraph(share, data) { var line1 = new Array(); var line2 = new Array(); if (MAtype1 == 8) var ma1 = new TEMA(var1); else if (MAtype1 == 9) var ma1 = new TrendMA(var1); else var ma1 = new MA(var1,MAtype1); for (var i=0; ithis.period) this.prices.splice(0,1); var trend1 = new Trend(this.period) for (var i=0;i8388608) print("Too much data for single storage space") return output } function restore(storage, data) { var remainder = storage var rangeTot = 1 for (var i=0;i=0;i--) { if (i