Announcement

Collapse
No announcement yet.

2006 Sept: Trading With An Adaptive Price Zone by Lee Leibfarth

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

  • 2006 Sept: Trading With An Adaptive Price Zone by Lee Leibfarth

    File Name: AdaptivePriceZone.efs

    Description:
    These studies are based on the September 2006 article, Trading With An Adaptive Price Zone, by Lee Leibfarth.

    Formula Parameters:
    AdaptivePriceZone.efs
    Period: 20
    Band Percent: 2

    APZ_Strategy.efs
    Period: 20
    Band Percent: 2
    ADX Period: 14
    ADX Smoothing: 14
    ADX Threshold: 30

    Notes:
    The APZ_Strategy.efs study is compatible for back testing and real time usage. These formulas require eSignal version 8.0.0 or later. The related article is copyrighted material. If you are not a subscriber of Stocks & Commodities, please visit www.traders.com.

    Download File:
    AdaptivePriceZone.efs
    APZ_Strategy.efs





    EFS Code:
    PHP Code:
    /***************************************
    Provided By : eSignal (c) Copyright 2006
    Description:  Trading With An Adaptive Price Zone
                  by Lee Leibfarth

    Version 1.0  07/06/2006

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


    Formula Parameters:                 Defaults:
    Period                              20
    Band Percent                        2
    ***************************************/


    function preMain() {
        
    setPriceStudy(true);
        
    setStudyTitle("Adaptive Price Zone Indicator ");
        
    setCursorLabelName("Upper Band"0);
        
    setCursorLabelName("Lower Band"1);
        
    setDefaultBarThickness(20);
        
    setDefaultBarThickness(21);
        
    setDefaultBarStyle(PS_DOT0);
        
    setDefaultBarStyle(PS_DOT1);
        

        var 
    fp1 = new FunctionParameter("nPeriods"FunctionParameter.NUMBER);
            
    fp1.setName("Period");
            
    fp1.setLowerLimit(1);
            
    fp1.setDefault(20);
        var 
    fp2 = new FunctionParameter("nBandPct"FunctionParameter.NUMBER);
            
    fp2.setName("Band Percent");
            
    fp2.setLowerLimit(0);
            
    fp2.setDefault(2);
    }

    var 
    bVersion null;
    var 
    bInit false;

    var 
    xAPZ null;
    var 
    xAPZ_Upper null;  // Upper Band
    var xAPZ_Lower null;  // Lower Band

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

        if (
    bInit == false) {
            
    xAPZ efsInternal("calcAPZ"nPeriodsnBandPct);
            
    bInit true;
        }
        
        if (
    xAPZ_Upper == nullxAPZ_Upper getSeries(xAPZ0);  // Upper Band
        
    if (xAPZ_Lower == null) var xAPZ_Lower getSeries(xAPZ1);  // Lower Band
        
    var nAPZ_Upper xAPZ_Upper.getValue(0);
        var 
    nAPZ_Lower xAPZ_Lower.getValue(0);
        if (
    nAPZ_Upper == null || nAPZ_Lower == null) return;

        if (
    high(0) > nAPZ_Upper) {
            
    drawShape(Shape.CIRCLEAboveBar1Color.bluerawtime(0));
        } else if (
    low(0) < nAPZ_Lower) {
            
    drawShape(Shape.CIRCLEBelowBar1Color.bluerawtime(0));
        }
        

        return new Array(
    nAPZ_UppernAPZ_Lower);
    }

    var 
    xHL null;

    function 
    calcAPZ(nPeriodsnBandPct) {
        if (
    xHL == nullxHL efsInternal("calcHL");
        if (
    isNaN(xHL.getValue(0))) return;
        
        
    //nPeriods = Math.round(Math.sqrt(nPeriods));
        
    nPeriods Math.ceil(Math.sqrt(nPeriods));
        var 
    Value1 ema(nPeriodsema(nPeriods), 0);
        var 
    Value2 ema(nPeriodsema(nPeriodsxHL), 0);
        if (
    Value1 == null || Value2 == null) return;
        
        var 
    UpBand nBandPct Value2 Value1;
        var 
    DnBand Value1 nBandPct Value2;
        if (
    UpBand == null || DnBand == null) return;
        
        return new Array(
    UpBandDnBand);
    }


    function 
    calcHL() {
        return 
    high(0) - low(0);
    }


    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;
    }



    /***************************************
    Provided By : eSignal (c) Copyright 2006
    Description:  Trading With An Adaptive Price Zone
                  by Lee Leibfarth

    Version 1.0  07/06/2006

    Notes:
    * Sept 2006 Issue of Stocks and Commodities Magazine
    * Study requires version 8.0 or higher.
    * Study is designed for Back Testing.


    Formula Parameters:                 Defaults:
    Period                              20
    Band Percent                        2
    ADX Period                          14
    ADX Smoothing                       14
    ADX Threshold                       30
    ***************************************/


    function preMain() {
        
    setPriceStudy(true);
        
    setStudyTitle("Adaptive Price Zone Strategy ");
        
    setShowTitleParameters(false);
        
    setCursorLabelName("Upper Band"0);
        
    setCursorLabelName("Lower Band"1);
        
    setCursorLabelName("ADX"2);
        
    setDefaultBarFgColor(Color.blue0);
        
    setDefaultBarFgColor(Color.blue1);
        
    setDefaultBarFgColor(Color.green2);
        
    setDefaultBarThickness(20);
        
    setDefaultBarThickness(21);
        
    setDefaultBarStyle(PS_DOT0);
        
    setDefaultBarStyle(PS_DOT1);
        
    setDefaultFont("Ariel"12);
        

        var 
    fp1 = new FunctionParameter("nPeriods"FunctionParameter.NUMBER);
            
    fp1.setName("Period");
            
    fp1.setLowerLimit(1);
            
    fp1.setDefault(20);
        var 
    fp2 = new FunctionParameter("nBandPct"FunctionParameter.NUMBER);
            
    fp2.setName("Band Percent");
            
    fp2.setLowerLimit(0);
            
    fp2.setDefault(2);
        var 
    fp3 = new FunctionParameter("nADXPeriods"FunctionParameter.NUMBER);
            
    fp3.setName("ADX Period");
            
    fp3.setLowerLimit(1);
            
    fp3.setDefault(14);
        var 
    fp4 = new FunctionParameter("nADXSmoothing"FunctionParameter.NUMBER);
            
    fp4.setName("ADX Smoothing");
            
    fp4.setLowerLimit(1);
            
    fp4.setDefault(14);
        var 
    fp5 = new FunctionParameter("nADXThreshold"FunctionParameter.NUMBER);
            
    fp5.setName("ADX Threshold");
            
    fp5.setLowerLimit(0);
            
    fp5.setDefault(30);
    }

    var 
    bVersion null;
    var 
    bInit false;
    var 
    bBackTest true;
    var 
    vPosition null;

    var 
    xAPZ null;
    var 
    xAPZ_Upper null;  // Upper Band
    var xAPZ_Lower null;  // Lower Band

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

        if (
    bInit == false) {
            
    xAPZ efsInternal("calcAPZ"nPeriodsnBandPct);
            
    bInit true;
        }
        
        if (
    xAPZ_Upper == nullxAPZ_Upper getSeries(xAPZ0);  // Upper Band
        
    if (xAPZ_Lower == null) var xAPZ_Lower getSeries(xAPZ1);  // Lower Band
        
    var nAPZ_Upper xAPZ_Upper.getValue(0);
        var 
    nAPZ_Lower xAPZ_Lower.getValue(0);
        var 
    nAPZ_Upper_1 xAPZ_Upper.getValue(-1);
        var 
    nAPZ_Lower_1 xAPZ_Lower.getValue(-1);
        var 
    nADX_0 adx(nADXPeriodsnADXSmoothing0);
        var 
    nADX_1 adx(nADXPeriodsnADXSmoothing, -1);
        if (
    nAPZ_Upper_1 == null || nAPZ_Lower_1 == null || nADX_1 == null) return;

        if (
    getCurrentBarIndex() == 0bBackTest false;
        
        if (
    vPosition != null && nADX_1 nADXThreshold) {  // Exit signal
            
    if (vPosition == "long") {
                
    drawText("Sell"AboveBar3Color.redText.BOLD|Text.CENTER"t"+rawtime(0));
                
    drawShape(Shape.DOWNARROWAboveBar2Color.red"s"+rawtime(0));
                
    vPosition null;
                
    Alert.playSound("ding.wav");
                if (
    bBackTest == true) {
                    
    Strategy.doSell("Sell"Strategy.MARKETStrategy.THISBAR);
                }
            } else if (
    vPosition == "short") {
                
    drawText("Cover"BelowBar3Color.redText.BOLD|Text.CENTER"t"+rawtime(0));
                
    drawShape(Shape.UPARROWBelowBar2Color.red"s"+rawtime(0));
                
    vPosition null;
                
    Alert.playSound("ding.wav");
                if (
    bBackTest == true) {
                    
    Strategy.doCover("Cover"Strategy.MARKETStrategy.THISBAR);
                }
            }
        } else if (
    nADX_1 <= nADXThreshold) {  // Entry signal        
            
    if (vPosition != "short" && high(-1) >= nAPZ_Upper_1) { // Short signal
                
    vPosition "short";
                
    drawText("Short"AboveBar3Color.blueText.BOLD|Text.CENTER"t"+rawtime(0));
                
    drawShape(Shape.DOWNARROWAboveBar2Color.blue"s"+rawtime(0));
                
    Alert.playSound("pop.wav");
                if (
    bBackTest == true) {
                    
    Strategy.doShort("Short"Strategy.MARKETStrategy.THISBAR);
                }
            } 
            if (
    vPosition != "long" && low(-1) <= nAPZ_Lower_1) { // Long signal
                
    vPosition "long";
                
    drawText("Long"BelowBar3Color.blueText.BOLD|Text.CENTER"t"+rawtime(0));
                
    drawShape(Shape.UPARROWBelowBar2Color.blue"s"+rawtime(0));
                
    Alert.playSound("pop.wav");
                if (
    bBackTest == true) {
                    
    Strategy.doLong("Long"Strategy.MARKETStrategy.THISBAR);
                }
            }
        }
        

        return new Array(
    nAPZ_UppernAPZ_LowernADX_0.toFixed(6));
    }

    var 
    xHL null;

    function 
    calcAPZ(nPeriodsnBandPct) {
        if (
    xHL == nullxHL efsInternal("calcHL");
        if (
    isNaN(xHL.getValue(0))) return;
        
        
    //nPeriods = Math.round(Math.sqrt(nPeriods));
        
    nPeriods Math.ceil(Math.sqrt(nPeriods));
        var 
    Value1 ema(nPeriodsema(nPeriods), 0);
        var 
    Value2 ema(nPeriodsema(nPeriodsxHL), 0);
        if (
    Value1 == null || Value2 == null) return;
        
        var 
    UpBand nBandPct Value2 Value1;
        var 
    DnBand Value1 nBandPct Value2;
        if (
    UpBand == null || DnBand == null) return;
        
        return new Array(
    UpBandDnBand);
    }


    function 
    calcHL() {
        return 
    high(0) - low(0);
    }


    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;

    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