问题描述
我的策略里有些代码只希望在实盘运行时执行,在回测的时候不执行,应该怎么写判断条件?
解决方案
在 PTrade 中,你可以使用 is_trade() 函数来判断当前运行环境是实盘还是回测。
函数说明
is_trade():- 返回
True:表示当前处于 实盘交易 模式。 - 返回
False:表示当前处于 回测 模式。
- 返回
代码示例
你可以在 initialize、handle_data 或 before_trading_start 等函数中使用该判断逻辑。
def initialize(context):
# 初始化代码
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 正常的策略逻辑
# ...
# 判断是否为实盘环境
if is_trade():
# 这里写只在实盘运行的代码
# 例如:发送微信通知、邮件报警、或者调用实盘特有的接口
log.info("当前是实盘交易环境,执行实盘特定逻辑")
# send_email(...)
else:
# 这里写只在回测运行的代码(可选)
log.info("当前是回测环境")
常见应用场景
- 消息推送:只在实盘成交时发送微信或邮件通知,避免回测时产生大量骚扰信息。
- 数据获取:实盘可能需要获取某些实时特有数据,而回测使用历史数据。
- 文件读写:实盘可能需要读取特定的本地配置文件,而回测使用默认配置。