如何使用Python 设置和使用Binance API - 桑鸟网

文章推薦指數: 80 %
投票人數:10人

介绍; 创建您的币安API 密钥; 使用Python 连接到币安客户端; 使用币安API; 获取所有硬币价格; 获取历史价格; 可视化数据; 结论 ... 桑鸟网 为您推荐 资讯 开源软件库 文档 小组 应用 如何使用Python设置和使用BinanceAPI 用于在Python中设置和使用BinanceAPI以使用预定义规则回测策略、绘制数据或实时交易。

Python Python BinanceAPI 大哥不抽烟 发表日期:2021-11-05 Like 8 Collect 49 Share Errorcorrection 文章索引 第I部分:分步教程,用于在Python中设置和使用BinanceAPI以使用预定义规则回测策略、绘制数据或实时交易。

介绍 创建您的币安API密钥 使用Python连接到币安客户端 使用币安API 获取所有硬币价格 获取历史价格 可视化数据 结论 介绍 在Python中设置和使用BinanceAPI以使用预定义规则回测策略、绘制数据或实时交易的分步教程。

本部分(第一部分)将介绍如何创建API密钥、连接到BinanceAPI并获取可用于交易的资产的当前价格。

我们还将看到如何将历史数据用于以后的回测策略。

第二部分将介绍如何下现货订单和未来订单。

如何关闭这些交易并获得有关它们的信息。

第三部分将介绍如何创建实时流数据流,以便能够每秒获得特定资产的新实时价格。

创建您的币安密钥 连接到Binance并转到API管理以创建密钥对: 币安API管理 并创建您的API密钥对: 创建API密钥 选择您想要的选项和您想要使用的限制。

请注意不要共享您的API密钥,尤其是在您的密钥已启用未来或撤销的情况下。

API密钥的选项 您需要的重要信息是您的API密钥和您的秘密密钥。

这两个将在我们的python程序中使用。

使用Python连接到币安客户端 现在您已拥有密钥,您已准备好进行后续步骤。

为了轻松使用和管理BinanceAPI,我们将使用一个Python库。

使用以下命令安装它: pipinstallpython-binance #andthenimportitinyourpythonfilewith frombinance.clientimportClient 然后我们将库导入python文件并连接到Binance客户端。

要连接到客户端,只需定义您的API和密钥变量并执行客户端功能。

frompython-binanceimportClient api_key="yourapikey" api_secret="yourapisecretkey" client=Client(api_key,api_secret) 要验证您的密钥是否正确以及您是否已连接到Binance,请执行此功能以ping服务器。

如果这返回一个空字典,这意味着一切都是正确的,您已准备好进行下一步。

print(client.ping()) #ifit'sreturn"{}"allisgood,you'rereadyfornextstep 使用币安API 现在我们已连接到Binance客户端。

因此,我们可以使用API来获取有关特定资产的数据来回测策略,或者只是执行一些交易。

以下是您可能经常使用的一些有用功能。

获取所有硬币行情和价格 此函数将返回一个列表,其中包含可在平台上交易的所有代币及其价格。

info=client.get_all_tickers() 输出示例: [{'symbol':'ETHBTC','price':'0.07284200'},{'symbol':'LTCBTC','price':'0.00322200'},{'symbol':'BNBBTC','price':'0.00885500'}........] 为了处理这些数据,我们将使用python库pandas将这些存储在DataFrame中。

这将有助于操纵。

只需使用以下命令在python文档中安装和导入pandas: pipinstallpandas 我们将只添加几行代码来选择列的数据类型,并在DataFrame中添加一个索引。

importpandasaspddf=pd.DataFrame(client.get_all_tickers()) df=df.set_index("symbol") df["price"]=df["price"].astype("float") df.index=df.index.astype("string")print(df) 这是输出表: symbolpriceETHBTC0.073483 LTCBTC0.003261 BNBBTC0.008944 NEOBTC0.000749 QTUMETH0.003475 ...... NUAUD1.227500 NURUB65.840000 REEFTRY0.353900 REEFBIDR521.200000 SHIBDOGE0.000238 要隔离精确资产的特定价格,只需使用: print(df.loc["BTCUSDT]) 输出: price62228.99 Name:BTCUSDT,dtype:float64 获取历史价格 如果您想使用特定资产的历史价格来回测策略或仅将其绘制在图表上,则此功能至关重要。

我们将在以后的文章中介绍如何回测策略以找到最佳参数。

要执行此函数,我们将指定资产、开始日期、结束日期和时间范围。

时间范围将是两个价格数据之间的差值。

importpandasaspdasset="BTCUSDT" start="2021.10.1" end="2021.11.1" timeframe="1d" df=pd.DataFrame(assert,timeframe,start,end) 这将返回一个包含2021年10月1日至2021年11月1日之间资产(BTC/USDT)所有数据的表格,时间范围为1天。

为了清理一下并有一个漂亮的表,我建议添加这几行。

这些将选择DataFrame中感兴趣的列并将数据转换为可读格式。

df=pd.DataFrame(client.get_historical_klines(asset,timeframe,start,end)) df=df.iloc[:,:6] df.columns=["Date","Open","High","Low","Close","Volume"] df=df.set_index("Date") df.index=pd.to_datetime(df.index,unit="ms") df=df.astype("float") print(df) 您现在有一个漂亮的表格,其中包含日期、开盘价、最高价、最低价、收盘价和执行量。

这些数据对于制定策略和计算一些技术指标至关重要,我们将在不久的将来使用它们。

这是输出的示例: DateOpenHighLowCloseVolume2021-10-0143820.0148495.0043283.0348141.6166244.874920 2021-10-0248141.6048336.5947430.1847634.9030508.981310 2021-10-0347634.8949228.0847088.0048200.0130825.056010 2021-10-0448200.0149536.1246891.0049224.9446796.493720 2021-10-0549224.9351886.3049022.4051471.9952125.667930 2021-10-0651471.9955750.0050382.4155315.0079877.545181 2021-10-0755315.0055332.3153357.0053785.2254917.377660 2021-10-0853785.2256100.0053617.6153951.4346160.257850 2021-10-0953955.6755489.0053661.6754949.7255177.080130 可视化数据 如果您想轻松地可视化您刚刚从BinanceAPI恢复的DataFrame,这是一种简单的方法: 安装并导入mplfinance库: pipinstallmplfinance 然后将其导入到您的Python代码中。

然后,您只需使用mpl库绘制DataFrame即可获得漂亮的资产图,如果您想更改图的设计,请参阅mplfinance库的文档。

importmplfinanceasmpl #InsertthecodeforthecreationoftheDataFramethatweseeearlier mpl.plot(df,type='candle') 这是输出和漂亮的图表: mplfinance的简单图 在此选项中,您可以轻松添加一些技术指标,例如一些简单的移动平均线和交易量图: mpl.plot(df,type='candle',volume=True,mav=7) 带体积的图形和带mplfinance的SMA7 结论 我们已经了解了如何使用Python创建API密钥并连接到BinanceAPI。

我们现在可以轻松获得资产的历史数据来回测策略,我们将在以后的文章中看到如何做到这一点。

按照本指南轻松创建您的交易机器人。

谢谢阅读。

TOP 介绍 创建您的币安密钥 使用Python连接到币安客户端 使用币安API 获取所有硬币行情和价格 获取历史价格 可视化数据 结论



請為這篇文章評分?