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.

Syntax

public interface TradeVolumeIndex

Members

NameTypeSummary
Result PropertyGets the time series of Trade Volume Index indicator.

Example 1

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];
}

Example 2

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);
            }
        }
    }
}
Reference