前言
这些函数主要是用于多次周期性完成某个任务,比如我要每天都要获取一个数据,就可以用这些函数!
ptrade的开通渠道可以看文章末尾!
一、run_daily——按日周期处理
run_daily(context, func, time='9:31')
这个函数的运行周期是每天,也即是你设置一天中的某个时间,第二天在到达这个时间的时候会自动处理!
注意事项:
1、该函数只能在初始化阶段initialize函数中调用。
2、该函数可以多次设定,以实现多个定时任务。
3、股票策略回测中,当回测周期为分钟时,time的取值指定在09:31~11:30与13:00~15:00之间,当回测周期为日时,无论设定值是多少都只会在15:00执行;交易中不受此时间限制。
context: context对象,存放有当前的账户及持仓信息(Context);
func: 自定义函数名称,此函数必须以context作为参数(Callable[[Context], None]);
time: 指定周期运行具体触发运行时间点,交易场景可设置范围:00:00~23:59,必传字段。
示例
# 定义一个财务数据获取函数,每天执行一次
def initialize(context):
run_daily(context, get_finance, time='9:31')
g.security = '600570.SS'
set_universe(g.security)
def get_finance(context):
re = get_fundamentals(g.security,'balance_statement','total_assets')
log.info(re)
def handle_data(context, data):
pass
二、run_interval ——按设定周期处理
run_interval(context, func, seconds=10)
这个函数是用来设定时隔多久运行的函数,
注意事项:
1、该函数只能在初始化阶段initialize函数中调用。
2、该函数可以多次设定,会以多个线程并行运行,但要小心不同线程之间的逻辑关联处理
3、seconds设置最小时间间隔为3秒,小于3秒默认设定为3秒。
示例
# 定义一个周期处理函数,每10秒执行一次
def initialize(context):
run_interval(context, interval_handle, seconds = 10)
g.security = '600570.SS'
set_universe(g.security)
def interval_handle(context):
snapshot = get_snapshot(g.security)
log.info(snapshot)
def handle_data(context, data):
pass
结语
设置周期循环的函数就这两个,但是也完全覆盖了我们的需求!
ptrade的渠道可以通过《ptrade开通详则》来获取,感谢看到这里,如果有更多疑问欢迎在评论区支出!