CCXT目前是加密货币量化交易者使用的最多的非常好用的库。尽管距离CCXT发布已经过去了好几年,笔者最近才刚开始深入接触CCXT库,该系列将致力于分享笔者在CCXT使用、真实交易中遇到的各类问题及解决方案。
在真实交易前面临的第一个问题就是时间戳,时间戳是一个不可避免的问题。时间戳指的是UNIX时间戳,即从UTC时间1970年1月1日0时0分0秒到现在所过去的时间数。
时间戳无论在交易还是数据研究中都具有重要意义。在实际交易中,当交易信号产生后,应检查本地时间戳与服务器时间戳的差异,若两个时间戳差距过大,应当停止当前交易,等待下一次交易信号产生。在回测数据的研究中,CCXT一般返回的都是13位的UNIX时间戳,因此也需要将时间戳转换成正常日期后,才方便进一步地回测研究。
UNIX时间戳与ISO8601
Unix时间戳根据精度不同,大致有10位(秒级)、13位(毫秒级)、19位(纳秒级)。
大多数交易所,包括CCXT的接口目前提供的是13位的UNIX时间戳,即毫秒级时间戳。本文将针对13位UNIX时间戳与ISO8601时间格式转换进行。
注:Unix毫秒级时间戳 = Unix秒级时间戳 * 1000
注:交易所目前提供的ISO8601格式为 “2021-10-09T10:08:09.999Z”
Python代码实现
CCXT其实内嵌了UNIX时间戳对ISO8601格式时间的转换函数,但为了深入理解概念,笔者分别展示手撸代码部分和内嵌函数调用部分。
手撸timestamp2iso
import datetime
def timestamp2iso(timestamp,format='%Y-%m-%dT%H:%M:%S.%fZ'):
"""
时间戳转换到ISO8601标准时间(支持微秒级输出 YYYY-MM-DD HH:MM:SS.mmmmmm)
:param timestamp:时间戳,支持 秒,毫秒,微秒级别
:param format:输出的时间格式 默认 iso=%Y-%m-%dT%H:%M:%S.%fZ;其中%f表示微秒6位

本文详细介绍了在使用CCXT进行加密货币量化交易时,如何处理时间戳问题,包括交易前后检查时间戳差异,以及如何将13位UNIX时间戳转换为ISO8601格式。作者还提供了Python代码示例,包括手动实现和使用内置函数的方法。

6606

被折叠的 条评论
为什么被折叠?



