Announcement

Collapse
No announcement yet.

2012 May: Sentiment Zone Oscillator by Walid Khalil, MFTA, CFTe

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

  • 2012 May: Sentiment Zone Oscillator by Walid Khalil, MFTA, CFTe

    File Name: SentimentZoneOsc.efs

    Description:
    Sentiment Zone Oscillator by Walid Khalil, MFTA, CFTe

    Formula Parameters:

    SentimentZoneOsc.efs
    Period: 14
    Use Dynamic Levels: true
    Dynamic Levels Period: 30
    Dynamic Levels % Range: 95

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

    Download File:
    SentimentZoneOsc.efs

    SentimentZoneOsc.efs


    EFS Code:
    PHP Code:
    /*********************************
    Provided By:  
        Interactive Data Corporation (Copyright © 2012) 
        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:        
        Sentiment Zone Oscillator
     
    Version:            1.0  14/03/2012

    Formula Parameters:                     Default:
        Period                              14
        Use Dynamic Levels                  true
        Dynamic Levels Period               30
        Dynamic Levels % Range              95
        
    Notes:
        The related article is copyrighted material. If you are not
        a subscriber of Stocks & Commodities, please visit [url]www.traders.com.[/url]

    **********************************/
    var OB_LEVEL 7;
    var 
    OS_LEVEL = -7;

    var 
    fpArray = new Array();

    function 
    preMain()
    {
        
    setCursorLabelName("Sentiment Zone Osc"0);
        
    setCursorLabelName("OverBought Level"1);
        
    setCursorLabelName("OverSold Level"2);
        
        
    setDefaultBarFgColor(Color.aqua0);
        
    setDefaultBarFgColor(Color.red1);
        
    setDefaultBarFgColor(Color.green2);
        
        
    setDefaultBarThickness(20);
        
    setDefaultBarThickness(21);
        
    setDefaultBarThickness(22);
        
        var 
    x=0;
        
    fpArray[x] = new FunctionParameter("gPeriod"FunctionParameter.NUMBER);
        
    with(fpArray[x++])
        {
        
    setName("Period");
        
    setLowerLimit(2);
            
    setUpperLimit(200);
            
    setDefault(14);
        }

        
    fpArray[x] = new FunctionParameter("gIsDynamicLevels"FunctionParameter.BOOLEAN);
        
    with(fpArray[x++])
        {
        
    setName("Use Dynamic Levels");
            
    setDefault(true);
        }
        
        
    fpArray[x] = new FunctionParameter("gExtremesPeriod"FunctionParameter.NUMBER);
        
    with(fpArray[x++])
        {
        
    setName("Dynamic Levels Period");
        
    setLowerLimit(2);
            
    setUpperLimit(200);
            
    setDefault(30);
        }
        
        
    fpArray[x] = new FunctionParameter("gPercentageRange"FunctionParameter.NUMBER);
        
    with(fpArray[x++])
        {
        
    setName("Dynamic Levels % Range");
        
    setLowerLimit(1);
            
    setUpperLimit(100);
            
    setDefault(95);
        }
    }

    var 
    bInit false;
    var 
    bVersion null;
    var 
    xSZO null;
    var 
    xHLP null;
    var 
    xLLP null;

    function 
    main(gPeriodgIsDynamicLevelsgExtremesPeriodgPercentageRange)
    {
        if (
    bVersion == nullbVersion verify();
        if (
    bVersion == false) return;     
            
        if (!
    bInit)
        {
            
    xSZO efsInternal("calc_SZO"gPeriod);       
            if (
    gIsDynamicLevels)
            {
                
    xHLP hhv(gExtremesPeriodxSZO);
                
    xLLP llv(gExtremesPeriodxSZO);
            }        
            
    bInit true;
        }
        var 
    nOB null;
        var 
    nOS null;
        
        if (
    gIsDynamicLevels)
        {
            var 
    vHLP xHLP.getValue(0);
            var 
    vLLP xLLP.getValue(0);        
            if (
    vHLP == null || vLLP == null)
                return;       
            var 
    nRange vHLP vLLP;
            var 
    nPRange nRange * (gPercentageRange 100);      
            
    nOB vLLP nPRange;
            
    nOS vHLP nPRange;       
            
    addBand(OB_LEVELPS_DASH1Color.maroon"obLevel");
            
    addBand(OS_LEVELPS_DASH1Color.darkgreen"osLevel")
        }
        else
        {
            
    nOB OB_LEVEL;
            
    nOS OS_LEVEL;
        }       
        var 
    vSZO xSZO.getValue(0);      
        if (
    vSZO == null)
            return;  
        return new Array(
    vSZOnOBnOS);
    }

    var 
    bInitSZO false;

    var 
    xR null;
    var 
    xSP null;

    // Sentiment Zone Oscillator
    function calc_SZO(period)
    {
        if (!
    bInitSZO)
        {
            
    xR efsInternal("calc_Range");
            
    xSP efsInternal("TEMA"periodxR);       
            
    bInitSZO true;
        }    
        var 
    vSP xSP.getValue(0);
        if (
    vSP == null)
            return;   
        return 
    100 * (vSP period);          
    }


    // to include both time and sentiment
    function calc_Range()
    {
        var 
    vC close(0);
        var 
    vvC close(-1);
        if (
    vvC == null)
            return;   
        if (
    vC vvC)
            return 
    1;
        else 
            return -
    1;
    }


    var 
    bInitTEMA false;
    var 
    xEma1 null;
    var 
    xEma2 null;
    var 
    xEma3 null;

    // Triple Exponential Moving Average
    function TEMA(periodseries)
    {   
        if(!
    bInitTEMA)
        {
            
    xEma1 ema(periodseries);
            
    xEma2 ema(periodxEma1);
            
    xEma3 ema(periodxEma2);
            
    bInitTEMA true;    
        }   
        var 
    vEma1 xEma1.getValue(0);
        var 
    vEma2 xEma2.getValue(0);
        var 
    vEma3 xEma3.getValue(0);
        if (
    vEma3 == null
            return 
    null;
        return 
    vEma1 vEma2 vEma3;
    }

    // verify version
    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