国王小组:数字货币交易所开发中Binance REST API接入方式

简介: 秒合约交易所开发详细丨秒合约交易所系统开发详细及规则丨秒合约交易所系统源码部署数字货币交易所开发源码丨数字货币交易所系统开发(详细及逻辑)交易所开发正式版丨区块链交易所系统开发实现技术功能及源码交易所开发案例丨交易所系统开发(详细及流程)丨交易所成熟及源码系统交易所开发(稳定版)丨交易所系统开发(方案及逻辑)丨 交易所系统源码功能什么是去中心化交易所系统开发丨浅谈uniswap丨justswap交易所源码(整体架构演示)交易所搭建,交易所源码是怎么开发的?区块链交易所怎么搭建?区块链交易所平台中常见的开发模式有哪些?区块链交易所如何开发(介绍区块链应用开发的流程)区块链

这是Binance交易所REST API v3的非官方Python封装器,我与Binance没有任何关系,使用时风险自负。

如果你来这里寻找购买加密货币的Binance交易所,那么请到这里。如果您想与Binance进行自动交互,请继续关注。

如果你对Binance的新DEX Binance Chain感兴趣,请看我的python-binance-chain库。

Binance的异步基础知识
了解Binance订单过滤器
请确保你经常更新,并查看Changelog以了解新功能和错误修复。

秒合约交易所开发详细丨秒合约交易所系统开发详细及规则丨秒合约交易所系统源码部署
数字货币交易所开发源码丨数字货币交易所系统开发(详细及逻辑)
交易所开发正式版丨区块链交易所系统开发实现技术功能及源码
交易所开发案例丨交易所系统开发(详细及流程)丨交易所成熟及源码系统
交易所开发(稳定版)丨交易所系统开发(方案及逻辑)丨 交易所系统源码功能
什么是去中心化交易所系统开发丨浅谈uniswap丨justswap
交易所源码(整体架构演示)
交易所搭建,交易所源码是怎么开发的?
区块链交易所怎么搭建?
区块链交易所平台中常见的开发模式有哪些?
区块链交易所如何开发(介绍区块链应用开发的流程)
区块链交易所开发的玩法介绍
特点
实施所有常规、市场数据和账户端点。
实施Asyncio
支持现货、期货和普通期权的Testnet。
简单处理认证
不需要自己生成时间戳,包装器为你做这件事
响应异常处理
Websocket处理与重新连接和复用连接
符号深度缓存
历史上的Kline/Candle取数功能
提款功能
存款地址
保证金交易
期货交易
香草期权
支持其他域名(.us、.jp等)。
升级到V1.0.0+版本
突破性变化包括从wapi迁移到sapi端点,这与Binance文档中详述的钱包端点有关。

另一个突破性变化是websocket流和深度缓存管理器,它们已被转换为使用异步上下文管理器。见下面异步部分的例子,或查看websockets和深度缓存文档。

快速入门
在Binance注册一个账户。

生成一个API密钥并分配相关权限。

如果您使用的是美国、日本或其他顶级域名的交易所,那么在创建客户端时请确保传递tld='us'。

要使用现货或香草期权测试网,请在创建客户端时传递testnet=True。
pip install python-binance
from binance import Client, ThreadedWebsocketManager, ThreadedDepthCacheManager
client = Client(api_key, api_secret)

get market depth

depth = client.get_order_book(symbol='BNBBTC')

place a test market buy order, to place an actual order use the create_order function

order = client.create_test_order(

symbol='BNBBTC',
side=Client.SIDE_BUY,
type=Client.ORDER_TYPE_MARKET,
quantity=100)

get all symbol prices

prices = client.get_all_tickers()

withdraw 100 ETH

check docs for assumptions around withdrawals

from binance.exceptions import BinanceAPIException
try:

result = client.withdraw(
    asset='ETH',
    address='<eth_address>',
    amount=100)

except BinanceAPIException as e:

print(e)

else:

print("Success")

fetch list of withdrawals

withdraws = client.get_withdraw_history()

fetch list of ETH withdrawals

eth_withdraws = client.get_withdraw_history(coin='ETH')

get a deposit address for BTC

address = client.get_deposit_address(coin='BTC')

get historical kline data from any date range

fetch 1 minute klines for the last day up until now

klines = client.get_historical_klines("BNBBTC", Client.KLINE_INTERVAL_1MINUTE, "1 day ago UTC")

fetch 30 minute klines for the last month of 2017

klines = client.get_historical_klines("ETHBTC", Client.KLINE_INTERVAL_30MINUTE, "1 Dec, 2017", "1 Jan, 2018")

fetch weekly klines since it listed

klines = client.get_historical_klines("NEOBTC", Client.KLINE_INTERVAL_1WEEK, "1 Jan, 2017")

socket manager using threads

twm = ThreadedWebsocketManager()
twm.start()

depth cache manager using threads

dcm = ThreadedDepthCacheManager()
dcm.start()

def handle_socket_message(msg):

print(f"message type: {msg['e']}")
print(msg)

def handle_dcm_message(depth_cache):

print(f"symbol {depth_cache.symbol}")
print("top 5 bids")
print(depth_cache.get_bids()[:5])
print("top 5 asks")
print(depth_cache.get_asks()[:5])
print("last update time {}".format(depth_cache.update_time))

twm.start_kline_socket(callback=handle_socket_message, symbol='BNBBTC')

dcm.start_depth_cache(callback=handle_dcm_message, symbol='ETHBTC')

replace with a current options symbol

options_symbol = 'BTC-210430-36000-C'
dcm.start_options_depth_cache(callback=handle_dcm_message, symbol=options_symbol)

join the threaded managers to the main thread

twm.join()
dcm.join()
For more check out the documentation.

Async Example
Read Async basics for Binance for more information.

import asyncio
import json

from binance import AsyncClient, DepthCacheManager, BinanceSocketManager

async def main():

# initialise the client
client = await AsyncClient.create()

# run some simple requests
print(json.dumps(await client.get_exchange_info(), indent=2))

print(json.dumps(await client.get_symbol_ticker(symbol="BTCUSDT"), indent=2))

# initialise websocket factory manager
bsm = BinanceSocketManager(client)

# create listener using async with
# this will exit and close the connection after 5 messages
async with bsm.trade_socket('ETHBTC') as ts:
    for _ in range(5):
        res = await ts.recv()
        print(f'recv {res}')

# get historical kline data from any date range

# fetch 1 minute klines for the last day up until now
klines = client.get_historical_klines("BNBBTC", AsyncClient.KLINE_INTERVAL_1MINUTE, "1 day ago UTC")

# use generator to fetch 1 minute klines for the last day up until now
async for kline in await client.get_historical_klines_generator("BNBBTC", AsyncClient.KLINE_INTERVAL_1MINUTE, "1 day ago UTC"):
    print(kline)

# fetch 30 minute klines for the last month of 2017
klines = client.get_historical_klines("ETHBTC", Client.KLINE_INTERVAL_30MINUTE, "1 Dec, 2017", "1 Jan, 2018")

# fetch weekly klines since it listed
klines = client.get_historical_klines("NEOBTC", Client.KLINE_INTERVAL_1WEEK, "1 Jan, 2017")

# setup an async context the Depth Cache and exit after 5 messages
async with DepthCacheManager(client, symbol='ETHBTC') as dcm_socket:
    for _ in range(5):
        depth_cache = await dcm_socket.recv()
        print(f"symbol {depth_cache.symbol} updated:{depth_cache.update_time}")
        print("Top 5 asks:")
        print(depth_cache.get_asks()[:5])
        print("Top 5 bids:")
        print(depth_cache.get_bids()[:5])

# Vanilla options Depth Cache works the same, update the symbol to a current one
options_symbol = 'BTC-210430-36000-C'
async with OptionsDepthCacheManager(client, symbol=options_symbol) as dcm_socket:
    for _ in range(5):
        depth_cache = await dcm_socket.recv()
        count += 1
        print(f"symbol {depth_cache.symbol} updated:{depth_cache.update_time}")
        print("Top 5 asks:")
        print(depth_cache.get_asks()[:5])
        print("Top 5 bids:")
        print(depth_cache.get_bids()[:5])

await client.close_connection()

if name == "__main__":

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
捐赠

如果这个图书馆帮助了你,请随时捐赠。

ETH: 0xD7a7fDdCfA687073d7cC93E9E51829a727f9fE70
LTC: LPC5vw9ajR1YndE1hYVeo3kJ9LdHjcRCUZ
NEO。AVJB4ZgN7VgSUtArCt94y7ZYT6d5NDfpBo
BTC: 1Dknp6L6oRZrHDECRedihPzx2sSfmvEBys
其他交易所
如果你使用Binance Chain,请查看我的python-binance-chain库。

如果你使用Kucoin,请查看我的python-kucoin库。

如果你使用IDEX,请查看我的python-idex库。

相关文章
|
6天前
|
前端开发 API 数据处理
探索后端开发中的API设计哲学
【9月更文挑战第10天】在数字化时代的浪潮下,后端开发作为连接数据与前端界面的桥梁,其重要性不言而喻。本文将深入探讨如何通过精心设计的API来提升后端服务的可维护性、扩展性和用户体验。我们将从API设计的基本原则出发,逐步展开对RESTful API和GraphQL两种流行风格的比较分析,并结合具体场景讨论最佳实践。文章旨在为开发者提供一套实用的API设计指南,助力打造高效、稳定且易于协作的软件架构。
21 6
|
5天前
|
API 网络架构 微服务
探索 GraphQL:现代 API 开发的新范式
GraphQL 是一种高效的 API 查询语言,允许客户端精确请求所需数据,避免了传统 RESTful API 中的数据冗余问题。它由 Facebook 开发并开源,现广泛应用于现代 Web 和移动应用。本文将介绍 GraphQL 的核心概念、优势及其在不同场景下的应用,并指导你如何构建和优化 GraphQL API。
|
8天前
|
JavaScript 测试技术 API
探索后端开发:构建高效API的艺术
【9月更文挑战第8天】本文旨在揭示后端开发中一个经常被忽视的领域——API设计。通过深入浅出的方式,我们将探讨如何构建一个既高效又易于维护的API。文章将涵盖设计原则、最佳实践以及一些常见的陷阱和解决方案。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧,帮助你在后端开发的道路上更进一步。
|
8天前
|
前端开发 API 开发者
深入浅出:后端开发中的API设计艺术
在数字化时代的浪潮中,后端开发如同搭建一座座数据桥梁,连接着用户与服务的无限可能。而API设计,则是这座桥梁的精髓所在。本文将带领读者领略API设计的艺术,从基础原则到进阶实践,探索如何打造高效、稳定且易于使用的后端接口。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往高质量后端开发的大门。
|
7天前
|
存储 安全 API
探索后端开发:构建高效API的艺术
【9月更文挑战第9天】在数字时代的浪潮中,后端开发如同一位默默无闻的艺术家,精心雕琢着每一个数据交互的细节。本文将带你走进后端的世界,从基础概念到实战技巧,一起学习如何打造高效、稳定且易于扩展的API。我们将通过深入浅出的方式,探讨后端开发的哲学与实践,让你在编码之旅中,找到属于自己的节奏和和谐。让我们一起跟随代码的脚步,解锁后端开发的无限可能。
|
1月前
|
机器人 API Python
智能对话机器人(通义版)会话接口API使用Quick Start
本文主要演示了如何使用python脚本快速调用智能对话机器人API接口,在参数获取的部分给出了具体的获取位置截图,这部分容易出错,第一次使用务必仔细参考接入参数获取的位置。
|
18天前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
28天前
|
SQL 存储 数据处理
|
1月前
|
XML JSON API
RESTful API设计最佳实践:构建高效、可扩展的接口
【8月更文挑战第17天】RESTful API设计是一个涉及多方面因素的复杂过程。通过遵循上述最佳实践,开发者可以构建出更加高效、可扩展、易于维护的API。然而,值得注意的是,最佳实践并非一成不变,随着技术的发展和业务需求的变化,可能需要不断调整和优化API设计。因此,保持对新技术和最佳实践的关注,是成为一名优秀API设计师的关键。
|
1月前
|
监控 API 数据安全/隐私保护
​邮件API触发式接口分析?邮件API接口好评榜
邮件API在企业通信和营销中至关重要,通过自动化邮件发送流程提升效率与客户满意度。本文解析邮件API触发式接口,即基于特定事件(如用户注册、购买产品)自动发送邮件的技术,能显著加快企业响应速度并增强用户体验。推荐市场上的优秀邮件API产品,包括SendGrid、Mailgun、Amazon SES、Postmark及新兴的AOKSend,它们各具特色,如高发送率、详细分析工具、灵活配置、强大的日志功能及用户友好的API接口,帮助企业根据不同需求选择最合适的邮件API解决方案。