【python】datetime模块

介绍

本文以量化交易实战为学习导向,介绍了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 <class 'datetime.datetime'>

转化为日期

current_date = current_dt.date()
print(current_date,type(current_date))
2022-06-07 <class 'datetime.date'>

转化为时间

current_time = current_dt.time()
print(current_time,type(current_time))
21:08:05.708484 <class 'datetime.time'>
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 <class 'datetime.timedelta'>

检查偏移量

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.127347

datetime转化为字符串

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 204635 <class 'datetime.datetime'>

2.VeighNa中底层接口的时间处理

在这里插入图片描述

在ctp_gateway文件中我们可以在这个回调函数中打印出来:这个函数每2秒会被调用一次,打印出交易所推送的信息。

在这里插入图片描述
运行VegihNa后,输出信息:
在这里插入图片描述

在这里插入图片描述
在数据库中记录时间戳的时候,我们需要把两个交易所的时间转换为同一时间,不然一个是北京时间一个是芝加哥时间,后面跑回测的时候还需要自己再做转换,非常麻烦。

我们在之前一片文章中有聊到这个问题【VeighNa】VeighNa载入csv历史数据

我们看到下面这个代码,用了datetime.strptime将字符串转化为datetime对象,然后再调用pytz包下的locallize实例化这个dt对象,转化为设置好的带有时区的datetime对象。
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m 宽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值