Thenextquant

Thenextquant

  • Docs
  • Tutorial
  • Help
  • Blog

›高级指南

开始

  • 概述
  • 安装

教程

  • 快速入门
  • 服务配置
  • 日志
  • 市场数据
  • 交易

主要概念

  • 交易所
  • 交易对
  • 现货交易
  • 期货交易
  • 订单

高级指南

  • 定时任务
  • RABBITMQ

API参考

  • 参考指南

操作指南

  • 操作指南

定时任务

定时任务是策略里面经常用到的一个模块,Thenextquant通过服务器心跳来实现定时任务。 定时任务模块可以注册任意多个回调函数,利用服务器每秒执行一次心跳的过程,创建新的协程,在协程里执行回调函数。

1. 服务器心跳配置

{
    "HEARTBEAT": {
        "interval": 1, 
        "broadcast": 10
    }
}

参数说明:

  • interval int 心跳打印时间间隔(秒),0为不打印 可选,默认1
  • broadcast int 心跳广播间隔(秒),0为不广播 可选,默认0

配置文件可参考 服务配置模块;

2. 注册定时任务

定时任务模块可以注册任意多个回调函数,利用服务器每秒执行一次心跳的过程,创建新的协程,在协程里执行回调函数。

# 导入模块
from quant.tasks import LoopRunTask

# 定义回调函数
async def function_callback(*args, **kwargs):
    pass

# 回调间隔时间(秒)
callback_interval = 5

# 注册回调函数
task_id = LoopRunTask.register(function_callback, callback_interval)

# 取消回调函数
LoopRunTask.unregister(task_id)  # 假设此定时任务已经不需要,那么取消此任务回调

注意:

  • 回调函数 function_callback 必须是 async 异步的,且入参必须包含 *args 和 **kwargs;
  • 回调时间间隔 callback_interval 为秒,默认为1秒;
  • 回调函数将会在心跳执行的时候被执行,因此可以对心跳次数 heartbeat.count 取余,来确定是否该执行当前任务;

3. 协程任务

协程可以并发执行,提高程序运行效率。

# 导入模块
from quant.tasks import SingleTask

# 定义回调函数
async def function_callback(*args, **kwargs):
    pass
    
# 执行协程任务
SingleTask.run(function_callback, *args, **kwargs)

注意:

  • 回调函数 function_callback 必须是 async 异步的;
← 订单RABBITMQ →
Thenextquant
文档
Getting StartedGuidesAPI Reference
介绍
框架介绍关于我们
More
BlogGitHubStar
Thenextquant Open Source
Copyright © 2019 Thenextquant