2004 Aug: AdvanceIssuesMom.efs

ICE Data Services -


AdvanceIssuesMom.efs  EFSLibrary - Discussion Board
  

File Name: AdvanceIssuesMom.efs


Description:
This formula is based on Boosting Profitability by Lawrence Chan and Louis Lin. This article appeared in the August 2004 issue of Stock & Commodities.


Formula Parameters:
Momentum Length - 20
Symbol 1 - $BANK - Nasdaq Banking
Symbol 2 - $NBI - Nasdaq Biotech
Symbol 3 - $IXCO - Nasdaq Computer
Symbol 4 - $IXF - Nasdaq Financial
Symbol 5 - $IXTC - Nasdaq Telecommunications
Symbol 6 - NA
Symbol 7 - NA

Notes:
eSignal Advanced charts has a symbol limit of 7. Therefore the maximum limit for the basket of symbols to include in the Advance Issues Momentum study is 7. The default basket of symbols is currently set to $BANK (Nasdaq Banking), $NBI (Nasdaq Biotech), $IXCO (Nasdaq Computer), $IXF (Nasdaq Financial) and $IXTC (Nasdaq Telecommunications). Due to the restricted number of symbols there is also a small modification to the trading signals that requires the AIM number to be less than or equal to half of the total number of symbols to enter a long position. The article uses a ratio equal to two thirds, which was a bit too restrictive for a smaller number of symbols. The study is compatible with the Strategy Analyzer for back testing as well as real time usage. The related article is copyrighted material. If you are not a subscriber of Stocks & Commodities, please visit www.traders.com.

Download File:
AdvanceIssuesMom.efs




EFS Code:






/*****************************************************************Provided By : eSignal. (c) Copyright 2004Study:        Advance Issues Momentum by Lawrence Chan and Louis LinVersion:      1.06/7/2004Notes:Due to the EFS symbol limit of 7, this study was modified to use thefollowing index symbols as the default.  Up to 7 symbols may be enteredthrough Edit Studies.Formula Parameters:                 Default:Momentum Length                     20Symbol 1                            $BANK   - Nasdaq BankingSymbol 2                            $NBI    - Nasdaq BiotechSymbol 3                            $IXCO   - Nasdaq ComputerSymbol 4                            $IXF    - Nasdaq FinancialSymbol 5                            $IXTC   - Nasdaq TelecommunicationsSymbol 6                            NASymbol 7                            NA*****************************************************************/function preMain() {    setStudyTitle("Advance Issues Momentum ");    setShowTitleParameters(false);    setCursorLabelName("AIM", 0);    setDefaultBarFgColor(Color.black, 0);    setDefaultBarThickness(2, 0);        var fp0 = new FunctionParameter("nMomLen", FunctionParameter.NUMBER);    fp0.setName("Momentum Length");    fp0.setLowerLimit(1);    fp0.setDefault(20);        var fp1 = new FunctionParameter("sSym1", FunctionParameter.STRING);    fp1.setName("Symbol 1");    fp1.setDefault("$BANK");    var fp2 = new FunctionParameter("sSym2", FunctionParameter.STRING);    fp2.setName("Symbol 2");    fp2.setDefault("$NBI");    var fp3 = new FunctionParameter("sSym3", FunctionParameter.STRING);    fp3.setName("Symbol 3");    fp3.setDefault("$IXCO");    var fp4 = new FunctionParameter("sSym4", FunctionParameter.STRING);    fp4.setName("Symbol 4");    fp4.setDefault("$IXF");    var fp5 = new FunctionParameter("sSym5", FunctionParameter.STRING);    fp5.setName("Symbol 5");    fp5.setDefault("$IXTC");    var fp6 = new FunctionParameter("sSym6", FunctionParameter.STRING);    fp6.setName("Symbol 6");    fp6.setDefault("");    var fp7 = new FunctionParameter("sSym7", FunctionParameter.STRING);    fp7.setName("Symbol 7");    fp7.setDefault("");}var bEdit = true;var aSym = new Array(8);var aPrice0 = new Array(8);var aPriceN = new Array(8);var aAIM = new Array(4);var vAIM = 0;var nCount = 0;var vColor = null;function main(nMomLen, sSym1, sSym2, sSym3, sSym4, sSym5, sSym6, sSym7) {    var nState = getBarState();    var nIndex = getCurrentBarIndex();    var i;            if (bEdit == true) {        aSym[0] = getSymbol();        for (i = 1; i < 8; ++i) {            aSym[i] = eval("sSym"+i);            if (aSym[i] != null && aSym[i] != "") nCount++        }        setStudyMax(nCount +1);        setStudyMin(-1);        bEdit = false;    }        if (nState == BARSTATE_NEWBAR) {        aAIM.pop();        aAIM.unshift(vAIM);        for (i = 1; i < 8; ++i) {            if (aSym[i] != null && aSym[i] != "") {                aPriceN[i] = close(-nMomLen, aSym[i]);            }        }    }        for (i = 1; i < 8; ++i) {        if (aSym[i] != null && aSym[i] != "") {            aPrice0[i] = close(0, aSym[i]);        }    }        // n-days momentum    vAIM = 0;    for (i = 1; i < 8; ++i) {        if (aPriceN[i] != null && aPrice0[i] != null) {            if ( (aPrice0[i] - aPriceN[i]) > 0 ) vAIM++;        }    }    aAIM[0] = vAIM;        // Back Testing code    var bBT = false;    var bLong = false;    var bShort = false;    if (nIndex < 0 && aAIM[3] != null) { // allow back testing        bBT = true;    }    // Trading Signals    if (aAIM[3] != null) {        if (aAIM[3] >= aAIM[2] && aAIM[2] >= aAIM[1] && aAIM[1] < aAIM[0]) {            if (aAIM[0] <= (0.5 * nCount) ) {                bLong = true;                vColor = Color.green;            }        } else if (aAIM[3] <= aAIM[2] && aAIM[2] <= aAIM[1] && aAIM[1] > aAIM[0]) {            if (aAIM[0] >= (0.5 * nCount) ) {                bShort = true;                vColor = Color.red;            }        }    }        // Back Testing Code    if (bBT == true) {        if (Strategy.isLong() == false && bLong == true) { // long entry            Strategy.doLong("Buy", Strategy.MARKET, Strategy.NEXTBAR);        } else if (Strategy.isShort() == false && bShort == true) { // short entry            Strategy.doShort("Short", Strategy.MARKET, Strategy.NEXTBAR);        }    }        if (vColor != null) setBarBgColor(vColor);    return vAIM;}