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 SW Version: 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; }