It quantifies the price/volume relationship. When the oscillator is close to zero it signifies that prices will not move easy. Conversely, prices are advancing or declining with relative ease when the oscillator is positive or negative away from zero.
usingcAlgo.API;usingcAlgo.API.Indicators;namespacecAlgo.Robots{// This sample cBot shows how to use the Ease Of Movement indicator[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassEaseOfMovementSample:Robot{privatedouble_volumeInUnits;privateEaseOfMovement_easeOfMovement;privateSimpleMovingAverage_simpleMovingAverage;[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);_easeOfMovement=Indicators.EaseOfMovement(14,MovingAverageType.Simple);_simpleMovingAverage=Indicators.SimpleMovingAverage(Bars.ClosePrices,9);}protectedoverridevoidOnBar(){if(_easeOfMovement.Result.Last(1)>(Symbol.TickSize*0.05)){if(Bars.ClosePrices.Last(1)>_simpleMovingAverage.Result.Last(1)&&Bars.ClosePrices.Last(2)<_simpleMovingAverage.Result.Last(2)){ExecuteMarketOrder(TradeType.Buy,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}elseif(Bars.ClosePrices.Last(1)<_simpleMovingAverage.Result.Last(1)&&Bars.ClosePrices.Last(2)>_simpleMovingAverage.Result.Last(2)){ExecuteMarketOrder(TradeType.Sell,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}}else{ClosePositions();}}privatevoidClosePositions(){foreach(varpositioninBotPositions){ClosePosition(position);}}}}