//@Name:Flatline -> Movement //@Description: Returns 1 if a share that has been flatlined suddenly moves //@Returns:Text //@Width:90 //@Env:Production //@Update:Periodic,15 //Author: Philip, ShareScope 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 lookBack = 10; var percentMove = 5; var dataType=0; var dataList = ["Daily","Weekly","Monthly"]; var alertList = ["days","weeks","months"]; var useIntra = 1; function init(status) { if (status == Loading || status == Editing) { lookBack = storage.getAt(0); percentMove = storage.getAt(1); dataType = storage.getAt(2); useIntra = storage.getAt(3); } if (status == Adding || status == Editing) { dlg = new Dialog("Settings", 245, 100); dlg.addOkButton(); dlg.addCancelButton(); dlg.addIntEdit("VAL1",85,5,-1,-1,"Flatlining for:","periods",lookBack,2,1000); dlg.addNumEdit("VAL2",85,22,-1,-1,"Moves by a minimum of:","%",percentMove,0.1,1000); dlg.addDropList("VAL3",65,37,-1,-1, dataList,"","",dataType); dlg.addTickBox("VAL4",135,39,80,-1,"Include intraday data", useIntra); if (dlg.show()==Dialog.Cancel) return false; lookBack = dlg.getValue("VAL1"); percentMove = dlg.getValue("VAL2"); dataType = dlg.getValue("VAL3"); useIntra = dlg.getValue("VAL4"); storage.setAt(0,lookBack); storage.setAt(1, percentMove); storage.setAt(2, dataType); storage.setAt(3, useIntra); } } function getVal(share) { var data = getData(share,dataType,useIntra); if(data==undefined || data.length<1) return; var pmCalc = (Math.abs(((data[data.length-1].close-data[data.length-2].close)/data[data.length-2].close)*100)); if(pmCalcdata[data.length-1].high?idata[0].high:data[data.length-1].high), low:(idata[0].lowdata[data.length-1].high?idata[0].high:data[data.length-1].high), low:(idata[0].low