2011 May: In The Volume Zone

ICE Data Services -

VolumeZoneOsc.efs  

EFSLibrary - Discussion Board  

 

File Name: VolumeZoneOsc.efs

Description:
The Volume Zone Oscillator

 

Formula Parameters:

Period: 14

 

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

 

Download File:
VolumeZoneOsc.efs




EFS Code:

/*********************************
Provided By:  
    Interactive Data Corporation (Copyright © 2010) 
    All rights reserved. This sample eSignal Formula Script (EFS)
    is for educational purposes only. Interactive Data Corporation
    reserves the right to modify and overwrite this EFS file with 
    each new release. 
	
Description:        
    The Volume Zone Oscillator 
 
Version:            1.0  14/03/2011

Formula Parameters:                     Default:
    Period                                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 bVersion = null;
function preMain()
{
    setStudyMin(-100);
    setStudyMax(100);
    setStudyTitle("Volume Zone Oscillator");
    setCursorLabelName("Volume Zone Osc", 0);
    
    var x=0;
    fpArray[x] = new FunctionParameter("gPeriod", FunctionParameter.NUMBER);
    with(fpArray[x++])
    {
	setName("Period");
	setLowerLimit(1);
        setDefault(14);
    }

    fpArray[x] = new FunctionParameter("gLevels", FunctionParameter.BOOLEAN);
    with(fpArray[x++])
    {
	setName("Show Levels");
        setDefault(true);
    }
}

var bInit = false;
var xVol = null;
var xR = null;
var xVP = null;
var xTV = null;
function main(gPeriod, gLevels)
{

    if (bVersion == null) bVersion = verify();
    if (bVersion == false) return;     
        
    if (!bInit)
    {
        xVol = volume();
        xR = efsInternal("calcSignedVol", xVol, close());  
        xVP = ema(gPeriod, xR);
        xTV = ema(gPeriod, xVol);
        if ( gLevels )
        {
                addBand(60, PS_DOT, 2, Color.green, "lev60");
                addBand(40, PS_DASH, 2, Color.darkgreen, "lev40");
                addBand(15, PS_SOLID, 1, Color.grey, "lev15");
                addBand(0, PS_SOLID, 2, Color.grey, "lev0");
                addBand(-5, PS_SOLID, 1, Color.grey, "lev5n");
                addBand(-40, PS_DASH, 2, Color.maroon, "lev40n");
                addBand(-60, PS_DOT, 2, Color.red, "lev60n");
        }
        bInit = true;
    }
    var vVP = xVP.getValue(0);
    var vTV = xTV.getValue(0);
    if ( vVP == null ) return null;
    var vVZO = 100;  
    if ( vTV != 0 ) vVZO = 100 * vVP / vTV;      
    return vVZO;    
    
}

function calcSignedVol(xVol, xCls)
{
        var vVol = xVol.getValue(0);
        var vCls1 = xCls.getValue(-1);
        var vCls0 = xCls.getValue(0);
        if ( vCls1 == null ) return null;
        vVol = (vCls1 < vCls0)? vVol : -vVol;
        return vVol;
}

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;
}