Announcement

Collapse
No announcement yet.

Fisher Trend

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

  • Fisher Trend

    File Name: FisherTrend.efs

    Description:
    Fisher Trend

    Formula Parameters:
    RangePeriods : 30
    PriceSmoothing : 0.3
    IndexSmoothing : 0.3
    Point : 0.01


    Notes:


    Download File:
    FisherTrend.efs



    EFS Code:
    PHP Code:
    /*********************************
    Provided By:  
        eSignal (Copyright c eSignal), a division of Interactive Data 
        Corporation. 2009. 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:        
        Fisher Trend  
        
    Version:            1.0  06/16/2009
     
    Formula Parameters:                     Default:
        RangePeriods                        30
        PriceSmoothing                      0.3
        IndexSmoothing                      0.3
        Point                               0.01
        
    Notes:

    **********************************/
    var fpArray = new Array();
    var 
    bInit false;

    function 
    preMain(){
        
    setPriceStudy(false);
        
    setShowCursorLabel(true);
        
    setShowTitleParameters(false);
        
    setStudyTitle("Fisher Trend");
        
    setCursorLabelName("Fisher Trend"0);
        
    setDefaultBarFgColor(Color.black0);
        
    setPlotType(PLOTTYPE_HISTOGRAM0);
        
    setDefaultBarThickness(20);
        var 
    0;
        
    fpArray[x] = new FunctionParameter("RangePeriods"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(30);
        }    
        
    fpArray[x] = new FunctionParameter("PriceSmoothing"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(0.001);
            
    setDefault(0.3);
        }    
        
    fpArray[x] = new FunctionParameter("IndexSmoothing"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(0.001);
            
    setDefault(0.3);
        }        
        
    fpArray[x] = new FunctionParameter("Point"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(0);
            
    setDefault(0.01);
        }            
    }

    var 
    xFT null;

    function 
    main(RangePeriodsPriceSmoothingIndexSmoothingPoint) {
    var 
    nBarState getBarState();
    var 
    nFT 0;
        if (
    nBarState == BARSTATE_ALLBARS) {
            if(
    RangePeriods == nullRangePeriods 10;
            if(
    PriceSmoothing == nullPriceSmoothing 0.3;
            if(
    IndexSmoothing == nullIndexSmoothing 0.3;
            if(
    Point == nullPoint 0.01;
        }
        if (
    bInit == false) {
            
    addBand(0PS_SOLID1Color.black"Zero");    
            
    xFT efsInternal("Calc_FT"RangePeriodsPriceSmoothingIndexSmoothingPoint);
            
    bInit true;
        }
        
    nFT xFT.getValue(0);
        if (
    nFT == null) return;
        if (
    nFT 0setBarFgColor(Color.green0);
        if (
    nFT 0setBarFgColor(Color.red0);    
        return 
    nFT;
    }

    var 
    bSecondInit false;
    var 
    xSmoothedLocation null;

    function 
    Calc_FT(RangePeriodsPriceSmoothingIndexSmoothingPoint) {
    var 
    nRes 0;
    var 
    nRef ref(-1);
    var 
    nFT 0;
    var 
    nSmoothedLocation 0;
    var 
    nFishIndex 0;
    var 
    nSmoothedFish 0;
        if (
    bSecondInit == false) {
            
    xSmoothedLocation efsInternal("Calc_SmoothedLocation"RangePeriodsPriceSmoothingPoint);
            
    bSecondInit true;
        }
        
    nSmoothedLocation xSmoothedLocation.getValue(0);
        if (
    xSmoothedLocation.getValue(-1) == null) return;
        if (
    nSmoothedLocation >  0.99nSmoothedLocation 0.99
        if (
    nSmoothedLocation < -0.99nSmoothedLocation = -0.99;
        if( 
    nSmoothedLocation != 0
            
    nFishIndex Math.log((nSmoothedLocation) / (nSmoothedLocation));
        
    nFT IndexSmoothing nRef + (IndexSmoothing) * nFishIndex;
        return 
    nFT;
    }

    var 
    bThridInit false;
    var 
    xHH null;
    var 
    xLL null;
    var 
    xHL2 null;

    function 
    Calc_SmoothedLocation(RangePeriodsPriceSmoothingPoint) {
    var 
    nRes 0;
    var 
    nRef ref(-1);
    var 
    nHH 0;
    var 
    nLL 0;
    var 
    nHHLLRange 0;
    var 
    nMidPrice 0;
    var 
    nPriceLocation 0;
        if (
    bSecondInit == false) {
            
    xHH upperDonchian(RangePeriods);
            
    xLL lowerDonchian(RangePeriods);
            
    xHL2 hl2();
            
    bSecondInit true;
        }
        
    nHH xHH.getValue(0);
        
    nLL xLL.getValue(0);
        if (
    xHH.getValue(-1) == null) return;
        
    nMidPrice xHL2.getValue(0);
        if (
    nHH nLL 0.1 PointnHH nLL 0.1 Point;
        
    nHHLLRange nHH nLL;
        if (
    nHHLLRange != 0) {
            
    nPriceLocation = (nMidPrice nLL) / nHHLLRange;
            
    nPriceLocation nPriceLocation 1;
            
        }
        
    nRes PriceSmoothing nRef + (PriceSmoothing) * nPriceLocation;
        return 
    nRes;

Working...
X