#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 关羽策略配置文件 ================= 定义策略的各种参数和配置 """ # 风险偏好配置 RISK_PROFILES = { 'conservative': { 'name': '保守型', 'description': '低风险偏好,追求稳健收益', 'pe_max': 15, 'pb_max': 1.5, 'roe_min': 12.0, 'single_stock_max': 0.08, # 单票最大仓位8% 'industry_max': 0.20, # 单行业最大仓位20% 'stock_count': (15, 20), # 持股数量范围 'stop_loss_pct': 0.05, # 止损幅度5% 'max_drawdown': 0.20, # 最大回撤控制20% }, 'balanced': { ' 'name': '平衡型', 'description': '中等风险偏好,平衡收益与风险', 'pe_max': 25, 'pb_max': 2.5, 'roe_min': 10.0, 'single_stock_max': 0.15, # 单票最大仓位15% 'industry_max': 0.25, # 单行业最大仓位25% 'stock_count': (10, 15), # 持股数量范围 'stop_loss_pct': 0.06, # 止损幅度6% 'max_drawdown': 0.30, # 最大回撤控制30% }, 'aggressive': { 'name': '进取型', 'description': '高风险偏好,追求更高收益', 'pe_max': 35, 'pb_max': 3.0, 'roe_min': 8.0, 'single_stock_max': 0.25, # 单票最大仓位25% 'industry_max': 0.30, # 单行业最大仓位30% 'stock_count': (5, 10), # 持股数量范围 'stop_loss_pct': 0.08, # 止损幅度8% 'max_drawdown': 0.40, # 最大回撤控制40% }, } # 技术指标配置 TECHNICAL_CONFIG = { 'ma_days': 20, # 均线天数 'atr_period': 14, # ATR周期 'max_drawdown_period': 20, # 回撤检查周期 'max_drawdown_limit': 0.20, # 最大允许回撤20% 'volume_surge_threshold': 3.0, # 放量阈值3倍 } # 价值筛选配置 VALUE_FILTER_CONFIG = { 'min_market_cap': 100000, # 最小流通市值10亿(万元) 'min_turnover': 0.5, # 最小换手率0.5% 'max_new_stock_days': 180, # 新股过滤天数 } # 止损配置 STOP_LOSS_CONFIG = { 'methods': ['ma', 'atr', 'pct'], # 支持的止损方法 'default_method': 'ma', # 默认止损方法 'atr_multiplier': 2.0, # ATR止损倍数 } # 止盈配置(可选) TAKE_PROFIT_CONFIG = { 'enabled': False, # 是否启用止盈 'target_profit_pct': 0.30, # 目标收益率30% 'partial_profit_levels': [ # 分批止盈 {'pct': 0.20, 'sell_ratio': 0.3}, # 20%收益时卖出30% {'pct': 0.30, 'sell_ratio': 0.4}, # 30%收益时卖出40% {'pct': 0.50, 'sell_ratio': 0.3}, # 50%收益时卖出30% ], } # 数据配置 DATA_CONFIG = { 'source': 'akshare', # 数据源 'default_history_days': 120, # 默认获取历史数据天数 } # 日志配置 LOG_CONFIG = { 'enabled': True, 'level': 'INFO', 'file': 'guanyu_strategy.log', } # 获取默认配置 def get_default_config(): """获取默认配置""" return { 'risk_profile': 'balanced', 'total_capital': 1000000.0, 'technical': TECHNICAL_CONFIG, 'value_filter': VALUE_FILTER_CONFIG, 'stop_loss': STOP_LOSS_CONFIG, 'take_profit': TAKE_PROFIT_CONFIG, 'data': DATA_CONFIG, } if __name__ == '__main__': # 打印所有配置 print("=" * 60) print("关羽策略配置") print("=" * 60) print("\n风险偏好配置:") for profile_name, profile_config in RISK_PROFILES.items(): print(f"\n {profile_name}:") for key, value in profile_config.items(): if key == 'stock_count': print(f" {key}: {value[0]}-{value[1]}只") elif isinstance(value, float): print(f" {key}: {value*100:.1f}%") else: print(f" {key}: {value}") print("\n技术指标配置:") for key, value in TECHNICAL_CONFIG.items(): print(f" {key}: {value}") print("\n价值筛选配置:") for key, value in VALUE_FILTER_CONFIG.items(): print(f" {key}: {value}") print("\n止损配置:") for key, value in STOP_LOSS_CONFIG.items(): print(f" {key}: {value}")