首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使包装器binance.net工作

无法使包装器binance.net工作
EN

Stack Overflow用户
提问于 2021-02-26 20:51:02
回答 3查看 6.1K关注 0票数 2

我已经安装了来自https://github.com/JKorf/Binance.Net的包装器

使用它们的示例代码,我的应用程序中有以下内容:

代码语言:javascript
运行
复制
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Binance.Net;
using Binance.Net.Enums;
using Binance.Net.Objects;
using Binance.Net.Objects.Spot;
using CryptoExchange.Net.Authentication;
using CryptoExchange.Net.Logging;

namespace binance_stream_user_data_updates
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new BinanceClient(new BinanceClientOptions{
                ApiCredentials = new ApiCredentials("key","secret"),
                BaseAddress = "https://testnet.binance.vision",
                LogVerbosity = LogVerbosity.Debug,
                LogWriters = new List<TextWriter> { Console.Out }
            });

            var startResult = client.Spot.UserStream.StartUserStream();

            if(!startResult.Success)
                throw new Exception($"Failed to start user stream: {startResult.Error}");

            var socketClient = new BinanceSocketClient();

            socketClient.Spot.SubscribeToUserDataUpdates(startResult.Data,
            null,
            data => {
                Console.WriteLine(data.Orders);
                },
            null,
            null);

            Console.ReadLine();

            socketClient.UnsubscribeAll();


        }
    }
}

然后我运行上面的应用程序,它似乎连接并开始等待,如终端中所示:

代码语言:javascript
运行
复制
dotnet run
2021/02/26 20:36:51:863 | Binance    | Debug | Client configuration: LogVerbosity: Debug, Writers: 1, Credentials: Set, BaseAddress: https://testnet.binance.vision/, Proxy: -, RateLimiters: 0, RateLimitBehaviour: Wait, RequestTimeout: 00:00:30
2021/02/26 20:36:51:903 | Binance    | Debug | [1] Creating request for https://testnet.binance.vision/api/v3/time
2021/02/26 20:36:51:911 | Binance    | Debug | [1] Sending GET request to https://testnet.binance.vision/api/v3/time 
2021/02/26 20:36:53:242 | Binance    | Debug | [1] Response received in 1320ms: {"serverTime":1614371813101}
2021/02/26 20:36:53:345 | Binance    | Debug | [2] Creating request for https://testnet.binance.vision/api/v3/time
2021/02/26 20:36:53:346 | Binance    | Debug | [2] Sending GET request to https://testnet.binance.vision/api/v3/time 
2021/02/26 20:36:54:028 | Binance    | Debug | [2] Response received in 681ms: {"serverTime":1614371813881}
2021/02/26 20:36:54:029 | Binance    | Info | Time offset set to 535.073ms
2021/02/26 20:36:54:031 | Binance    | Debug | [3] Creating request for https://testnet.binance.vision/api/v1/userDataStream
2021/02/26 20:36:54:037 | Binance    | Debug | [3] Sending POST request to https://testnet.binance.vision/api/v1/userDataStream with request body 
2021/02/26 20:36:54:732 | Binance    | Debug | [3] Response received in 694ms: {"listenKey":"key"}

然后我寄出一份订单

POST https://testnet.binance.vision/api/v3/order?symbol=BNBUSDT&side=SELL&type=MARKET&quantity=0.1&newClientOrderId=my_order_id_201&newOrderRespType=FULL×tamp=1614370483356&signature=58cfd86cffc626703eac32f14bf0fa2e9af4850fb33974a03d1eee3f666df15f

当我这样做时,从上面的代码运行的websocket没有输出任何结果。知道我做错了什么吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-02 00:47:05

有些事情,必须做才能得到正确的结果:

必须为BinanceSocketClient

  • You指定选项的
  1. 必须在unsubscribing
  2. While等待之前等待一些事件,您必须使用Postman应用程序(或其他类似的)凭据添加新的订单(或新的OCO订单)。(下面的代码没有讨论这一点)

请查看以下代码:

代码语言:javascript
运行
复制
async static Task Main(string[] args)
{
    var client = new BinanceClient(new BinanceClientOptions
    {
        ApiCredentials = new ApiCredentials("key", "secret"),
        BaseAddress = "https://testnet.binance.vision",
        LogVerbosity = LogVerbosity.Debug,
        LogWriters = new List<TextWriter> { Console.Out }
    });

    var startResult = client.Spot.UserStream.StartUserStream();

    if (!startResult.Success)
        throw new Exception($"Failed to start user stream: {startResult.Error}");

    var socketClient = new BinanceSocketClient(new BinanceSocketClientOptions
    {
        ApiCredentials = new ApiCredentials("key", "secret"),
        BaseAddress = "wss://testnet.binance.vision",
        LogVerbosity = LogVerbosity.Debug,
        LogWriters = new List<TextWriter> { Console.Out }
    });

    var stop = false;
    var subscribeResponse = socketClient.Spot.SubscribeToUserDataUpdates(
        startResult.Data,
        data =>
        {
            stop = true;
            Console.WriteLine($"Order updated: {data}");
        },
        data =>
        {
            stop = true;
            Console.WriteLine($"OCO Orders updated: {data.Orders}");
        },
        null,
        data =>
        {
            stop = true;
            Console.WriteLine($"Balance updated: ${data}");
        });
    
    if (subscribeResponse.Success)
    {
        while (!stop)
        {
            await Task.Delay(100);
        }
    }

    await socketClient.UnsubscribeAll();
}
票数 5
EN

Stack Overflow用户

发布于 2021-03-01 10:35:32

您的socketClient在订阅后立即从事件中取消订阅。

你需要换行

代码语言:javascript
运行
复制
socketClient.UnsubscribeAll();
Console.ReadLine();

对事件进行订阅,直到读取控制台中的行为止。

票数 1
EN

Stack Overflow用户

发布于 2021-03-02 20:41:15

在您提供的代码中,您使用testnet创建一个带有选项的BinanceClient,然后创建一个带有默认选项的BinanceSocketClient,该选项将使用wss://stream.binance.com:9443/作为基本URL。

但是,如果使用测试网络,则必须使用相应的wss://testnet.binance.vision/ web套接字URL;否则,您将订阅真实网络中的非功能listenKey,这不会通知您测试网络中发生的订单更新。

只需像这样创建BinanceSocketClient实例:

代码语言:javascript
运行
复制
socketClient = new BinanceSocketClient(new BinanceSocketClientOptions
{
    BaseAddress = "wss://testnet.binance.vision",
    LogWriters = new List<TextWriter> { Console.Out }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66392643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档