怎么进行针对vnpy的不同期货品种行情数据清理
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这期内容当中小编将会给大家带来有关怎么进行针对vnpy的不同期货品种行情数据清理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。vnpy自带的行情清理功能较为简单,只
千家信息网最后更新 2025年01月31日怎么进行针对vnpy的不同期货品种行情数据清理
这期内容当中小编将会给大家带来有关怎么进行针对vnpy的不同期货品种行情数据清理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
vnpy自带的行情清理功能较为简单,只是在清除非交易时段,没有考虑周六日;而且只是笼统给了一个最大时间交易范围,像股指期货没有夜盘,螺纹钢晚上11点就结束,但是默认只是结束在凌晨两点半这个最大交易时间。 所以写了一个方法,按照不同品种,更细致的清理。
可以直接把这个方法插入\DataRecording\runDataCleaning.py, 然后替代原来方法。也可以自己另外调用。
# ----------------------------------------------------------------------def cleanDataAdv(dbName, collectionName, start): """清洗数据""" #新的静态数据 # 这里以商品期货为例 MORNING_START = time(9, 0) MORNING_REST = time(10, 15) MORNING_RESTART = time(10, 30) MORNING_END = time(11, 30) AFTERNOON_START = time(13, 30) AFTERNOON_END = time(15, 0) NIGHT_START = time(21, 0) NIGHT_END = time(2, 30) #股指期货 STOCK_FUTURE = ["IC", "IF", "IH"] MORNING_START_STOCK = time(9, 30) AFTERNOON_START_STOCK = time(13,0) AFTERNOON_END_STOCK = time(15, 0) #晚上11点结束交易,不全,请自行维护 PM11CLOSE_FUTURE = ['rb','ru','bu','hc','sp'] NIGHT_END_11 = time(23, 00) #晚上11点半结束交易,不全,请自行维护,大连只有一位标志,所以带1 PM1130CLOSE_FUTURE = ['FG','MA','SR','TA','RM','OI','CF','CY','ZC','i1','j1','m1','p1','y1'] NIGHT_END_1130 = time(23, 30) #凌晨1点半结束交易,不全,请自行维护 AM1CLOSE_FUTURE = ['cu','pd','al','zn'] NIGHT_END_AM1 = time(1, 00) print(u'\n清洗数据库:%s, 集合:%s, 起始日:%s' % (dbName, collectionName, start)) mc = MongoClient('localhost', 27017) # 创建MongoClient cl = mc[dbName][collectionName] # 获取数据集合 d = {'datetime': {'$gte': start}} # 只过滤从start开始的数据 cx = cl.find(d) # 获取数据指针 for data in cx: # 获取时间戳对象 dt = data['datetime'].time() # 默认需要清洗 cleanRequired = True ####如果是股指期货,这没有上午休息和夜盘,9点半到11点半,下午1点到下午三点,周六日无行情 if collectionName[:2] in STOCK_FUTURE: if data['datetime'].weekday() is not (5 or 6): if ((MORNING_START_STOCK <= dt < MORNING_END) or (AFTERNOON_START_STOCK <= dt < AFTERNOON_END_STOCK)): cleanRequired = False ####如果是11点结束,则周六日无行情 elif collectionName[:2] in PM11CLOSE_FUTURE: if data['datetime'].weekday() is not (5 or 6): if ((MORNING_START <= dt < MORNING_REST) or (MORNING_RESTART <= dt < MORNING_END) or (AFTERNOON_START <= dt < AFTERNOON_END) or ( NIGHT_START <= dt= NIGHT_START) or (dt < NIGHT_END_AM1)): cleanRequired = False else: # 如果在交易事件内,则为有效数据,无需清洗 if data['datetime'].weekday() is not 6: if ((MORNING_START <= dt < MORNING_REST) or (MORNING_RESTART <= dt < MORNING_END) or (AFTERNOON_START <= dt < AFTERNOON_END) or (dt >= NIGHT_START) or (dt < NIGHT_END)): cleanRequired = False # 如果需要清洗 if cleanRequired: print(u'删除无效数据,时间戳:%s' % data['datetime']) cl.delete_one(data) print(u'清洗完成,数据库:%s, 集合:%s' % (dbName, collectionName))
上述就是小编为大家分享的怎么进行针对vnpy的不同期货品种行情数据清理了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
数据
交易
清洗
期货
时间
不同
品种
行情
只是
方法
最大
有效
事件
内容
数据库
分析
笼统
细致
专业
中小
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库安全审计建模
网络安全罪最新消息
数据库连接类命名
网络安全咨询德勤
江苏c语言软件开发哪家专业
数据库创建表中备注是啥
局域网内找到服务器
软件开发要写代码吗
服务器连接怎么查看
王者服务器满了怎么新建区
网络安全素养教育是什么考试
使用网络安全密码
测试人员在软件开发中的作用
单招报名服务器
网络应用安全跟软件开发
开放性事务软件开发
sql2005怎么备份数据库
ldap同步数据库
数据库属于服务器还是虚拟机
网络安全文字的手抄报
我的世界闪送服务器
元关系数据库
提示网络服务器无法连接数据库
网络安全措施哪个国家最好
网络安全风险识别和管控措施
软件开发制作计划书
湖南金谱刷互联网科技有限公司
localhost服务器
网络安全方面微课
安卓应用软件开发区网红