Announcement

Collapse
No announcement yet.

2015 Apr (Feb): Kiss & Touch With The Modified True Range by Chris Lindgren

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

  • 2015 Apr (Feb): Kiss & Touch With The Modified True Range by Chris Lindgren

    File Name: ModifiedTrueRange.efs

    Description:
    Kiss & Touch With The Modified True Range by Chris Lindgren

    Formula Parameters:

    ModifiedTrueRange.efs
    Period: 20
    Grouping Offset: 1
    Goal: 9.99

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

    Download File:
    ModifiedTrueRange.efs

    ModifiedTrueRange.efs


    EFS Code:
    PHP Code:

    /*********************************
    Provided By:  
        Interactive Data Corporation (Copyright © 2015) 
        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:        
        Kiss & Touch With The Modified True Range by Chris Lindgren
        
    Version:            1.00  02/06/2015

    Formula Parameters:                     Default:
    Period                                  20 
    Grouping Offset                         1
    Goal                                    9.99

    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(){
        
        
    setStudyTitle("ModifiedTrueRange");
        
        
    setCursorLabelName("GoalLevel"0);
        
    setCursorLabelName("MTR"1);
        
        
    setDefaultBarFgColor(Color.yellow0);
        
    setDefaultBarFgColor(Color.grey1);

        
    setPlotType(PLOTTYPE_LINE0);
        
    setPlotType(PLOTTYPE_HISTOGRAM1);

        
    setDefaultBarThickness(10);
        
    setDefaultBarThickness(31);

        var 
    0;

        
    fpArray[x] = new FunctionParameter("fpPeriod"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setName("Period");
            
    setLowerLimit(1);
            
    setDefault(20);
        }

        
    fpArray[x] = new FunctionParameter("fpGroupOffset"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setName("Grouping Offset");
            
    setLowerLimit(1); 
            
    setDefault(1);
        }

        
    fpArray[x] = new FunctionParameter("fpGoal"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setName("Goal");
            
    setLowerLimit(0);
            
    setDefault(9.99);
        } 
    }

    var 
    bInit false;
    var 
    bVersion null;

    var 
    xClose null;
    var 
    xLowest null;
    var 
    xHighest null;
    var 
    xRanges null;

    var 
    xMTR null;
    var 
    xRange null;

    var 
    xHitGoal null;
    var 
    xAvgMTR null;
    var 
    xMTRStdDev null;

    var 
    aLabels = [];
    var 
    nButtonSpace 5;

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

        if (!
    bInit){
            
    xClose close();
            
    xLowest lowest(fpGroupOffsetlow());
            
    xHighest highest(fpGroupOffsethigh());
            
    xRanges efsInternal("Calc_Ranges"xClosexLowestxHighestfpGroupOffset);
            
            
    xMTR getSeries(xRanges0);
            
    xRange getSeries(xRanges1);
            
            
    xHitGoal efsInternal("Calc_HitGoal"xMTRfpGoal);
            
            
    xAvgMTR sma(fpPeriodxMTR);
            
    xMTRStdDev efsInternal("Calc_StdDev"xRangefpPeriod);
            
            
    bInit true
        }
      
        var 
    nMTR xMTR.getValue(0);
        if (
    nMTR == null)
            return;
        
    setBarFgColor((nMTR >= fpGoal) ? Color.green Color.red1);
            
        var 
    GoalCount null;
        for (var 
    0fpPeriodi++){
            var 
    nHitGoal xHitGoal.getValue(-i);
            if (
    nHitGoal == null){
                
    GoalCount "n/a"
                
    break;
            }
            
    GoalCount += nHitGoal;
        }
            
        var 
    GoalPct = (GoalCount == "n/a") ? "n/a" "%" Math.round(GoalCount fpPeriod 100);

        var 
    AvgMTR xAvgMTR.getValue(0);
        var 
    MTRStdDev xMTRStdDev.getValue(0);
        
        
    AvgMTR = (AvgMTR == null) ? "n/a" "$" AvgMTR.toFixed(2);
        
    MTRStdDev = (MTRStdDev == null) ? "n/a" "$" MTRStdDev.toFixed(2);
            
        if (
    isLastBarOnChart()){
            var 
    10;
            var 
    25;
                
            
    aLabels = [];
            
    aLabels.push((fpGroupOffset 1) ? 
            [
    "** Special Grouping is set is for " fpGroupOffset " bars **"285Color.RGB(255,155,0)] : null);
            
    aLabels.push(["Period Length " fpPeriod135Color.lime]);
            
    aLabels.push(["Goal $" fpGoal.toFixed(2), 105Color.lime]);
            
    aLabels.push(["Goal Count " GoalCount115Color.lime]);
            
    aLabels.push(["Percent Goal Achieved " GoalPct180Color.lime]);
            
    aLabels.push(["AverageMTR(" fpPeriod ") = " AvgMTR215Color.lightgrey]);
            
    aLabels.push(["MTR Std Dev(" fpPeriod ") = " MTRStdDev215Color.lightgrey]);
        
            
    aLabels.forEach(
                function(
    aValuenIndex){
                    if (
    aValue != null){
                        
    drawTextPixel(xyaValue[0], Color.navyaValue[2],
                        
    Text.BOLD|Text.FRAME|Text.CENTER"Arial"8aValue[0], aValue[1]);
                        
    aValue[1] + nButtonSpace;
                    }
                    if (
    nIndex == 4){
                        
    10;
                        
    45;
                    }
                } 
            )
        } 
        
        return [
    fpGoalnMTR]; 
    }

    function 
    Calc_Ranges(xClosexLowestxHighestnGroupOffset){
        
        
    nPrevClose xClose.getValue(-nGroupOffset);
        
    nLowest xLowest.getValue(0);
        
    nHighest xHighest.getValue(0);

        if (
    nPrevClose == null || nLowest == null || nHighest == null
            return;

        var 
    nRangeLow Math.abs(nPrevClose nLowest);
        var 
    nRangeHigh Math.abs(nPrevClose nHighest);
        
        var 
    nMTR Math.max(nRangeLownRangeHigh);
        
        var 
    nRangeLow1 = (nPrevClose nLowest);
        var 
    nRangeHigh1 = (nPrevClose nHighest);
        
        var 
    nRange Math.abs(nRangeLow1) >= Math.abs(nRangeHigh1) ? nRangeLow1 nRangeHigh1;
        
        return [
    nMTRnRange];
    }

    function 
    Calc_StdDev(xSourcenPeriod){
        
        var 
    nSumX 0
        var 
    nSumX2 0

        for (
    0nPeriodi++){ 
            var 
    nSource xSource.getValue(-i);
            if (
    nSource == null)
                return;
            
    nSumX += nSource
            
    nSumX2 += (nSource nSource); 
        } 

        var 
    nSMA = (nSumX nPeriod); 
        var 
    nStdDev Math.sqrt((nSumX2 nPeriod) - (nSMA nSMA)); 

        return 
    nStdDev
    }

    function 
    Calc_HitGoal(xMTRnGoal){
        
        var 
    nMTR xMTR.getValue(0);
            
        if (
    nMTR == null)
            return;
        
        var 
    nHitGoal = (nMTR >= nGoal) ? 0;
       
        return 
    nHitGoal;
    }

    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