Announcement

Collapse
No announcement yet.

2015 Oct: The Money Flow Oscillator by Vitali Apirine

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

  • 2015 Oct: The Money Flow Oscillator by Vitali Apirine

    File Name: MFO.efs

    Description:
    The Money Flow Oscillator by Vitali Apirine

    Formula Parameters:

    MFO.efs
    Length: 20

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

    Download File:
    MFO.efs

    MFO.efs


    EFS Code:
    PHP Code:

    /*********************************
    Provided By:  
        Interactive Data Corporation (Copyright В© 2015) 
        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:        
        The Money Flow Oscillator by Vitali Apirine

    Formula Parameters:                     Default:
    Length                                  20

    Version:            1.00  08/06/2015

    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("MFO");
        
        
    setCursorLabelName("Center Line"0);
        
    setCursorLabelName("MFO"1);
        
        
    setDefaultBarFgColor(Color.grey0);
            
        
    setShowCursorLabel(false0);
        
    setShowCursorLabel(true1);
        
        
    setDefaultBarStyle(PS_DASH0);
        
    setDefaultBarStyle(PS_SOLID1);

        var 
    0;

        
    fpArray[x] = new FunctionParameter("fpLength"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setName("Length");
            
    setLowerLimit(1); 
            
    setDefault(20);
        };
    }

    var 
    bInit false;
    var 
    bVersion null;

    var 
    xIntSeries null;
    var 
    xMFlowVol null;
    var 
    xVolAvoidZero null;

    var 
    xSumMFlowVol null;
    var 
    xSumVolAvoidZero null;

    function 
    main(fpLength){

        if (
    bVersion == nullbVersion verify();
        if (
    bVersion == false) return;

        if (!
    bInit){

            
    xIntSeries efsInternal('Calc_MFlowVol'fpLength);
            
    xMFlowVol getSeries(xIntSeries0);
            
    xVolAvoidZero getSeries(xIntSeries1);
           
            
    xSumMFlowVol sma(fpLengthxMFlowVol);
            
    xSumVolAvoidZero sma(fpLengthxVolAvoidZero);
        
            
    bInit true
        };

        var 
    nSumMFlowVol xSumMFlowVol.getValue(0);
        var 
    nSumVolAvoidZero xSumVolAvoidZero.getValue(0);

        if (
    nSumMFlowVol == null || nSumVolAvoidZero == null)
            return;
        
        var 
    nMFO nSumMFlowVol nSumVolAvoidZero;  
        
        return [
    0nMFO];
    }

    var 
    xHigh null;
    var 
    xLow null;
    var 
    xVolume null;

    function 
    Calc_MFlowVol(nLength){
        
        if (
    getBarState() == BARSTATE_ALLBARS){
            
    xHigh high();
            
    xLow low();
            
    xVolume volume();
        }
        
        var 
    nHigh xHigh.getValue(0);
        var 
    nPrevHigh xHigh.getValue(-1);
        var 
    nLow xLow.getValue(0);
        var 
    nPrevLow xLow.getValue(-1);
        
        var 
    nVolume xVolume.getValue(0); 

        if (
    nHigh == null || nPrevHigh == null || nLow == null || nPrevLow == null || nVolume == null)
            return;
        
        var 
    nDvs = (nHigh nPrevLow) + (nPrevHigh nLow);
        if (
    nDvs == 0nDvs 0.00001;
        
        var 
    nMltp = (nHigh nPrevLow) ? -: (nLow nPrevHigh) ? : ((nHigh nPrevLow) - (nPrevHigh nLow)) / nDvs

        var 
    nMFlowVol nMltp nVolume;
        
        if (
    nVolume == 0nVolume 0.00001;
        
        return [
    nMFlowVolnVolume];
    }

    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