【问题标题】:C# Binance API do not return all symbols when get "All Market Tickers Streams"C# Binance API 在获取“所有市场代码流”时不返回所有符号
【发布时间】:2022-01-03 17:19:30
【问题描述】:

我正在使用Websocket.Client 获取所有市场代码流(文档here)。

但我不明白为什么每次 API 只返回不同数量的符号。

结果格式:

             {
              "e": "24hrTicker",  // Event type
              "E": 123456789,     // Event time
              "s": "BNBBTC",      // Symbol
              "p": "0.0015",      // Price change
              "P": "250.00",      // Price change percent
              "w": "0.0018",      // Weighted average price
              "x": "0.0009",      // First trade(F)-1 price (first trade before the 24hr rolling window)
              "c": "0.0025",      // Last price
              "Q": "10",          // Last quantity
              "b": "0.0024",      // Best bid price
              "B": "10",          // Best bid quantity
              "a": "0.0026",      // Best ask price
              "A": "100",         // Best ask quantity
              "o": "0.0010",      // Open price
              "h": "0.0025",      // High price
              "l": "0.0010",      // Low price
              "v": "10000",       // Total traded base asset volume
              "q": "18",          // Total traded quote asset volume
              "O": 0,             // Statistics open time
              "C": 86400000,      // Statistics close time
              "F": 0,             // First trade ID
              "L": 18150,         // Last trade Id
              "n": 18151          // Total number of trades
            }

所以,我有一个MarketTicker 课程

    public class MarketTicker
    {
        public string e { get; set; }
        public long E { get; set; }
        public string s { get; set; }
        public string p { get; set; }
        public string P { get; set; }
        public string w { get; set; }
        public string x { get; set; }
        public string c { get; set; }
        public string Q { get; set; }
        public string b { get; set; }
        public string B { get; set; }
        public string a { get; set; }
        public string A { get; set; }
        public string o { get; set; }
        public string h { get; set; }
        public string l { get; set; }
        public string v { get; set; }
        public string q { get; set; }
        public long O { get; set; }
        public long C { get; set; }
        public int F { get; set; }
        public int L { get; set; }
        public int n { get; set; }
    }

1.初始化

var url = new Uri("wss://fstream.binance.com/ws/!ticker@arr");
var client = new WebsocketClient(url);
client.MessageReceived.Subscribe(OnReceived);
await client.Start();

2。 OnReceived事件

 private async void OnReceived(ResponseMessage responseMessage)
        {
            var strResponse = responseMessage.ToString();
            var rps = JsonConvert.DeserializeObject<List<MarketTicker>>(strResponse);
            if (rps != null)
            {
                Console.WriteLine($"List<MarketTicker>: {rps.Count}");
            }
        }

糟糕的结果:

>>List<MarketTicker>: 51
>>List<MarketTicker>: 60
>>List<MarketTicker>: 82
>>List<MarketTicker>: 120
>>List<MarketTicker>: 140
>>List<MarketTicker>: 90

预期结果是web socket 响应消息中的所有符号,但几乎只是其中的一部分。我已经尝试了很多次,但都失败了,它只是返回任意数量的它,在不同的时间之间变化。

我需要的是所有这些。

Binance API 或我的代码有什么问题?在这种情况下有人可以帮助我吗?任何积极的 cmets 都表示赞赏。

提前致谢。

【问题讨论】:

    标签: c# api websocket binance binance-api-client


    【解决方案1】:

    请查看此链接中的注释, https://binance-docs.github.io/apidocs/futures/en/#all-market-tickers-streams 注意是 "请注意,只有发生变化的代码才会出现在数组中。"

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    猜你喜欢
    • 2013-01-04
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 2021-08-02
    • 2022-10-13
    • 1970-01-01
    相关资源
    最近更新 更多