The Center of Gravity (COG) indicator is a technical indicator developed by John Ehlers in 2002, used to identify potential turning points in the price as early as possible.
usingcAlgo.API;usingcAlgo.API.Indicators;usingcAlgo.API.Internals;namespacecAlgo.Robots{// This sample cBot shows how to use the Center Of Gravity indicator[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassCenterOfGravitySample:Robot{privatedouble_volumeInUnits;privateCenterOfGravity_centerOfGravity;[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);_centerOfGravity=Indicators.CenterOfGravity(10);}protectedoverridevoidOnBar(){if(_centerOfGravity.Result.Last(1)>_centerOfGravity.Lag.Last(1)&&_centerOfGravity.Result.Last(2)<=_centerOfGravity.Lag.Last(2)){ClosePositions(TradeType.Sell);ExecuteMarketOrder(TradeType.Buy,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}elseif(_centerOfGravity.Result.Last(1)<_centerOfGravity.Lag.Last(1)&&_centerOfGravity.Result.Last(2)>=_centerOfGravity.Lag.Last(2)){ClosePositions(TradeType.Buy);ExecuteMarketOrder(TradeType.Sell,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}}privatevoidClosePositions(TradeTypetradeType){foreach(varpositioninBotPositions){if(position.TradeType!=tradeType)continue;ClosePosition(position);}}}}
""" VolumeInLots, and Label are parameters defined in C# file of cBot. """importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classCenterOfGravitySample():defon_start(self):self.volumeInUnits=api.Symbol.QuantityToVolumeInUnits(api.VolumeInLots)self.centerOfGravity=api.Indicators.CenterOfGravity(api.Length)defon_bar_closed(self):ifself.centerOfGravity.Result.Last(0)>self.centerOfGravity.Lag.Last(0)andself.centerOfGravity.Result.Last(1)<=self.centerOfGravity.Lag.Last(1):self.close_positions(TradeType.Sell)api.ExecuteMarketOrder(TradeType.Buy,api.SymbolName,self.volumeInUnits,api.Label)elifself.centerOfGravity.Result.Last(0)<self.centerOfGravity.Lag.Last(0)andself.centerOfGravity.Result.Last(1)>=self.centerOfGravity.Lag.Last(1):self.close_positions(TradeType.Buy)api.ExecuteMarketOrder(TradeType.Sell,api.SymbolName,self.volumeInUnits,api.Label)defget_bot_positions(self):returnapi.Positions.FindAll(api.Label)defclose_positions(self,tradeType):forpositioninself.get_bot_positions():ifposition.TradeType!=tradeType:continueapi.ClosePosition(position)
Properties
Result
Summary
The COG line, by using it you can identify the support and resistance levels and have a more or less clear idea when the price starts moving in a different direction.