//@Name:Alarm:Share divergence //@Description:The alarm triggeres when the two shares diverge by the set % compared to their previous close //@Returns:Text //@Width:60 //@Env:Production //@Update:Periodic, 300 // 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 baseShare = getShare("UKI:UKX"); var divPerc = 4; var shareID = 0; var shareNum = 0; function init(status) { if (status == Loading || status == Editing) { shareID = storage.getAt(0); shareNum = storage.getAt(1); divPerc = storage.getAt(2); baseShare = getShare(shareID,shareNum); } if (status == Adding || status == Editing) { var dlg = new Dialog("Export options", 180, 50); dlg.addOkButton(); dlg.addCancelButton(); dlg.addTextEdit("TE1",55,8,60,-1,"Compare share","",baseShare.getEPIC()); //input epic of base share dlg.addNumEdit("NUM1",8,-1,-1,-1,"","Divergence %",divPerc,0.1,200); if (dlg.show()==Dialog.Cancel) return false; var baseName = dlg.getValue("TE1"); divPerc = dlg.getValue("NUM1"); //list possible markets the base share could be part of var baseList = [("LSE:"+baseName),("UKI:"+baseName),("GILT:"+baseName),("UT:"+baseName),("USI:"+baseName),("GER:"+baseName), ("ENXT:"+baseName),("ASX:"+baseName),("HKG:"+baseName),("TSE:"+baseName),("NYMEX:"+baseName), ("CME:"+baseName),("NNM:"+baseName),("NYSE:"+baseName),("AMEX:"+baseName),("FX:"+baseName)]; //try various markets until finding the one where the base share comes from, then get the base share's ShareObj for (var i=0;i divPerc) { alarmText = share.getEPIC()+","+baseShare.getEPIC()+" diverging by "+divergence.toFixed(2)+"%"; setValueForShare(share, 1); } } else { if (divergence < divPerc) setValueForShare(share, undefined); } return alarmText; }