BB Flat SW

ICE Data Services -


BBflat_sw.efs  EFSLibrary - Discussion Board
  

File Name: BBflat_sw.efs


Description:
BBFlat SW


Formula Parameters:
Length : 9
Deviation : 1.5
Source of Price : Close
MA Type : SMA

Notes:


Download File:
BBflat_sw.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:            BBFlat SWVersion:            1.0  08/26/2009 Formula Parameters:                     Default:    Length                              9    Deviation                           1.5    Source of Price                     Close    MA Type                             SMA   Notes:    **********************************/var fpArray = new Array();var bInit = false;function preMain(){    setPriceStudy(false);    setShowCursorLabel(true);    setShowTitleParameters(false);    setStudyTitle("BBFlat SW");    setCursorLabelName("BBFlatP", 0);    setDefaultBarFgColor(Color.red, 0);    setPlotType(PLOTTYPE_LINE, 0);    setCursorLabelName("BBFlatM", 1);    setDefaultBarFgColor(Color.red, 1);    setPlotType(PLOTTYPE_LINE, 1);    setCursorLabelName("BBFlat", 2);    setDefaultBarFgColor(Color.green, 2);    setPlotType(PLOTTYPE_LINE, 2);    var x = 0;    fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER);    with(fpArray[x++]) {        setName("Length");        setLowerLimit(1);        setDefault(9);    }        fpArray[x] = new FunctionParameter("Deviation", FunctionParameter.NUMBER);    with(fpArray[x++]) {        setName("Deviation");        setDefault(1.5);    }            fpArray[x] = new FunctionParameter("sPrice", FunctionParameter.STRING);	with(fpArray[x++]){        setName("Source of Price");        addOption("open");         addOption("high");        addOption("low");        addOption("close");        addOption("hl2");        addOption("hlc3");        addOption("ohlc4");         setDefault("close");     }        fpArray[x] = new FunctionParameter("sMAType", FunctionParameter.STRING);    with(fpArray[x++]) {        setName("MA Type");        addOption("sma");        addOption("ema");        addOption("wma");        addOption("vwma");        setDefault("sma");    }}var xBBFlatP = null;var xBBFlatM = null;var xBBFlat = null;function main(Length, Deviation, sPrice, sMAType) {var nBarState = getBarState();var nBBFlatP = 0;var nBBFlatM = 0;var nBBFlat = 0;    if (nBarState == BARSTATE_ALLBARS) {        if(Length == null) Length = 9;        if(Deviation == null) Deviation = 1.5;                if(sPrice == null) sPrice = "close";        if(sMAType == null) sMAType = "sma";	}	if (bInit == false) {        addBand(0, PS_SOLID, 1, Color.black, "ZeroLine");        xBBFlatP = efsInternal("Calc_BBFlat", Length, Deviation, sPrice, sMAType)        xBBFlatM = getSeries(xBBFlatP, 1);        xBBFlat = getSeries(xBBFlatP, 2);        bInit = true;	}    nBBFlatP = xBBFlatP.getValue(0);    nBBFlatM = xBBFlatM.getValue(0);    nBBFlat = xBBFlat.getValue(0);	if (nBBFlatP == null || nBBFlat == null) return;    return new Array(nBBFlatP, nBBFlatM, nBBFlat);}var bSecondInit = false;var xPrice = null;var xMA = null;var xStdDev = null;function Calc_BBFlat(Length, Deviation, sPrice, sMAType) {var nStdP = 0;var nStdC = 0;    if (!bSecondInit) {        xPrice = eval(sPrice)();        xMA = eval(sMAType)(Length, xPrice);        xStdDev = efsInternal("Calc_StdDev", Length, xMA, xPrice);        bSecondInit = true;    }    nStdP = xStdDev.getValue(0);    if (nStdP == null) return;    nStdP = Deviation * nStdP;    nStdC = xPrice.getValue(0) - xMA.getValue(0);    return new Array(nStdP, -nStdP, nStdC);}function Calc_StdDev(LookBack, xPrice1Avg, xPrice1) {var nRes = 0;    if (xPrice1Avg.getValue(0) == null) return;    for (var i = 0; i < LookBack; i++) {        nRes += Math.pow(xPrice1.getValue(-i) - xPrice1Avg.getValue(0),2);    }    nRes = Math.sqrt(nRes / LookBack);    if (nRes == null) nRes = 1;    return nRes;}