- 介绍
- 1.datetime基础
- 导入相关包
- 获取当前时间
- 转化为日期
- 转化为时间
- 创建自定义时间
- 求时间差值
- 检查偏移量
- 计算相对日期
- datetime转化为字符串
- 字符串转datetime
- 2.VeighNa中底层接口的时间处理
–
介绍本文以量化交易实战为学习导向,介绍了datetime模块在量化交易中的使用,学习本文可以满足交易中对时间数据格式的常用处理方法。
1.datetime基础 导入相关包
from datetime import date,time,datetime,timedelta获取当前时间
current_dt = datetime.now() print(current_dt,type(current_dt))
2022-06-07 21:08:05.708484转化为日期
current_date = current_dt.date() print(current_date,type(current_date))
2022-06-07转化为时间
current_time = current_dt.time() print(current_time,type(current_time))
21:08:05.708484
endtime = time(14,55)
print(endtime)
if current_time >= endtime:
print("执行平仓操作")
else:
print("执行正常交易")
14:55:00 执行平仓操作创建自定义时间
option_expiry = datetime(2023,6,7,21,13,0) print(option_expiry)
2023-06-07 21:13:00求时间差值
time_left = option_expiry - current_dt print(time_left,type(time_left))
365 days, 0:04:54.291516检查偏移量
print("剩余天数",time_left.days)
print("剩余秒数",time_left.total_seconds())
剩余天数 365 剩余秒数 31536294.291516计算相对日期
today = datetime.now() yesterday = today - timedelta(days=1) tomorrow = today + timedelta(days=1) print(today) print(yesterday) print(tomorrow)
2022-06-07 21:19:38.127347 2022-06-06 21:19:38.127347 2022-06-08 21:19:38.127347datetime转化为字符串
current_dt.strftime("%Y-%m-%d %H:%M:%S.%f China Beijing Time")
'2022-06-07 21:08:05.708484 China Beijing Time'字符串转datetime
demo_str = "2022/6/7 204635" demo_dt = datetime.strptime(demo_str,"%Y/%m/%d %H%M%S") print(demo_str,type(demo_dt))
2022/6/7 2046352.VeighNa中底层接口的时间处理
在ctp_gateway文件中我们可以在这个回调函数中打印出来:这个函数每2秒会被调用一次,打印出交易所推送的信息。
运行VegihNa后,输出信息:
在数据库中记录时间戳的时候,我们需要把两个交易所的时间转换为同一时间,不然一个是北京时间一个是芝加哥时间,后面跑回测的时候还需要自己再做转换,非常麻烦。
我们在之前一片文章中有聊到这个问题【VeighNa】VeighNa载入csv历史数据
我们看到下面这个代码,用了datetime.strptime将字符串转化为datetime对象,然后再调用pytz包下的locallize实例化这个dt对象,转化为设置好的带有时区的datetime对象。



