3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)量化交易平台中,get_bars 是获取历史及实时 K 线数据最核心的 API 之一。在盘中运行策略时,默认情况下获取的历史 Bar 均已收盘(即不包含当前正在形成的这根 K 线)。如果策略需要在盘中获取当前尚未走完的实时快照数据,则需要使用 include_now 参数。
include_now 的作用include_now 是一个布尔值参数(True 或 False),用于控制返回的数据集中是否包含当前正在形成、尚未完结的 Bar。
include_now=False(默认值):只返回已经完结的历史 K 线。例如在 09:33 时获取 5 分钟线,返回的是上一交易日末尾至今日 09:30 的历史完整 K 线。include_now=True:返回包含当前时刻在内的未走完 Bar。例如在 09:33 时获取 5 分钟线,返回的数据中将包含 09:30-09:33 这 3 分钟内合成的实时快照 K 线(其高开低收与成交量为截至当前时刻的实时值)。get_bars 函数语法与参数说明get_bars(security, count, unit='1d', fields=['date', 'open', 'high', 'low', 'close'], include_now=False, end_dt=None, fq_ref_date=None, df=False)
'000001.XSHE')或标的代码列表。'1m', '5m', '15m', '30m', '60m', '120m', '1d', '1w', '1M';非标准周期支持 'Xm'(如 '3m')。'date', 'open', 'high', 'low', 'close', 'volume', 'money', 'open_interest', 'factor'。True 或 False。context.current_dt。pandas.DataFrame 格式,默认为 False(返回 numpy.ndarray)。以下是在 JoinQuant 策略中通过 get_bars 设置 include_now=True 获取实时数据的完整示例:
import datetime
from jqdata import *
def initialize(context):
set_benchmark('000300.XSHG')
set_option('use_real_price', True)
# 设为每分钟运行
run_daily(market_open, time='every_bar')
def market_open(context):
security = '000001.XSHE'
# 1. 获取包含当前未走完 Bar 的最新 5 根 5分钟 K线
bars_now = get_bars(security, count=5, unit='5m',
fields=['date', 'open', 'high', 'low', 'close', 'volume'],
include_now=True, df=True)
# 2. 获取不包含当前未走完 Bar 的前 5 根已完结 5分钟 K线
bars_history = get_bars(security, count=5, unit='5m',
fields=['date', 'open', 'high', 'low', 'close', 'volume'],
include_now=False, df=True)
log.info("--- 当前时刻包含未完结Bar的K线数据 ---")
log.info(bars_now.tail(1))
09:30)时刻设置 include_now=True 获取当日日线 Bar,此时该 Bar 的高开低收均等于开盘价,成交量和成交额均为 0。include_now=True 时,请确保 fq_ref_date 设置符合需求(默认在回测与模拟盘中会使用当前逻辑时间 context.current_dt.date() 进行动态复权,保证价格真实准确)。get_bars 不会自动填充停牌数据。如果标的在所查时间内停牌,返回的 Bar 数量可能会少于 count,开发策略时请注意检查返回数据的实际长度。