标签: binance-api-client

Binance订单:此请求的时间戳比服务器时间早1000毫秒

我正在编写一些 Python 代码来使用 Binance API 创建订单:

from binance.client import Client

client = Client(API_KEY, SECRET_KEY)

client.create_order(symbol='BTCUSDT',
                    recvWindow=59999, #The value can't be greater than 60K
                    side='BUY',
                    type='MARKET',
                    quantity = 0.004)
Run Code Online (Sandbox Code Playgroud)

不幸的是我收到以下错误消息:

"BinanceAPIException: APIError(code=-1021): Timestamp for this request was 1000ms ahead of the server's time."
Run Code Online (Sandbox Code Playgroud)

我已经检查了币安服务器时间和本地时间之间的差异(以毫秒为单位):

import time
import requests
import json
url = "https://api.binance.com/api/v1/time"
t = time.time()*1000
r = requests.get(url)

result = json.loads(r.content)

print(int(t)-result["serverTime"]) 

OUTPUT: 6997
Run Code Online (Sandbox Code Playgroud)

看来60000的recvWindow还是不够用(但也可能不会超过60K)。我仍然遇到同样的错误。有人知道我该如何解决这个问题吗?

提前谢谢了!

python datetime cryptoapi binance-api-client

12
推荐指数
1
解决办法
2万
查看次数

Binance API 列出来自公共端点的所有交易品种及其名称

我已将 Binance API 集成到我的项目中,以显示所有支持的交易品种及其相应图标的列表。但是,我无法获取符号name/description

例如,我可以获取 BTC-EUR,但无法通过公共端点获取“比特币”或类似内容。至少,到目前为止我还没有找到终点。

目前,我正在使用 的专用端点(位于身份验证后面)/sapi/v1/margin/allAssets。这会返回每个符号的 ,但正如你可以想象的那样,我想阻止在获取信息name/description时使用私有 API 令牌public

{
    "assetFullName": "Bitcoin",   <----- This is what I'm looking on a public endpoint
    "assetName": "BTC",
    "isBorrowable": true,
    "isMortgageable": true,
    "userMinBorrow": "0.00000000",
     "userMinRepay": "0.00000000"
}
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是是否有一个公共端点可用于获取相同的信息?现在,我正在使用端点/api/v3/exchangeInfo来检索交易所上的可用符号,但此响应中没有包含name/description该符号...

"symbols": [
    {
      "symbol": "ETHBTC",
      "status": "TRADING",
      "baseAsset": "ETH",
      "baseAssetPrecision": 8,
      "quoteAsset": "BTC",
      "quotePrecision": 8,
      "quoteAssetPrecision": 8,
      "orderTypes": [
        "LIMIT",
        "LIMIT_MAKER",
        "MARKET",
        "STOP_LOSS",
        "STOP_LOSS_LIMIT",
        "TAKE_PROFIT",
        "TAKE_PROFIT_LIMIT"
      ],
      "icebergAllowed": true,
      "ocoAllowed": true,
      "isSpotTradingAllowed": true, …
Run Code Online (Sandbox Code Playgroud)

binance binance-api-client

10
推荐指数
1
解决办法
1万
查看次数

使用 python-binance 时,heroku [regex._regex_core.error: bad escape \d atposition 7] 出现错误

我尝试在 Heroku 上上传我的 python 代码(Binance trade-bot),但出现错误 o\xd1\x81\xd1\x81ured。有人可以帮我吗?

\n
from binance.client import Client\nfrom datetime import datetime\n\nclient = Client(api,key)\nsymbol = 'IOSTUSDT'\n\nfor i in client.futures_historical_klines(symbol, Client.KLINE_INTERVAL_1MINUTE, '2022-03-16'):\n    print(i)\n
Run Code Online (Sandbox Code Playgroud)\n

错误是

\n
2022-03-16T13:37:45.890497+00:00 app[worker.1]: Traceback (most recent call last):\n2022-03-16T13:37:45.890552+00:00 app[worker.1]:   File "/app/code.py", line 14, in <module>\n2022-03-16T13:37:45.890743+00:00 app[worker.1]:     for i in client.futures_historical_klines(symbol, Client.KLINE_INTERVAL_1MINUTE, '2022-03-16'):\n2022-03-16T13:37:45.890758+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/binance/client.py", line 5709, in futures_historical_klines\n2022-03-16T13:37:45.892661+00:00 app[worker.1]:     return self._historical_klines(symbol, interval, start_str, end_str=end_str, limit=limit, klines_type=HistoricalKlinesType.FUTURES)\n\n---here too much text--\n\n2022-03-16T13:37:45.894613+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.9/site-packages/dateparser/languages/locale.py", line 131, in translate\n2022-03-16T13:37:45.894755+00:00 app[worker.1]:     relative_translations = self._get_relative_translations(settings=settings)\n2022-03-16T13:37:45.894769+00:00 app[worker.1]:   File …
Run Code Online (Sandbox Code Playgroud)

python-3.x binance binance-api-client

10
推荐指数
3
解决办法
7426
查看次数

如何使用币安API获取订单簿列表?

我想获得与币安网站订单簿中显示的相同信息(已开订单):

在此输入图像描述

我试过:

/api/v3/allOrders-- 这显然显示了我的所有订单

api/v3/openOrders-- 这显然显示了我的未结订单

/api/v3/trades-- 这显然显示已关闭的订单

如何查看每个人的未结订单?

binance binance-api-client

8
推荐指数
1
解决办法
2万
查看次数

如何连接用户数据流币安?

每当有订单事件(订单执行、取消等)时,我需要监听用户数据流,我希望能够监听这些事件并创建通知。

所以我得到了我的“listenKey”,我不确定它是否以正确的方式完成,但我执行了这段代码,它给了我类似listenKey的东西。

获取listenKey的代码:

def get_listen_key_by_REST(binance_api_key):
    url = 'https://api.binance.com/api/v1/userDataStream'
    response = requests.post(url, headers={'X-MBX-APIKEY': binance_api_key}) 
    json = response.json()
    return json['listenKey']

print(get_listen_key_by_REST(API_KEY))
Run Code Online (Sandbox Code Playgroud)

以及监听用户数据流的代码 - 这不起作用,我没有得到 json 响应。

socket = f"wss://fstream-auth.binance.com/ws/btcusdt@markPrice?listenKey=<listenKeyhere>"

def on_message(ws, message):
    json_message = json.loads(message)
    print(json_message)

def on_close(ws):
    print(f"Connection Closed")
    # restart()

def on_error(ws, error):
    print(f"Error")
    print(error)

ws = websocket.WebSocketApp(socket, on_message=on_message, on_close=on_close, on_error=on_error)
Run Code Online (Sandbox Code Playgroud)

我已阅读文档但无济于事。如果有人能指出我正确的方向,我将不胜感激。

python binance binance-api-client

7
推荐指数
1
解决办法
5437
查看次数

Binance API速率限制中的RAW_REQUESTS是什么

返回/api/v3/exchangeInfo以下速率限制

在此输入图像描述

币安文档说:

与 /api/* 相关的端点:

  • 根据IP和UID(账号)限制两种模式,各自独立。
  • 端点基于 IP 共享每分钟 1200 个限制,不包括新订单端点 POST /api/v3/order,该端点具有每 10 秒 50 个和基于 UID 每天 160000 个的具体限制。
  • 响应包含标头 X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter),定义当前 IP 使用的权重。
  • 成功的订单响应包含标头 X-MBX-ORDER-COUNT-(intervalNum)(intervalLetter),定义 UID 使用的订单限制。

因此,以 开头的标头与X-MBX-USED-WEIGHT-相关rateLimits[0],以 开头的标头与和X-MBX-ORDER-COUNT-相关。rateLimits[1]rateLimits[2]

关于什么rateLimits[3]?我该如何实施?

binance binance-api-client

6
推荐指数
1
解决办法
7276
查看次数

如何获取币安的交易买入/卖出数据?

我想通过 binance websocket 获取 BTC 的实时交易买入/卖出数据。

我在以下 websocket 模块中使用此方法:

网址:https ://python-binance.readthedocs.io/en/latest/binance.html#module-binance.streams

method:aggtrade_futures_socket(symbol: str, futures_type: binance.enums.FuturesType = <FuturesType.USD_M: 1>)
Run Code Online (Sandbox Code Playgroud)

该方法返回以下值:

data:
{
"e": "aggTrade", // Event type
"E": 123456789, // Event time
"s": "BTCUSDT", // Symbol
"a": 5933014, // Aggregate trade ID
"p": "0.001", // Price
"q": "100", // Quantity
"f": 100, // First trade ID
"l": 105, // Last trade ID
"T": 123456785, // Trade time
"m": true, // Is the buyer the market maker?
}
Run Code Online (Sandbox Code Playgroud)

但是,这个数据似乎并不能决定是卖还是买。如何获取买卖交易的数据?

python binance-api-client

5
推荐指数
1
解决办法
4258
查看次数

在币安中生成新的充值地址

我们希望通过使用 Binance API 创建一个加密货币交易网站来发送和接收加密资产。但问题是,我们无法为每个用户的每个代币生成唯一的地址,并且所有用户都将他们的资产发送到同一个存款地址。

我们如何为每个用户每个代币生成新的存款地址?

rest blockchain cryptocurrency binance binance-api-client

5
推荐指数
0
解决办法
2807
查看次数

python - ThreadedWebsocketManager - 从未检索到任务异常

我正在尝试运行在 jupyter 笔记本上找到的教程中的以下代码:

from time import sleep

from binance import ThreadedWebsocketManager

btc_price = {'error':False}

def btc_trade_history(msg):

    if (msg['e'] != 'error'):

        print(msg['c'])

        btc_price['last'] = msg['c']

        btc_price['bid'] = msg['b']

        btc_price['last'] = msg['a']

        btc_price['error'] = False

    else:

        btc_price['error'] = True

bsm = ThreadedWebsocketManager()

bsm.start()

bsm.start_symbol_ticker_socket(callback=btc_trade_history, symbol='BTCUSDT')
Run Code Online (Sandbox Code Playgroud)

这是教程本身的链接:https ://algotrading101.com/learn/binance-python-api-guide/

我想,自从编写了教程以来,binance API 中发生了一些变化,所以我收到以下错误:

取消 read_loop 未来从未检索到任务异常:<任务完成名称='Task-14'coro=<ThreadedApiManager.start_listener()完成,在C:\Users\myusername\Anaconda3\lib\site-packages\binance\threaded_stream中定义。 py:42> 异常=RuntimeError("任务 <任务挂起名称='Task-20' coro=<Queue.get() 在 C:\Users\myusername\Anaconda3\lib\asyncio\queues.py:163 运行> cb =[_release_waiter(()]>)() at C:\Users\myusername\Anaconda3\lib\asyncio\tasks.py:429]> 让 Future 附加到不同的循环")>

请解释一下出了什么问题以及如何解决?

python python-asyncio binance-api-client

5
推荐指数
1
解决办法
2244
查看次数

Binance API:APIError(代码=-1111):精度超过了该资产定义的最大值。|| Python

我有一个交易机器人,它在“ADAUSDT”中运行,具有动态的买卖数量,作为我的整个 USDT 余额的初始数量,并以相同的余额 + 利润或损失进行交易(它基本上以整个 USDT 余额进行交易并保持交易)一遍又一遍地)。这是一些代码:

from binance.client import Client
import Keys #personal api keys

client = Client(Keys.b_keys, Keys.b_secret)

infoa = client.get_account()
bal= infoa['balances']
i_o = float(bal[11]["free"])
v_min = v_min #some value of ADA, for example: 1.2 

order = client.create_order(
        symbol = "ADAUSDT" , 
        side=SIDE_BUY ,
        type=ORDER_TYPE_LIMIT ,
        timeInForce = TIME_IN_FORCE_GTC ,
        quantity = float(round((i_o) , 8)) , 
        price = v_min ,
        )               
Run Code Online (Sandbox Code Playgroud)

我知道 quoteAsset 和 baseAsset 所需的精度都是 8,因此round()在订单本身的数量值中使用该函数,但即使在那之后,API 仍然会向我抛出错误“精度超过了最大值”为该资产定义”。请帮助我:c

编辑:i_o 是我的“USDT”余额,理论上应该随每次交易而变化,因此使用此变量而不是每个订单数量的普通数字。

注意:我对 Python 很菜鸟,哈哈,我一周前才学了一些基础知识,所以如果你能详细说明一下那就太好了:D

python trading cryptocurrency binance binance-api-client

4
推荐指数
1
解决办法
3万
查看次数