首页 > 编程问答 >与币安服务器的时差

与币安服务器的时差

时间:2024-07-31 12:56:43浏览次数:13  
标签:python time unix-timestamp binance

我正在尝试用 Python 构建一个非常简单的自动化工具,以便我可以在币安上发布订单。这实际上是在牢记“目标”(终点线)的同时掌握 Python 的窍门。

我正在使用这个 很棒的库 其中我想做的基本事情就是找出答案如果我的计算机时间和币安服务器的时间之间存在时间差。

为此,我正在使用 get_server_time 方法。两次都以 EPOCH 返回,这是可以的,但有一个很小的时差。

对于我来说传递订单或继续我的旅程不是问题,但我想了解其背后的原因;我很想彻底了解并了解这一切的来龙去脉。

这是我的代码:

# Get Server Time
def get_server_time():
    ts = client.get_server_time()['serverTime']
    server_time = datetime.utcfromtimestamp(ts / 1000).strftime('%Y-%m-%d %H:%M:%S')
    return server_time

print(round(time.time()*1000))
print(client.get_server_time()['serverTime'])

# Check if computer time is the same as server time
if time.time()*1000 != client.get_server_time()['serverTime']:
    print("There is a problem in time sync.")
else:
    print("Your computer time matches server time.")

它返回一个很小的时间差,如下所示:

1639147119502
1639147120114
There is a problem in time sync.

我尝试同步我的通过各种方式设置计算机时钟(最著名的是你在 Google 上看到的;摆弄 Windows10 的时间服务)。

这背后有什么你们能想到的原因吗?

提前非常感谢;)


你遇到的时间差是由你的计算机和币安服务器之间不可避免的小延迟造成的。你的代码在两个不同的时间点获取时间戳,并在它们之间存在一个很小的延迟。

让我们分解一下发生了什么:

  1. print(round(time.time()*1000)) : 这一行获取你计算机上的当前时间戳(以毫秒为单位)。
  2. print(client.get_server_time()['serverTime']) : 这一行向币安服务器发出请求以获取其时间戳。这需要一些时间,通常是几毫秒或几十毫秒,具体取决于你的互联网连接和币安服务器的响应时间。
  3. 比较 : 当你比较这两个时间戳时,币安服务器的时间戳将更大,因为它是在你的计算机获取其时间戳之后获取的。

这不是同步问题,而是网络延迟的结果。 你不可能完全消除这种延迟。

对于你的交易机器人来说,这不是问题的原因:

  • 币安库的设计考虑了这种延迟。当你下订单时,库会自动使用服务器的时间戳,而不是你的本地计算机的时间戳。
  • 你观察到的时间差非常小(在本例中约为 61 毫秒),与交易决策相关的精度水平相比可以忽略不计。

如果你仍然担心时间差:

  • 不要试图完美同步 : 相反,专注于在你的代码中处理小的差异。例如,使用服务器时间来安排订单,而不是依赖你的本地计算机时间。
  • 使用 Binance API 中的 recvWindow 参数 : 当向 Binance 发送请求时,此参数允许你设置订单被视为有效的最大时间差(以毫秒为单位)。这可以帮助你处理潜在的时间戳问题。

请记住,在构建交易机器人时,理解和处理网络延迟至关重要。通过专注于处理小的时差而不是实现完美同步,你可以创建一个更强大可靠的交易机器人。

标签:python,time,unix-timestamp,binance
From: 70306172

相关文章

  • 基于python电商个性化推荐系统【源码+文档+PPT】
    精彩专栏推荐订阅:在下方专栏......
  • 探索 Python 的广泛应用:从开发到数据科学
    目录引言Python的发展历史Python的特点Python在Web开发中的应用Django框架Flask框架其他Web框架Python在数据科学中的应用数据分析机器学习深度学习Python在自动化和脚本编写中的应用系统管理和自动化网络爬虫Python在游戏开发中的应用PygamePython在......
  • 碰撞检测 | 矩形增量膨胀安全走廊模型(附C++/Python仿真)
    目录0专栏介绍1安全走廊建模的动机2矩形增量膨胀算法3算法仿真3.1C++实现3.2Python实现0专栏介绍......
  • python - 构建奇点容器时在 pyproject.toml 中找不到 [tool.poetry] 部分
    我正在尝试构建一个在HPC环境上运行的奇点容器。我正在使用poetry来管理python包。我的pyproject.toml文件的内容如下:[tool.poetry]name="haqc"version="0.1.0"description=""authors=["VivekKatial<[email protected]>"......
  • 如何在Python中处理FileNotFoundException
    我有一个函数可以从路径读取avro文件(按日文件夹)并将其写入相同的路径(聚合到按月的文件夹)。如果文件夹有.avro文件,该函数可以正常工作。但如果文件夹为空,我会收到错误。java.io.FileNotFoundException:Noavrofilesfound.Iffilesdon'thave.avroextension,set......
  • 有谁知道如何在 ROS 中使用 python 开发赛车模拟编码?
    在模拟中,主要目标是让自动驾驶汽车读取AprilTags并根据标牌提供的说明进行导航。AprilTags是一种基准标记,可作为重要的视觉提示,传达有关汽车周围环境的信息,例如方向、速度限制和其他关键路标。汽车的车载视觉系统应该检测这些标签,解码嵌入的数据,并相应地调整其运动。这包括在......
  • python实现提取视频帧的图片
    文章目录1、需求痛点2、完整代码⭐3、代码分析3.1、需要改动的地方3.2、OpenCV库的使用3.3、多线程技术4、执行效率5、效果展示⭐6、注意事项......
  • 三种语言实现差分(C++/Python/Java)
    题目输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l,r,c表示将序列中[l,r]之间的每个数加上c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数序列。接下来m行,每行包含三个整数l,r,c,表......
  • Python编程的16个坏习惯
    1、手动进行字符串格式化#坏习惯name="Alice"greeting = "Hello, " + name +"!" #好习惯name="Alice"greeting=f"Hello,{name}!" 理由:使用+进行字符串拼接会导致代码可读性差,而且在复杂情况下容易出错,f-string可读性更好 2、手动关闭文件#坏习惯......
  • Flask框架入门:快速搭建轻量级Python网页应用
    转载: Flask框架入门:快速搭建轻量级Python网页应用1. Flask基础Flask是一个使用Python编写的轻量级Web应用框架。它的设计目标是让Web开发变得快速简单,同时保持应用的灵活性。Flask依赖于两个外部库:Werkzeug和Jinja2,Werkzeug作为WSGI工具包处理Web服务的底层细节,Jinja2作为......