3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在聚宽(JoinQuant)量化交易平台中,get_current_tick 是一个非常核心的回测与模拟专用 API。它允许策略在运行过程中,实时获取指定标的最近一次的 Tick 快照数据(包含最新价、累计成交量、买卖盘口等)。
以下是关于 get_current_tick 接口的详细使用指南、参数说明及完整的策略代码示例。
get_current_tick(security, dt=None, df=False)
security (str | list): 标的代码(如 '000001.XSHE')或包含多个标的代码的列表。支持股票、场内基金、商品期货和股指期货。注意:期货需要使用具体合约代码,不能使用主力合约(如 RB9999)或指数合约代码。dt (datetime, 可选): 指定的时刻。传入时代表返回离该指定时刻最近的一条 tick。默认为 None,表示当前逻辑时间。df (bool, 可选): 默认为 False,返回 Tick 对象;设为 True 时,返回 pandas.DataFrame 格式的数据。df=True,则返回 DataFrame 格式数据。获取到 Tick 对象后,您可以通过属性访问盘口快照信息:
current: 最新价high / low: 截至当前时刻的日内最高价 / 最低价volume / money: 截至当前时刻的累计成交量 / 成交额a1_v ~ a5_v / a1_p ~ a5_p: 卖一到卖五的挂单量与挂单价(期货仅提供一档)b1_v ~ b5_v / b1_p ~ b5_p: 买一到买五的挂单量与挂单价(期货仅提供一档)run_daily、handle_data 或 handle_tick 等策略运行函数中调用。None,编写策略时需做好空值判断。initialize 中开启真实价格模式:set_option('use_real_price', True)。以下是一个在 Tick 级策略中订阅股票并实时获取最新盘口快照的完整示例:
# -*- coding: utf-8 -*-
import jqdata
def initialize(context):
# 设定沪深300作为基准
set_benchmark('000300.XSHG')
# 开启真实价格模式(Tick级策略必须开启)
set_option('use_real_price', True)
# 设置佣金与印花税
set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
# 定义需要操作的股票
g.security = '000001.XSHE' # 平安银行
def before_trading_start(context):
# 订阅标的的 tick 事件
subscribe(g.security, 'tick')
log.info("已订阅 %s 的 Tick 数据" % g.security)
def handle_tick(context, tick):
# 获取当前标的的最新 tick 快照
tick_data = get_current_tick(g.security)
if tick_data is not None:
# 打印盘口五档买卖单信息
log.info("时间: %s, 最新价: %s" % (tick_data.datetime, tick_data.current))
log.info("买一价: %s, 买一量: %s" % (tick_data.b1_p, tick_data.b1_v))
log.info("卖一价: %s, 卖一量: %s" % (tick_data.a1_p, tick_data.a1_v))
# 简单的盘口交易逻辑示例:若买一挂单量远大于卖一挂单量,尝试买入
if tick_data.b1_v > tick_data.a1_v * 3 and g.security not in context.portfolio.positions:
log.info("买盘力量强劲,尝试市价买入 100 股")
order(g.security, 100)
else:
log.warn("未能获取到 %s 的当前 Tick 数据" % g.security)
def after_trading_end(context):
# 收盘后取消订阅,释放资源
unsubscribe_all()
log.info("已取消所有 Tick 订阅")"))