2010 Jan: The Vortex Indicator

ICE Data Services -


Vortex.efs  EFSLibrary - Discussion Board
  

File Name: Vortex.efs


Description:
The Vortex Indicator


Formula Parameters:
Length of Vortex : 14

Notes:
The related article is copyrighted material. If you are not a subscriber
of Stocks & Commodities, please visit www.traders.com.


Download File:
Vortex.efs




EFS Code:



/*********************************Provided By:      eSignal (Copyright c eSignal), a division of Interactive Data     Corporation. 2009. All rights reserved. This sample eSignal     Formula Script (EFS) is for educational purposes only and may be     modified and saved under a new file name.  eSignal is not responsible    for the functionality once modified.  eSignal reserves the right     to modify and overwrite this EFS file with each new release.Description:            The Vortex IndicatorVersion:            1.01  12/29/2009Formula Parameters:                     Default:    Length of Vortex                    14    Notes:    The related article is copyrighted material. If you are not a subscriber    of Stocks & Commodities, please visit //www.traders.com.**********************************/var fpArray = new Array();var bInit = false;var bVersion = null;function preMain() {    setPriceStudy(false);    setShowCursorLabel(true);    setShowTitleParameters(false);    setStudyTitle("Vortex");    setCursorLabelName("+VI", 0);    setDefaultBarFgColor(Color.blue, 0);    setPlotType(PLOTTYPE_LINE, 0);    setDefaultBarThickness(2, 0);    setCursorLabelName("-VI", 1);    setDefaultBarFgColor(Color.red, 1);    setPlotType(PLOTTYPE_LINE, 1);    setDefaultBarThickness(2, 1);    askForInput();    var x=0;    fpArray[x] = new FunctionParameter("LengthVortex", FunctionParameter.NUMBER);	with(fpArray[x++]){        setName("Length of Vortex");        setLowerLimit(1);		        setDefault(14);    }    }var xVortexPlus = null;var xVortexMinus = null;function main(LengthVortex) {var nBarState = getBarState();var nVortexP = 0;var nVortexM = 0;    if (bVersion == null) bVersion = verify();    if (bVersion == false) return;       if (nBarState == BARSTATE_ALLBARS) {        if (LengthVortex == null) LengthVortex = 14;    }        if (!bInit) {         xVortexPlus = efsInternal("Calc_Vortex", LengthVortex);        xVortexMinus = getSeries(xVortexPlus, 1);        bInit = true;     }    nVortexP = xVortexPlus.getValue(0);    nVortexM = xVortexMinus.getValue(0);    if (nVortexP == null || nVortexM == null) return;    return new Array(nVortexP, nVortexM);}var bSecondInit = false;var xVMm = null;var xVMp = null;var xVM_TrueRange = null;function Calc_Vortex(LengthVortex) {var nVortexP = 0;var nVortexM = 0;var nVMpSum = 0;var nVMmSum = 0;var nTRSum = 0;var i = 0;    if (bSecondInit == false) {        xVMp = efsInternal("Calc_VM_TR");        xVMm = getSeries(xVMp, 1);        xVM_TrueRange = getSeries(xVMp, 2);        bSecondInit = true;    }    if (xVMp.getValue(-LengthVortex) == null || xVM_TrueRange.getValue(-LengthVortex) == null) return;    for (i = LengthVortex; i >= 0; i--) {        nVMpSum += xVMp.getValue(-i);        nVMmSum += xVMm.getValue(-i);        nTRSum += xVM_TrueRange.getValue(-i);    }    if (nTRSum != 0) {        nVortexP = nVMpSum / nTRSum;        nVortexM = nVMmSum / nTRSum;    }    return new Array(nVortexP, nVortexM);}var bThirdInit = false;var xHigh = null;var xLow = null;var xClose = null;function Calc_VM_TR() {var nVMp = 0;var nVMm = 0;var nH1 = 0;var nH = 0;var nL1 = 0;var nL = 0;var nC1 = 0;var nTR = 0;    if (bThirdInit == false) {        xHigh = high();        xLow = low();        xClose = close();        bThirdInit = true;    }    nH1 = xHigh.getValue(-1);    nH = xHigh.getValue(0);    nL1 = xLow.getValue(-1);    nL = xLow.getValue(0);    nC1 = xClose.getValue(-1);    if (nH1 == null) return;    nVMp = Math.abs(nH - nL1);    nVMm = Math.abs(nL - nH1);    nTR = Math.max(nH - nL, Math.abs(nH - nC1));    nTR = Math.max(nTR, Math.abs(nL - nC1))    return new Array(nVMp, nVMm, nTR);}function verify() {    var b = false;    if (getBuildNumber() < 779) {        drawTextAbsolute(5, 35, "This study requires version 8.0 or later.",             Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,            null, 13, "error");        drawTextAbsolute(5, 20, "Click HERE to upgrade.@URL=http://www.esignal.com/download/default.asp",             Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,            null, 13, "upgrade");        return b;    } else {        b = true;    }    return b;}