2010 May: Smoothing The Bollinger %b

ICE Data Services -


SmoothBollingerB.efs  EFSLibrary - Discussion Board
  

File Name: SmoothBollingerB.efs


Description:
Smoothing The Bollinger %b


Formula Parameters:
%b Period : 18
Tema Average : 8
Standard Deviation High : 1.6
Standard Deviation Low : 1.6
Standard Deviation Period : 63

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

Download File:
SmoothBollingerB.efs




EFS Code:






/*********************************Provided By:      eSignal (Copyright c eSignal), a division of Interactive Data     Corporation. 2010. 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:            Smoothing The Bollinger %b    Version:            1.00  03/11/2010Formula Parameters:                     Default:    %b Period                           18    Tema Average                        8    Standard Deviation High             1.6    Standard Deviation Low              1.6    Standard Deviation Period           63    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("Smoothing The Bollinger %b");    setCursorLabelName("SVE BB%b", 0);    setDefaultBarFgColor(Color.blue, 0);    setPlotType(PLOTTYPE_LINE, 0);    setDefaultBarThickness(2, 0);    setCursorLabelName("UP Level", 1);    setDefaultBarFgColor(Color.red, 1);    setPlotType(PLOTTYPE_LINE, 1);    setDefaultBarThickness(1, 1);    setCursorLabelName("Down Level", 2);    setDefaultBarFgColor(Color.red, 2);    setPlotType(PLOTTYPE_LINE, 2);    setDefaultBarThickness(1, 2);    var x=0;    fpArray[x] = new FunctionParameter("Period", FunctionParameter.NUMBER);	with(fpArray[x++]){        setName("%b Period");        setLowerLimit(1);		        setUpperLimit(100);		        setDefault(18);    }        fpArray[x] = new FunctionParameter("TeAv", FunctionParameter.NUMBER);	with(fpArray[x++]){        setName("Tema Average");        setLowerLimit(1);		        setUpperLimit(30);		        setDefault(8);    }            fpArray[x] = new FunctionParameter("afwh", FunctionParameter.NUMBER);	with(fpArray[x++]){        setName("Standard Deviation High");        setLowerLimit(0.1);		        setUpperLimit(5);		        setDefault(1.6);    }            fpArray[x] = new FunctionParameter("afwl", FunctionParameter.NUMBER);	with(fpArray[x++]){        setName("Standard Deviation Low");        setLowerLimit(0.1);		        setUpperLimit(5);		        setDefault(1.6);    }            fpArray[x] = new FunctionParameter("afwper", FunctionParameter.NUMBER);	with(fpArray[x++]){        setName("Standard Deviation Period");        setLowerLimit(1);		        setUpperLimit(200);		        setDefault(63);    }            }var xSVE_BB = null;var xStdev_SVE_BB = null;function main(Period, TeAv, afwh, afwl, afwper) {var nBarState = getBarState();var nSVE_BB = 0;var nStdev_SVE_BB = 0;var nHLevel = 0;var nLLevel = 0;    if (bVersion == null) bVersion = verify();    if (bVersion == false) return;       if (nBarState == BARSTATE_ALLBARS) {        if (Period == null) Period = 18;        if (TeAv == null) TeAv = 8;        if (afwh == null) afwh = 1.6;        if (afwl == null) afwl = 1.6;        if (afwper == null) afwper = 63;            }        if (!bInit) {         addBand(50, PS_SOLID, 1, Color.blue, "Middle Line");            xSVE_BB = efsInternal("Calc_SVE_BB", Period, TeAv);        xStdev_SVE_BB = efsInternal("StdDev", xSVE_BB, afwper);        bInit = true;     }    nSVE_BB = xSVE_BB.getValue(0);    nStdev_SVE_BB = xStdev_SVE_BB.getValue(0);    if (nSVE_BB == null || nStdev_SVE_BB == null) return;    nHLevel = 50 + afwh * nStdev_SVE_BB;    nLLevel = 50 - afwl * nStdev_SVE_BB;;    return new Array(nSVE_BB, nHLevel, nLLevel);}var bSecondInit = false;var xOHLC4 = null;var xhaClose = null;var xhaC = null;var xTMA1 = null;var xTMA2 = null;var xDiff = null;var xZlHA = null;var xTemaZlHA = null;var xStdevTemaZlHA = null;var xWMATemaZlHA = null;function Calc_SVE_BB(Period, TeAv) {var nTemaZlHA = 0;var nStdevTemaZlHA = 0;var nWMATemaZlHA = 0;var nRes = 0;    if (bSecondInit == false) {        xOHLC4 = ohlc4();        xhaOpen = efsInternal("Calc_haOpen", xOHLC4);        xhaC = efsInternal("Calc_haC", xOHLC4, xhaOpen);        xTMA1 = efsInternal("TEMA", xhaC, TeAv);        xTMA2 = efsInternal("TEMA", xTMA1, TeAv);        xDiff = efsInternal("Calc_Diff", xTMA1, xTMA2);        xZlHA = efsInternal("Calc_ZlHA", xTMA1, xDiff);        xTemaZlHA = efsInternal("TEMA", xZlHA, TeAv);        xStdevTemaZlHA = efsInternal("StdDev", xTemaZlHA, Period);        xWMATemaZlHA = wma(Period, xTemaZlHA);        bSecondInit = true;    }    nTemaZlHA = xTemaZlHA.getValue(0);    nStdevTemaZlHA = xStdevTemaZlHA.getValue(0);    nWMATemaZlHA = xWMATemaZlHA.getValue(0);    nRes = (nTemaZlHA + 2 * nStdevTemaZlHA - nWMATemaZlHA) / (4 * nStdevTemaZlHA) * 100;    if (nRes == null) return;    return nRes;}var xEMA1 = null;var xEMA2 = null;var xEMA3 = null;var bInitTEMA = false;         function TEMA(xPrice, Length) {var nTEMA = 0;    if ( bInitTEMA == false ) {         xEMA1 = ema(Length, xPrice);        xEMA2 = ema(Length, xEMA1);        xEMA3 = ema(Length, xEMA2);                bInitTEMA = true;     }     if (xEMA1.getValue(0) == null || xEMA2.getValue(0) == null || xEMA3.getValue(0) == null) return;    nTEMA = 3 * xEMA1.getValue(0) - 3 * xEMA2.getValue(0) + xEMA3.getValue(0);    return nTEMA;}function Calc_haOpen(xOHLC4) {var nRes1 = 0;var nRef = ref(-1);    if (nRef == null) nRef = 1;    nRes1 = (nRef + xOHLC4.getValue(-1)) / 2 ;    if (nRes1 == null) return;    return nRes1;}function Calc_haC(xOHLC4, xhaOpen) {var nRes2 = 0;    nRes2 = (xOHLC4.getValue(0) + xhaOpen.getValue(0) + Math.max(high(0), xhaOpen.getValue(0)) + Math.min(low(0), xhaOpen.getValue(0))) / 4;    if (nRes2 == null) return;    return nRes2;}function Calc_Diff(xTMA1, xTMA2) {var nRes = 0;    nRes = xTMA1.getValue(0) - xTMA2.getValue(0);    if (nRes == null) return;    return nRes;}function Calc_ZlHA(xTMA1, xDiff) {var nRes = 0;    nRes = xTMA1.getValue(0) + xDiff.getValue(0);    if (nRes == null) return;    return nRes;}function StdDev(DataArray, Period) { var sum = 0; var avg = 0; var nRes = 0;    for (var barsBack = Period-1; barsBack >= 0; barsBack--) {     sum += DataArray.getValue(-barsBack);   }    avg = sum / Period;    sum = 0;    for (var barsBack = Period - 1; barsBack >= 0; barsBack--) {      sum += (DataArray.getValue(-barsBack) - avg) * (DataArray.getValue(-barsBack) - avg);    }    nRes = Math.sqrt(sum / Period);    return nRes; }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;}