Пример #1
0
        public static Dictionary <string, MarketResult> ToDictionary(MarketsResponse response)
        {
            Dictionary <string, MarketResult> d = new Dictionary <string, MarketResult>();

            foreach (var c in response.Data)
            {
                d.Add(c.Label, c);
            }

            return(d);
        }
Пример #2
0
 private void HandleMarketSafe(MarketsResponse response)
 {
     try
     {
         HandleMarket(response);
     }
     catch (Exception e)
     {
         Log.Error(e, $"[Ftx] Failed to handle market info, error: '{e.Message}'");
     }
 }
Пример #3
0
        public MarketsResponse GetMarkets(MarketsRequest request)
        {
            var             query = "getmarketsummaries";
            MarketsResponse r     = GetResult <MarketsResponse>(PublicApiCall.GetMarkets, query);

            foreach (var c in r.Data)
            {
                c.Change = ((c.LastPrice / c.PrevDay) - 1) * 100;
            }

            return(r);
        }
 private void OnMarketsResponse(MarketsResponse response)
 {
     //foreach (var market in response.Markets)
     //{
     //	switch (market.Name.Trim())
     //	{
     //		case "ММВБ":
     //			_exchangeBoards.Add(market.Id, ExchangeBoard.MicexEqbr);
     //			break;
     //		case "FORTS":
     //			_exchangeBoards.Add(market.Id, ExchangeBoard.Forts);
     //			break;
     //		default:
     //			var board = new ExchangeBoard { Code = market.Name };
     //			_exchangeBoards.Add(market.Id, board);
     //			break;
     //	}
     //}
 }
Пример #5
0
        public override async Task <MarketsResponse> GetMarkets(MarketsRequest request, ServerCallContext context)
        {
            var result = new MarketsResponse();

            try
            {
                if (request.OptionalAssetPairIdCase == MarketsRequest.OptionalAssetPairIdOneofCase.None || string.IsNullOrEmpty(request.AssetPairId))
                {
                    var response = await _walletApiV2Client.GetMarketsAsync();

                    result.Body = new MarketsResponse.Types.Body();
                    result.Body.Markets.AddRange(_mapper.Map <List <MarketsResponse.Types.MarketModel> >(response));
                }
                else
                {
                    var response = await _walletApiV2Client.GetMarketsByAssetPairIdAsync(request.AssetPairId);

                    if (response != null)
                    {
                        result.Body = new MarketsResponse.Types.Body();
                        result.Body.Markets.Add(_mapper.Map <MarketsResponse.Types.MarketModel>(response));
                    }
                }

                return(result);
            }
            catch (ApiExceptionV2 ex)
            {
                if (ex.StatusCode == 400)
                {
                    result.Error = new ErrorResponseBody
                    {
                        Code    = ErrorCode.NotFound,
                        Message = ex.Response.Replace("\"", string.Empty)
                    };

                    return(result);
                }

                throw;
            }
        }
 private bool HandleObjectMessage(string msg)
 {
     // ********************
     // ADD OBJECT HANDLERS BELOW
     // ********************
     //var response = FtxJsonSerializer.Deserialize<JObject>(msg);
     return
         (SubscribedResponse.TryHandle(msg, Streams.SubscribedSubject) ||
          ErrorResponse.TryHandle(msg, Streams.ErrorSubject) ||
          PongResponse.TryHandle(msg, Streams.PongSubject) ||
          TickerResponse.TryHandle(msg, Streams.TickerSubject) ||
          OrderBookUpdateResponse.TryHandle(msg, Streams.OrderBookUpdateSubject, "update") ||
          OrderBookSnapshotResponse.TryHandle(msg, Streams.OrderBookSnapshotSubject, "partial") ||
          // MarketsUpdateResponse.TryHandle(msg, Streams.MarketsUpdateSubject, "update") ||
          // MarketsSnapshotResponse.TryHandle(msg, Streams.MarketsSnapshotSubject, "partial") ||
          MarketsResponse.TryHandle(msg, Streams.MarketsSubject) ||
          TradeResponse.TryHandle(msg, Streams.TradesSubject) ||
          OrdersResponse.TryHandle(msg, Streams.OrdersSubject) ||
          FillsResponse.TryHandle(msg, Streams.FillsSubject));
 }
Пример #7
0
        public override async Task <MarketsResponse> GetMarkets(MarketsRequest request, ServerCallContext context)
        {
            var session = SessionFromContext(context);

            var prices = await GetPrices(new PricesRequest(), context);

            var result = new MarketsResponse();


            var pairs = await _marketDataService.GetAssetPairsByTenant(session.TenantId);

            foreach (var pair in pairs)
            {
                var price = prices.Prices.FirstOrDefault(e => e.AssetPairId == pair.Id.ToString());
                if (price != null)
                {
                    var ask = !string.IsNullOrEmpty(price.Ask) ? decimal.Parse(price.Ask) : 0m;
                    var bid = !string.IsNullOrEmpty(price.Bid) ? decimal.Parse(price.Bid) : 0m;

                    var item = new MarketsResponse.Types.MarketModel()
                    {
                        AssetPair      = price.AssetPairId,
                        Ask            = price.Ask,
                        Bid            = price.Bid,
                        High           = Math.Max(ask, bid).ToString(CultureInfo.InvariantCulture),
                        LastPrice      = price.Ask,
                        Low            = Math.Min(ask, bid).ToString(CultureInfo.InvariantCulture),
                        PriceChange24H = price.PriceChange24H,
                        Volume24H      = price.VolumeBase24H
                    };

                    result.Markets.Add(item);
                }
                else
                {
                    var item = new MarketsResponse.Types.MarketModel()
                    {
                        AssetPair      = pair.Symbol,
                        Ask            = "0",
                        Bid            = "0",
                        High           = "0",
                        LastPrice      = "0",
                        Low            = "0",
                        PriceChange24H = "0",
                        Volume24H      = "0"
                    };

                    result.Markets.Add(item);
                }
            }

            if (result.Markets.All(e => e.AssetPair != "BTCUSD"))
            {
                var item = new MarketsResponse.Types.MarketModel()
                {
                    AssetPair      = "BTCUSD",
                    Ask            = "0",
                    Bid            = "0",
                    High           = "0",
                    LastPrice      = "0",
                    Low            = "0",
                    PriceChange24H = "0",
                    Volume24H      = "0"
                };

                result.Markets.Add(item);
            }


            return(result);
        }
Пример #8
0
 private void HandleMarket(MarketsResponse response)
 {
     MarketsSubject.OnNext(ConvertMarkets(response.Data.MarketsData.Values.ToArray()));
 }