Osc Normalization

ICE Data Services -


Normaliz.efs  EFSLibrary - Discussion Board
  

File Name: Normaliz.efs


Description:
Osc Normalization


Formula Parameters:
NormType : 1
OscLength : 10
NormLength : 10
Source of Normalizing : Close
Source of Oscillator : Close

Notes:
This indicator is created for normalizing any other indicators using its functions.
The first function to be created is one based on Bell's technique for
normalizing to average price. This function has three input values. OscValue
represents the value of the oscillator to be normalized. This input is included
in each of the four functions. The NormPrice and NormLength inputs represent the
price and length values used to calculate the average that is used in the normalization.
The second function is for Bell's technique for normalizing to standard deviation
of prices. This function also has three input values. I already described the OscValue
input. The NormPrice and NormLength inputs represent the price and length values used
to calculate the standard deviation that is used in the normalization.
The third function is for Bell's techniques for normalizing to average range of prices.
Unlike the two previous functions, this function only has two inputs: the OscValue input,
and the NormLength input, which represents the number of bars to use in the calculation of
the average true range that is used in the normalization.
The fourth function is for Bell's technique for normalizing to range. This function also
has only two inputs: the OscValue input, and a NormLength input, which represents the number
of bars to use for the historical range that is used in the normalization.

Download File:
Normaliz.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:            Osc Normalization    Version:            1.0  04/22/2009    Formula Parameters:                     Default:    NormType                            1    OscLength                           10    NormLength                          10    Source of Normalizing               Close    Source of Oscillator                Close    Notes:    This indicator is created for normalizing any other indicators using its functions.    The first function to be created is one based on Bell's technique for     normalizing to average price. This function has three input values. OscValue     represents the value of the oscillator to be normalized. This input is included     in each of the four functions. The NormPrice and NormLength inputs represent the     price and length values used to calculate the average that is used in the normalization.    The second function is for Bell's technique for normalizing to standard deviation     of prices. This function also has three input values. I already described the OscValue     input. The NormPrice and NormLength inputs represent the price and length values used     to calculate the standard deviation that is used in the normalization.    The third function is for Bell's techniques for normalizing to average range of prices.     Unlike the two previous functions, this function only has two inputs: the OscValue input,     and the NormLength input, which represents the number of bars to use in the calculation of     the average true range that is used in the normalization.    The fourth function is for Bell's technique for normalizing to range. This function also     has only two inputs: the OscValue input, and a NormLength input, which represents the number     of bars to use for the historical range that is used in the normalization.**********************************/var fpArray = new Array();var bInit = false;function preMain() {    setStudyTitle("Osc Normalization");    setCursorLabelName("Norm Osc", 0);    setCursorLabelName("Balance", 1);    setDefaultBarFgColor(Color.blue, 0);    setDefaultBarFgColor(Color.red, 1);    var x = 0;    fpArray[x] = new FunctionParameter("NormType", FunctionParameter.STRING);    with(fpArray[x++]) {        setName("Type of Normalization");        addOption("Average");         addOption("StdDev");        addOption("ATR");        addOption("Range");           setDefault("Average");    }    fpArray[x] = new FunctionParameter("OscLength", FunctionParameter.NUMBER);    with(fpArray[x++]) {        setName("Length of Oscillator");        setLowerLimit(1);        setDefault(10);    }    fpArray[x] = new FunctionParameter("NormLength", FunctionParameter.NUMBER);    with(fpArray[x++]) {        setName("Length of Normalization");        setLowerLimit(1);        setDefault(8);    }    fpArray[x] = new FunctionParameter("sNormPrice", FunctionParameter.STRING);	with(fpArray[x++]){        setName("Source of Normalization");        addOption("open");         addOption("high");        addOption("low");        addOption("close");        addOption("hl2");        addOption("hlc3");        addOption("ohlc4");         setDefault("close");     }        fpArray[x] = new FunctionParameter("sOscPrice", FunctionParameter.STRING);	with(fpArray[x++]){        setName("Source of Oscillator");        addOption("open");         addOption("high");        addOption("low");        addOption("close");        addOption("hl2");        addOption("hlc3");        addOption("ohlc4");         setDefault("close");     }    }var xMOM = null;var xHHMOM = null;var xLLMOM = null;var xMA = null;var xPriceOsc = null;var xPriceNorm = null;var xNormStdDev = null;function main(NormType, sOscPrice, OscLength, sNormPrice, NormLength) {var nBarState = getBarState();    if (nBarState == BARSTATE_ALLBARS) {        if (NormType == null) NormType = "Average";        if (sOscPrice == null) sOscPrice = "close";        if (OscLength == null) OscLength = 10;        if (sNormPrice == null) sNormPrice = "close";        if (NormLength == null) NormLength = 8;    }     if (bInit == false) {        xPriceOsc = eval(sOscPrice)();            xPriceNorm = eval(sNormPrice)();            xMOM = mom(OscLength, xPriceOsc);        xHHMOM = upperDonchian(NormLength, xMOM);        xLLMOM = lowerDonchian(NormLength, xMOM);        xMA = sma(NormLength, xPriceNorm);        xNormStdDev = efsInternal("Calc_StdDev", NormLength, xPriceNorm, xMA)        xATR = atr(NormLength);         setCursorLabelName(NormType, 0);                  if (NormType != "Range") {            addBand(0, PS_SOLID, 1, Color.red, "Line");        } else {            addBand(50, PS_SOLID, 1, Color.red, "Line");        }        bInit = true;    }    var OscValue = xMOM.getValue(0);    var AvgValue = xMA.getValue(0);    var NormAvg = 0;    if (AvgValue != 0) NormAvg = OscValue / AvgValue;    var StdDev = xNormStdDev.getValue(0);    var NormStdDev = 0;    if (StdDev != 0) NormStdDev = OscValue / StdDev;    var ATR = xATR.getValue(0);       var NormATR = 0;    if (ATR != 0) NormATR = OscValue / ATR;    var HiHi = xHHMOM.getValue(0);    var LoLo = xLLMOM.getValue(0);    if (HiHi == null) return;    var HighLowDiff = HiHi - LoLo;    var NormRange = 0;    if (HighLowDiff != 0) NormRange = (((OscValue - LoLo) / HighLowDiff) * 100);    var nRes = 0;    if (NormType == "Average") {        nRes = (NormAvg);    }    else if (NormType == "StdDev") {        nRes = (NormStdDev);    }    else if (NormType == "ATR") {        nRes = (NormATR);    }    else if (NormType == "Range") {        nRes = (NormRange);    }    return nRes;}function Calc_StdDev(Period, xSeries1, xSeries2) {    var nRes = 0;    var sum = 0;    var barsBack = 0;    var nSeries1 = xSeries1.getValue(0);    if (nSeries1 == null) return;    for (barsBack = 0; barsBack < Period; barsBack++) {        sum += (xSeries1.getValue( - barsBack) - xSeries2.getValue(0)) * (xSeries1.getValue( - barsBack) - xSeries2.getValue(0));    }    nRes = Math.sqrt(sum / Period);    return nRes;}