掘金量化的几个常用函数和方法

今天,我们介绍几个在编写策略过程中常用的函数和方法,包括掘金量化API中原有的及自定义的。

1、判断某一天是否是当月第一个交易日

一些长期策略按月轮动换仓,经常将换仓的日子定在每月第一个交易日。像聚宽等平台可以直接设置run_monthly规定每月第几个交易日运行,而掘金量化相应的schedule函数,实盘中不支持按月运行。

掘金量化的几个常用函数和方法

所以,我们只能变通一下,在按日运行的前提下,自行判断是否是每月第一个交易日:

context.now.month != pandas.Timestamp(yesterday(context)).month

这句的代码左边是的意思是当前时间的月份数字,比如现在是6月份,那就返回6。代码右边是用pandas返回上一交易日的月份数(yesterday是我的自定义函数,表示上一个交易日,紧接着会介绍这个函数),如果今天运行的话,就会返回5,因为上一交易日在5月份。

这句代码的整体意思就是今天月份不等于上一交易日月份,那今天就是本月第一个交易日啦!

2、今天和昨天(自定义函数)

这两个日期在策略中经常用到,将它们写成自定义函数,会减少很多重复工作。

#今天
def today(context):
    return context.now.strftime('%Y-%m-%d')
    
#昨天
def yesterday(context):
    return get_previous_n_trading_dates(exchange='SHSE', date=today(context), n=1)[0]

3、股票代码转换

如果策略中用到了第三方的数据源,那么股票代码中的字母前后缀很可能与掘金量化中的不一致。如果用第三方数据源选出了股票,再用掘金量化去下单交易,那么,交易之前要转换一下股票代码中的前后缀。用以下代码,将聚宽股票代码转换成掘金量化股票代码(修改后可用于其它平台股票代码转换):

def change_code(code):
    if code.startswith('SH'):
        return code[5:11]+'.XSHG'
    else:
        return code[5:11]+'.XSHE'

4、获取9:25分的集合竞价

有时,看好一只短线股票,准备低吸,需要根据集合竞价的结果来决定是否买入。这个时候,我们就要获取这个价格。

我们获取一下历史数据,方便回测

history(symbol='SZSE.002049', frequency='tick', start_time='2024-05-31 09:25:00', end_time='2024-05-31 09:25:00', fields='created_at,symbol,price', df=True)

返回:

掘金量化的几个常用函数和方法

获取当日的集合竞价用current函数。current函数是返回最新价格,所以,要获取集合竞价就要在9:25-9:30之前运行该函数。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/74861
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 11 日
下一篇 2024 年 7 月 11 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注