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

编程入门 行业动态 更新时间:2024-10-18 22:29:40

小散量化炒股记|如何安排量化机器人<a href=https://www.elefans.com/category/jswz/34/1769813.html style=日程?快设计一款任务调度器!"/>

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

前言

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

比如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量化场景编程技巧与方法》,微信联系我加入!!

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

更多推荐

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

本文发布于:2024-02-25 09:00:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1698443.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:日程   机器人

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!