Announcement

Collapse
No announcement yet.

2016 Jun: ATR Breakout Entries by Ken Calhoun

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

  • 2016 Jun: ATR Breakout Entries by Ken Calhoun

    File Name: ATR_Breakout.efs

    Description:
    ATR Breakout Entries by Ken Calhoun

    Formula Parameters:

    ATR_Breakout.efs

    ATR Length: 14
    Highest ATR Lookback: 14
    SMA Length: 100
    Use Wide Range condition: true
    Wide Range Lookback: 7
    Trailing Stop: 2

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

    Download File:
    ATR_Breakout.efs

    ATR_Breakout.efs


    EFS Code:
    PHP Code:
    /*********************************
    Provided By:  
    eSignal (Copyright c eSignal), a division of Interactive Data 
    Corporation. 2016. All rights reserved. This sample eSignal 
    Formula Script (EFS) is for educational purposes only and may be 
    modified and saved under a new file name.  eSignal is not responsible
    for the functionality once modified.  eSignal reserves the right 
    to modify and overwrite this EFS file with each new release.

    Description:        
        ATR Breakout Entries by Ken Calhoun

    Version:            1.00  02/08/2016

    Formula Parameters:                     Default:
    ATR Length                              14
    Highest ATR Lookback                    14
    SMA Length                              100
    Use Wide Range condition                true
    Wide Range Lookback                     7
    Trailing Stop                           2



    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(true);
        
    setCursorLabelName("SMA");
        var 
    x=0;
        
    fpArray[x] = new FunctionParameter("ATRLength"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setLowerLimit(1);
            
    setUpperLimit(1000);  
            
    setDefault(14);
            
    setName("ATR Length");
        }
        
    fpArray[x] = new FunctionParameter("ATRlb"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setLowerLimit(1);
            
    setUpperLimit(1000);  
            
    setDefault(14);
            
    setName("Highest ATR Lookback");
        }
        
    fpArray[x] = new FunctionParameter("SMALength"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setLowerLimit(1);
            
    setUpperLimit(1000);  
            
    setDefault(100);
            
    setName("SMA Length");
        }
        
    fpArray[x] = new FunctionParameter("isWR"FunctionParameter.BOOLEAN);
        
    with(fpArray[x++]){
            
    setDefault(true);
            
    setName("Use Wide Range condition");
        }
        
    fpArray[x] = new FunctionParameter("RangeLen"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setLowerLimit(1);
            
    setUpperLimit(1000);  
            
    setDefault(7);
            
    setName("Wide Range Lookback");
        }
        
    fpArray[x] = new FunctionParameter("TrlStop"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setLowerLimit(0.01);        
            
    setDefault(2);
            
    setName("Trailing Stop");
        }
    }

    var 
    bInit false;
    var 
    bVersion null;
    var 
    xClose null;
    var 
    xHigh null;
    var 
    xLow null;
    var 
    bIsLong false;
    var 
    bEntryFound false;
    var 
    vStopPrice null;
    var 
    vHighOfDay null;
    var 
    xSMA null;
    var 
    xATR null;
    var 
    xHighestATR null;
    var 
    xRange null;
    var 
    xWR null;
    var 
    vHighestHigh null;

    function 
    main(ATRLength,ATRlb,SMALength,isWR,RangeLenTrlStop){
        
        if (
    bVersion == nullbVersion verify();
        if (
    bVersion == false) return;

        
        if(
    getBarState() == BARSTATE_ALLBARS){
            
    xClose null;
            
    xHigh null;
            
    xLow null;
            
    bIsLong false;
            
    bEntryFound false;
            
    vStopPrice null;
            
    bVersion null;
            
    vHighOfDay null;
            
    xSMA null;
            
    xATR null;
            
    xHighestATR null;
            
    xRange null;
            
    xWR null;
            
    vHighestHigh null;
            
    bInit false;
        }

        if (!
    bInit){
            
    bIsLong false;
            
    bEntryFound false;
            
    xClose close();
            
    xHigh high();
            
    xLow low();
            
    xSMA sma(SMALength);
            
    xATR atr(ATRLength);
            
    xHighestATR hhv(ATRlbxATR);
            
            if (
    isWR){
                
    xRange efsInternal("calcRange"inv("D"));
                
    xWR upperDonchian(RangeLen-1,xRange);
            }
            
    bInit true;
        }
        if(
    xSMA.getValue(-1) == null) return;
        
        var 
    nATR xATR.getValue(0);
        var 
    nSMA xSMA.getValue(0);
        var 
    nPrevSMA xSMA.getValue(-1);
        var 
    nPrevHATR xHighestATR.getValue(-1)
        var 
    nClose xClose.getValue(0);
        var 
    nLow xLow.getValue(0);
        var 
    nHigh xHigh.getValue(0);
        var 
    nPrevHigh xHigh.getValue(-1);


        if (
    bIsLong){
            if (
    nHigh vHighestHigh && (nLow TrlStop) > vStopPrice) {
                
    vStopPrice = (nLow TrlStop);
                
    vHighestHigh nHigh
            
    }
            else if (
    nLow <= vStopPrice){
                
    drawTextRelative(0AboveBar1"\u00EA"Color.rednullText.PRESET|Text.CENTER"Wingdings"10"Exit"+rawtime(0));
                
    drawText("Suggested Long Exit at "+formatPriceNumber(vStopPrice),BottomRow1,Color.red,Text.LEFT,"Text Exit"+rawtime(0));
                
    bIsLong false;
                
    bEntryFound false;
            }
        }
        
        if (
    bEntryFound && !bIsLong && nHigh >= vHighOfDay) {
            
    drawTextRelative(0,BelowBar1"\u00E9"Color.greennullText.PRESET|Text.CENTER"Wingdings"10"Long"+rawtime(0));
            
    drawText("Suggested Long Entry at "+formatPriceNumber(vHighOfDay),TopRow1,Color.green,Text.LEFT,"Text"+rawtime(0));
            
    bIsLong true;
            
    vStopPrice = (nLow TrlStop);
            
    vHighestHigh nHigh;
        }

        if(!
    bIsLong && nATR >= nPrevHATR && nHigh nSMA && nPrevSMA nPrevHigh){
            if (!
    isWR || isWR && IsWideCandle()) { 
                
    vHighOfDay nHigh 0.5;
                
    bEntryFound true;
            }
        }

        return 
    nSMA;
    }

    function 
    IsWideCandle(){
        if (
    xWR.getValue(0) > xWR.getValue(-1))
            return 
    true;
        else return 
    false;
    }

    function 
    calcRange(){
        return 
    high() - low();
    }

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

Working...
X