3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,由于部分 API 函数仅限在回测或交易场景中使用(例如某些特定的主推事件或特定的下单接口),为了提高代码的复用性,避免维护两套几乎相同的代码,平台提供了 is_trade() 接口。
is_trade() 用于提供业务代码执行场景的判断依据,明确标识当前业务代码运行场景为回测还是交易。通过该函数,你可以使用 if-else 逻辑来区分对应场景,从而在一套策略代码中同时兼容回测与交易。
True。False。仅在回测、交易模块可用。
以下是一个简单的示例,展示了如何在 handle_data 中使用 is_trade() 来区分打印不同的日志,或者执行不同的逻辑:
def initialize(context):
# 初始化股票池
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 执行通用的下单逻辑
_id = order(g.security, 100)
# 使用 is_trade() 判断当前运行环境
if is_trade():
# 这里可以放置仅在交易环境中运行的代码
# 例如:获取实时的 tick 数据、处理特定的交易主推等
log.info("当前运行场景:交易")
else:
# 这里可以放置仅在回测环境中运行的代码
# 例如:获取对账文件、打印特定的回测评估指标等
log.info("当前运行场景:回测")
initialize 或 before_trading_start 中,如果需要调用仅交易支持的接口(如 run_interval 或 tick_data 相关的设置),请务必将其包裹在 if is_trade(): 逻辑块中,防止回测报错。initialize 中通过 is_trade() 判断,如果是回测(False),则调用 set_slippage 和 set_commission;如果是实盘,则跳过这些回测专属的设置函数。