首页 > 编程语言 >掘金量化策略运行时,如何防止程序中断导致的数据丢失?

掘金量化策略运行时,如何防止程序中断导致的数据丢失?

时间:2024-11-21 19:13:59浏览次数:3  
标签:context 本地 data 丢失 file holding 量化 掘金 local

背景

掘金量化策略运行时,有些客户需要将电脑带回家/带去上班,或者遇到断网、断电、电脑更新等情况导致的关机等,策略就需要重新启动,但启动后历史数据就缺失了,尤其是一些更策略有关的变量,例如实盘交易的开仓时间,持仓周期,持仓以来最高点/最低点等自定义信息。

那有这种需求的时候,就需要做数据的本地化保存了。

实操

数据的本地化保存有多种方法,简单点的通过xls表格/txt/json/pkl等文件存储的方式就行。

每次策略初始化的时候,就读取本地文件,如果没有本地文件或者文件为空的时候,就在程序中正常创建相关变量;当有数据更新的时候,就保存一下本地数据,或者定时盘后保存。

以下是一个pkl文件示例,记录持仓周期的数据代码:

1.在初始化中读取本地文件,并创建一个更新本地文件的定时任务。


# 策略中必须有init方法
def init(context):
    # 本地数据:持仓周期
    if context.mode==MODE_LIVE:
        # 本地缓存数据的地址
        context.file_url = "./local_data.pkl"  
        # # 首次运行时,判断该文件是否存在,不存在则创建
        if not os.path.exists(context.file_url):
            local_file = open(context.file_url,"w")
            local_file.close()
        # 如果本地数据文件内有数据,就读取本地的数据
        if os.path.getsize(context.file_url)>0:                    
            load_base_data(context)
        else:
            context.holding_cycle = {}                                 # 持仓周期
    else:
        context.holding_cycle = {}                                 # 持仓周期

    # 盘后定时任务
    schedule(schedule_func=after_market, date_rule='1d', time_rule='15:03:00')


def load_base_data(context):
    """载入本地数据"""
    local_file=open(context.file_url,"rb")
    data=pickle.load(local_file)
    local_file.close()
    # 载入本地缓存数据
    context.holding_cycle = data['context.holding_cycle']          # 持仓周期


def updata_local_data(context):
    '''更新本地数据'''
    context.dynamic_parameter = {'context.holding_cycle':context.holding_cycle}
    local_file = open(context.file_url, 'wb')
    pickle.dump(context.dynamic_parameter,local_file)
    local_file.close()


def after_market(context):
    """盘后定时任务:更新本地数据"""
    # # 更新本地数据
    if context.mode==MODE_LIVE:
        updata_local_data(context)

另外呢,这个代码里面设定了一个条件:实时模式下才生效,防止回测模式下也保存读取文件,降低了回测速度。

OK~你的策略有遇到了什么问题,或者需要代写策略的,私聊我~(^_-)

标签:context,本地,data,丢失,file,holding,量化,掘金,local
From: https://blog.csdn.net/weixin_41316736/article/details/143921295

相关文章

  • 量化交易软件和普通交易软件有哪些不一样的地方?
    炒股自动化:申请官方API接口,散户也可以python炒股自动化(0),申请券商API接口python炒股自动化(1),量化交易接口区别Python炒股自动化(2):获取股票实时数据和历史数据Python炒股自动化(3):分析取回的实时数据和历史数据Python炒股自动化(4):通过接口向交易所发送订单Python炒股自动化(5):......
  • phpcmsV9 管理员密码丢失或忘记了怎么办
    如果你忘记了PHPcmsV9的后台管理密码,可以通过以下步骤进行重置:备份数据库:在进行任何数据库操作之前,请确保备份当前的数据库,以防止数据丢失。登录数据库:使用数据库管理工具(如phpMyAdmin)登录到你的数据库。找到用户表:寻找名为 v9_admin 的表,这是存储管理员账户......
  • 股票高频量化是什么,有哪些特点,策略及风险?
    Python股票接口实现查询账户,提交订单,自动交易(1)Python股票程序交易接口查账,提交订单,自动交易(2)股票量化,Python炒股,CSDN交流社区>>>定义与内涵股票高频量化是量化交易在股票市场中的高频次应用。它借助复杂的数学模型、算法以及高速的计算机程序,在极短时间内对股票市场......
  • 最新全平台多功能全自动掘金合集挂机项目
    项目介绍:目前市面上种类最多,平台齐全的挂机型工具,包含了:微信阅读,卷轴平台,广告掘金,自动养机,短视频挂机,等各大平台的脚本,就一个软件包含了几十种的科技,并且还在不断的更新可谓是一招鲜吃遍天,有了一款软件,最起码相当于下载了十几种辅助科技,绝对的市场爆款包含了:卷轴......
  • 最新全平台多功能全自动掘金合集挂机项目
    项目介绍:目前市面上种类最多,平台齐全的挂机型工具,包含了:微信阅读,卷轴平台,广告掘金,自动养机,短视频挂机,等各大平台的脚本,就一个软件包含了几十种的科技,并且还在不断的更新可谓是一招鲜吃遍天,有了一款软件,最起码相当于下载了十几种辅助科技,绝对的市场爆款包含了:卷轴......
  • 个人做量化,获取 L2 数据的高性价比之选:必盈 API
    在量化投资的世界里,数据就是黄金。对于个人量化投资者而言,专业数据库高昂的价格常常让人望而却步,而L2数据(二级行情数据)又对交易策略的制定有着至关重要的作用。今天就给大家介绍一个绝佳的解决方案——biyingapi.com。一、为什么需要L2数据L2数据包含了比普通行情数据......
  • 【商品自由交易,超易理解】徒步旅行中的补给问题-掘金AI刷题
    题目描述:小R正在计划一次从地点A到地点B的徒步旅行,总路程需要N天。为了在旅途中保持充足的能量,小R每天必须消耗1份食物。幸运的是,小R在路途中每天都会经过一个补给站,可以购买食物进行补充。然而,每个补给站的食物每份的价格可能不同,并且小R最多只能同时携带K份食物。现在,......
  • kafka 丢失消息
    BrokerProducerConsumerKafka存在丢消息的问题,消息丢失会发生在Broker,Producer和Consumer三种。BrokerBroker丢失消息是由于Kafka本身的原因造成的,kafka为了得到更高的性能和吞吐量,将数据异步批量的存储在磁盘中。消息的刷盘过程,为了提高性能,减少刷盘次数,kafka采用......
  • [Java] 浮点数的精度丢失问题与精度控制方法
    1需求描述场景1:两个整型相除,如何保证运算结果为浮点数?如何控制运算结果的精度(小数位数)?场景2:针对一个浮点数,如何控制其精度(小数位数)?2试验场景:两整型数相除,控制运算结果、浮点数的精度Longnumber1=110600L;intnumber2=999;intscale=2;//精度n(保留n位小数)/......
  • 大规模向量检索与量化方法
    1.向量检索在向量检索中,KNN(K-NearestNeighbors)和ANN(ApproximateNearestNeighbor)是两种最常见的方法,它们都用于根据特征向量找到数据点之间的相似性,但它们在精确度和效率上有所不同。KNN是一种基本的分类和回归方法,它根据一个样本在特征空间中的K个最近邻样本的类别,来预测该......