//@Name:ADX Value //@Description:Displays the latest ADX values //@Returns:Number //@Width:80 //@Env:Production //@Update:Periodic,15 // Author: 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 = 14; var ADXtype = 0; var ADXreturn = ["ADX","DI+","DI-","ADXR"]; var dataSource = 15; var dataList = ["1m","2m","2.5m","3m","4m","5m","6m","10m","15m","20m","30m","1h","2h","3h","4h","Daily","Weekly","Monthly"]; var useIntra = 0; var periodsAgo = 0; function init(status) { if (status == Loading || status == Editing) { period = storage.getAt(0); ADXtype = storage.getAt(1); dataSource = storage.getAt(2); useIntra = storage.getAt(3); periodsAgo = storage.getAt(4); } if (status == Adding || status == Editing) { dlg = new Dialog("Latest ADX",164,95); dlg.addOkButton(); dlg.addCancelButton(); dlg.addIntEdit("VAL1",50,-1,40,-1,"Period","",period,2,1000); dlg.addDropList("VAL2",50,-1,40,-1,ADXreturn,"","",ADXtype); dlg.addDropList("VAL3",50,-1,40,-1,dataList,"Data source","",dataSource); dlg.addTickBox("VAL4",50,-1,115,-1,"Include Intraday data (D,W,M)",useIntra); dlg.addIntEdit("VAL5",50,-1,40,-1,"","Periods Ago",periodsAgo); if (dlg.show()==Dialog.Cancel) return false; period = dlg.getValue("VAL1"); ADXtype = dlg.getValue("VAL2"); dataSource = dlg.getValue("VAL3"); useIntra = dlg.getValue("VAL4"); periodsAgo = dlg.getValue("VAL5"); storage.setAt(0, period); storage.setAt(1, ADXtype); storage.setAt(2, dataSource); storage.setAt(3, useIntra); storage.setAt(4, periodsAgo); } //sets the title of the column setTitle(period+" "+ADXreturn[ADXtype]+" ("+(dataSource>=15?(useIntra?"i"+dataList[dataSource]:dataList[dataSource]):dataList[dataSource])+") "+periodsAgo+"prds ago") } function getVal(share) { var data = getData(share,dataSource,useIntra,10*period); if (data == undefined || data.length<2) return; var adx1 = new ADX(period); ADXres = []; PDIres = []; NDIres = []; ADXRres = []; for (var i=0;i=0;i--) { tempData = share.getIBarArray(i,dataPeriod*60); if (tempData==undefined || tempData.length<1) continue; data = data.concat(share.getIBarArray(i,dataPeriod*60)); } if (data==undefined || data[0]==undefined || data.length<2) return []; } else if (dataT==15 && useIntra==0) var data = share.getPriceArray(); else if (dataT==16 && useIntra==0) var data = share.getWeeklyBarArray(); else if (dataT==17 && useIntra==0) var data = share.getMonthlyBarArray(); //daily else if (dataT==15 && useIntra==1) { var data = share.getPriceArray(); if (data.length<2) return []; var idata = share.getIBarArray(0,86400); if (idata!=undefined && idata.length==1 && new Date().getDate()==idata[0].date.getDate() && new Date().getDate()!=data[data.length-1].date.getDate()) { data[data.length]={ open:idata[0].open, high:idata[0].high, low:idata[0].low, close:(share.getIClose()==null?share.getIMid():share.getIClose()), volume:idata[0].volume, dateNum:idata[0].dateNum}; } } //weekly else if (dataT==16 && useIntra==1) { var data = share.getWeeklyBarArray(); if (data.length<2) return []; var idata = share.getIBarArray(0,86400); if (idata!=undefined && idata.length==1 && new Date().getDate()==idata[0].date.getDate() && new Date().getDate()!=data[data.length-1].date.getDate()) { if (idata[0].date.getDay()data[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].lowtempData[tempData.length-1].high?idata[0].high:tempData[tempData.length-1].high), low:(idata[0].lowdata[data.length-1].high?tempData[i].high:data[data.length-1].high), low:(tempData[i].low