Esempio n. 1
0
        async void ProcessLiveOrderMessage(JObject jobj)
        {
            dynamic m = jobj;

            if ((decimal)m.sequence != 1m + _lastSequenceNumber)
            {
                await BuildBookAsync();

                return;
            }

            BookUpdateReceived?.Invoke(this, new GdaxWebSocketMessageEventArgs(jobj));

            _lastSequenceNumber = m.sequence;

            string type = m.type;

            switch (type)
            {
            case "received":
                ProcessReceivedMessage(jobj);
                break;

            case "open":
                ProcessOpenMessage(jobj);
                break;

            case "done":
                ProcessDoneMessage(jobj);
                break;

            case "match":
                ProcessMatchMessage(jobj);
                break;

            case "change":
                ProcessChangeMessage(jobj);
                break;

            case "error":
                ProcessErrorMessage(jobj);
                break;

            default:
                return;
            }

            var newInsideMarket = new InsideMarket(_bids.GetBest(), _asks.GetBest());

            if (!_insideMarket.Equals(newInsideMarket))
            {
                var args = new InsideMarketChangedEventArgs(_instrument, newInsideMarket, _insideMarket);
                _insideMarket = newInsideMarket;

                InsideMarketChanged?.Invoke(this, args);
            }
        }
Esempio n. 2
0
 void InsideMarketChanged(object sender, InsideMarketChangedEventArgs e)
 {
     _self.Tell(e, _self);
 }