//@Name:Momentum MA //@Description:A Momentum indicator and its signal // 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 maType = 0; var sigPeriod = 20; var momPeriod = 20; var momCol = Colour.DarkGreen; var momStyle = Pen.Solid; var momWidth = 1; var sigCol = Colour.DarkGreen; var sigStyle = Pen.Dot; var sigWidth = 0; var sigLine = 0; var momLine = 0; var maTitleList = ["SMA","EMA","WMA","TMA","VVHF","VCMO","VIDYA"]; var maList = ["Simple","Exponential","Weighted","Triangular","VariableVHF","VariableCMO","VIDYA"]; function init(status) { if (status == Loading || status == Editing) { maType = storage.getAt(0); sigPeriod = storage.getAt(1); momPeriod = storage.getAt(2); momCol = storage.getAt(3); momLine = storage.getAt(4); sigCol = storage.getAt(5); sigLine = storage.getAt(6); momLine = momLine.toString(); momStyle =parseInt(momLine.substr(1,1),10); momWidth =parseInt(momLine.substr(2,1),10); sigLine = sigLine.toString(); sigStyle =parseInt(sigLine.substr(1,1),10); sigWidth =parseInt(sigLine.substr(2,1),10); } if (status == Adding || status == Editing) { dlg = new Dialog("Indicator settings",300,65); dlg.addOkButton(); dlg.addCancelButton(); dlg.addIntEdit("INT2",65,5,-1,-1,"Momentum Period","",momPeriod,2,1000); dlg.addColLinePicker("LN1",165,5,-1,-1,"","",momCol,momStyle,momWidth); dlg.addIntEdit("INT1",65,22,-1,-1,"MA period","",sigPeriod,2,1000); dlg.addDropList("DL1",98,22,-1,-1,maList,"","",maType); dlg.addColLinePicker("LN2",165,22,-1,-1,"","",sigCol,sigStyle,sigWidth); if (dlg.show()==Dialog.Cancel) return false; maType = dlg.getValue("DL1"); sigPeriod = dlg.getValue("INT1"); momPeriod = dlg.getValue("INT2"); momCol = dlg.getValue("LN1").colour; momStyle = dlg.getValue("LN1").pen; momWidth = dlg.getValue("LN1").width; momLine = 100+(momStyle*10)+momWidth; sigCol = dlg.getValue("LN2").colour; sigStyle = dlg.getValue("LN2").pen; sigWidth = dlg.getValue("LN2").width; sigLine = 100+(sigStyle*10)+sigWidth; storage.setAt(0, maType); storage.setAt(1, sigPeriod); storage.setAt(2, momPeriod); storage.setAt(3, momCol); storage.setAt(4, momLine); storage.setAt(5, sigCol); storage.setAt(6, sigLine); } setTitle(momPeriod+" Momentum "+sigPeriod+" "+maTitleList[maType]+" signal") setSeriesLineStyle(0, momStyle, momWidth); setSeriesLineStyle(1, sigStyle,sigWidth); setSeriesColour(0, momCol); setSeriesColour(1, sigCol); setHorizontalLine(100); } function getGraph(share, data) { var momentum1 = new Momentum(momPeriod); var ma1 = new MA(sigPeriod,maType); var mom = []; var sig = []; for (var i=0; i