Announcement

Collapse
No announcement yet.

2010 May: Smoothing The Bollinger %b

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 2010 May: Smoothing The Bollinger %b

    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:
    PHP 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/2010

    Formula 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 [url]www.traders.com.[/url]

    **********************************/
    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.blue0);
        
    setPlotType(PLOTTYPE_LINE0);
        
    setDefaultBarThickness(20);
        
    setCursorLabelName("UP Level"1);
        
    setDefaultBarFgColor(Color.red1);
        
    setPlotType(PLOTTYPE_LINE1);
        
    setDefaultBarThickness(11);
        
    setCursorLabelName("Down Level"2);
        
    setDefaultBarFgColor(Color.red2);
        
    setPlotType(PLOTTYPE_LINE2);
        
    setDefaultBarThickness(12);
        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(PeriodTeAvafwhafwlafwper) {
    var 
    nBarState getBarState();
    var 
    nSVE_BB 0;
    var 
    nStdev_SVE_BB 0;
    var 
    nHLevel 0;
    var 
    nLLevel 0;
        if (
    bVersion == nullbVersion verify();
        if (
    bVersion == false) return;   
        if (
    nBarState == BARSTATE_ALLBARS) {
            if (
    Period == nullPeriod 18;
            if (
    TeAv == nullTeAv 8;
            if (
    afwh == nullafwh 1.6;
            if (
    afwl == nullafwl 1.6;
            if (
    afwper == nullafwper 63;        
        }    
        if (!
    bInit) { 
            
    addBand(50PS_SOLID1Color.blue"Middle Line");    
            
    xSVE_BB efsInternal("Calc_SVE_BB"PeriodTeAv);
            
    xStdev_SVE_BB efsInternal("StdDev"xSVE_BBafwper);
            
    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_BBnHLevelnLLevel);
    }

    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(PeriodTeAv) {
    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"xOHLC4xhaOpen);
            
    xTMA1 efsInternal("TEMA"xhaCTeAv);
            
    xTMA2 efsInternal("TEMA"xTMA1TeAv);
            
    xDiff efsInternal("Calc_Diff"xTMA1xTMA2);
            
    xZlHA efsInternal("Calc_ZlHA"xTMA1xDiff);
            
    xTemaZlHA efsInternal("TEMA"xZlHATeAv);
            
    xStdevTemaZlHA efsInternal("StdDev"xTemaZlHAPeriod);
            
    xWMATemaZlHA wma(PeriodxTemaZlHA);
            
    bSecondInit true;
        }
        
    nTemaZlHA xTemaZlHA.getValue(0);
        
    nStdevTemaZlHA xStdevTemaZlHA.getValue(0);
        
    nWMATemaZlHA xWMATemaZlHA.getValue(0);
        
    nRes = (nTemaZlHA nStdevTemaZlHA nWMATemaZlHA) / (nStdevTemaZlHA) * 100;
        if (
    nRes == null) return;
        return 
    nRes;
    }

    var 
    xEMA1 null;
    var 
    xEMA2 null;
    var 
    xEMA3 null;
    var 
    bInitTEMA false
            
    function 
    TEMA(xPriceLength) {
    var 
    nTEMA 0;
        if ( 
    bInitTEMA == false ) { 
            
    xEMA1 ema(LengthxPrice);
            
    xEMA2 ema(LengthxEMA1);
            
    xEMA3 ema(LengthxEMA2);        
            
    bInitTEMA true
        } 
        if (
    xEMA1.getValue(0) == null || xEMA2.getValue(0) == null || xEMA3.getValue(0) == null) return;
        
    nTEMA xEMA1.getValue(0) - xEMA2.getValue(0) + xEMA3.getValue(0);
        return 
    nTEMA;
    }

    function 
    Calc_haOpen(xOHLC4) {
    var 
    nRes1 0;
    var 
    nRef ref(-1);
        if (
    nRef == nullnRef 1;
        
    nRes1 = (nRef xOHLC4.getValue(-1)) / ;
        if (
    nRes1 == null) return;
        return 
    nRes1;
    }

    function 
    Calc_haC(xOHLC4xhaOpen) {
    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(xTMA1xTMA2) {
    var 
    nRes 0;
        
    nRes xTMA1.getValue(0) - xTMA2.getValue(0);
        if (
    nRes == null) return;
        return 
    nRes;
    }

    function 
    Calc_ZlHA(xTMA1xDiff) {
    var 
    nRes 0;
        
    nRes xTMA1.getValue(0) + xDiff.getValue(0);
        if (
    nRes == null) return;
        return 
    nRes;
    }

    function 
    StdDev(DataArrayPeriod) {
     var 
    sum 0;
     var 
    avg 0;
     var 
    nRes 0;
        for (var 
    barsBack Period-1barsBack >= 0barsBack--) {
         
    sum += DataArray.getValue(-barsBack);
       }
        
    avg sum Period;
        
    sum 0;
        for (var 
    barsBack Period 1barsBack >= 0barsBack--) {
          
    sum += (DataArray.getValue(-barsBack) - avg) * (DataArray.getValue(-barsBack) - avg);
        }
        
    nRes Math.sqrt(sum Period);
        return 
    nRes
    }

    function 
    verify() {
        var 
    false;
        if (
    getBuildNumber() < 779) {
            
    drawTextAbsolute(535"This study requires version 8.0 or later."
                
    Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
                
    null13"error");
            
    drawTextAbsolute(520"Click HERE to upgrade.@URL=http://www.esignal.com/download/default.asp"
                
    Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
                
    null13"upgrade");
            return 
    b;
        } else {
            
    true;
        }
        return 
    b;

Working...
X