千家信息网

怎么进行针对vnpy的不同期货品种行情数据清理

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这期内容当中小编将会给大家带来有关怎么进行针对vnpy的不同期货品种行情数据清理,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。vnpy自带的行情清理功能较为简单,只
千家信息网最后更新 2025年11月13日怎么进行针对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安全错误 数据库的锁怎样保障安全 嵌入式软件开发流程分为 江苏进口软件开发销售公司 魔兽世界服务器连接不上酒店 车联网网络安全研究报告 直播2021宁夏网络安全宣传周 青海运营网络技术服务怎么样 人事部数据库管理专业 华为的软件开发工程师是哪个证书 怎么样建一个数据库 成都软件开发薪资调查 吉大数据库应用技术在线作业 台电服务器设置 数据库的安全机制的四个层次 编程和数据库哪个好 广州店铺帮网络技术有限公司客服 浙江慧丰互联网科技股份有限公司 专业生产数据库备份 网络安全法中对境外服务器 如何给服务器开通网络 钧保互联网科技有限公司 崇明区专业型数据库销售品质保障 数据库一般打补丁吗 兴县川安互联网科技有限公司 oa数据库备份的作用 软件开发编码标准 盐城市税务安全接入服务器地址 网络安全工程师未来发展如何 visio数据库表关系 什么网络技术适合个人发展的 云服务器怎么做的
0