gpt4 book ai didi

c# - 为什么我无法使用带有官方 Binance REST API 的 c# 进行 Binance 订单?

转载 作者:行者123 更新时间:2023-12-04 12:56:39 28 4
gpt4 key购买 nike

我是 StackOverflow 的新手,但我听说有很棒且乐于助人的人可以帮助我。 😉
我的使命:

  • 找到一种使用 c# 调用 Binance REST API 进行交易的方法
  • 没有dll,使用我自己的代码(为了速度更新)

  • 现在我使用 Binance.API 包,但我的机器人需要快一点,因为它的速度不够。
    此外,能够在没有任何外部资源(如 dll)的情况下做到这一点是一件很棒的事情。不是吗? 😎
    我试过的:
  • 成功:我可以毫无问题地调用“WebRequest”的公共(public) API,其中有 不需要验证。
  • WebRequest webrequest = WebRequest.Create("https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT");
    WebResponse Response = webrequest.GetResponse();
    StreamReader reader = new StreamReader(Response.GetResponseStream());
    MessageBox.Show(reader.ReadToEnd());
  • 成功:我可以通过“WebRequest”调用 REST API 并且没有问题,其中 是否需要验证。但只有帐户信息。
  • string dataQueryString = "recvWindow=15000&timestamp=" + Math.Round(Convert.ToDecimal(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds), 0).ToString();
    WebRequest webrequest = WebRequest.Create("https://api.binance.com/api/v3/account?" + dataQueryString + "&signature=" + BitConverter.ToString(new HMACSHA256(Encoding.ASCII.GetBytes(tempAPI_Secret)).ComputeHash(Encoding.ASCII.GetBytes(dataQueryString))).Replace("-", string.Empty).ToLower());
    webrequest.Method = "GET";
    webrequest.Headers.Add("X-MBX-APIKEY", tempAPI_Key);
    WebResponse Response = webrequest.GetResponse();
    StreamReader reader = new StreamReader(Response.GetResponseStream());
    string response = reader.ReadToEnd();
    reader.Close();
    Response.Close();
  • !!!问题 !!! 我无法使用“WebRequest”调用 ORDER REST API,并且在那里 是否需要验证。我尝试了下面的代码。 (它的调用方式与帐户信息相同,但具有 POST 类型,当然还有所需的 plus 参数)
  • string dataQueryString = "symbol=BTCUSDT&side=SELL&type=LIMIT&quantity=0.00039&price=38878&newOrderRespType=RESULT&recvWindow=15000&timestamp=" + Math.Round(Convert.ToDecimal(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds), 0).ToString();
    WebRequest webrequest = WebRequest.Create("https://api.binance.com/api/v3/account?" + dataQueryString + "&signature=" + BitConverter.ToString(new HMACSHA256(Encoding.ASCII.GetBytes(tempAPI_Secret)).ComputeHash(Encoding.ASCII.GetBytes(dataQueryString))).Replace("-", string.Empty).ToLower());
    webrequest.Method = "POST";
    webrequest.Headers.Add("X-MBX-APIKEY", tempAPI_Key);
    WebResponse Response = webrequest.GetResponse();
    StreamReader reader = new StreamReader(Response.GetResponseStream());
    string response = reader.ReadToEnd();
    reader.Close();
    Response.Close();
    返回的错误代码:

    'The remote server returned an error: (400) Bad Request.'


    我不明白为什么这不起作用。 (我尝试使用 Web 客户端中的这些参数手动执行订单,并且成功了)
    我检查了这些可能的问题:
  • 我的现货账户有足够的资金
  • 我试图卖出超​​过最低交易量是

  • 有官方的 Binance REST API 文档: HERE
    我试图用谷歌搜索它,但即使在这里我也找不到解决方案。
    感谢您阅读它,如果您能帮助我,我将不胜感激。 🙏
    有什么不明白的请追问,我会一一解答!

    最佳答案

    我实际上是在做 same thing你是几天前的,除了我使用的是python。我也很高兴看到我不是唯一一个喜欢从头开始编码的人。
    我的解决方案是保留 url 原样 https://api.binance.com/api/v3/account而不是附加我的订单参数 symbol=BTCUSD&side=BUY&etc...到 url 我不得不编码并通过 data 发送该数据python内置函数的参数urllib.request.Request(url, data, headers)我不太了解 C#,所以我不知道如何将我的 Python 代码翻译成 C#,但我确实找到了这个 doc link提供 example关于如何使用 POST 请求发送数据。你也可以看看我的问题和answer作为另一个例子。

    关于c# - 为什么我无法使用带有官方 Binance REST API 的 c# 进行 Binance 订单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66068813/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com