The Ultimate Oscillator is a technical analysis oscillator based on a notion of buying or selling "pressure".
Remarks
It uses the weighted average of three different time periods to reduce the volatility and false transaction signals that are associated with many other indicators that mainly rely on a single time period.
usingcAlgo.API;usingcAlgo.API.Indicators;namespacecAlgo.Robots{// This sample cBot shows how to use the Ultimate Oscillator indicator[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassUltimateOscillatorSample:Robot{privatedouble_volumeInUnits;privateUltimateOscillator_ultimateOscillator;[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);_ultimateOscillator=Indicators.UltimateOscillator(7,14,28);}protectedoverridevoidOnBar(){if(_ultimateOscillator.Result.Last(1)>70&&_ultimateOscillator.Result.Last(2)<70){ClosePositions(TradeType.Buy);ExecuteMarketOrder(TradeType.Sell,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}elseif(_ultimateOscillator.Result.Last(1)<30&&_ultimateOscillator.Result.Last(2)>30){ClosePositions(TradeType.Sell);ExecuteMarketOrder(TradeType.Buy,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):# Cycle1, Cycle2, and Cycle3 are parameters defined in C# file of indicatorself.ultimateOscillator=api.Indicators.UltimateOscillator(api.Cycle1,api.Cycle2,api.Cycle3)defcalculate(self,index):# Result is an output defined in C# file of indicatorapi.Result[index]=self.ultimateOscillator.Result[index]
1 2 3 4 5 6 7 8 9101112131415161718192021222324
importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classUltimateOscillatorSample():defon_start(self):self.volumeInUnits=api.Symbol.QuantityToVolumeInUnits(api.VolumeInLots)self.ultimateOscillator=api.Indicators.UltimateOscillator(api.Cycle1,api.Cycle2,api.Cycle3)defon_bar_closed(self):ifself.ultimateOscillator.Result.Last(0)>api.UpValueandself.ultimateOscillator.Result.Last(1)<api.UpValue:self.close_positions(TradeType.Buy)api.ExecuteMarketOrder(TradeType.Sell,api.SymbolName,self.volumeInUnits,api.Label,api.StopLossInPips,api.TakeProfitInPips)elifself.ultimateOscillator.Result.Last(0)<api.DownValueandself.ultimateOscillator.Result.Last(1)>api.DownValue:self.close_positions(TradeType.Sell)api.ExecuteMarketOrder(TradeType.Buy,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
Result
Summary
Gets the resulting time series of the Ultimate Oscillator indicator calculation.