2006 Dec: Stochastics With Long Term EMA Filter

ICE Data Services -


Colby_StochEmaFilter.efs  EFSLibrary - Discussion Board
  

File Name: Colby_StochEmaFilter.efs


Description:
This study is based on the December 2006 article, Stochastics With Long Term EMA Filter, by Robert Colby.


Formula Parameters:
Stoch Upper Band: 70
Stoch Lower Band: 30
EMA Periods: 271
StochK Periods: 7
StochK Smoothing: 3

Notes:
This study requires at least 271 bars of data. As a non-price study, the formula uses the EMA study as part of the conditions for the trade signal but cannot plot the EMA on the price chart simultaneously with the StochK. If desired, add the EMA study to the price pane with the EMA from Basic Studies menu (use Length 271 with Close as the Source). When the Close is above the 271-period EMA the top half of the study pane's background will be colored green. When the Close is below the 271-period EMA, the bottom half of the study pane's background will be colored red. In addition to the background of the study pane, the price bars will be will also be colored to match the background coloring scheme. The related article is copyrighted material. If you are not a subscriber of Stocks & Commodities, please visit www.traders.com.

Download File:
Colby_StochEmaFilter.efs




EFS Code:



/***************************************Provided By : eSignal (c) Copyright 2006Description:  Stochastics With Long Term EMA Filter               by Robert ColbyVersion 1.0  10/09/2006Notes:* Dec 2006 Issue of Stocks and Commodities Magazine* Study requires at least 271 bars of data.* As a non-price study, the formula uses the EMA study as    part of the conditions for the trade signal but cannot     plot the EMA on the price chart simultaneously with the StochK.      If desired, add the EMA study to the price pane with the EMA     from Basic Studies menu (use Length 271 with Close as the Source).* When the Close is above the 271-period EMA the top half of the study    pane's background will be colored green.  When the Close is below    the 271-period EMA, the bottom half of the study pane's background    will be colored red.  In addition to the background of the study    pane, the price bars will be will also be colored to match the    background coloring scheme.Formula Parameters:                     Default:Stoch Upper Band                        70Stoch Lower Band                        30EMA Periods                             271StochK Periods                          7StochK Smoothing                        3*****************************************************************/function preMain() {    setStudyTitle("Stochastics with EMA Filter ");    setCursorLabelName("EMA", 0);    setCursorLabelName("StochK", 1);    setDefaultBarFgColor(Color.navy, 1);    setDefaultBarThickness(2, 1);    setShowTitleParameters(false);    setColorPriceBars(true);    setDefaultPriceBarColor(Color.grey);        var fp1 = new FunctionParameter("nUpperBand", FunctionParameter.NUMBER);        fp1.setName("Stoch Upper Band");        fp1.setLowerLimit(0);        fp1.setDefault(70);        var fp2 = new FunctionParameter("nLowerBand", FunctionParameter.NUMBER);        fp2.setName("Stoch Lower Band");        fp2.setLowerLimit(0);        fp2.setDefault(30);    var fp3 = new FunctionParameter("nMAlen", FunctionParameter.NUMBER);        fp3.setName("EMA Periods");        fp3.setLowerLimit(1);        fp3.setDefault(271);    var fp4 = new FunctionParameter("nKlen", FunctionParameter.NUMBER);        fp4.setName("StochK Periods");        fp4.setLowerLimit(1);        fp4.setDefault(7);    var fp5 = new FunctionParameter("nKsma", FunctionParameter.NUMBER);        fp5.setName("StochK Smoothing");        fp5.setLowerLimit(1);        fp5.setDefault(3);}// Global Variablesvar bVersion  = null;    // Version flagvar bInit     = false;   // Initialization flagvar xMA       = null;    // EMA seriesvar xStochK   = null;    // StochK series// Strategy Variablesvar vPosition = 0;      // position status (1=long, 0=flat, -1=short)    var bRealTime = false;  // back testing flagfunction main(nUpperBand, nLowerBand, nMAlen, nKlen, nKsma) {    if (bVersion == null) bVersion = verify();    if (bVersion == false) return;        var nState = getBarState();    var nIndex = getCurrentBarIndex();    var c      = close(0);    var c_1    = close(-1);    //Initialization    if (bInit == false) {        addBand(nUpperBand, PS_SOLID, 1, Color.blue, "upper");        addBand(nLowerBand, PS_SOLID, 1, Color.blue, "lower");        xMA = ema(nMAlen);        xStochK = stochK(nKlen, nKsma, 1);        bInit = true;    }        var nEMA   = xMA.getValue(0);    var nEMA_1 = xMA.getValue(-1);    var nK     = xStochK.getValue(0);    var nK_1   = xStochK.getValue(-1);    if (nEMA_1 == null || nK_1 == null) return;  // null check        if (nIndex == 0) bRealTime = true;        //Coloring scheme for close vs. EMA    if (c >= nEMA) {        setBarBgColor(Color.green, 0, 100, 50);        setPriceBarColor(Color.green);    } else {        setBarBgColor(Color.red, 0, 50, 0);        setPriceBarColor(Color.red);    }            // Exit Signals    if (nState == BARSTATE_NEWBAR && vPosition != 0) {        if (vPosition == 1) {           // long            if (c_1 < nEMA_1 || nK_1 > nUpperBand) {                drawTextRelative(0, 50, "X", Color.white, Color.maroon,                     Text.CENTER|Text.FRAME|Text.BOLD|Text.BOTTOM, null, 10);                drawShape(Shape.SQUARE, TopRow1, Color.khaki);                vPosition = 0;                if (bRealTime == false) { // back test                    Strategy.doSell("Long Exit", Strategy.MARKET, Strategy.THISBAR);                }            }        } else if (vPosition == -1) {   // short            if (c_1 > nEMA_1 || nK_1 < nLowerBand) {                drawTextRelative(0, 50, "X", Color.white, Color.maroon,                     Text.CENTER|Text.FRAME|Text.BOLD|Text.TOP, null, 10);                drawShape(Shape.SQUARE, BottomRow1, Color.khaki);                vPosition = 0;                if (bRealTime == false) { // back test                    Strategy.doCover("Short Exit", Strategy.MARKET, Strategy.THISBAR);                }            }        }    }        // Entry Signals    if (nState == BARSTATE_NEWBAR) {        if (vPosition != 1) {  // long            if (nK_1 < nLowerBand && c_1 > nEMA_1) {                drawTextRelative(0, 50, "Long", Color.white, Color.blue,                     Text.RIGHT|Text.FRAME|Text.BOLD|Text.TOP, null, 10);                vPosition = 1;                if (bRealTime == false) { // back test                    Strategy.doLong("Long Entry", Strategy.MARKET, Strategy.THISBAR);                }            }        }        if (vPosition != -1) {  // short            if (nK_1 > nUpperBand && c_1 < nEMA_1) {                drawTextRelative(0, 50, "Short", Color.white, Color.blue,                     Text.RIGHT|Text.FRAME|Text.BOLD|Text.BOTTOM, null, 10);                vPosition = -1;                if (bRealTime == false) { // back test                    Strategy.doShort("Short Entry", Strategy.MARKET, Strategy.THISBAR);                }            }        }    }        // Position status    if (vPosition == 1) {        drawShape(Shape.SQUARE, TopRow1, Color.khaki);    } else if (vPosition == -1) {        drawShape(Shape.SQUARE, BottomRow1, Color.khaki);    }        return new Array(nEMA.toFixed(4), nK);}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;}