Announcement

Collapse
No announcement yet.

FVE Volatility color-coded Volume bar

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

  • FVE Volatility color-coded Volume bar

    File Name: VolatilityVolumeBarFormula.efs

    Description:
    FVE Volatility color-coded Volume bar

    Formula Parameters:
    Samples : 22
    AvgLength : 50
    AlertPct : 70
    Cintra : 0.1
    Cinter : 0.1


    Notes:
    The FVE is a pure volume indicator. Unlike most of the other indicators
    (except OBV), price change doesn?t come into the equation for the FVE
    (price is not multiplied by volume), but is only used to determine whether
    money is flowing in or out of the stock. This is contrary to the current trend
    in the design of modern money flow indicators. The author decided against a
    price-volume indicator for the following reasons:
    - A pure volume indicator has more power to contradict.
    - The number of buyers or sellers (which is assessed by volume) will be the same,
    regardless of the price fluctuation.
    - Price-volume indicators tend to spike excessively at breakouts or breakdowns.
    This study is an addition to FVE indicator. Indicator plots different-coloured volume
    bars depending on volatility.


    Download File:
    VolatilityVolumeBarFormula.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:        
        FVE Volatility color-coded Volume bar
        
    Version:            1.0  05/26/2009
         
    Formula Parameters:                     Default:
        Samples                             22
        AvgLength                           50
        AlertPct                            70
        Cintra                              0.1
        Cinter                              0.1
        
    Notes:
        The FVE is a pure volume indicator. Unlike most of the other indicators 
        (except OBV), price change doesn?t come into the equation for the FVE 
        (price is not multiplied by volume), but is only used to determine whether 
        money is flowing in or out of the stock. This is contrary to the current trend 
        in the design of modern money flow indicators. The author decided against a 
        price-volume indicator for the following reasons:
        - A pure volume indicator has more power to contradict.
        - The number of buyers or sellers (which is assessed by volume) will be the same, 
        regardless of the price fluctuation.
        - Price-volume indicators tend to spike excessively at breakouts or breakdowns.
        This study is an addition to FVE indicator. Indicator plots different-coloured volume 
        bars depending on volatility.     

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

    function 
    preMain(){
        
    setStudyTitle("Volatility color-coded Volume Bar Formula");
        
    setCursorLabelName("VBF",0);
        
    setDefaultBarFgColor(Color.green,0);
        
    setCursorLabelName("VBF EMA",1);
        
    setDefaultBarFgColor(Color.blue,1);
        
    setDefaultBarThickness(2);
        var 
    0;
        
    fpArray[x] = new FunctionParameter("Samples"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(22);
        }    
        
    fpArray[x] = new FunctionParameter("AvgLength"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(50);
        }    
        
    fpArray[x] = new FunctionParameter("AlertPct"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(70);
        }    
        
    fpArray[x] = new FunctionParameter("Cintra"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(0.001);
            
    setDefault(0.1);
        }    
        
    fpArray[x] = new FunctionParameter("Cinter"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(0.001);
            
    setDefault(0.1);
        }    
    }

    var 
    xClose null;
    var 
    xhlc3 null;
    var 
    xhl2 null;
    var 
    xIntra null;
    var 
    xInter null;
    var 
    xStDevIntra null;
    var 
    xStDevInter null;
    var 
    xVolume null;
    var 
    xMA null;

    function 
    main(AvgLengthAlertPctCintraCinterSamples){
    var 
    nBarState getBarState();
    var    
    TP 0;
    var    
    TP1 0;
    var    
    Intra 0;
    var    
    Vintra 0;
    var    
    Inter 0;
    var    
    Vinter 0;
    var    
    CutOff 0;    
    var 
    MF 0;
    var 
    nClose 0;
        if (
    nBarState == BARSTATE_ALLBARS) {
            if(
    AvgLength == nullAvgLength 50;
            if(
    AlertPct == nullAlertPct 70;
            if(
    Cintra == nullCintra 0.1;
            if(
    Cinter == nullCinter 0.1;
            if(
    Samples== nullSamples22;
        }    
        if (
    bInit == false)    {
            
    xVolume volume();
            
    xClose close();
            
    xhlc3 hlc3();
            
    xhl2 hl2();
            
    xMA sma(AvgLengthxVolume);
            
    xIntra efsInternal("Calc_Intra"xhlc3);
            
    xInter getSeries(xIntra1);
            
    xStDevIntra efsInternal("Calc_StdDev"Samplessma(SamplesxIntra), xIntra);
            
    xStDevInter efsInternal("Calc_StdDev"Samplessma(SamplesxInter), xInter);    
            
    bInit true;
        }
        
    TP xhlc3.getValue(0);
        
    TP1 xhlc3.getValue(-1);
        
    Intra xIntra.getValue(0);
        
    Vintra xStDevIntra.getValue(0);
        
    Inter xInter.getValue(0);
        
    Vinter xStDevInter.getValue(0);
        
    nClose xClose.getValue(0);
        
    CutOff Cintra Vintra Cinter Vinter;    
        
    MF nClose xhl2.getValue(0) + TP TP1;
        if (
    Vinter == null) return;
        if(
    MF CutOff nClose)
            
    setBarFgColor(Color.green);
        else if(
    MF < -CutOff nClose)
            
    setBarFgColor(Color.red);
        else
            
    setBarFgColor(Color.blue);
        return new Array(
    xVolume.getValue(0), xMA.getValue(0));        
    }

    function 
    Calc_Intra(xhlc3) {
    var 
    nResIntra 0;
    var 
    nResInter 0;
        if (
    xhlc3.getValue(-1) == null) return;
        
    nResIntra Math.log(high(0)) - Math.log(low(0));
        
    nResInter Math.log(xhlc3.getValue(0)) - Math.log(xhlc3.getValue(-1));
        return new Array(
    nResIntranResInter);
    }

    function 
    Calc_StdDev(nPeriodxMAxSeries) {
    var 
    StdDev 0;
    var 
    SumSqr 0;
    var 
    counter 0;
        if(
    xMA.getValue(0) == null) return;
        for(
    counter 0counter nPeriodcounter++)
            
    SumSqr += Math.pow((xSeries.getValue(-counter) - xMA.getValue(0)), 2);
        
    StdDev Math.sqrt(SumSqr nPeriod);
        return 
    StdDev;

Working...
X