2012 May: Sentiment Zone Oscillator by Walid Khalil, MFTA, CFTe

ICE Data Services -


SentimentZoneOsc.efs  EFSLibrary - Discussion Board
  

File Name: SentimentZoneOsc.efs

Description:
Sentiment Zone Oscillator by Walid Khalil, MFTA, CFTe


Formula Parameters:

SentimentZoneOsc.efs
Period: 14
Use Dynamic Levels: true
Dynamic Levels Period: 30
Dynamic Levels % Range: 95

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

Download File:
SentimentZoneOsc.efs

SentimentZoneOsc.efs



EFS Code:

SentimentZoneOsc.efs






/*********************************Provided By:      Interactive Data Corporation (Copyright ?? 2012)     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:            Sentiment Zone Oscillator Version:            1.0  14/03/2012Formula Parameters:                     Default:    Period                              14    Use Dynamic Levels                  true    Dynamic Levels Period               30    Dynamic Levels % Range              95    Notes:    The related article is copyrighted material. If you are not    a subscriber of Stocks & Commodities, please visit www.traders.com.**********************************/var OB_LEVEL = 7;var OS_LEVEL = -7;var fpArray = new Array();function preMain(){    setCursorLabelName("Sentiment Zone Osc", 0);    setCursorLabelName("OverBought Level", 1);    setCursorLabelName("OverSold Level", 2);        setDefaultBarFgColor(Color.aqua, 0);    setDefaultBarFgColor(Color.red, 1);    setDefaultBarFgColor(Color.green, 2);        setDefaultBarThickness(2, 0);    setDefaultBarThickness(2, 1);    setDefaultBarThickness(2, 2);        var x=0;    fpArray[x] = new FunctionParameter("gPeriod", FunctionParameter.NUMBER);    with(fpArray[x++])    {    setName("Period");    setLowerLimit(2);        setUpperLimit(200);        setDefault(14);    }    fpArray[x] = new FunctionParameter("gIsDynamicLevels", FunctionParameter.BOOLEAN);    with(fpArray[x++])    {    setName("Use Dynamic Levels");        setDefault(true);    }        fpArray[x] = new FunctionParameter("gExtremesPeriod", FunctionParameter.NUMBER);    with(fpArray[x++])    {    setName("Dynamic Levels Period");    setLowerLimit(2);        setUpperLimit(200);        setDefault(30);    }        fpArray[x] = new FunctionParameter("gPercentageRange", FunctionParameter.NUMBER);    with(fpArray[x++])    {    setName("Dynamic Levels % Range");    setLowerLimit(1);        setUpperLimit(100);        setDefault(95);    }}var bInit = false;var bVersion = null;var xSZO = null;var xHLP = null;var xLLP = null;function main(gPeriod, gIsDynamicLevels, gExtremesPeriod, gPercentageRange){    if (bVersion == null) bVersion = verify();    if (bVersion == false) return;                 if (!bInit)    {        xSZO = efsInternal("calc_SZO", gPeriod);                if (gIsDynamicLevels)        {            xHLP = hhv(gExtremesPeriod, xSZO);            xLLP = llv(gExtremesPeriod, xSZO);        }                bInit = true;    }    var nOB = null;    var nOS = null;        if (gIsDynamicLevels)    {        var vHLP = xHLP.getValue(0);        var vLLP = xLLP.getValue(0);                if (vHLP == null || vLLP == null)            return;                var nRange = vHLP - vLLP;        var nPRange = nRange * (gPercentageRange / 100);                nOB = vLLP + nPRange;        nOS = vHLP - nPRange;                addBand(OB_LEVEL, PS_DASH, 1, Color.maroon, "obLevel");        addBand(OS_LEVEL, PS_DASH, 1, Color.darkgreen, "osLevel")    }    else    {        nOB = OB_LEVEL;        nOS = OS_LEVEL;    }            var vSZO = xSZO.getValue(0);            if (vSZO == null)        return;        return new Array(vSZO, nOB, nOS);}var bInitSZO = false;var xR = null;var xSP = null;// Sentiment Zone Oscillatorfunction calc_SZO(period){    if (!bInitSZO)    {        xR = efsInternal("calc_Range");        xSP = efsInternal("TEMA", period, xR);                bInitSZO = true;    }        var vSP = xSP.getValue(0);    if (vSP == null)        return;        return 100 * (vSP / period);          }// to include both time and sentimentfunction calc_Range(){    var vC = close(0);    var vvC = close(-1);        if (vvC == null)        return;        if (vC > vvC)        return 1;    else         return -1;}var bInitTEMA = false;var xEma1 = null;var xEma2 = null;var xEma3 = null;// Triple Exponential Moving Averagefunction TEMA(period, series){       if(!bInitTEMA)    {        xEma1 = ema(period, series);        xEma2 = ema(period, xEma1);        xEma3 = ema(period, xEma2);                bInitTEMA = true;        }           var vEma1 = xEma1.getValue(0);    var vEma2 = xEma2.getValue(0);    var vEma3 = xEma3.getValue(0);        if (vEma3 == null)         return null;        return 3 * vEma1 - 3 * vEma2 + vEma3;}// verify versionfunction 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;}