Skip to content

TradeVolumeIndex

Summary

Trade Volume Index measures the amount of money flowing in and out of an asset.

Remarks

The underlying assumption of this indicator is that there is buying pressure when the price trades near the asking price and selling pressure when it trades near the bid.

Signature

1
public abstract interface TradeVolumeIndex

Namespace

cAlgo.API.Indicators

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 private TradeVolumeIndex _tradeVolume;
 [Parameter]
 public DataSeries Source { get; set; }
 [Output("Main")]
 public IndicatorDataSeries Result { get; set; }
 protected override void Initialize()
 {
    _tradeVolume = Indicators.TradeVolumeIndex(Source);
 }
 public override void Calculate(int index)
 {
    // Display Result of Indicator
    Result[index] = _tradeVolume.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 Trade Volume Index indicator
     [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]
     public class TradeVolumeIndexSample : Robot
     {
         private double _volumeInUnits;
         private TradeVolumeIndex _tradeVolumeIndex;
         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);
             _tradeVolumeIndex = Indicators.TradeVolumeIndex(Bars.ClosePrices);
             _simpleMovingAverage = Indicators.SimpleMovingAverage(_tradeVolumeIndex.Result, 14);
         }
         protected override void OnBar()
         {
             if (_tradeVolumeIndex.Result.HasCrossedAbove(_simpleMovingAverage.Result, 0))
             {
                 ClosePositions(TradeType.Sell);
                 ExecuteMarketOrder(TradeType.Buy, SymbolName, _volumeInUnits, Label, StopLossInPips, TakeProfitInPips);
             }
             else if (_tradeVolumeIndex.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);
             }
         }
     }
 }
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 import clr
 clr.AddReference("cAlgo.API")
 from cAlgo.API import *
 class Test():    
     def initialize(self):
         # Source is a parameter defined in C# file of indicator
         self.tradeVolume = api.Indicators.TradeVolumeIndex(api.Source)
     def calculate(self, index):
         # Result is an output defined in C# file of indicator
         api.Result[index] = self.tradeVolume.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
 import clr
 clr.AddReference("cAlgo.API")
 # Import cAlgo API types
 from cAlgo.API import *
 # Import trading wrapper functions
 from robot_wrapper import *
 class TradeVolumeIndexSample():
     def on_start(self):
         self.volumeInUnits = api.Symbol.QuantityToVolumeInUnits(api.VolumeInLots)
         self.tradeVolumeIndex = api.Indicators.TradeVolumeIndex(api.Source)
         self.simpleMovingAverage = api.Indicators.SimpleMovingAverage(self.tradeVolumeIndex.Result, api.PeriodSimpleMovingAverage)
     def on_bar_closed(self):
         if Functions.HasCrossedAbove(self.tradeVolumeIndex.Result, self.simpleMovingAverage.Result, 0):
             self.close_positions(TradeType.Sell)
             api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, self.volumeInUnits, api.Label, api.StopLossInPips, api.TakeProfitInPips)
         elif Functions.HasCrossedBelow(self.tradeVolumeIndex.Result, self.simpleMovingAverage.Result, 0):
             self.close_positions(TradeType.Buy)
             api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, self.volumeInUnits, api.Label, api.StopLossInPips, api.TakeProfitInPips)
     def get_bot_positions(self):
         return api.Positions.FindAll(api.Label)
     def close_positions(self, tradeType):
         for position in self.get_bot_positions():
             if position.TradeType != tradeType:
                 continue
             api.ClosePosition(position)

Properties

Result

Summary

Gets the time series of Trade Volume Index indicator.

Signature

1
public abstract IndicatorDataSeries Result {get; set;}

Return Value

IndicatorDataSeries

Examples

1
2
3
4
5
6
7
8
 //...
 private TradeVolumeIndex _tradeVolume;
 //...
 protected override void OnBar()
 {
     var currentValue = _tradeVolume.Result.LastValue;
     //...
 }
1
2
3
4
5
6
7
8
 import clr
 clr.AddReference("cAlgo.API")
 from cAlgo.API import *
 class Test():    
     def on_start(self):
         self.tradeVolume = api.Indicators.TradeVolumeIndex(api.Bars.ClosePrices)
     def on_bar(self, index):
         currentValue = self.tradeVolume.Result.LastValue