栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

小散量化炒股记|如何安排量化机器人日程?快设计一款任务调度器!

小散量化炒股记|如何安排量化机器人日程?快设计一款任务调度器!

前言

作为一套实战版的量化交易系统,应该要有一个任务日程表,在指定的时间做指定的事情才对!

比如A股开盘时间是工作日早上9:30到11:30,下午13:00到15:00。那么我们的量化系统就得在这个时间段获取实时数据、执行策略、下单交易。

当股市收盘之后,量化系统也不能闲着,要更新当天的行情数据,动态调整股票池、回测策略等等。

再比如做期货夜盘、美股等标的,开市时间是晚上,那么也要把量化系统的执行时间调整一致才行。

所以我们需要给我们的量化交易系统安排上日程,让它根据我们的要求工作。

于是我们要设计一个任务调度器,接下来就和大家分享下如何设计一款任务调度器吧!


设计方案

整体设计结构如上图所示。这个结构是多任务在量化交易中的典型应用场景之一——在进程中开多线程。

任务调度器是以进程方式运行,在进程中周期去查询任务清单,当监测到有任务该运行时,开启线程去执行这个任务,这样的好处是执行的任务不会影响任务调度器的运行。

另外主要考虑到任务调度器监测任务的时间精度,比如是1秒钟,还是10秒钟,或是1分钟轮询一次任务清单,这取决于执行任务对激活时间的精度要求。

结构中的几个设计要点:

进程使用multiprocessing库;

线程使用threading库;

任务清单用namedtuple实现,它是高阶的数据结构,可以对每个成员单独命名。


模版使用

为了帮助大家以最快的方式实现自己的任务调度器,这里提供给大家一个最小化的框架模版。

定义任务调度器类myScheduler,其中包括如下几个方法:

addTask:往任务清单中添加任务,以及运行的时间

_run:调度器周期执行,监测任务的启动

Start:启动调度器

Shutdown:停止调度器

我们以A股为例,任务清单中添加了实盘tick数据获取和收盘历史数据下载两个任务。

实盘tick数据采样类TimeTrigger,其中包括如下几个方法:

get_curtime:获取最新的时间

in_trade_time:判断当前是否在交易时间段

before_trade_time:判断当前是否在开盘前

after_trade_time:判断当前是否已经收盘了

trigger_run:线程2-3秒周期执行,爬取实盘数据

收盘历史数据下载是download_history_job函数,收盘后的历史数据下载不像实盘那样,对执行时间精度要求那么高,只要到时间点触发即可。

注册任务到清单中,除了要添加任务对象外,还要添加执行的时间,比如周一到周五每天09:25:00执行时间数据获取,16:30:00执行历史数据下载:

scheduler = myScheduler()
scheduler.addTask(download_history_job, [1, 2, 3, 4, 5], '16:30:00')
scheduler.addTask(sample_realtime_job, [1, 2, 3, 4, 5],  '09:25:00')

任务调度器的监测逻辑如下所示,需要注意的是调试时记得手动把任务启动时间设置在当前时间之后,这样才能触发启动任务。

if self._pre_time is not None:
    for task in self._tasks_table:
        if cur_week in task.dayOfWeek and (self._pre_time <= task.timeOfDay < cur_time):  
            task.subtask()

以上是关于量化系统任务调度框架的整体介绍,后续大家可以根据自己的需求逐步去完善这个模版框架,二次更改成符合自己的调度器。


完整代码我们会上传星球《Python量化场景编程技巧与方法》

目前我们有两个星球《玩转股票量化交易》和《Python量化场景编程技巧与方法》。

《玩转股票量化交易》【进阶】:提供最新版量化系统QTYX的下载,以及搭建量化系统的高阶干货。

《Python量化场景编程技巧和方法》【基础】:分享一些偏基础的关于Python编程技巧、Pandas编程技巧、数据库技巧、可视化编程技巧等等。

加入星球《玩转股票量化交易》的会员可以免费加入星球《Python量化场景编程技巧与方法》,微信联系我加入!!

元宵大师的量化交易书籍开售!!
京东、当当、天猫有售!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/773767.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号