//@Name:Awesome Oscilator Cross //@Description:Checks back a specified number of periods and returns 1 if the Awesome Oscilator has crossed 0 since then. //@Returns:Number //@Width:100 //@StandardAlarmOutput:Yes // Author: Phil Tolhurst, ShareScript Support // 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 whenCross = 0; var dataList = ["Days","Weeks","Months"]; var crossList = ["Cross since","Cross on"]; var crossType = 0; var dataType = 0; function init(status) { if (status == Loading || status == Editing) { crossType = storage.getAt(0); period = storage.getAt(1); dataType = storage.getAt(2); } if (status == Adding || status == Editing) { dlg = new Dialog("Awesome Oscilator Settings",255,50); dlg.addOkButton(); dlg.addCancelButton(); dlg.addDropList("VAL1",8,15,-1,-1,crossList,"","",crossType); dlg.addIntEdit("VAL2",80,15,-1,-1,"","",period,0,1000); dlg.addDropList("VAL3",115,15,40,-1,dataList,"","ago.",dataType); if (dlg.show()==Dialog.Cancel) return false; crossType = dlg.getValue("VAL1"); period = dlg.getValue("VAL2"); dataType = dlg.getValue("VAL3"); storage.setAt(0, crossType); storage.setAt(1, period); storage.setAt(2, dataType); } setTitle(" Awesome Oscilator "+crossList[crossType]+" "+period+" "+dataList[dataType]); } function getVal(share) { if (dataType==0) var data = share.getPriceArray(); if (dataType==1) var data = share.getWeeklyBarArray(); if (dataType==2) var data = share.getMonthlyBarArray(); var medianPrice=0; var AO=new Array(); var ma1=new MA(5,MA.Simple); var ma2=new MA(34,MA.Simple); for (i=0;i0) return 1; } if(crossType==1) { if (AO[AO.length-(2+period)]<0 && AO[AO.length-(1+period)]>0) return 1; } return 0; }