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.
privateMoneyFlowIndex_moneyFlow;[Parameter("Period", DefaultValue = 14)]publicintPeriod{get;set;}[Output("Main")]publicIndicatorDataSeriesResult{get;set;}protectedoverridevoidInitialize(){_moneyFlow=Indicators.MoneyFlowIndex(Period);}publicoverridevoidCalculate(intindex){// Display Result of IndicatorResult[index]=_moneyFlow.Result[index];}
usingcAlgo.API;usingcAlgo.API.Indicators;namespacecAlgo.Robots{// This sample cBot shows how to use the Money Flow Index indicator[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassMoneyFlowIndexSample:Robot{privatedouble_volumeInUnits;privateMoneyFlowIndex_moneyFlowIndex;[Parameter("Volume (Lots)", DefaultValue = 0.01)]publicdoubleVolumeInLots{get;set;}[Parameter("Stop Loss (Pips)", DefaultValue = 10)]publicdoubleStopLossInPips{get;set;}[Parameter("Take Profit (Pips)", DefaultValue = 10)]publicdoubleTakeProfitInPips{get;set;}[Parameter("Label", DefaultValue = "Sample")]publicstringLabel{get;set;}publicPosition[]BotPositions{get{returnPositions.FindAll(Label);}}protectedoverridevoidOnStart(){_volumeInUnits=Symbol.QuantityToVolumeInUnits(VolumeInLots);_moneyFlowIndex=Indicators.MoneyFlowIndex(14);}protectedoverridevoidOnBar(){if(_moneyFlowIndex.Result.Last(1)>80){ClosePositions(TradeType.Buy);if(BotPositions.Length==0){ExecuteMarketOrder(TradeType.Sell,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}}elseif(_moneyFlowIndex.Result.Last(1)<20){ClosePositions(TradeType.Sell);if(BotPositions.Length==0){ExecuteMarketOrder(TradeType.Buy,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}}}privatevoidClosePositions(TradeTypetradeType){foreach(varpositioninBotPositions){if(position.TradeType!=tradeType)continue;ClosePosition(position);}}}}