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 [email protected]=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;