[ptrade交易实战]第七篇 定时周期函数

前言

这些函数主要是用于多次周期性完成某个任务,比如我要每天都要获取一个数据,就可以用这些函数!

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开通详则》来获取,感谢看到这里,如果有更多疑问欢迎在评论区支出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值