usingcAlgo.API;usingcAlgo.API.Indicators;usingSystem;namespacecAlgo.Robots{// This sample cBot shows how to use the True Range indicator[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassTrueRangeSample:Robot{privatedouble_volumeInUnits;privateTrueRange_trueRange;[Parameter("Volume (Lots)", DefaultValue = 0.01)]publicdoubleVolumeInLots{get;set;}[Parameter("Label", DefaultValue = "Sample")]publicstringLabel{get;set;}publicPosition[]BotPositions{get{returnPositions.FindAll(Label);}}protectedoverridevoidOnStart(){_volumeInUnits=Symbol.QuantityToVolumeInUnits(VolumeInLots);_trueRange=Indicators.TrueRange();}protectedoverridevoidOnBar(){if(Bars.ClosePrices.Last(1)>Bars.OpenPrices.Last(1)&&Bars.ClosePrices.Last(2)<Bars.OpenPrices.Last(2)){ClosePositions(TradeType.Sell);ExecuteOrder(TradeType.Buy);}elseif(Bars.ClosePrices.Last(1)<Bars.OpenPrices.Last(1)&&Bars.ClosePrices.Last(2)>Bars.OpenPrices.Last(2)){ClosePositions(TradeType.Buy);ExecuteOrder(TradeType.Sell);}}privatevoidClosePositions(TradeTypetradeType){foreach(varpositioninBotPositions){if(position.TradeType!=tradeType)continue;ClosePosition(position);}}privatevoidExecuteOrder(TradeTypetradeType){vartrueRangeInPips=_trueRange.Result.Last(1)*(Symbol.TickSize/Symbol.PipSize*Math.Pow(10,Symbol.Digits));varstopLossInPips=trueRangeInPips*2;vartakeProfitInPips=stopLossInPips*2;ExecuteMarketOrder(tradeType,SymbolName,_volumeInUnits,Label,stopLossInPips,takeProfitInPips);}}}