Announcement

Collapse
No announcement yet.

2013 September: Oscillators, Smoothed by Sylvain Vervoort

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

  • 2013 September: Oscillators, Smoothed by Sylvain Vervoort

    File Name: SVEZLRBPercB.efs

    Description:
    Oscillators, Smoothed by Sylvain Vervoort

    Formula Parameters:

    SVEZLRBPercB.efs
    PercentB Deviation Period: 18
    PercentB Average: 3
    Stochastic Period: 30
    Stochastic Slowing: 3

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

    Download File:
    SVEZLRBPercB.efs

    SVEZLRBPercB.efs


    EFS Code:
    PHP Code:
    /*********************************
    Provided By:  
        Interactive Data Corporation (Copyright © 2013) 
        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:        
        Oscillators, Smoothed by Sylvain Vervoort
        
    Version:            1.00  04/06/2013

    Formula Parameters:                     Default:
    PercentB Deviation Period               18
    PercentB Average                        3
    Stochastic Period                       30
    Stochastic Slowing                      3

    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("SVEZLRBPercB");

        
    setCursorLabelName("Overbought"0);
        
    setCursorLabelName("Neutral"1);
        
    setCursorLabelName("Oversold"2);
        
    setCursorLabelName("PB_Plot"3);
        
    setCursorLabelName("K"4);
        
        
    setDefaultBarFgColor(Color.grey0);
        
    setDefaultBarFgColor(Color.grey1);
        
    setDefaultBarFgColor(Color.grey2);
        
    setDefaultBarFgColor(Color.blue3);
        
    setDefaultBarFgColor(Color.red4);

        
    setPlotType(PLOTTYPE_DOT0);
        
    setPlotType(PLOTTYPE_DOT1);
        
    setPlotType(PLOTTYPE_DOT2);
        
    setPlotType(PLOTTYPE_LINE3);
        
    setPlotType(PLOTTYPE_LINE4);

        
    setDefaultBarThickness(10);
        
    setDefaultBarThickness(21);
        
    setDefaultBarThickness(12);
        
    setDefaultBarThickness(13);
        
    setDefaultBarThickness(14);

        
    setShowCursorLabel(false0);
        
    setShowCursorLabel(false1);
        
    setShowCursorLabel(false2);
        
    setShowCursorLabel(true3);
        
    setShowCursorLabel(true4);
       
        var 
    0;

        
    fpArray[x] = new FunctionParameter("fpStDevPeriod"FunctionParameter.NUMBER);
        
    with(fpArray[x++])
        {
            
    setName("PercentB Deviation Period");
            
    setLowerLimit(1);
            
    setDefault(18);
        }

        
    fpArray[x] = new FunctionParameter("fpSmooth"FunctionParameter.NUMBER);
        
    with(fpArray[x++])
        {
            
    setName"PercentB Average" );
            
    setLowerLimit(1); 
            
    setDefault(3);
        }

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

        
    fpArray[x] = new FunctionParameter("fpSmoothK"FunctionParameter.NUMBER);
        
    with(fpArray[x++])
        {
            
    setName"Stochastic Slowing" );
            
    setLowerLimit(1);
            
    setDefault(3);
        }    
    }

    var 
    bInit false;
    var 
    bVersion null;

    var 
    xRainbow null;
    var 
    xEMA1 null;
    var 
    xEMA2 null;
    var 
    xZLRB null;
    var 
    xTEMA null;
    var 
    xStdDev null;
    var 
    xWMA null;
    var 
    xRBC null;
    var 
    xNom null;
    var 
    xDen null;
    var 
    xFastK null;
    var 
    xSMA null;

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

        if (!
    bInit)
        {
            
    xRainbow efsInternal("Calc_Rainbow");
            
    xEMA1 ema(fpSmoothxRainbow);
            
    xEMA2 ema(fpSmoothxEMA1);
            
    xZLRB efsInternal("Calc_ZLRB"xEMA1xEMA2);
            
    xTEMA efsInternal("Calc_TEMA"fpSmoothxZLRB);
            
    xStdDev efsInternal("Calc_StdDev"fpStDevPeriodxTEMA);
            
    xWMA wma(fpStDevPeriodxTEMA);
            
    xRBC efsInternal("Calc_RBC"xRainbow);
            
    xNom efsInternal("Calc_Nom"fpPeriodKxRBC);
            
    xDen efsInternal("Calc_Den"fpPeriodKxRBC);
            
    xFastK efsInternal("Calc_FastK"xNomxDen);
            
    xSMA sma(fpSmoothKxFastK);
           
            
    bInit true
        }

        var 
    nTEMA 0;
        var 
    nStdDev 0;
        var 
    nWMA 0;
        var 
    nFastK 0;
        var 
    nDen 0;

        var 
    nOverbought 100;
        var 
    nNeutral 50;
        var 
    nOversold 0;

        var 
    nPB_Plot 0;
        var 
    nK 0;
      
        
    nTEMA xTEMA.getValue(0);
        
    nStdDev xStdDev.getValue(0);
        
    nWMA xWMA.getValue(0);

        if (
    nTEMA == null || nStdDev == null || nWMA == null
            return;

        
    nPB_Plot = (nTEMA nStdDev nWMA) / (nStdDev) * 100;

        
    nFastK 50;
        
    nDen xDen.getValue(0);

        if (
    nDen == null)
            return;
        
        if (
    nDen 0
        {
            
    nK xSMA.getValue(0); 
        } 
        else 
        {
            
    nK nFastK;
        } 

        if (
    nK == null)
            return;  

        return [
    nOverboughtnNeutralnOversoldnPB_PlotnK]; 
    }

    var 
    xMA1 null;
    var 
    xMA2 null;
    var 
    xMA3 null;
    var 
    xMA4 null;
    var 
    xMA5 null;
    var 
    xMA6 null;
    var 
    xMA7 null;
    var 
    xMA8 null;
    var 
    xMA9 null;
    var 
    xMA10 null;

    function 
    Calc_Rainbow() 
    {
        var 
    nSmaPeriod 2;

        if (
    getBarState() == BARSTATE_ALLBARS)
        { 
            
    xMA1 sma(nSmaPeriod);
            
    xMA2 sma(nSmaPeriodxMA1);
            
    xMA3 sma(nSmaPeriodxMA2);
            
    xMA4 sma(nSmaPeriodxMA3);
            
    xMA5 sma(nSmaPeriodxMA4);
            
    xMA6 sma(nSmaPeriodxMA5);
            
    xMA7 sma(nSmaPeriodxMA6);
            
    xMA8 sma(nSmaPeriodxMA7);
            
    xMA9 sma(nSmaPeriodxMA8);
            
    xMA10 sma(nSmaPeriodxMA9);
        }

        var 
    aAvg = new Array();
        var 
    nSum 0;
        
        var 
    nReturnValue 0;
       
        
    aAvg[0] = 5*xMA1.getValue(0);
        
    aAvg[1] = 4*xMA2.getValue(0);
        
    aAvg[2] = 3*xMA3.getValue(0);
        
    aAvg[3] = 2*xMA4.getValue(0);
        
    aAvg[4] = xMA5.getValue(0);
        
    aAvg[5] = xMA6.getValue(0);
        
    aAvg[6] = xMA7.getValue(0);
        
    aAvg[7] = xMA8.getValue(0);
        
    aAvg[8] = xMA9.getValue(0);
        
    aAvg[9] = xMA10.getValue(0);

        for (var 
    0aAvg.lengthi++)
        {    
            if (
    aAvg[i] == null
                return;

            
    nSum += aAvg[i];
        }    

        
    nReturnValue nSum/20
       
        return 
    nReturnValue;
    }

    function 
    Calc_ZLRB(xSeries1xSeries2
    {
        var 
    nDiff 0;
        var 
    nSeries1 0;
        var 
    nSeries2 0;

        var 
    nReturnValue 0;
        
        
    nSeries1 xSeries1.getValue(0);
        
    nSeries2 xSeries2.getValue(0);

        if (
    nSeries1 == null || nSeries2 == null)
            return;

        
    nDiff nSeries1 nSeries2;
        
    nReturnValue nSeries1 nDiff;

        return 
    nReturnValue;
    }

    var 
    xTEMAEma1 null;
    var 
    xTEMAEma2 null;
    var 
    xTEMAEma3 null;

    function 
    Calc_TEMA(nPeriodxSeries)
    {
        if (
    getBarState() == BARSTATE_ALLBARS)
        {
            
    xTEMAEma1 ema(nPeriodxSeries);
            
    xTEMAEma2 ema(nPeriodxTEMAEma1);
            
    xTEMAEma3 ema(nPeriodxTEMAEma2);
        }

        var 
    nTEMAEma1 0;
        var 
    nTEMAEma2 0;
        var 
    nTEMAEma3 0;

        var 
    nReturnValue 0;   

        
    nTEMAEma1 xTEMAEma1.getValue(0);
        
    nTEMAEma2 xTEMAEma2.getValue(0);
        
    nTEMAEma3 xTEMAEma3.getValue(0);
        
        if (
    nTEMAEma1 == null || nTEMAEma2 == null || nTEMAEma3 == null
            return 
    null;
        
        
    nReturnValue nTEMAEma1 nTEMAEma2 nTEMAEma3;

        return 
    nReturnValue;
    }

    function 
    Calc_StdDev(nPeriodxSeries)
    {    
        if (
    xSeries.getValue(-nPeriod 1) == null)
            return;

        var 
    nCurValue 0;
        var 
    nSum1 0
        var 
    nSum2 0;
        var 
    nMean 0;

        var 
    nReturnValue 0

        for (
    0nPeriodi++) 
        { 
            
    nCurValue xSeries.getValue(-i);
            
    nSum1 += nCurValue;
            
    nSum2 += (nCurValue nCurValue);
        } 

        
    nMean = (nSum1 nPeriod); 
        
    nReturnValue Math.sqrt((nSum2 nPeriod) - (nMean nMean)); 

        return 
    nReturnValue
    }

    var 
    xHLC3 null;

    function 
    Calc_RBC(xSeries)
    {
        if (
    getBarState() == BARSTATE_ALLBARS)
        {
            
    xHLC3 hlc3();
        }

        var 
    nSeries 0;
        var 
    nHLC3 0;

        var 
    nReturnValue 0
        
        
    nSeries xSeries.getValue(0);
        
    nHLC3 xHLC3.getValue(0);

        if (
    nSeries == null || nHLC3 == null)
            return;

        
    nReturnValue = (nSeries nHLC3)/2
        
        
    return nReturnValue
    }

    var 
    xLow null;
    var 
    xMinNow null;

    function 
    Calc_Nom(nPeriodxSeries)
    {
        if (
    getBarState() == BARSTATE_ALLBARS)
        {
            
    xLow low();
            
    xMinNow lowest(nPeriodxLow)
        }

        var 
    nSeries 0;
        var 
    nMinNow 0;

        var 
    nReturnValue 0

        
    nSeries xSeries.getValue(0);
        
    nMinNow xMinNow.getValue(0);

        if (
    nSeries == null || nMinNow == null)
            return;

        
    nReturnValue nSeries nMinNow;

        return 
    nReturnValue;
    }

    var 
    xHigh null;
    var 
    xMinDen null;
    var 
    xMaxDen null;

    function 
    Calc_Den(nPeriodxSeries)
    {
        if (
    getBarState() == BARSTATE_ALLBARS)
        {
            
    xHigh high();
            
    xMaxDen highest(nPeriodxHigh);
            
    xMinDen lowest(nPeriodxSeries);
        }

        var 
    nMinDen 0;
        var 
    nMaxDen 0;

        var 
    nReturnValue 0

        
    nMinDen xMinDen.getValue(0);
        
    nMaxDen xMaxDen.getValue(0);

        if (
    nMinDen == null || nMaxDen == null)
            return;

        
    nReturnValue nMaxDen nMinDen;

        return 
    nReturnValue;
    }

    function 
    Calc_FastK(xSeries1xSeries2)
    {
        var 
    nSeries1 0;
        var 
    nSeries2 0;

        var 
    nReturnValue 0;

        
    nSeries1 xSeries1.getValue(0);
        
    nSeries2 xSeries2.getValue(0);

        if (
    nSeries1 == null || nSeries2 == null)
            return;

        
    nReturnValue Math.min(100Math.max(0100 nSeries1 nSeries2));

        return 
    nReturnValue;
    }

    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