Announcement

Collapse
No announcement yet.

2006 Jun: Harnessing The (Mis)Behavior Of Markets by Rick Martinelli

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

  • 2006 Jun: Harnessing The (Mis)Behavior Of Markets by Rick Martinelli

    File Name: BrownianMotion.efs, TradingSystem.efs, Fortune.efs, WinLossRatio.efs

    Description:
    This study is based on the June 2006 article, Harnessing The (Mis)Behavior Of Markets, by Rick Martinelli.

    Formula Parameters:
    BrownianMotion.efs
    Standard Deviation Periods: 7
    Mean Periods: 21

    TradingSystem.efs
    Alpha Cutoff: 1

    Fortune.efs
    Account Value: 10000

    WinLossRatio.efs
    Alpha Cutoff: 1

    Notes:
    The Trading System and Win/Loss Ratio studies have one parameter to set the Alpha Cutoff value, which is set to a default of 1. The author performed an optimization routine in Excel to find an optimized value for this cutoff. That functionality does not currently exist in EFS, therefore the cutoff value will need to me manually adjusted. This formula requires eSignal version 7.9.1 or later. The related article is copyrighted material. If you are not a subscriber of Stocks & Commodities, please visit www.traders.com.


    Download File:
    BrownianMotion.efs
    TradingSystem.efs
    Fortune.efs
    WinLossRatio.efs









    EFS Code:
    PHP Code:
    /***************************************
    Provided By : eSignal (c) Copyright 2006
    Description:  Harnessing The (Mis)Behavior Of Markets
                  by Rick Martinelli

    Version 1.0  04/06/2006

    Notes:
    * June 2006 Issue of Stocks and Commodities Magazine
    * Study requires version 7.9.1 or higher.


    Formula Parameters:                 Defaults:
    Standard Deviation Periods          7
    Mean Periods                        21
    ***************************************/


    function preMain() {
        
    setStudyTitle("Brownian Motion ");
        
    setCursorLabelName("Normalized W"0);
        
    setCursorLabelName("White Noise"1);
        
    setDefaultBarThickness(40);
        
    setDefaultBarThickness(21);
        
    setDefaultBarFgColor(Color.navy0);
        
    setDefaultBarFgColor(Color.red1);
        
    setPlotType(PLOTTYPE_HISTOGRAM0);
        
    setPlotType(PLOTTYPE_HISTOGRAM1);
        
        
    addBand(8PS_SOLID2Color.maroon8);
        
    addBand(6PS_SOLID2Color.maroon6);
        
    addBand(4PS_SOLID2Color.maroon4);
        
    addBand(2PS_SOLID2Color.maroon2);
        
    addBand(0PS_SOLID2Color.maroon0);
        
    addBand(-2PS_SOLID2Color.maroon, -2);
        
    addBand(-4PS_SOLID2Color.maroon, -4);
        
    addBand(-6PS_SOLID2Color.maroon, -6);
        
    addBand(-8PS_SOLID2Color.maroon, -8);

        var 
    fp1 = new FunctionParameter("nStdev"FunctionParameter.NUMBER);
            
    fp1.setName("Standard Deviation Periods");
            
    fp1.setLowerLimit(1);
            
    fp1.setDefault(7);

        var 
    fp2 = new FunctionParameter("nMean"FunctionParameter.NUMBER);
            
    fp2.setName("Mean Periods");
            
    fp2.setLowerLimit(1);
            
    fp2.setDefault(21);
    }

    var 
    bVersion null;
    var 
    bInit false;
    var 
    xW null;
    var 
    xW_mean  null;
    var 
    xW_stdev null;

    function 
    main(nStdevnMean) {    
        if (
    bVersion == nullbVersion verify();
        if (
    bVersion == false) return;    

        if (
    getCurrentBarCount() <= Math.max(nStdevnMean)) return null;
        
        if (
    bInit == false) {
            
    xW efsInternal("calcW");
            
    xW_mean sma(nMeanxW);
            
    xW_stdev efsInternal("calcStdev"xWnStdev);
            
    bInit true;
        }
        
        var 
    nNormP xW.getValue(0);
        var 
    nWhiteNoise = (xW.getValue(0) - xW_mean.getValue(0)) / xW_stdev.getValue(0);
        
        return new Array(
    nNormPnWhiteNoise);
    }


    function 
    calcW() {
        return (
    close(0) - close(-1));
    }


    function 
    calcStdev(xSrcn) {
        var 
    sumX 0;
        var 
    sumX2 0;

        if (
    xSrc.getValue(-n) == null) return;
        
        for (
    0n; ++i) {
            
    sumX += xSrc.getValue(-i);
            
    sumX2 += (xSrc.getValue(-i) * xSrc.getValue(-i))
        }
        var 
    meanX = (sumX/n);
        var 
    stdev Math.sqrt((sumX2/n) - (meanX*meanX));

        return 
    stdev;
    }


    function 
    verify() {
        var 
    false;
        if (
    getBuildNumber() < 730) {
            
    drawTextAbsolute(535"This study requires version 7.9.1 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;

    PHP Code:
    /***************************************
    Provided By : eSignal (c) Copyright 2006
    Description:  Harnessing The (Mis)Behavior Of Markets
                  by Rick Martinelli

    Version 1.0  04/06/2006

    Notes:
    * June 2006 Issue of Stocks and Commodities Magazine
    * Study requires version 7.9.1 or higher.


    Formula Parameters:                 Defaults:
    Alpha Cutoff                        1
    ***************************************/


    function preMain() {
        
    setStudyTitle("Trading System ");
        
    setCursorLabelName("Fortune"0);
        
    setDefaultBarThickness(20);
        
    setDefaultBarFgColor(Color.navy0);
        
        var 
    fp1 = new FunctionParameter("nCutoff"FunctionParameter.NUMBER);
            
    fp1.setName("Alpha Cutoff");
            
    fp1.setLowerLimit(0);
            
    fp1.setDefault(1);
    }

    var 
    bVersion    null;
    var 
    bInit       false;
    var 
    xW          null;
    var 
    xSigma      null;
    var 
    xDeltaP     null;
    var 
    xAlpha      null;
    var 
    xA_factor   null;
    var 
    nSum        0;

    function 
    main(nCutoff) {    
        if (
    bVersion == nullbVersion verify();
        if (
    bVersion == false) return;    

        if (
    bInit == false) {
            
    xW efsInternal("calcW");
            
    xDeltaP efsInternal("calcDeltaP"xW);
            
    xSigma efsInternal("calcStdev"xW7);
            
    xAlpha efsInternal("calcAlpha"xDeltaPxSigma);
            
    xA_factor efsInternal("calcA_factor"xAlphanCutoff);
            
    addBand(0PS_SOLID2Color.magenta0);
            
    bInit true;
        }
        
        var 
    nState getBarState();
        var 
    nP_1  close(-1);
        var 
    nFortune 0;
        var 
    nA_factor_1 xA_factor.getValue(-1);
        var 
    nA_factor_2 xA_factor.getValue(-2);
        if (
    nP_1 == null || nA_factor_2 == null ||
            
    xSigma.getValue(0) == null || xAlpha.getValue(0) == null) return 0;
        
        if (
    nState == BARSTATE_NEWBAR) {
            
    nSum += (nA_factor_2 xW.getValue(-1));
        }
        
        if (
    nSum != 0) {
            
    nFortune = ((nSum + (nA_factor_1 xW.getValue(0))) / nP_1);  
        }
        
        return 
    nFortune;
    }


    function 
    calcW() {
        return (
    close(0) - close(-1));
    }


    function 
    calcStdev(xSrcn) {
        var 
    sumX 0;
        var 
    sumX2 0;

        if (
    xSrc.getValue(-n) == null) return;
        
        for (
    0n; ++i) {
            
    sumX += xSrc.getValue(-i);
            
    sumX2 += (xSrc.getValue(-i) * xSrc.getValue(-i))
        }
        var 
    meanX = (sumX/n);
        var 
    stdev Math.sqrt((sumX2/n) - (meanX*meanX));

        return 
    stdev;
    }


    function 
    calcDeltaP(xSrc) {
        return ((
    xSrc.getValue(0) + xSrc.getValue(-1)) + sma(30)) - close(0);
    }


    function 
    calcAlpha(xSrc1xSrc2) {
        return 
    xSrc1.getValue(0) / xSrc2.getValue(0);
    }


    function 
    calcA_factor(xSrcC) {
        var 
    nA 0;
        
        if (
    xSrc.getValue(0) > CnA 1;
        else if (
    xSrc.getValue(0) < -CnA = -1;
        
        return 
    nA;
    }


    function 
    verify() {
        var 
    false;
        if (
    getBuildNumber() < 730) {
            
    drawTextAbsolute(535"This study requires version 7.9.1 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;


    PHP Code:
    /***************************************
    Provided By : eSignal (c) Copyright 2006
    Description:  Harnessing The (Mis)Behavior Of Markets
                  by Rick Martinelli

    Version 1.0  04/06/2006

    Notes:
    * June 2006 Issue of Stocks and Commodities Magazine
    * Study requires version 7.9.1 or higher.


    Formula Parameters:                 Defaults:
    Account Value                       10000
    ***************************************/


    function preMain() {
        
    setStudyTitle("Fortune Indicator ");
        
    setCursorLabelName("Fortune"0);
        
    setDefaultBarThickness(20);
        
    setDefaultBarFgColor(Color.navy0);
        
        var 
    fp1 = new FunctionParameter("nDollars"FunctionParameter.NUMBER);
            
    fp1.setName("Account Value");
            
    fp1.setLowerLimit(0);
            
    fp1.setDefault(10000);
    }

    var 
    bVersion null;
    var 
    bInit false;
    var 
    xW null;
    var 
    nSum 0;
    var 
    nCntr 1;

    function 
    main(nDollars) {    
        if (
    bVersion == nullbVersion verify();
        if (
    bVersion == false) return;    

        if (
    bInit == false) {
            
    xW efsInternal("calcW");
            
    addBand(0PS_SOLID2Color.magenta0);
            
    bInit true;
        }
        
        var 
    nState getBarState();
        var 
    nP_1  close(-1);
        var 
    nFortune 0;
        if (
    nP_1 == null) return;
        
        if (
    nState == BARSTATE_NEWBAR) {
            
    nCntr++;
            
    nSum += xW.getValue(-1);
        }
        
        if (
    nSum != 0) {
            
    nFortune = ((nSum xW.getValue(0)) / nP_1) * nDollars;  
        }
        
        return 
    nFortune;
    }


    function 
    calcW() {
        return (
    close(0) - close(-1));
    }


    function 
    verify() {
        var 
    false;
        if (
    getBuildNumber() < 730) {
            
    drawTextAbsolute(535"This study requires version 7.9.1 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;


    PHP Code:
    /***************************************
    Provided By : eSignal (c) Copyright 2006
    Description:  Harnessing The (Mis)Behavior Of Markets
                  by Rick Martinelli

    Version 1.0  04/06/2006

    Notes:
    * June 2006 Issue of Stocks and Commodities Magazine
    * Study requires version 7.9.1 or higher.


    Formula Parameters:                 Defaults:
    Alpha Cutoff                        1
    ***************************************/


    function preMain() {
        
    setStudyTitle("Win/Loss Ratio ");
        
    setCursorLabelName("W/L"0);
        
    setDefaultBarThickness(30);
        
    setDefaultBarFgColor(Color.navy0);
        
    setPlotType(PLOTTYPE_HISTOGRAM0);
        
        var 
    fp1 = new FunctionParameter("nCutoff"FunctionParameter.NUMBER);
            
    fp1.setName("Alpha Cutoff");
            
    fp1.setLowerLimit(0);
            
    fp1.setDefault(1);
    }

    var 
    bVersion    null;
    var 
    bInit       false;
    var 
    xW          null;
    var 
    xSigma      null;
    var 
    xDeltaP     null;
    var 
    xAlpha      null;

    function 
    main(nCutoff) {    
        if (
    bVersion == nullbVersion verify();
        if (
    bVersion == false) return;    

        if (
    bInit == false) {
            
    xW efsInternal("calcW");
            
    xSigma efsInternal("calcStdev"xW7);
            
    xDeltaP efsInternal("calcDeltaP"xW);
            
    xAlpha efsInternal("calcAlpha"xDeltaPxSigma);
            
    addBand(0PS_SOLID2Color.magenta0);
            
    bInit true;
        }
        
        var 
    nState getBarState();
        var 
    nWL 0;
        
        if (
    xAlpha.getValue(-2) == null) return 0;
        
        
    // Trading $ accumulation
        
    if (nState == BARSTATE_NEWBAR) {
            if (
    xAlpha.getValue(-2) > nCutoff) {         // long signal
                
    nWL = (close(-1) - close(-2)) / close(-2);
            } else if (
    xAlpha.getValue(-2) < -nCutoff) {  // short signal
                
    nWL  = (close(-2) - close(-1)) / close(-2);
            }
        }
        
        return 
    nWL;
    }


    function 
    calcW() {
        return (
    close(0) - close(-1));
    }


    function 
    calcStdev(xSrcn) {
        var 
    sumX 0;
        var 
    sumX2 0;

        if (
    xSrc.getValue(-n) == null) return;
        
        for (
    0n; ++i) {
            
    sumX += xSrc.getValue(-i);
            
    sumX2 += (xSrc.getValue(-i) * xSrc.getValue(-i))
        }
        var 
    meanX = (sumX/n);
        var 
    stdev Math.sqrt((sumX2/n) - (meanX*meanX));

        return 
    stdev;
    }


    function 
    calcDeltaP(xSrc) {
        return ((
    xSrc.getValue(0) + xSrc.getValue(-1)) + sma(30)) - close(0);
    }


    function 
    calcAlpha(xSrc1xSrc2) {
        return 
    xSrc1.getValue(0) / xSrc2.getValue(0);
    }


    function 
    verify() {
        var 
    false;
        if (
    getBuildNumber() < 730) {
            
    drawTextAbsolute(535"This study requires version 7.9.1 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;

    Jason K.
    Project Manager
    eSignal - an Interactive Data company

    EFS KnowledgeBase
    JavaScript for EFS Video Series
    EFS Beginner Tutorial Series
    EFS Glossary
    Custom EFS Development Policy

    New User Orientation
Working...
X