2012 July: Long-Term Trading Using Exchange Traded Funds by Sylvain Vervoort

ICE Data Services -


HACOLT.efs  EFSLibrary - Discussion Board
  

File Name: HACOLT.efs

Description:
Long-Term Trading Using Exchange Traded Funds by Sylvain Vervoort


Formula Parameters:

HACOLT.efs
TEMA Average: 55
Shorting LT Average: 60
Candle Size Factor: 1.1

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

Download File:
HACOLT.efs

HACOLT.efs



EFS Code:

HACOLT.efs





/*********************************Provided By:      Interactive Data Corporation (Copyright ?? 2012)     All rights reserved. This sample eSignal Formula Script (EFS)    is for educational purposes only. Interactive Data Corporation    reserves the right to modify and overwrite this EFS file with     each new release.     Description:            Long-Term Trading Using Exchange Traded Funds by Sylvain Vervoort Version:            1.0  14/05/2012Formula Parameters:                     Default:    TEMA Average                        55    Shorting LT Average                 60    Candle Size Factor                  1.1    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();function preMain() {    setPriceStudy(false);    setStudyTitle("Heikin-Ashi Candelstick Oscillator Long-Term");    var x = 0;    fpArray[x] = new FunctionParameter("g_nAvgPeriod", FunctionParameter.NUMBER);	with(fpArray[x++])    {        setName("TEMA Average");        setLowerLimit(1);        setUpperLimit(100);             setDefault(55);    }    fpArray[x] = new FunctionParameter("g_nLTAvgPeriod", FunctionParameter.NUMBER);    with(fpArray[x++])    {        setName("Shorting LT Average");        setLowerLimit(1);        setUpperLimit(200);             setDefault(60);    }    fpArray[x] = new FunctionParameter("g_nCandleSize", FunctionParameter.NUMBER);	with(fpArray[x++])    {        setName("Candle Size Factor");        setLowerLimit(0.01);        setUpperLimit(5);		        setDefault(1.1);    }}var xhaOpen = null;var xhaC = null;var xTEMA1_haC = null;var xTEMA2_haC = null;var xTEMA1_hl2 = null;var xTEMA2_hl2 = null;var xEMA_LT = null;var bKeeping = false;var bKeepall = false;var bKeeping_ref = false;var bKeepall_ref = false;var bKeeping_2 = false;var bKeepall_2 = false;var bKeeping_2_ref = false;var bKeepall_2_ref = false;var bDtr = false;var bUtr = false;var bDtr_ref = false;var bUtr_ref = false;var nValueWhen = 0;var nLTRes = 0;var nLTRes_ref = 0;var nResult = 0;var nResult_ref = 0;var bInit = false;var bVersion = null;function main(g_nAvgPeriod, g_nLTAvgPeriod, g_nCandleSize) {    if (bVersion == null) bVersion = verify();    if (bVersion == false) return;        var nState = getBarState();     if (!bInit)    {         xhaOpen = efsInternal("Calc_haOpen", ohlc4());        xhaC = efsInternal("Calc_haC", ohlc4(), xhaOpen);        xTEMA1_haC = efsInternal("TEMA", g_nAvgPeriod, xhaC);        xTEMA2_haC = efsInternal("TEMA", g_nAvgPeriod, xTEMA1_haC);        xTEMA1_hl2 = efsInternal("TEMA", g_nAvgPeriod, hl2());        xTEMA2_hl2 = efsInternal("TEMA", g_nAvgPeriod, xTEMA1_hl2);        xEMA_LT = ema(g_nLTAvgPeriod, close());         bInit = true;     }     if (nState == BARSTATE_NEWBAR)     {        bKeeping_ref = bKeeping;        bKeepall_ref = bKeepall;        bKeeping_2_ref = bKeeping_2;        bKeepall_2_ref = bKeepall_2;        bDtr_ref = bDtr;        bUtr_ref = bUtr;        nLTRes_ref = nLTRes;        nResult_ref = nResult    }     else if (nState == BARSTATE_ALLBARS)    {        bKeeping_ref = bKeeping = false;        bKeepall_ref = bKeepall = false;        bKeeping_2_ref = bKeeping_2 = false;        bKeepall_2_ref = bKeepall_2 = false;        bDtr_ref = bDtr = false;        bUtr_ref = bUtr = false;        nValueWhen = 0;        nLTRes_ref = nLTRes = 0;        nResult_ref = nResult = 0;    }    var nhaOpen = xhaOpen.getValue(0);    var nhaC = xhaC.getValue(0);    var nTEMA1_haC = xTEMA1_haC.getValue(0);    var nTEMA2_haC = xTEMA2_haC.getValue(0);    var nTEMA1_hl2 = xTEMA1_hl2.getValue(0);    var nTEMA2_hl2 = xTEMA2_hl2.getValue(0);    var nEMA_LT = xEMA_LT.getValue(0);    if (nTEMA2_haC == null || nTEMA2_hl2 == null || nEMA_LT == null)        return;    var nZIHa = nTEMA1_haC + (nTEMA1_haC - nTEMA2_haC);    var nZICl = nTEMA1_hl2 + (nTEMA1_hl2 - nTEMA2_hl2);    // bKeep1 section    var fExpression1 = function(i)    {        if (xhaC.getValue(-i) == null || xhaOpen.getValue(-i) == null)            return false;        return xhaC.getValue(-i) >= xhaOpen.getValue(-i);    }    var bExp1 = Alert(fExpression1, 2);       var bExp2 = close(0) >= nhaC;    var bExp3 = high(0) > high(-1);    var bExp4 = low(0) > low(-1);    var bKeep1 = bExp1 || bExp2 || bExp3 || bExp4;    // end of bKeep1 section    var bKeep2 = (nZICl - nZIHa) >= 0;    var bKeep3 = (Math.abs(close(0) - open(0)) < (high(0) - low(0)) * g_nCandleSize) && (high(0) >= low(-1));    bKeeping = bKeep1 || bKeep2;    bKeepall = bKeeping || (bKeeping_ref && (close(0) >= 0) || (close(0) >= close(-1)));    bUtr = bKeepall || (bKeepall_ref && bKeep3);    // bKeep1_2 section    var fExpression2 = function(i)    {        if (xhaC.getValue(-i) == null || xhaOpen.getValue(-i) == null)            return false;        return xhaC.getValue(-i) < xhaOpen.getValue(-i);    }    var bKeep1_2 = Alert(fExpression2, 2);    // end of bKeep1_2 section    var bKeep2_2 = (nZICl - nZIHa) < 0;    var bKeep3_2 = (Math.abs(close(0) - open(0)) < (high(0) - low(0)) * g_nCandleSize) && (low(0) <= high(-1));    bKeeping_2 = bKeep1_2 || bKeep2_2;    bKeepall_2 = bKeeping_2 || (bKeeping_2_ref && (close(0) < open(0)) || (close(0) < close(-1)));    bDtr = bKeepall_2 || (bKeepall_2_ref && bKeep3_2);    bUpw = (!bDtr && bDtr_ref && bUtr);    bDnw = (!bUtr && bUtr_ref && bDtr);    nRes = bUpw ? 1 : (bDnw ? 0 : nValueWhen);    if (bUpw || bDnw)    {        if (bUpw)            nValueWhen = 1;        else            nValueWhen = 0;    }            var bLTSell = (close(0) < nEMA_LT);    nLTRes = (nRes == 1) ? 1 : (bLTSell ? 0 : nLTRes_ref);    nResult = (nRes == 1) ? 100 : ((nLTRes == 1) ? 50 : 0);    BackTesting();    return nResult;}function BackTesting(){    // Back Testing formulas are not for real time analysis.    // Therefore, prevent processing and exit at bar 0.    if (getCurrentBarIndex() == 0) return;        // Exit Strategy    if (Strategy.isInTrade())    {        // Exit Long        if (Strategy.isLong() && (nResult_ref == 100) && (nResult < 100))        {            Strategy.doSell("Long Exit Signal", Strategy.CLOSE, Strategy.THISBAR);        }        // Exit Short        else if (Strategy.isShort() && (nResult_ref < 100) && (nResult == 100))        {            Strategy.doCover("Short Exit Signal", Strategy.CLOSE, Strategy.THISBAR);        }    }        // Entry Strategy    if (!Strategy.isInTrade())    {        // Enter Long        if ((nResult_ref < 100) && (nResult == 100))        {            Strategy.doLong("Long signal", Strategy.CLOSE, Strategy.THISBAR);        }        // Enter Short        else if ((nResult_ref > 0) && (nResult == 0))        {            Strategy.doShort("Short signal", Strategy.CLOSE, Strategy.THISBAR);        }    }}function Calc_haOpen(xOHLC4) {    var nRef = ref(-1);    var nOHLC1 = xOHLC4.getValue(-1);    if (nOHLC1 == null)         return;    if (nRef == null)         nRef = nOHLC1;    return (nOHLC1 + nRef) / 2;}function Calc_haC(xOHLC4, xhaOpen) {    var nOHLC = xOHLC4.getValue(0);    var nhaOpen = xhaOpen.getValue(0);    if (nhaOpen == null)         return;    return (nOHLC + nhaOpen + Math.max(high(0), nhaOpen) + Math.min(low(0), nhaOpen)) / 4;}// MetaStock Alert function function Alert(fExpression, nPeriod){    for (var i = 0; i < nPeriod; i++)        if(fExpression(i)) return true;    return false;}var bInitTEMA = false;var xEma1 = null;var xEma2 = null;var xEma3 = null;// Triple Exponential Moving Averagefunction TEMA(period, series){       if(!bInitTEMA)    {        xEma1 = ema(period, series);        xEma2 = ema(period, xEma1);        xEma3 = ema(period, xEma2);                bInitTEMA = true;        }           var vEma1 = xEma1.getValue(0);    var vEma2 = xEma2.getValue(0);    var vEma3 = xEma3.getValue(0);        if (vEma3 == null)         return null;        return 3 * vEma1 - 3 * vEma2 + vEma3;}// verify versionfunction 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;}