usingcAlgo.API;usingcAlgo.API.Indicators;usingcAlgo.API.Internals;namespacecAlgo.Robots{// This sample cBot shows how to use the MACD Cross Over indicator[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassMacdCrossOverSample:Robot{privatedouble_volumeInUnits;privateMacdCrossOver_macdCrossOver;[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);_macdCrossOver=Indicators.MacdCrossOver(Bars.ClosePrices,26,12,9);}protectedoverridevoidOnBar(){if(_macdCrossOver.MACD.Last(1)>_macdCrossOver.Signal.Last(1)&&_macdCrossOver.MACD.Last(2)<=_macdCrossOver.Signal.Last(2)){ClosePositions(TradeType.Sell);ExecuteMarketOrder(TradeType.Buy,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}elseif(_macdCrossOver.MACD.Last(1)<_macdCrossOver.Signal.Last(1)&&_macdCrossOver.MACD.Last(2)>=_macdCrossOver.Signal.Last(2)){ClosePositions(TradeType.Buy);ExecuteMarketOrder(TradeType.Sell,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}}privatevoidClosePositions(TradeTypetradeType){foreach(varpositioninBotPositions){if(position.TradeType!=tradeType)continue;ClosePosition(position);}}}}
1 2 3 4 5 6 7 8 910
importclrclr.AddReference("cAlgo.API")fromcAlgo.APIimport*classTest():definitialize(self):# LongCycle, ShortCycle, and Periods are parameters defined in C# file of indicatorself.macdCrossOver=apiIndicators.MacdCrossOver(api.LongCycle,api.ShortCycle,api.Periods)defcalculate(self,index):# Macd is an indicator output defined in C# file of indicatorapi.Macd[index]=self.macdCrossOver.MACD[index]
1 2 3 4 5 6 7 8 9101112131415161718192021222324
importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classMacdCrossOverSample():defon_start(self):self.volumeInUnits=api.Symbol.QuantityToVolumeInUnits(api.VolumeInLots)self.macdCrossOver=api.Indicators.MacdCrossOver(api.Source,api.LongCycle,api.ShortCycle,api.SignalPeriods)defon_bar_closed(self):ifself.macdCrossOver.MACD.Last(0)>self.macdCrossOver.Signal.Last(0)andself.macdCrossOver.MACD.Last(1)<=self.macdCrossOver.Signal.Last(1):self.close_positions(TradeType.Sell)api.ExecuteMarketOrder(TradeType.Buy,api.SymbolName,self.volumeInUnits,api.Label,api.StopLossInPips,api.TakeProfitInPips)elifself.macdCrossOver.MACD.Last(0)<self.macdCrossOver.Signal.Last(0)andself.macdCrossOver.MACD.Last(1)>=self.macdCrossOver.Signal.Last(1):self.close_positions(TradeType.Buy)api.ExecuteMarketOrder(TradeType.Sell,api.SymbolName,self.volumeInUnits,api.Label,api.StopLossInPips,api.TakeProfitInPips)defget_bot_positions(self):returnapi.Positions.FindAll(api.Label)defclose_positions(self,tradeType):forpositioninself.get_bot_positions():ifposition.TradeType!=tradeType:continueapi.ClosePosition(position)
Properties
Histogram
Summary
Gets the Histogram (bar graph).
Remarks
The histogram of MACD: difference between the blue and red lines.
importclrclr.AddReference("cAlgo.API")fromcAlgo.APIimport*classTest():definitialize(self):# LongCycle, ShortCycle, and Periods are parameters defined in C# file of indicatorself.macdCrossOver=apiIndicators.MacdCrossOver(api.LongCycle,api.ShortCycle,api.Periods)defcalculate(self,index):# Histogram is an indicator output defined in C# file of indicatorapi.Histogram[index]=self.macdCrossOver.Histogram[index]
MACD
Summary
Gets the main MACD line (blue line).
Remarks
MACD line: difference between the 12 and 26 days EMAs
importclrclr.AddReference("cAlgo.API")fromcAlgo.APIimport*classTest():definitialize(self):# LongCycle, ShortCycle, and Periods are parameters defined in C# file of indicatorself.macdCrossOver=apiIndicators.MacdCrossOver(api.LongCycle,api.ShortCycle,api.Periods)defcalculate(self,index):# MACD is an indicator output defined in C# file of indicatorapi.MACD[index]=self.macdCrossOver.MACD[index]
importclrclr.AddReference("cAlgo.API")fromcAlgo.APIimport*classTest():definitialize(self):# LongCycle, ShortCycle, and Periods are parameters defined in C# file of indicatorself.macdCrossOver=apiIndicators.MacdCrossOver(api.LongCycle,api.ShortCycle,api.Periods)defcalculate(self,index):# Signal is an indicator output defined in C# file of indicatorapi.Signal[index]=self.macdCrossOver.Signal[index]