//@Name:RMO Bar Colour Change //@Description: Returns 1 if the bar colour changes to blue and -1 if it changes to red. The Rahul Mohindar Oscillator is based on code readily available on the internet for programs like Amibroker and Metastock // 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. // Coded by: Phil Tolhurst, ShareScope Support var dataSource = 0; var dataList = ["Daily","Weekly","Monthly"]; function init(status) { if (status == Loading || status == Editing) { dataSource = storage.getAt(0); } if (status == Adding || status == Editing) { var dlg = new Dialog("Chose data source", 150, 40); dlg.addOkButton(); dlg.addCancelButton(); dlg.addDropList("VAL1", 5, 5, -1, -1, dataList,"","",dataSource); if (dlg.show() == Dialog.Ok) { dataSource=dlg.getValue("VAL1") storage.setAt(0, dataSource); } else { return false; } } } function getVal(share) { var bars = dataSource==0?share.getPriceArray():(dataSource==1?share.getWeeklyBarArray():share.getMonthlyBarArray()); var maCalc1 = new MA(2,MA.Simple); var maCalc2 = new MA(2,MA.Simple); var maCalc3 = new MA(2,MA.Simple); var maCalc4 = new MA(2,MA.Simple); var maCalc5 = new MA(2,MA.Simple); var maCalc6 = new MA(2,MA.Simple); var maCalc7 = new MA(2,MA.Simple); var maCalc8 = new MA(2,MA.Simple); var maCalc9 = new MA(2,MA.Simple); var maCalc10 = new MA(2,MA.Simple); var maRes1 = 0; var maRes2 = 0; var maRes3 = 0; var maRes4 = 0; var maRes5 = 0; var maRes6 = 0; var maRes7 = 0; var maRes8 = 0; var maRes9 = 0; var maRes10 = 0; var maAvg = 0; var emaCalc1 = new MA(30,MA.Exponential); var emaCalc2 = new MA(30,MA.Exponential); var emaCalc3 = new MA(81,MA.Exponential); var minMaxCalc = new MinMax(10); var HHV = 0; var LLV = 0; var HLdiff = 0; var swingTrd1 = new Array; var swingTrd2 = new Array; var swingTrd3 = new Array; var RMO = new Array; var Bull_Trend=0; var Bear_Trend=0; var Impulse_UP=0; var Impulse_Down=0; var Buy; var Sell; for (var i=0;i0; Bear_Trend=RMO[i]<0; Impulse_UP = swingTrd2[i] > 0; Impulse_Down = Bear_Trend; if (Impulse_UP) output[i] = 1 else if (Impulse_Down) output[i] = -1 else if (Bull_Trend) output[i] = -1 else output[i] = 1 } t = output.length-1 //today y = output.length-2 //yesterday if (output[t]!=output[y]) return output[t] else return 0; }