from config.strategy_state import state from jq_channel import exchange from kit.logger import Logger from config.strategy_config import strategy_config class trade_strategy: def __init__(self, strategy_name, strategy_template_id, config_save, log, channel: exchange): # -------必要参数------- self.log = Logger(log) # 日志记录器 self.strategy_config = strategy_config(strategy_name, strategy_template_id, config_save, self.log) self.state = state() # 策略状态管理器,跟踪策略运行状态 self.channel = channel # 添加持仓监控和管理器 def init_strategy(self) -> None: """ 策略初始化函数 配置交易环境参数,包括防未来数据、基准、滑点、订单成本以及日志输出等级。 参数: context: 聚宽平台传入的交易上下文对象 """ # 启用防未来数据以确保历史回测的严谨性 self.log.info("初始化策略TradingStrategy配置...") set_option('avoid_future_data', True) # 设置策略基准为上证指数 #set_benchmark(self.strategy_config.config["benchmark_stock"]) set_benchmark("000001.XSHG") # 使用真实市场价格,模拟实际交易 set_option('use_real_price', True) # 设置固定滑点,确保价格偏差不大 set_slippage(FixedSlippage(3 / 10000)) # 设置订单成本,包括印花税和佣金 set_order_cost(OrderCost( open_tax=0, close_tax=0.001, # 卖出时0.1%的印花税 open_commission=2.5 / 10000, close_commission=2.5 / 10000, close_today_commission=0, min_commission=5 # 最低佣金为5元 ), type='stock') # 设置日志输出等级(中文日志输出) self.log.logger.set_level('order', 'error') self.log.logger.set_level('system', 'error') self.log.logger.set_level('strategy', 'debug') def set_target_list(self, target_list): self.target_list = target_list.copy() def get_target_list(self): """获取本次调仓候选股票列表""" return self.target_list def get_configs(self) -> dict: """ 获取策略配置 :return: strategy_config 对象 """ return self.strategy_config.get_all_configs() def get_strategy_config(self) -> strategy_config: """ 获取策略配置字典 :return: 包含所有配置参数的字典 """ return self.strategy_config def close_position(self, context, stock: str): """ 平仓操作:尽可能将指定股票仓位全部卖出 参数: position: 持仓对象 返回: 若下单后订单全部成交返回 True,否则返回 False """ self.channel.close_positions(context, stock) def open_position(self, security: str, value: float) -> bool: """ 开仓操作:尝试买入指定股票 参数: security: 股票代码 value: 分配给该股票的资金 返回: 若下单成功(部分或全部成交)返回 True,否则返回 False """ return self.channel.open_position(security, value)