pgsql函数定时更新表_量化交易中定时通过Tushare更新每日股票数据

一般在做回测的时候,如果不是实时策略,都没有必要实时从Tushare拉取数据。通常做法就是,将历史数据提前下载到本地数据库,然后每天设定定时任务进行更新。

在python里面有个定时器组件可以完成指定的任务

# pip install schedule

import schedule
import time
from dao import jobs

# 具体的定时任务调用,通过字符串调用函数
def on_timer(method):
    getattr(jobs, method)()

schedule.every().day.at("19:30").do(on_timer, "update_basic")
schedule.every().day.at("20:30").do(on_timer, "update_trade")

在jobs.py里的更新日交易数据
# 每天更新股票交易数据
def update_trade():
    if is_holiday():
        return False

    global pro
    day = time.strftime("%Y%m%d", time.localtime())
    daily = pro.daily(trade_date=day)
    pd.io.sql.to_sql(daily, 'trade_data', con=engine, index=False, if_exists='append', chunksize=500)
    print('%s更新了%s条记录' % (day,len(daily)))

以上是实现每日更新股票数据的核心代码。

97a4feb6e7fe5a9a67d4b4bf3ba3b62c.png

如果表很大的情况下,为了提高回测代码的执行效率,我们拆分出最近6年的数据到一张新表里,并定时每天更新。数据库分表定时更新的实现,既可以通过在Python里编写定时逻辑,也可以在MySQL中设置定时事件的方式,后期如果有合适的使用场景再介绍MySQL定时事件,当前我们选择是直接在Python中编写代码逻辑来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值