Ejemplo n.º 1
0
        /// <summary>
        ///     Обработка сообщения от адаптера квика
        /// </summary>
        private async void adapter_MessageReceived(object sender, QLMessageEventArgs e)
        {
            var message = e.Message;

            try
            {
                switch (message.message_type)
                {
                case QLMessageType.TransactionReply:
                    Handle((QLTransactionReply)message);
                    break;

                case QLMessageType.OrderStateChange:
                    Handle((QLOrderStateChange)message);
                    break;

                case QLMessageType.MoneyPosition:
                    Handle((QLMoneyPosition)message);
                    break;

                case QLMessageType.Position:
                    await HandleAsync((QLPosition)message);

                    break;

                case QLMessageType.AccountsList:
                    Handle((QLAccountsList)message);
                    break;

                case QLMessageType.Fill:
                    await HandleAsync((QLFill)message);

                    break;

                case QLMessageType.InitEnd:
                    Handle((QLInitEnd)message);
                    break;

                case QLMessageType.Heartbeat:
                    Handle((QLHeartbeat)message);
                    break;
                }
            }
            catch (Exception exception)
            {
                Logger.Error().Print(exception, $"Failed to handle {message}");
            }
        }
Ejemplo n.º 2
0
        private void AdapterOnMessageReceived(object sender, QLMessageEventArgs e)
        {
            switch (e.Message.message_type)
            {
            case QLMessageType.CandlesResponse:
                var response = (QLHistoryDataResponse)e.Message;
                QLAdapter.Log.Debug().Print($"CandlesResponse received, contains {response.candles?.Count} candles", LogFields.RequestId(response.id));

                HistoryDataRequest request;
                using (requestsLock.Lock())
                {
                    if (!requests.TryGetValue(response.id, out request))
                    {
                        return;
                    }
                }

                request.ProcessResponse(response);

                using (requestsLock.Lock())
                {
                    requests.Remove(response.id);
                }

                break;

            case QLMessageType.CandlesUpdate:
                var update = (QLHistoryDataUpdate)e.Message;
                QLAdapter.Log.Trace().Print($"CandlesUpdate received: {update.candles}");

                HistoryDataSubscription subscription = null;

                using (requestsLock.Lock())
                {
                    if (!subscriptions.TryGetValue(update.id, out subscription))
                    {
                        return;
                    }
                }

                subscription.ProcessUpdate(update);

                break;
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Обработка сообщения от адаптера квика
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void adapter_MessageReceived(object sender, QLMessageEventArgs e)
        {
            try
            {
                switch (e.Message.message_type)
                {
                case QLMessageType.InstrumentParams:
                    await HandleAsync((QLInstrumentParams)e.Message);

                    break;

                case QLMessageType.OrderBook:
                    await HandleAsync((QLOrderBook)e.Message);

                    break;
                }
            }
            catch (Exception ex)
            {
                Logger.Error().Print(ex, $"Failed to handle {e.Message}");
            }
        }