//@Name:Volume Spike //@Description:Draws an arrow on the chart when the volume spikes 50% or more above the average. Green arrows are drawn on up days and red arrows on down days. var period = 50 var indCol1 = Colour.Green; var indCol2 = Colour.Red; var spikeSize = 50; function init(status) { if (status == Loading || status == Editing) { period = storage.getAt(0); indCol1 = storage.getAt(1); indCol2 = storage.getAt(2); spikeSize = storage.getAt(3); } if (status == Adding || status == Editing) { dlg = new Dialog("Settings...",250,55); dlg.addOkButton(); dlg.addCancelButton(); dlg.addIntEdit("VAL1",5,5,-1,-1,"","period average volume",period,2,1000); dlg.addIntEdit("VAL2",5,22,-1,-1,"","% spike above average",spikeSize,0,1000); dlg.addColPicker("CL1",125,5,-1,-1,"","Up Flag",indCol1); dlg.addColPicker("CL2",125,22,-1,-1,"","Down Flag",indCol2); if (dlg.show()==Dialog.Cancel) return false; period = dlg.getValue("VAL1"); indCol1 = dlg.getValue("CL1"); indCol2 = dlg.getValue("CL2"); spikeSize = dlg.getValue("VAL2"); storage.setAt(0, period); storage.setAt(1, indCol1); storage.setAt(2, indCol2); storage.setAt(3, spikeSize); } } function onNewChart() { clearDisplay(); draw(); } //Updates the graph if the data is updated, so when a new bar is added. function onNewBarUpdate() { clearDisplay(); draw(); } function draw() { var maCalc = new MA(period); var maRes = []; var spike = 1 + (spikeSize / 100); for (var i=0; i(maRes[i]*spike) && bars[i].close>bars[i-1].close) { setBrushColour(indCol1); drawSymbol(i,bars[i].low*0.999,Symbol.TriangleUp, "", BoxAlign.Centre|BoxAlign.Below); continue; } if (bars[i].volume>(maRes[i]*spike) && bars[i].close