The positive volume index measures the trend of the stock prices for days when volume increases from previous day's volume.
Remarks
Assumes that the smart money is active on days when volume decreases (measured by the Negative Volume Index) and the not-so-smart money is active on days when volume increases.
Signature
1
publicabstractinterfacePositiveVolumeIndex
Namespace
cAlgo.API.Indicators
Examples
1 2 3 4 5 6 7 8 91011121314
privatePositiveVolumeIndex_positiveVolume;[Parameter]publicDataSeriesSource{get;set;}[Output("Main")]publicIndicatorDataSeriesResult{get;set;}protectedoverridevoidInitialize(){_positiveVolume=Indicators.PositiveVolumeIndex(Source);}publicoverridevoidCalculate(intindex){// Display Result of IndicatorResult[index]=_positiveVolume.Result[index];}
usingcAlgo.API;usingcAlgo.API.Indicators;namespacecAlgo.Robots{// This sample cBot shows how to use the Positive/Negative Volume Index indicators[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassVolumeIndexSample:Robot{privatedouble_volumeInUnits;privatePositiveVolumeIndex_positiveVolumeIndex;privateNegativeVolumeIndex_negativeVolumeIndex;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);_positiveVolumeIndex=Indicators.PositiveVolumeIndex(Bars.ClosePrices);_negativeVolumeIndex=Indicators.NegativeVolumeIndex(Bars.ClosePrices);_simpleMovingAverage=Indicators.SimpleMovingAverage(Bars.ClosePrices,20);}protectedoverridevoidOnBar(){if(Bars.ClosePrices.Last(1)>_simpleMovingAverage.Result.Last(1)){ClosePositions(TradeType.Sell);if(BotPositions.Length==0&&_negativeVolumeIndex.Result.Last(1)>_positiveVolumeIndex.Result.Last(1)){ExecuteMarketOrder(TradeType.Buy,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}}elseif(Bars.ClosePrices.Last(1)<_simpleMovingAverage.Result.Last(1)){ClosePositions(TradeType.Buy);if(BotPositions.Length==0&&_negativeVolumeIndex.Result.Last(1)>_positiveVolumeIndex.Result.Last(1)){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 91011
importclrclr.AddReference("cAlgo.API")fromcAlgo.APIimport*classTest():definitialize(self):# Source is a parameter defined in C# file of indicatorself.positiveVolumeIndex=api.Indicators.PositiveVolumeIndex(api.Source)defcalculate(self,index):# Result is an indicator output defined in C# file of indicator# Display Result of Indicatorapi.Result[index]=self.positiveVolumeIndex.Result[index]