예제 #1
0
        public void DataPushRequestIsForwardedToLocalStorage()
        {
            var instrument = new Instrument
            {
                ID         = 1,
                Symbol     = "SPY",
                Datasource = new Datasource {
                    ID = 1, Name = "MockSource"
                }
            };
            var data = new List <OHLCBar>
            {
                new OHLCBar {
                    Open = 1, High = 2, Low = 3, Close = 4, DT = new DateTime(2013, 1, 1)
                }
            };
            var req = new DataAdditionRequest(BarSize.OneDay, instrument, data);

            _client.PushData(req);
            // TODO: Think about delay amount
            Thread.Sleep(50);

            _historicalDataBrokerMock.Verify(
                x => x.AddData(
                    It.Is <DataAdditionRequest>(
                        y =>
                        y.Frequency == BarSize.OneDay &&
                        y.Instrument.ID == 1 &&
                        y.Data.Count == 1)
                    ),
                Times.Once);
        }
예제 #2
0
파일: QDMSClient.cs 프로젝트: KBurov/qdms
        /// <summary>
        ///     Pushes data to local storage.
        /// </summary>
        public void PushData(DataAdditionRequest request)
        {
            if (request == null)
            {
                RaiseEvent(Error, this, new ErrorArgs(-1, "Request cannot be null."));

                return;
            }

            if (request.Instrument?.ID == null)
            {
                RaiseEvent(Error, this, new ErrorArgs(-1, "Instrument must be set and have an ID."));

                return;
            }

            if (!Connected)
            {
                RaiseEvent(Error, this, new ErrorArgs(-1, "Could not push historical data to local storage - not connected."));

                return;
            }

            lock (_historicalDataSocketLock) {
                if (_historicalDataSocket != null)
                {
                    _historicalDataSocket.SendMoreFrame("HISTPUSH");

                    using (var ms = new MemoryStream()) {
                        _historicalDataSocket.SendFrame(MyUtils.ProtoBufSerialize(request, ms));
                    }
                }
            }
        }
예제 #3
0
        /// <summary>
        /// Forwards a data addition request to local storage.
        /// </summary>
        public void AddData(DataAdditionRequest request)
        {
            if (request.Data.Count == 0)
            {
                Log(LogLevel.Info, string.Format("HDB: AddData called with zero bars, request: {0}", request));
                return;
            }

            lock (_localStorageLock)
            {
                _dataStorage.AddData(request.Data, request.Instrument, request.Frequency, request.Overwrite);
            }
        }
예제 #4
0
        /// <summary>
        /// Pushes data to local storage.
        /// </summary>
        public void PushData(DataAdditionRequest request)
        {
            if (request.Instrument == null || request.Instrument.ID == null)
            {
                RaiseEvent(Error, null, new ErrorArgs(-1, "Instrument must be set and have an ID."));
                return;
            }

            var ms = new MemoryStream();

            lock (_dealerSocketLock)
            {
                _dealerSocket.SendMore("HISTPUSH");
                _dealerSocket.Send(MyUtils.ProtoBufSerialize(request, ms));
            }
        }
예제 #5
0
        public void DataAdditionRequestsAreForwardedToLocalStorage()
        {
            var data = new List <OHLCBar>
            {
                new OHLCBar {
                    Open = 1, High = 2, Low = 3, Close = 4, DT = new DateTime(2000, 1, 1)
                }
            };

            var request = new DataAdditionRequest(BarSize.OneDay, _instrument, data, true);

            _broker.AddData(request);
            _localStorageMock.Verify(x => x.AddData(
                                         It.Is <List <OHLCBar> >(b => b.Count == 1 && b[0].Close == 4),
                                         It.Is <Instrument>(i => i.ID == 1 && i.Symbol == "SPY" && i.Datasource.Name == "MockSource"),
                                         It.Is <BarSize>(z => z == BarSize.OneDay),
                                         It.Is <bool>(k => k == true),
                                         It.IsAny <bool>()), Times.Once);
        }
예제 #6
0
        /// <summary>
        ///     Pushes data to local storage.
        /// </summary>
        public void PushData(DataAdditionRequest request)
        {
            if (request == null)
            {
                RaiseEvent(Error, this, new ErrorArgs(-1, "Request cannot be null."));

                return;
            }

            if (request.Instrument?.ID == null)
            {
                RaiseEvent(Error, this, new ErrorArgs(-1, "Instrument must be set and have an ID."));

                return;
            }
            if (!ClientRunningAndIsConnected)
            {
                RaiseEvent(Error, this,
                           new ErrorArgs(-1, "Could not push historical data to local storage - not connected."));

                return;
            }

            lock (historicalDataSocketLock)
            {
                if (historicalDataSocket != null)
                {
                    historicalDataSocket.SendMoreFrame(BitConverter.GetBytes((byte)DataRequestMessageType.HistPush));

                    using (MemoryStream ms = new MemoryStream())
                    {
                        historicalDataSocket.SendFrame(MyUtils.ProtoBufSerialize(request, ms));
                    }
                }
            }
        }