Global
IsVirtual - 判断是否为回测环境
判断当前策略是否运行在回测环境中。
语法
python
is_backtest = IsVirtual()参数
无参数。
返回值
返回布尔值(bool):
True- 回测环境(虚拟盘)False- 实盘环境
示例
示例1: 基本用法
python
if IsVirtual():
Log("当前运行在回测环境")
else:
Log("当前运行在实盘环境")示例2: 差异化配置
python
if IsVirtual():
# 回测环境:使用较小的交易量进行快速测试
trade_amount = 0.001
check_interval = 100 # 100ms
else:
# 实盘环境:使用实际交易参数
trade_amount = 0.1
check_interval = 5000 # 5秒
Log(f"交易数量: {trade_amount}")
Log(f"检查间隔: {check_interval}ms")示例3: 条件功能启用
python
def init():
Log("策略初始化...")
if not IsVirtual():
# 实盘环境才启用的功能
setup_risk_control()
setup_notifications()
Log("✅ 风控和通知系统已启用")
else:
Log("⚠️ 回测环境,风控和通知功能已禁用")
def setup_risk_control():
"""设置风控参数(仅实盘)"""
_G("max_loss", 1000)
_G("max_position", 10)
def setup_notifications():
"""设置通知(仅实盘)"""
_G("notify_enabled", True)示例4: 日志级别控制
python
def log_trade(action, price, amount):
"""记录交易日志"""
message = f"{action} {amount} @ {price}"
if IsVirtual():
# 回测环境:简化日志
Log(message)
else:
# 实盘环境:详细日志
Log(f"========== 实盘交易 ==========")
Log(f"操作: {action}")
Log(f"价格: {price}")
Log(f"数量: {amount}")
Log(f"时间: {_D()}")
Log(f"账户: {exchange.GetAccount()}")
Log(f"================================")
# 实盘环境可能还需要发送通知
send_notification(message)
def send_notification(message):
"""发送通知(仅实盘)"""
if not IsVirtual():
# 发送邮件、短信、微信等通知
pass示例5: 调试模式
python
# 回测环境启用详细调试信息
DEBUG_MODE = IsVirtual()
def debug_log(message):
"""调试日志"""
if DEBUG_MODE:
Log(f"[DEBUG] {message}")
# 使用调试日志
debug_log("开始检查订单状态")
orders = exchange.GetOrders()
debug_log(f"当前订单数量: {len(orders)}")示例6: 数据源选择
python
def get_market_data():
"""获取市场数据"""
if IsVirtual():
# 回测环境:使用历史数据
Log("使用历史 K 线数据")
records = exchange.GetRecords()
return records
else:
# 实盘环境:使用实时数据
Log("使用实时行情数据")
ticker = exchange.GetTicker()
depth = exchange.GetDepth()
return {"ticker": ticker, "depth": depth}示例7: 风险提示
python
def execute_high_risk_strategy():
"""执行高风险策略"""
if not IsVirtual():
# 实盘环境需要额外确认
Log("⚠️ 警告: 即将在实盘环境执行高风险操作", level="WARNING")
# 检查账户余额
account = exchange.GetAccount()
if account['Balance'] > 1000:
Log("✅ 账户余额充足,继续执行")
else:
Log("❌ 账户余额不足,停止执行", level="ERROR")
return False
else:
Log("回测环境,直接执行")
# 执行策略...
return True示例8: 性能优化
python
def optimize_for_environment():
"""根据环境优化性能"""
if IsVirtual():
# 回测环境:追求速度,减少延迟
return {
"sleep_interval": 10, # 极短的睡眠间隔
"cache_enabled": True, # 启用缓存
"log_level": "ERROR" # 只记录错误
}
else:
# 实盘环境:追求稳定,避免限流
return {
"sleep_interval": 1000, # 1秒间隔
"cache_enabled": False, # 禁用缓存,确保数据实时
"log_level": "INFO" # 记录详细信息
}
config = optimize_for_environment()
Log(f"当前配置: {config}")注意事项
-
环境检测: 当前通过环境变量
IS_BACKTEST或上下文配置is_virtual判断 -
默认值: 未设置环境变量时默认为
False(实盘环境) -
应用场景:
- 区分回测和实盘的不同行为
- 实盘环境启用风控和通知
- 回测环境优化性能
- 调试信息的详细程度控制
-
注意区分:
- 回测环境(IsVirtual() == True): 历史数据回放
- 实盘环境(IsVirtual() == False): 真实交易
- 模拟盘: 可能被识别为实盘环境,需要额外判断
-
安全性: 在执行真实交易前务必检查
IsVirtual(),避免误操作