The Volume Oscillator identifies trends in volume using a two moving average system. A strong trend is signaled when it is positive. Falling volume indicates trend weakness.
Signature
1
publicabstractinterfaceVolumeOscillator
Namespace
cAlgo.API.Indicators
Examples
1 2 3 4 5 6 7 8 91011121314
privateVolumeOscillator_volumeOscillator;[Parameter("Short Term", DefaultValue = 9)]publicintShortTerm{get;set;}[Parameter("Long Term", DefaultValue = 21)]publicintLongTerm{get;set;}protectedoverridevoidInitialize(){_volumeOscillator=Indicators.VolumeOscillator(ShortTerm,LongTerm);}publicoverridevoidCalculate(intindex){// Display Result of IndicatorResult[index]=_volumeOscillator.Result[index];}
usingcAlgo.API;usingcAlgo.API.Indicators;namespacecAlgo.Robots{// This sample cBot shows how to use the Volume Oscillator indicator[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassVolumeOscillatorSample:Robot{privatedouble_volumeInUnits;privateVolumeOscillator_volumeOscillator;privateSimpleMovingAverage_priceSimpleMovingAverage;privateSimpleMovingAverage_volumeOscillatorSimpleMovingAverage;[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);_volumeOscillator=Indicators.VolumeOscillator(9,21);_volumeOscillatorSimpleMovingAverage=Indicators.SimpleMovingAverage(_volumeOscillator.Result,14);_priceSimpleMovingAverage=Indicators.SimpleMovingAverage(Bars.ClosePrices,14);}protectedoverridevoidOnBar(){if(_volumeOscillator.Result.Last(1)<_volumeOscillatorSimpleMovingAverage.Result.Last(1))return;if(Bars.ClosePrices.Last(1)>_priceSimpleMovingAverage.Result.Last(1)&&Bars.ClosePrices.Last(2)<=_priceSimpleMovingAverage.Result.Last(2)){ClosePositions(TradeType.Sell);ExecuteMarketOrder(TradeType.Buy,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}elseif(Bars.ClosePrices.Last(1)<_priceSimpleMovingAverage.Result.Last(1)&&Bars.ClosePrices.Last(2)>=_priceSimpleMovingAverage.Result.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):# ShortTerm and LongTerm are parameters defined in C# file of indicatorself.volumeOscillator=api.Indicators.VolumeOscillator(api.ShortTerm,api.LongTerm)defcalculate(self,index):# Result is an output defined in C# file of indicatorapi.Result[index]=self.volumeOscillator.Result[index]
Properties
Result
Summary
Gets or sets the time series of the Volume Oscillator indicator.
importclrclr.AddReference("cAlgo.API")fromcAlgo.APIimport*classTest():defon_start(self):# ShortTerm and LongTerm are parameters defined in C# file of indicatorself.volumeOscillator=api.Indicators.VolumeOscillator(api.ShortTerm,api.LongTerm)defon_bar(self):currentValue=self.volumeOscillator.Result.LastValue