Price and Volume Trend is a variation of On Balance Volume, used to determine the strength of trends and warn of reversals.
Signature
1
publicabstractinterfacePriceVolumeTrend
Namespace
cAlgo.API.Indicators
Examples
1 2 3 4 5 6 7 8 91011121314
privatePriceVolumeTrend_priceVolumeTrend;[Parameter]publicDataSeriesSource{get;set;}[Output("Main")]publicIndicatorDataSeriesResult{get;set;}protectedoverridevoidInitialize(){_priceVolumeTrend=Indicators.PriceVolumeTrend(Source);}publicoverridevoidCalculate(intindex){// Display Result of IndicatorResult[index]=_priceVolumeTrend.Result[index];}
usingcAlgo.API;usingcAlgo.API.Indicators;namespacecAlgo.Robots{// This sample cBot shows how to use the Price Volume Trend indicator[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassPriceVolumeTrendSample:Robot{privatedouble_volumeInUnits;privatePriceVolumeTrend_priceVolumeTrend;privateSimpleMovingAverage_simpleMovingAverage;[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);_priceVolumeTrend=Indicators.PriceVolumeTrend(Bars.ClosePrices);_simpleMovingAverage=Indicators.SimpleMovingAverage(_priceVolumeTrend.Result,20);}protectedoverridevoidOnBar(){if(_priceVolumeTrend.Result.HasCrossedAbove(_simpleMovingAverage.Result,0)){ClosePositions(TradeType.Sell);ExecuteMarketOrder(TradeType.Buy,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}elseif(_priceVolumeTrend.Result.HasCrossedBelow(_simpleMovingAverage.Result,0)){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):# Source is a parameter defined in C# file of indicatorself.priceVolumeTrend=api.Indicators.PriceVolumeTrend(api.Source)defcalculate(self,index):# Display Result of Indicatorapi.Result[index]=self.priceVolumeTrend.Result[index]
1 2 3 4 5 6 7 8 910111213141516171819202122232425
importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classPriceVolumeTrendSample():defon_start(self):self.volumeInUnits=api.Symbol.QuantityToVolumeInUnits(api.VolumeInLots)self.priceVolumeTrend=api.Indicators.PriceVolumeTrend(api.SourcePriceVolumeTrend)self.simpleMovingAverage=api.Indicators.SimpleMovingAverage(self.priceVolumeTrend.Result,api.PeriodsSimpleMovingAverage)defon_bar_closed(self):ifFunctions.HasCrossedAbove(self.priceVolumeTrend.Result,self.simpleMovingAverage.Result,0):self.close_positions(TradeType.Sell)api.ExecuteMarketOrder(TradeType.Buy,api.SymbolName,self.volumeInUnits,api.Label,api.StopLossInPips,api.TakeProfitInPips)elifFunctions.HasCrossedBelow(self.priceVolumeTrend.Result,self.simpleMovingAverage.Result,0):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
Result
Summary
Gets or sets the time series of the Price Volume Trend indicator.
importclrclr.AddReference("cAlgo.API")fromcAlgo.APIimport*classTest():definitialize(self):# Source is a parameter defined in C# file of indicatorself.priceVolumeTrend=api.Indicators.PriceVolumeTrend(api.Source)defcalculate(self,index):currentValue=self.priceVolumeTrend.Result.LastValue