iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何使用Python轻松获取Binance历史交易
  • 785
分享到

如何使用Python轻松获取Binance历史交易

2023-07-06 02:07:52 785人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“如何使用python轻松获取Binance历史交易”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Python轻松获取Binance历史交易”吧!数据频率和平衡我想说,交

本篇内容主要讲解“如何使用python轻松获取Binance历史交易”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Python轻松获取Binance历史交易”吧!

数据频率和平衡

我想说,交易数据端点主要在99.99%的交易所中提供。它是细粒度的,提供了足够的详细信息(在某些非常特殊的情况下)用于回测高频交易(HFT)策略,并且可以用作 OHLC candles(1S至24H或更多,如果你想要的话)的基础。

交易数据是通用的,并且允许使用不同频率的策略进行大量实验。

为什么选择Binance?

那只是因为它是我由于数量庞大而倾向于回溯的交易所之一。

我们将要进行的编码

我们将创建一个Python脚本,该脚本接收对符号,开始日期和结束日期作为命令行参数。它将包含所有交易的CSV文件输出到磁盘。该过程可以通过以下步骤进行详细说明:

解析symbol,starting_date和ending_date论据。

获取开始日期发生的第一笔交易,以获取第一笔交易trade_id。

循环获取每个请求1000笔交易(Binance api限制),直到ending_date达到为止。

最后,将数据保存到磁盘。对于示例,我们将其保存为CSV,但是你还有其他选择,不一定保存为CSV。

我们将使用pandas,requests,time,sys,和datetime。在代码段中,将不会显示错误验证,因为它不会为说明添加任何值。

编码时间

该脚本将使用以下参数:

symbol:交易对的符号,由Binance定义。可以在此处查询,也可以从Binance WEB应用程序的URL复制(不包括 _ 字符)。

如何使用Python轻松获取Binance历史交易

-starting_date and ending_date:不言自明。期望的格式为mm/dd/yyyy,或者使用Python lang语为%m/%d/%Y。

为了获取参数,我们将使用内置函数sys(这里没有什么花哨的地方),并且为了解析日期,我们将使用datetime库。

如何使用Python轻松获取Binance历史交易

我们将添加一天并减去一微秒,以使ending_date时间部分始终处于23:59:59.999,这使得获取当天间隔更加实用。

提取交易

使用Binance的API并使用aggTrades端点,我们可以在一个请求中获得最多1000 笔交易,如果我们使用开始和结束参数,则它们之间的间隔最多为一小时。

在出现一些失败之后,通过使用时间间隔获取(在某个时间点或另一个时间点,流动性会变得疯狂,我会失去一些宝贵的交易),我决定尝试from_id策略。

将aggTrades选择的端点,因为它返回压缩行业。这样,我们将不会丢失任何宝贵的信息。

获得压缩的总交易。在同一时间从同一订单以相同价格执行的交易将汇总数量。

该from_id策略是这样的:

我们要得到的第一笔交易starting_date 通过发送日期的时间间隔向终点。之后,我们将从第一个获取的交易ID开始获取1000个交易。然后,我们将检查最后一笔交易是否发生在我们之后ending_date。

如果是这样,我们已经遍历了所有时间段,可以将结果保存到文件中。否则,我们将更新from_id变量以获取最后的交易ID,然后重新开始循环。

取得第一个交易编号

如何使用Python轻松获取Binance历史交易

首先,我们创建一个new_end_date。那是因为我们aggTrades通过传递a startTime和endTime 参数来使用。

现在,我们只需要知道该期间的第一个交易编号,因此我们将增加60秒。在低流动性货币对中,可以更改此参数,因为不能保证在请求的第一天发生交易。

然后,使用我们的辅助函数解析日期,以使用该calendar.timegm函数将日期转换为Unix毫秒表示形式。该timegm函数是首选函数,因为它将日期保留为UTC。

如何使用Python轻松获取Binance历史交易

请求的响应是按日期排序的贸易对象列表,格式如下:

如何使用Python轻松获取Binance历史交易

因此,由于我们需要第一个交易ID ,因此我们将返回该response[0]["a"]值。

主循环

现在我们有了第一个交易ID,我们可以一次提取1000个交易,直到达到ending_date。以下代码将在我们的主循环中调用。它将使用from_id参数,放弃startDate和endDate参数,执行我们的请求。

如何使用Python轻松获取Binance历史交易

现在,这是我们的主循环,它将执行请求并创建我们的DataFrame。

如何使用Python轻松获取Binance历史交易

我们检查是否current_time包含最近获取的交易日期大于to_date,如果是,则我们:

  • 使用from_id参数获取交易

  • 使用从最新交易中获取的信息来更新from_id和current_time参数

  • 打印nice调试消息

  • pd.concat 这些交易与我们之前的交易 DataFrame

  • 使用sleep让Binance不会给我们一个429 Http响应

清洁和保存

组装完之后DataFrame,我们需要执行简单的数据清理。我们将删除重复trim的交易和之后发生的交易to_date(我们有这个问题,因为我们要获取1000笔交易中的大部分,因此,我们有望在目标结束日期之后执行一些交易)。

我们可以封装我们的trim功能:

如何使用Python轻松获取Binance历史交易

并执行我们的数据清理:

如何使用Python轻松获取Binance历史交易

现在,我们可以使用以下to_csv方法将其保存到文件中:

如何使用Python轻松获取Binance历史交易

我们还可以使用其他数据存储机制,例如Arctic。

最后:验证你的数据

在使用交易策略时,我们必须信任我们的数据,这一点很重要。通过应用以下验证,我们可以轻松地利用获取的交易数据来做到这一点:

如何使用Python轻松获取Binance历史交易

在代码段中,我们将其转换DataFrame为NumPy数组,并逐行迭代,检查交易ID是否每行递增1。

Binance交易ID是以递增方式编号的,并且是为每个交易品种创建的,因此,很容易验证数据是否正确。

PS:创建成功的交易策略的第一步是拥有正确的数据。

到此,相信大家对“如何使用Python轻松获取Binance历史交易”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何使用Python轻松获取Binance历史交易

本文链接: https://www.lsjlt.com/news/357392.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用Python轻松获取Binance历史交易
    鉴于某些策略需要一定水平的技术数据,而其他数据可能只需要花费一个小时的时间,该过程并不总是那么简单,而基础架构,可用性和连接性等元素可能会因数据类型的不同而大相径庭。但是为什么本文仅涉及获取“交易”数据,为什么我们使用Binance API...
    99+
    2023-05-14
    代码 Python Binance
  • 如何使用Python轻松获取Binance历史交易
    本篇内容主要讲解“如何使用Python轻松获取Binance历史交易”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Python轻松获取Binance历史交易”吧!数据频率和平衡我想说,交...
    99+
    2023-07-06
  • 如何使用Python和Numpy来分析Git提交历史?
    Git是一种分布式版本控制系统,被广泛应用于软件开发中。Git的提交历史记录了代码的演化过程,包括每次提交的作者、时间、修改的文件等信息。这些信息对于理解代码的演化过程、定位问题、评估贡献等都非常有用。在本文中,我们将介绍如何使用Pyth...
    99+
    2023-06-13
    git spring numpy
  • 阿里云免费云服务器六个月如何轻松获取和使用
    随着云计算的快速发展,越来越多的企业和个人开始选择使用云服务器来存储和处理数据。然而,对于许多人来说,云服务器的使用费用可能是一个问题。幸运的是,阿里云提供了免费云服务器六个月的试用期,让您可以无需担心费用问题,就可以尝试使用云服务器。 阿...
    99+
    2023-11-05
    阿里 六个月 轻松
  • Python 和 load bash:如何轻松地结合使用?
    Python 和 Bash 都是非常流行的编程语言,它们在不同的场景下都有自己的优势。Python 通常用于数据分析、机器学习、Web 开发等领域,而 Bash 则是一种强大的命令行工具,可以帮助用户快速完成各种任务。在实际工作中,我们经常...
    99+
    2023-11-10
    响应 load bash
  • python如何使用Scrapy爬取网易新闻
    这篇文章主要介绍python如何使用Scrapy爬取网易新闻,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 新建项目在命令行窗口下输入scrapy startproject scrapytest, 如下然后就自动...
    99+
    2023-06-14
  • 如何使用Python轻松实现可视化大屏
    这篇文章给大家分享的是有关如何使用Python轻松实现可视化大屏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。提到数据可视化,我们会想到 Plotly、Matplotlib、Pyecharts等可视化库,或者一些...
    99+
    2023-06-28
  • 如何用Python轻松开发数据库取数下载工具
    本篇文章给大家分享的是有关如何用Python轻松开发数据库取数下载工具,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1  简介这是我的系列教程「Pytho...
    99+
    2023-06-15
  • 如何使用Python获取昨天的日期
    目录在 Python 中获取昨天的日期Python 中的Date模块在 Python 中获取昨天日期的示例我们将通过多个示例介绍如何使用 Python 获取昨天的日期。 在 Pyth...
    99+
    2023-05-19
    Python获取昨天日期 Python获取日期
  • Python如何使用psutil获取系统信息
    三、psutil用Python来编写脚本简化日常的运维工作是Python的一个重要用途。在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等。要获取这些系统信息,Python可以通过subproces...
    99+
    2023-05-15
    Python psutil
  • 如何使用 Python 轻松处理分布式日志文件?
    随着互联网技术的发展和应用的广泛,日志文件已经成为了企业和组织中重要的数据来源。在分布式系统中,日志文件的数量会变得非常庞大,如何高效地处理这些日志数据是一个非常值得关注的问题。本文将介绍如何使用 Python 轻松处理分布式日志文件。 一...
    99+
    2023-09-07
    文件 分布式 日志
  • 如何使用Python和NumPy轻松掌握Unix编程算法?
    Unix编程算法是计算机科学中的一项重要内容,它可以帮助我们解决许多实际问题。Python和NumPy是两种非常流行的编程语言,它们可以帮助我们轻松掌握Unix编程算法。本文将介绍如何使用Python和NumPy来实现Unix编程算法。 一...
    99+
    2023-09-27
    numy unix 编程算法
  • python中如何使用get获取指定键值
    小编给大家分享一下python中如何使用get获取指定键值,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、说明在使用字典时,很少直接输出它的内容。一般需要根据指定的键得到相应的结果。Python 中推荐的方法是使用字典对...
    99+
    2023-06-15
  • 如何使用五行Python代码轻松实现批量抠图
    目录前言准备工作代码实现补充:可能遇到的坑总结前言 你是否曾经想将某张照片中的人物抠出来,然后拼接到其他图片上去,从而可以即使你在天涯海角,我也可以到此一游? 专业点的人使用 Pho...
    99+
    2024-04-02
  • 如何使用Python爬取历年高考数据并分析
    这篇文章给大家分享的是有关如何使用Python爬取历年高考数据并分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。开发工具**Python版本:**3.6.4相关模块:pyecharts模块;以及一些Python...
    99+
    2023-06-15
  • Python中如何获取文件系统的使用率
    Python中如何获取文件系统的使用率,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。from subprocess import Popen, PIPE# 执行操作系统命令...
    99+
    2023-06-02
  • 如何在python中使用sys模块获取参数
    本篇文章给大家分享的是有关如何在python中使用sys模块获取参数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、 sys.argv获取脚本传递的所有参数,返回一个列表。列...
    99+
    2023-06-15
  • 学习Python编程算法时,如何利用load函数轻松读取数据?
    Python是一种非常流行的编程语言,其简单易学的特点使其成为了众多编程初学者的首选。然而,想要真正掌握Python编程,就需要学习Python编程算法。在学习编程算法的过程中,读取数据是必不可少的一步,而Python中的load函数则是一...
    99+
    2023-06-23
    编程算法 学习笔记 load
  • chatgpt赋能python:使用Python来进行抢购,如何轻松秒杀商品
    使用Python来进行抢购,如何轻松秒杀商品 在现代社会,大量的人们使用电商平台来完成他们的购物需求。然而,在疯狂的购物节日时,例如"双11",商品往往会被抢购一空。为此,许多人希望能够使用自动化脚本...
    99+
    2023-10-07
    chatgpt python 开发语言 计算机
  • Python 容器打包:如何使用 load() 方法轻松加载数据?
    Python 是一种高级编程语言,具有广泛的应用领域,包括数据分析、机器学习、人工智能等。在这些应用领域中,数据处理是不可避免的一部分。Python 提供了许多方法来处理数据,其中之一是容器打包。容器打包是一种将多个数据对象组合成一个对象...
    99+
    2023-10-31
    容器 打包 load
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作