/********************************************************* Alexis C. Montenegro © March 2006 Use and/or modify this code freely. If you redistribute it please include this and/or any other comment blocks and a description of any changes you make. **********************************************************/ var fpArray = new Array(); function preMain() { setPriceStudy(false); setStudyTitle("Relative Vigor Index"); setCursorLabelName("RVI", 0); setCursorLabelName("Signal", 0); setDefaultBarFgColor(Color.blue, 0); setPlotType(PLOTTYPE_LINE,0); setDefaultBarThickness(1,0); setDefaultBarFgColor(Color.red, 1); setPlotType(PLOTTYPE_LINE,1); setDefaultBarThickness(1,1); askForInput(); var x=0; fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER); with(fpArray[x++]){ setName("Length"); setLowerLimit(1); setDefault(10); } fpArray[x] = new FunctionParameter("Symbol", FunctionParameter.STRING); with(fpArray[x++]){ setDefault(); } fpArray[x] = new FunctionParameter("Interval", FunctionParameter.STRING); with(fpArray[x++]){ setDefault(); } fpArray[x] = new FunctionParameter("Params", FunctionParameter.BOOLEAN); with(fpArray[x++]){ setName("Show Parameters"); setDefault(false); } } var bInit = false; var xTemp = null; var xRVI = null; var xRVISig = null; function main(Length,Symbol,Interval,Params){ if(bInit==false){ if(Symbol == null) Symbol = getSymbol(); if(Interval == null) Interval = getInterval(); var vSymbol = Symbol+","+Interval; xTemp = efsInternal("calcRVI",Length,sym(vSymbol)); xRVI = getSeries(xTemp,0) xRVISig = getSeries(xTemp,1) setShowTitleParameters(eval(Params)); bInit=true; } return new Array (xRVI,xRVISig); } var xInit = false; var xOpen = null; var xHigh = null; var xLow = null; var xClose = null; var RVI = 0; var RVI_1 = 0; var RVI_2 = 0; var RVI_3 = 0; function calcRVI(Length){ if(getBarState()==BARSTATE_ALLBARS){ RVI_3 = 0; RVI_2 = 0; RVI_1 = 0; RVI = 0; } if(xInit==false){ xOpen = open(); xHigh = high(); xLow = low(); xClose = close(); xInit = true; } if(xClose.getValue(-Length)==null) return; var SumNum = 0; var SumDen = 0; for (var i=0; i