3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
name 'get_current_data' is not defined?出现这个报错通常是因为运行环境不对。在 JoinQuant 聚宽平台中,get_current_data() 是回测环境/模拟交易专用 API,不支持在“投资研究”模块(Jupyter Notebook)中直接调用。
get_price() 或 get_current_tick() 等支持研究环境的 API。import 任何特殊的包(通常策略开头有 import jqdata 即可)。请检查是否拼写错误,或者是否在非交易时段的自定义函数中错误调用。get_current_data() 的具体用法get_current_data() 用于获取当前单位时间(当天/当前分钟)的涨跌停价、是否停牌、当天的开盘价等。回测时,通过其他 API 获取到的是前一个单位时间的数据,而 get_current_data() 可以获取当前时刻已知的数据。
返回一个 dict(字典),其中 key 是股票代码,value 是拥有以下属性的对象:
last_price : 最新价(09:30之前获取返回昨日收盘价)high_limit: 涨停价low_limit: 跌停价paused: 是否停止或者暂停了交易(停牌、未上市或者退市后返回 True)is_st: 是否是 ST(包括ST, *ST),是则返回 True,否则返回 Falseday_open: 当天开盘价(当天的开盘价至少09:27分之后才可获取)name: 股票现在的名称(可用于判断是否快要退市等)industry_code: 股票现在所属行业代码在回测策略的 handle_data 或定时运行函数中调用:
import jqdata
def initialize(context):
g.security = '000001.XSHE'
# 每天 10:00 运行
run_daily(market_open, time='10:00')
def market_open(context):
# 获取当前数据
current_data = get_current_data()
# 获取特定股票的数据对象
stock_data = current_data[g.security]
# 打印相关信息
print(f"股票: {g.security}")
print(f"最新价: {stock_data.last_price}")
print(f"涨停价: {stock_data.high_limit}")
print(f"跌停价: {stock_data.low_limit}")
print(f"是否停牌: {stock_data.paused}")
print(f"当天开盘价: {stock_data.day_open}")
# 实际应用:如果未停牌且未涨停,则买入
if not stock_data.paused and stock_data.last_price < stock_data.high_limit:
order_value(g.security, 10000)
current_data[security] 时,该 security 的数据才会被获取。