MoneyFlowIndex


Summary

The Money Flow Index is an oscillator that calculates buying and selling pressure using typical price and volume. It oscillates between zero and one hundred. It is typically used to identify trend reversals and price extremes.

Syntax

public interface MoneyFlowIndex

Members

NameTypeSummary
Result PropertyThe time series of the Money Flow Index indicator.

Example 1

private MoneyFlowIndex _moneyFlow;
[Parameter("Period", DefaultValue = 14)]
public int Period { get; set; }
[Output("Main")]
public IndicatorDataSeries Result { get; set; }
protected override void Initialize()
{
   _moneyFlow = Indicators.MoneyFlowIndex(Period);
}
public override void Calculate(int index)
{
   // Display Result of Indicator
   Result[index] = _moneyFlow.Result[index];
}

Example 2

using cAlgo.API;
using cAlgo.API.Indicators;
namespace cAlgo.Robots
{
    // This sample cBot shows how to use the Money Flow Index indicator
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
    public class MoneyFlowIndexSample : Robot
    {
        private double _volumeInUnits;
        private MoneyFlowIndex _moneyFlowIndex;
        [Parameter("Volume (Lots)", DefaultValue = 0.01)]
        public double VolumeInLots { get; set; }
        [Parameter("Stop Loss (Pips)", DefaultValue = 10)]
        public double StopLossInPips { get; set; }
        [Parameter("Take Profit (Pips)", DefaultValue = 10)]
        public double TakeProfitInPips { get; set; }
        [Parameter("Label", DefaultValue = "Sample")]
        public string Label { get; set; }
        public Position[] BotPositions
        {
            get
            {
                return Positions.FindAll(Label);
            }
        }
        protected override void OnStart()
        {
            _volumeInUnits = Symbol.QuantityToVolumeInUnits(VolumeInLots);
            _moneyFlowIndex = Indicators.MoneyFlowIndex(14);
        }
        protected override void OnBar()
        {
            if (_moneyFlowIndex.Result.Last(1) > 80)
            {
                ClosePositions(TradeType.Buy);
                if (BotPositions.Length == 0)
                {
                    ExecuteMarketOrder(TradeType.Sell, SymbolName, _volumeInUnits, Label, StopLossInPips, TakeProfitInPips);
                }
            }
            else if (_moneyFlowIndex.Result.Last(1) < 20)
            {
                ClosePositions(TradeType.Sell);
                if (BotPositions.Length == 0)
                {
                    ExecuteMarketOrder(TradeType.Buy, SymbolName, _volumeInUnits, Label, StopLossInPips, TakeProfitInPips);
                }
            }
        }
        private void ClosePositions(TradeType tradeType)
        {
            foreach (var position in BotPositions)
            {
                if (position.TradeType != tradeType) continue;
                ClosePosition(position);
            }
        }
    }
}
Reference