The simple moving average is the unweighted mean of the previous n price data, where n is the period used for the calculation and price data the price data source, e.g. The closing price.
usingcAlgo.API;usingcAlgo.API.Indicators;namespacecAlgo.Robots{// This sample cBot shows how to use the Simple Moving Average indicator[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassSimpleMovingAverageSample:Robot{privatedouble_volumeInUnits;privateSimpleMovingAverage_fastSimpleMovingAverage;privateSimpleMovingAverage_slowSimpleMovingAverage;[Parameter("Source", Group = "Fast MA")]publicDataSeriesFastMaSource{get;set;}[Parameter("Period", DefaultValue = 9, Group = "Fast MA")]publicintFastMaPeriod{get;set;}[Parameter("Source", Group = "Slow MA")]publicDataSeriesSlowMaSource{get;set;}[Parameter("Period", DefaultValue = 20, Group = "Slow MA")]publicintSlowMaPeriod{get;set;}[Parameter("Volume (Lots)", DefaultValue = 0.01, Group = "Trade")]publicdoubleVolumeInLots{get;set;}[Parameter("Stop Loss (Pips)", DefaultValue = 10, Group = "Trade")]publicdoubleStopLossInPips{get;set;}[Parameter("Take Profit (Pips)", DefaultValue = 10, Group = "Trade")]publicdoubleTakeProfitInPips{get;set;}[Parameter("Label", DefaultValue = "Sample", Group = "Trade")]publicstringLabel{get;set;}publicPosition[]BotPositions{get{returnPositions.FindAll(Label);}}protectedoverridevoidOnStart(){_volumeInUnits=Symbol.QuantityToVolumeInUnits(VolumeInLots);_fastSimpleMovingAverage=Indicators.SimpleMovingAverage(FastMaSource,FastMaPeriod);_slowSimpleMovingAverage=Indicators.SimpleMovingAverage(SlowMaSource,SlowMaPeriod);}protectedoverridevoidOnBar(){if(_fastSimpleMovingAverage.Result.HasCrossedAbove(_slowSimpleMovingAverage.Result,0)){ClosePositions(TradeType.Sell);ExecuteMarketOrder(TradeType.Buy,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}elseif(_fastSimpleMovingAverage.Result.HasCrossedBelow(_slowSimpleMovingAverage.Result,0)){ClosePositions(TradeType.Buy);ExecuteMarketOrder(TradeType.Sell,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}}privatevoidClosePositions(TradeTypetradeType){foreach(varpositioninBotPositions){if(position.TradeType!=tradeType)continue;ClosePosition(position);}}}}