VolumeROC Summary The Volume Rate of Change indicator measures the Rate Of Change of the tick volume.
It shows whether or not a volume trend is developing and can be used to confirm price moves.
Signature
public abstract interface VolumeROC
Namespace cAlgo.API.Indicators
Examples Example 1 Example 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private VolumeROC _volumeROC ;
[Parameter("Period", DefaultValue = 14)]
public int Period { get ; set ; }
[Output("Main")]
public IndicatorDataSeries Result { get ; set ; }
protected override void Initialize ()
{
_volumeROC = Indicators . VolumeROC ( Period );
}
public override void Calculate ( int index )
{
// Display Result of Indicator
Result [ index ] = _volumeROC . 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
56
57
58
59
60 using cAlgo.API ;
using cAlgo.API.Indicators ;
namespace cAlgo.Robots
{
///
/// This sample cBot shows how to use the Volume ROC indicator
///
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
public class VolumeROCSample : Robot
{
private double _volumeInUnits ;
private VolumeROC _volumeROC ;
private SimpleMovingAverage _priceSimpleMovingAverage ;
private SimpleMovingAverage _volumeROCSimpleMovingAverage ;
[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 );
_volumeROC = Indicators . VolumeROC ( 14 );
_volumeROCSimpleMovingAverage = Indicators . SimpleMovingAverage ( _volumeROC . Result , 14 );
_priceSimpleMovingAverage = Indicators . SimpleMovingAverage ( Bars . ClosePrices , 14 );
}
protected override void OnBar ()
{
if ( _volumeROC . Result . Last ( 1 ) < _volumeROCSimpleMovingAverage . 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 );
}
else if ( 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 );
}
}
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 Volume ROC indicator.
Signature
public abstract IndicatorDataSeries Result { get ; set ;}
Return Value
IndicatorDataSeries
Examples
//...
private VolumeROC _volumeROC ;
//...
protected override void OnBar ()
{
var currentValue = _volumeROC . Result . LastValue ;
//...
}