using System.Collections.Generic; using TSLab.DataSource; using TSLab.Script; using TSLab.Script.Handlers; namespace TSLab.Indicators { [HandlerCategory("Ti_ru")] public class UpVolume_v1 : IBar2DoubleHandler { public IList Execute(ISecurity source) { int count = source.Bars.Count; var values = new double[count]; for (int i = 0; i < count; i++) { double delta = 0; var trades = source.GetTrades(i); foreach (var trade in trades) if (trade.Direction == TradeDirection.Buy) delta += trade.QuantityInLots; values[i] = delta; } return values; } } [HandlerCategory("Ti_ru")] public class DwnVolume_v1 : IBar2DoubleHandler { public IList Execute(ISecurity source) { int count = source.Bars.Count; var values = new double[count]; for (int i = 0; i < count; i++) { double delta = 0; var trades = source.GetTrades(i); foreach (var trade in trades) if (trade.Direction == TradeDirection.Sell) delta += trade.QuantityInLots; values[i] = delta; } return values; } } [HandlerCategory("Ti_ru")] public class DeltaVol_v1 : IBar2DoubleHandler { public IList Execute(ISecurity source) { int count = source.Bars.Count; var values = new double[count]; for (int i = 0; i < count; i++) { double delta = 0; var trades = source.GetTrades(i); foreach (var trade in trades) if (trade.Direction == TradeDirection.Buy) delta += trade.QuantityInLots; else if (trade.Direction == TradeDirection.Sell) delta -= trade.QuantityInLots; values[i] = delta; } return values; } } }