PriceVolumeTrend Summary Price and Volume Trend is a variation of On Balance Volume, used to determine the strength of trends and warn of reversals.
Signature
public abstract interface PriceVolumeTrend
Namespace cAlgo.API.Indicators
Examples Example 1 Example 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private PriceVolumeTrend _priceVolumeTrend ;
[Parameter]
public DataSeries Source { get ; set ; }
[Output("Main")]
public IndicatorDataSeries Result { get ; set ; }
protected override void Initialize ()
{
_priceVolumeTrend = Indicators . PriceVolumeTrend ( Source );
}
public override void Calculate ( int index )
{
// Display Result of Indicator
Result [ index ] = _priceVolumeTrend . Result [ index ];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 using cAlgo.API ;
using cAlgo.API.Indicators ;
namespace cAlgo.Robots
{
// This sample cBot shows how to use the Price Volume Trend indicator
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class PriceVolumeTrendSample : Robot
{
private double _volumeInUnits ;
private PriceVolumeTrend _priceVolumeTrend ;
private SimpleMovingAverage _simpleMovingAverage ;
[Parameter("Volume (Lots)", DefaultValue = 0.01)]
public double VolumeInLots { get ; set ; }
[Parameter("Stop Loss (Pips)", DefaultValue = 10)]
public double StopLossInPips { get ; set ; }
[Parameter("Take Profit (Pips)", DefaultValue = 10)]
public double TakeProfitInPips { get ; set ; }
[Parameter("Label", DefaultValue = "Sample")]
public string Label { get ; set ; }
public Position [] BotPositions
{
get
{
return Positions . FindAll ( Label );
}
}
protected override void OnStart ()
{
_volumeInUnits = Symbol . QuantityToVolumeInUnits ( VolumeInLots );
_priceVolumeTrend = Indicators . PriceVolumeTrend ( Bars . ClosePrices );
_simpleMovingAverage = Indicators . SimpleMovingAverage ( _priceVolumeTrend . Result , 20 );
}
protected override void OnBar ()
{
if ( _priceVolumeTrend . Result . HasCrossedAbove ( _simpleMovingAverage . Result , 0 ))
{
ClosePositions ( TradeType . Sell );
ExecuteMarketOrder ( TradeType . Buy , SymbolName , _volumeInUnits , Label , StopLossInPips , TakeProfitInPips );
}
else if ( _priceVolumeTrend . Result . HasCrossedBelow ( _simpleMovingAverage . Result , 0 ))
{
ClosePositions ( TradeType . Buy );
ExecuteMarketOrder ( TradeType . Sell , SymbolName , _volumeInUnits , Label , StopLossInPips , TakeProfitInPips );
}
}
private void ClosePositions ( TradeType tradeType )
{
foreach ( var position in BotPositions )
{
if ( position . TradeType != tradeType ) continue ;
ClosePosition ( position );
}
}
}
}
Properties Result Summary
Gets or sets the time series of the Price Volume Trend indicator.
Signature
public abstract IndicatorDataSeries Result { get ; set ;}
Return Value
IndicatorDataSeries
Examples
//...
private PriceVolumeTrend _priceVolumeTrend ;
//...
protected override void OnBar ()
{
var currentValue = _priceVolumeTrend . Result . LastValue ;
//...
}