Working with Market Depth
API allows getting the data about updates of the MarketDepth. For this, the MarketDepthChanged(MarketDataArg arg) method should be redefined..
public class SampleMD:Indicator { protected override void OnCalculate(int bar, decimal value) { } protected override void MarketDepthChanged(MarketDataArg arg) { } }
It is also possible to get the total volume of all Bids and total volume of all Asks with the help of the MarketDepthInfo object properties: CumulativeDomAsks and CumulativeDomBids.
Example of the indicator which reflects the history of the total values of the Asks and Bids volumes
public class DomPower : Indicator { private ValueDataSeries _asks; private ValueDataSeries _bids=new ValueDataSeries("Bids"); private int _lastCalculatedBar = 0; privte bool _first = true; public DomPower():base(true) { Panel = IndicatorDataProvider.NewPanel; _asks = (ValueDataSeries)DataSeries[0]; _asks.Name = "Asks"; _bids.Color = Colors.Green; DataSeries.Add(_bids); } protected override void OnCalculate(int bar, decimal value) { } protected override void MarketDepthChanged(MarketDataArg arg) { if (_first) { _first = false; _lastCalculatedBar = CurrentBar - 1; } var lastCandle = CurrentBar - 1; var cumAsks = MarketDepthInfo.CumulativeDomAsks; var cumBids = MarketDepthInfo.CumulativeDomBids; for (int i = _lastCalculatedBar; i <= lastCandle; i++) { _asks[i] = -cumAsks; _bids[i] = cumBids; } _lastCalculatedBar = lastCandle; } }
In some cases it might be necessary to get a snapshot of the MaketDepth data. For this, the MarketDepthInfo.GetMarketDepthSnapshot() function could be used. The function returns a list of all levels in the DOM.
Customer support service by UserEcho