问题描述
BIAS11,BIAS12,BIAS13 = BIAS(security_list1,check_date='2017-01-04', N1=6, N2=12, N3=24)
比如,现在是check_date='2017-01-04',我想改成今天和昨天这种动态更新的日期数据,那么我check_date=None,报错,那么我该赋值什么?该在那里可以查询到这个函数的具体参数用法解释? 比如matlab就有doc文集,从帮助文件,直接就给出函数、参数以及see also,look for等相关函数解释
解决方案
在 JoinQuant (聚宽) 平台上,处理动态日期和查询函数用法是非常基础且重要的技能。针对您的问题,以下是详细的解答:
一、 如何将日期参数设置为动态更新的“今天”或“昨天”?
在量化策略的回测或模拟交易中,您不能使用硬编码的日期(如 '2017-01-04'),也不能简单地使用 Python 的 datetime.date.today()(因为回测时“今天”是指回测到达的那个历史日期)。
您需要使用聚宽提供的全局上下文对象 context 来获取动态的逻辑时间:
- 获取“今天”(当前逻辑时间):使用
context.current_dt(返回datetime.datetime对象)或context.current_dt.strftime('%Y-%m-%d')(返回字符串)。 - 获取“昨天”(前一交易日):使用
context.previous_date(返回datetime.date对象)。
代码示例:
from jqlib.technical_analysis import *
def handle_data(context, data):
security_list1 = ['000001.XSHE']
# 1. 使用“今天”(当前回测/模拟的逻辑日期)
today_str = context.current_dt.strftime('%Y-%m-%d')
BIAS11, BIAS12, BIAS13 = BIAS(security_list1, check_date=today_str, N1=6, N2=12, N3=24)
# 2. 使用“昨天”(前一个交易日)
yesterday = context.previous_date
BIAS11_y, BIAS12_y, BIAS13_y = BIAS(security_list1, check_date=yesterday, N1=6, N2=12, N3=24)
log.info("今天的BIAS11:", BIAS11)
log.info("昨天的BIAS11:", BIAS11_y)
二、 在哪里可以查询函数的具体参数用法和解释?
JoinQuant 提供了类似于 MATLAB doc 的查询方式,主要有以下两种途径:
1. 在“研究环境”中使用 ? 快捷查询(最推荐)
如果您在聚宽的 Jupyter Notebook 研究环境中,可以直接在函数名后面加上问号 ? 并运行,系统会弹出该函数的详细 Docstring(文档字符串),包括公式、输入参数、输出格式等。
操作示例:
在研究环境的 Cell 中输入并运行:
from jqlib.technical_analysis import *
BIAS?
输出结果示例:
Signature: BIAS(security_list, check_date, N1=6, N2=12, N3=24)
Docstring:
计算公式:
BIAS=(收盘价-收盘价的N日简单平均)/收盘价的N日简单平均*100
输入:
security_list:股票列表
check_date:要查询数据的日期
N1:统计的天数 N1
N2:统计的天数 N2
N3:统计的天数 N3
输出:
乖离率的值。
输出结果类型:
字典(dict):键(key)为股票代码,值(value)为数据。
2. 查阅官方 API 文档
聚宽官网顶部导航栏有 “API文档” 专区。这是最全面、最权威的参考手册。文档按照功能模块(如:策略设置、数据获取、交易函数、技术分析指标等)进行了详细分类,并附带了大量的代码示例。
- 快捷搜索:在 API 文档页面,您可以使用浏览器的搜索功能(
Ctrl + F或Cmd + F)直接搜索函数名(如BIAS),快速定位到该函数的参数说明和返回值解释。
总结
- 动态日期:依赖
context.current_dt和context.previous_date。 - 函数帮助:在研究环境用
函数名?查阅,或直接翻阅官网 API 文档。