From 5cff32e4f2845fe42ffbee720bfc1cba9c034cf3 Mon Sep 17 00:00:00 2001 From: tinkle-community Date: Sat, 6 Dec 2025 07:20:11 +0800 Subject: [PATCH] =?UTF-8?q?Feature/custom=20strategy=20(#1172)=20*=20feat:?= =?UTF-8?q?=20add=20Strategy=20Studio=20with=20multi-timeframe=20support?= =?UTF-8?q?=20-=20Add=20Strategy=20Studio=20page=20with=20three-column=20l?= =?UTF-8?q?ayout=20for=20strategy=20management=20-=20Support=20multi-timef?= =?UTF-8?q?rame=20K-line=20data=20selection=20(5m,=2015m,=201h,=204h,=20et?= =?UTF-8?q?c.)=20-=20Add=20GetWithTimeframes()=20function=20in=20market=20?= =?UTF-8?q?package=20for=20fetching=20multiple=20timeframes=20-=20Add=20Ti?= =?UTF-8?q?meframeSeriesData=20struct=20for=20storing=20per-timeframe=20te?= =?UTF-8?q?chnical=20indicators=20-=20Update=20formatMarketData()=20to=20d?= =?UTF-8?q?isplay=20all=20selected=20timeframes=20in=20AI=20prompt=20-=20A?= =?UTF-8?q?dd=20strategy=20API=20endpoints=20for=20CRUD=20operations=20and?= =?UTF-8?q?=20test=20run=20-=20Integrate=20real=20AI=20test=20runs=20with?= =?UTF-8?q?=20configured=20AI=20models=20-=20Support=20custom=20AI500=20an?= =?UTF-8?q?d=20OI=20Top=20API=20URLs=20from=20strategy=20config=20*=20docs?= =?UTF-8?q?:=20add=20Strategy=20Studio=20screenshot=20to=20README=20files?= =?UTF-8?q?=20*=20fix:=20correct=20strategy-studio.png=20filename=20case?= =?UTF-8?q?=20in=20README=20*=20refactor:=20remove=20legacy=20signal=20sou?= =?UTF-8?q?rce=20config=20and=20simplify=20trader=20creation=20-=20Remove?= =?UTF-8?q?=20signal=20source=20configuration=20from=20traders=20page=20(n?= =?UTF-8?q?ow=20handled=20by=20strategy)=20-=20Remove=20advanced=20options?= =?UTF-8?q?=20(legacy=20config)=20from=20TraderConfigModal=20-=20Rename=20?= =?UTF-8?q?default=20strategy=20to=20"=E9=BB=98=E8=AE=A4=E5=B1=B1=E5=AF=A8?= =?UTF-8?q?=E7=AD=96=E7=95=A5"=20with=20AI500=20coin=20pool=20URL=20-=20De?= =?UTF-8?q?lete=20SignalSourceModal=20and=20SignalSourceWarning=20componen?= =?UTF-8?q?ts=20-=20Clean=20up=20related=20stores,=20hooks,=20and=20page?= =?UTF-8?q?=20components?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 + api/server.go | 34 +- api/strategy.go | 595 ++++++++++++ decision/engine.go | 158 +++ decision/strategy_engine.go | 719 ++++++++++++++ docs/i18n/zh-CN/README.md | 4 + manager/trader_manager.go | 93 +- market/data.go | 269 ++++++ market/types.go | 15 + screenshots/strategy-studio.png | Bin 0 -> 436306 bytes store/ai_model.go | 3 +- store/exchange.go | 3 +- store/position.go | 9 +- store/store.go | 17 + store/strategy.go | 452 +++++++++ store/system_config.go | 4 - store/trader.go | 173 +++- trader/auto_trader.go | 190 ++-- web/src/App.tsx | 16 + web/src/components/HeaderBar.tsx | 110 +++ web/src/components/TraderConfigModal.tsx | 642 ++++-------- .../components/strategy/CoinSourceEditor.tsx | 347 +++++++ .../components/strategy/IndicatorEditor.tsx | 262 +++++ .../strategy/PromptSectionsEditor.tsx | 195 ++++ .../components/strategy/RiskControlEditor.tsx | 327 +++++++ .../components/traders/SignalSourceModal.tsx | 138 --- web/src/components/traders/index.ts | 1 - .../traders/sections/PageHeader.tsx | 17 +- .../traders/sections/SignalSourceWarning.tsx | 54 -- web/src/hooks/useTraderActions.ts | 26 - web/src/i18n/translations.ts | 2 + web/src/lib/api.ts | 67 ++ web/src/pages/AITradersPage.tsx | 34 - web/src/pages/StrategyStudioPage.tsx | 914 ++++++++++++++++++ web/src/stores/tradersConfigStore.ts | 20 - web/src/stores/tradersModalStore.ts | 4 - web/src/types.ts | 98 +- 37 files changed, 4965 insertions(+), 1051 deletions(-) create mode 100644 api/strategy.go create mode 100644 decision/strategy_engine.go create mode 100644 screenshots/strategy-studio.png create mode 100644 store/strategy.go create mode 100644 web/src/components/strategy/CoinSourceEditor.tsx create mode 100644 web/src/components/strategy/IndicatorEditor.tsx create mode 100644 web/src/components/strategy/PromptSectionsEditor.tsx create mode 100644 web/src/components/strategy/RiskControlEditor.tsx delete mode 100644 web/src/components/traders/SignalSourceModal.tsx delete mode 100644 web/src/components/traders/sections/SignalSourceWarning.tsx create mode 100644 web/src/pages/StrategyStudioPage.tsx diff --git a/README.md b/README.md index 565e92e5..6b53c475 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,10 @@ Join our Telegram developer community to discuss, share ideas, and get support: ![Details Page](screenshots/details-page.png) *Professional trading interface with equity curves, live positions, and AI decision logs with expandable input prompts & chain-of-thought reasoning* +### 🎛️ Strategy Studio - Custom Strategy Builder +![Strategy Studio](screenshots/strategy-studio.png) +*Three-column strategy editor with multi-timeframe selection (5m/15m/1h/4h), technical indicators configuration, risk control settings, and real-time AI test run with live market data* + --- ## 🏦 Supported Exchanges (DEX/CEX Tutorials) diff --git a/api/server.go b/api/server.go index d71b8955..9bab6f08 100644 --- a/api/server.go +++ b/api/server.go @@ -144,6 +144,20 @@ func (s *Server) setupRoutes() { protected.GET("/exchanges", s.handleGetExchangeConfigs) protected.PUT("/exchanges", s.handleUpdateExchangeConfigs) + // 策略管理 + protected.GET("/strategies", s.handleGetStrategies) + protected.GET("/strategies/active", s.handleGetActiveStrategy) + protected.GET("/strategies/default-config", s.handleGetDefaultStrategyConfig) + protected.GET("/strategies/templates", s.handleGetPromptTemplates) + protected.POST("/strategies/preview-prompt", s.handlePreviewPrompt) + protected.POST("/strategies/test-run", s.handleStrategyTestRun) + protected.GET("/strategies/:id", s.handleGetStrategy) + protected.POST("/strategies", s.handleCreateStrategy) + protected.PUT("/strategies/:id", s.handleUpdateStrategy) + protected.DELETE("/strategies/:id", s.handleDeleteStrategy) + protected.POST("/strategies/:id/activate", s.handleActivateStrategy) + protected.POST("/strategies/:id/duplicate", s.handleDuplicateStrategy) + // 用户信号源配置 protected.GET("/user/signal-sources", s.handleGetUserSignalSource) protected.POST("/user/signal-sources", s.handleSaveUserSignalSource) @@ -373,15 +387,17 @@ type CreateTraderRequest struct { Name string `json:"name" binding:"required"` AIModelID string `json:"ai_model_id" binding:"required"` ExchangeID string `json:"exchange_id" binding:"required"` + StrategyID string `json:"strategy_id"` // 策略ID(新版) InitialBalance float64 `json:"initial_balance"` ScanIntervalMinutes int `json:"scan_interval_minutes"` + IsCrossMargin *bool `json:"is_cross_margin"` // 指针类型,nil表示使用默认值true + // 以下字段为向后兼容保留,新版使用策略配置 BTCETHLeverage int `json:"btc_eth_leverage"` AltcoinLeverage int `json:"altcoin_leverage"` TradingSymbols string `json:"trading_symbols"` CustomPrompt string `json:"custom_prompt"` OverrideBasePrompt bool `json:"override_base_prompt"` SystemPromptTemplate string `json:"system_prompt_template"` // 系统提示词模板名称 - IsCrossMargin *bool `json:"is_cross_margin"` // 指针类型,nil表示使用默认值true UseCoinPool bool `json:"use_coin_pool"` UseOITop bool `json:"use_oi_top"` } @@ -609,14 +625,15 @@ func (s *Server) handleCreateTrader(c *gin.Context) { } // 创建交易员配置(数据库实体) - logger.Infof("🔧 DEBUG: 开始创建交易员配置, ID=%s, Name=%s, AIModel=%s, Exchange=%s", traderID, req.Name, req.AIModelID, req.ExchangeID) + logger.Infof("🔧 DEBUG: 开始创建交易员配置, ID=%s, Name=%s, AIModel=%s, Exchange=%s, StrategyID=%s", traderID, req.Name, req.AIModelID, req.ExchangeID, req.StrategyID) traderRecord := &store.Trader{ ID: traderID, UserID: userID, Name: req.Name, AIModelID: req.AIModelID, ExchangeID: req.ExchangeID, - InitialBalance: actualBalance, // 使用实际查询的余额 + StrategyID: req.StrategyID, // 关联策略ID(新版) + InitialBalance: actualBalance, // 使用实际查询的余额 BTCETHLeverage: btcEthLeverage, AltcoinLeverage: altcoinLeverage, TradingSymbols: req.TradingSymbols, @@ -664,15 +681,17 @@ type UpdateTraderRequest struct { Name string `json:"name" binding:"required"` AIModelID string `json:"ai_model_id" binding:"required"` ExchangeID string `json:"exchange_id" binding:"required"` + StrategyID string `json:"strategy_id"` // 策略ID(新版) InitialBalance float64 `json:"initial_balance"` ScanIntervalMinutes int `json:"scan_interval_minutes"` + IsCrossMargin *bool `json:"is_cross_margin"` + // 以下字段为向后兼容保留,新版使用策略配置 BTCETHLeverage int `json:"btc_eth_leverage"` AltcoinLeverage int `json:"altcoin_leverage"` TradingSymbols string `json:"trading_symbols"` CustomPrompt string `json:"custom_prompt"` OverrideBasePrompt bool `json:"override_base_prompt"` SystemPromptTemplate string `json:"system_prompt_template"` - IsCrossMargin *bool `json:"is_cross_margin"` } // handleUpdateTrader 更新交易员配置 @@ -736,6 +755,12 @@ func (s *Server) handleUpdateTrader(c *gin.Context) { systemPromptTemplate = existingTrader.SystemPromptTemplate // 保持原值 } + // 处理策略ID(如果没有提供,保持原值) + strategyID := req.StrategyID + if strategyID == "" { + strategyID = existingTrader.StrategyID + } + // 更新交易员配置 traderRecord := &store.Trader{ ID: traderID, @@ -743,6 +768,7 @@ func (s *Server) handleUpdateTrader(c *gin.Context) { Name: req.Name, AIModelID: req.AIModelID, ExchangeID: req.ExchangeID, + StrategyID: strategyID, // 关联策略ID InitialBalance: req.InitialBalance, BTCETHLeverage: btcEthLeverage, AltcoinLeverage: altcoinLeverage, diff --git a/api/strategy.go b/api/strategy.go new file mode 100644 index 00000000..93903b87 --- /dev/null +++ b/api/strategy.go @@ -0,0 +1,595 @@ +package api + +import ( + "encoding/json" + "fmt" + "net/http" + "nofx/decision" + "nofx/market" + "nofx/mcp" + "nofx/store" + "time" + + "github.com/gin-gonic/gin" + "github.com/google/uuid" +) + +// handleGetStrategies 获取策略列表 +func (s *Server) handleGetStrategies(c *gin.Context) { + userID := c.GetString("user_id") + if userID == "" { + c.JSON(http.StatusUnauthorized, gin.H{"error": "未授权"}) + return + } + + strategies, err := s.store.Strategy().List(userID) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "获取策略列表失败: " + err.Error()}) + return + } + + // 转换为前端格式 + result := make([]gin.H, 0, len(strategies)) + for _, st := range strategies { + var config store.StrategyConfig + json.Unmarshal([]byte(st.Config), &config) + + result = append(result, gin.H{ + "id": st.ID, + "name": st.Name, + "description": st.Description, + "is_active": st.IsActive, + "is_default": st.IsDefault, + "config": config, + "created_at": st.CreatedAt, + "updated_at": st.UpdatedAt, + }) + } + + c.JSON(http.StatusOK, gin.H{ + "strategies": result, + }) +} + +// handleGetStrategy 获取单个策略 +func (s *Server) handleGetStrategy(c *gin.Context) { + userID := c.GetString("user_id") + strategyID := c.Param("id") + + if userID == "" { + c.JSON(http.StatusUnauthorized, gin.H{"error": "未授权"}) + return + } + + strategy, err := s.store.Strategy().Get(userID, strategyID) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "策略不存在"}) + return + } + + var config store.StrategyConfig + json.Unmarshal([]byte(strategy.Config), &config) + + c.JSON(http.StatusOK, gin.H{ + "id": strategy.ID, + "name": strategy.Name, + "description": strategy.Description, + "is_active": strategy.IsActive, + "is_default": strategy.IsDefault, + "config": config, + "created_at": strategy.CreatedAt, + "updated_at": strategy.UpdatedAt, + }) +} + +// handleCreateStrategy 创建策略 +func (s *Server) handleCreateStrategy(c *gin.Context) { + userID := c.GetString("user_id") + if userID == "" { + c.JSON(http.StatusUnauthorized, gin.H{"error": "未授权"}) + return + } + + var req struct { + Name string `json:"name" binding:"required"` + Description string `json:"description"` + Config store.StrategyConfig `json:"config" binding:"required"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "无效的请求参数: " + err.Error()}) + return + } + + // 序列化配置 + configJSON, err := json.Marshal(req.Config) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "序列化配置失败"}) + return + } + + strategy := &store.Strategy{ + ID: uuid.New().String(), + UserID: userID, + Name: req.Name, + Description: req.Description, + IsActive: false, + IsDefault: false, + Config: string(configJSON), + } + + if err := s.store.Strategy().Create(strategy); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "创建策略失败: " + err.Error()}) + return + } + + c.JSON(http.StatusOK, gin.H{ + "id": strategy.ID, + "message": "策略创建成功", + }) +} + +// handleUpdateStrategy 更新策略 +func (s *Server) handleUpdateStrategy(c *gin.Context) { + userID := c.GetString("user_id") + strategyID := c.Param("id") + + if userID == "" { + c.JSON(http.StatusUnauthorized, gin.H{"error": "未授权"}) + return + } + + // 检查是否是系统默认策略 + existing, err := s.store.Strategy().Get(userID, strategyID) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "策略不存在"}) + return + } + if existing.IsDefault { + c.JSON(http.StatusForbidden, gin.H{"error": "不能修改系统默认策略"}) + return + } + + var req struct { + Name string `json:"name"` + Description string `json:"description"` + Config store.StrategyConfig `json:"config"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "无效的请求参数: " + err.Error()}) + return + } + + // 序列化配置 + configJSON, err := json.Marshal(req.Config) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "序列化配置失败"}) + return + } + + strategy := &store.Strategy{ + ID: strategyID, + UserID: userID, + Name: req.Name, + Description: req.Description, + Config: string(configJSON), + } + + if err := s.store.Strategy().Update(strategy); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "更新策略失败: " + err.Error()}) + return + } + + c.JSON(http.StatusOK, gin.H{"message": "策略更新成功"}) +} + +// handleDeleteStrategy 删除策略 +func (s *Server) handleDeleteStrategy(c *gin.Context) { + userID := c.GetString("user_id") + strategyID := c.Param("id") + + if userID == "" { + c.JSON(http.StatusUnauthorized, gin.H{"error": "未授权"}) + return + } + + if err := s.store.Strategy().Delete(userID, strategyID); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "删除策略失败: " + err.Error()}) + return + } + + c.JSON(http.StatusOK, gin.H{"message": "策略删除成功"}) +} + +// handleActivateStrategy 激活策略 +func (s *Server) handleActivateStrategy(c *gin.Context) { + userID := c.GetString("user_id") + strategyID := c.Param("id") + + if userID == "" { + c.JSON(http.StatusUnauthorized, gin.H{"error": "未授权"}) + return + } + + if err := s.store.Strategy().SetActive(userID, strategyID); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "激活策略失败: " + err.Error()}) + return + } + + c.JSON(http.StatusOK, gin.H{"message": "策略激活成功"}) +} + +// handleDuplicateStrategy 复制策略 +func (s *Server) handleDuplicateStrategy(c *gin.Context) { + userID := c.GetString("user_id") + sourceID := c.Param("id") + + if userID == "" { + c.JSON(http.StatusUnauthorized, gin.H{"error": "未授权"}) + return + } + + var req struct { + Name string `json:"name" binding:"required"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "无效的请求参数: " + err.Error()}) + return + } + + newID := uuid.New().String() + if err := s.store.Strategy().Duplicate(userID, sourceID, newID, req.Name); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "复制策略失败: " + err.Error()}) + return + } + + c.JSON(http.StatusOK, gin.H{ + "id": newID, + "message": "策略复制成功", + }) +} + +// handleGetActiveStrategy 获取当前激活的策略 +func (s *Server) handleGetActiveStrategy(c *gin.Context) { + userID := c.GetString("user_id") + + if userID == "" { + c.JSON(http.StatusUnauthorized, gin.H{"error": "未授权"}) + return + } + + strategy, err := s.store.Strategy().GetActive(userID) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "没有激活的策略"}) + return + } + + var config store.StrategyConfig + json.Unmarshal([]byte(strategy.Config), &config) + + c.JSON(http.StatusOK, gin.H{ + "id": strategy.ID, + "name": strategy.Name, + "description": strategy.Description, + "is_active": strategy.IsActive, + "is_default": strategy.IsDefault, + "config": config, + "created_at": strategy.CreatedAt, + "updated_at": strategy.UpdatedAt, + }) +} + +// handleGetDefaultStrategyConfig 获取默认策略配置模板 +func (s *Server) handleGetDefaultStrategyConfig(c *gin.Context) { + // 返回默认配置结构,供前端创建新策略时使用 + defaultConfig := store.StrategyConfig{ + CoinSource: store.CoinSourceConfig{ + SourceType: "coinpool", + UseCoinPool: true, + CoinPoolLimit: 30, + UseOITop: true, + OITopLimit: 20, + StaticCoins: []string{}, + }, + Indicators: store.IndicatorConfig{ + Klines: store.KlineConfig{ + PrimaryTimeframe: "5m", + PrimaryCount: 30, + LongerTimeframe: "4h", + LongerCount: 10, + EnableMultiTimeframe: true, + SelectedTimeframes: []string{"5m", "15m", "1h", "4h"}, + }, + EnableEMA: true, + EnableMACD: true, + EnableRSI: true, + EnableATR: true, + EnableVolume: true, + EnableOI: true, + EnableFundingRate: true, + EMAPeriods: []int{20, 50}, + RSIPeriods: []int{7, 14}, + ATRPeriods: []int{14}, + }, + RiskControl: store.RiskControlConfig{ + MaxPositions: 3, + BTCETHMaxLeverage: 5, + AltcoinMaxLeverage: 5, + MinRiskRewardRatio: 3.0, + MaxMarginUsage: 0.9, + MaxPositionRatio: 1.5, + MinPositionSize: 12, + MinConfidence: 75, + }, + PromptSections: store.PromptSectionsConfig{ + RoleDefinition: `# 你是专业的加密货币交易AI + +你专注于技术分析和风险管理,基于市场数据做出理性的交易决策。 +你的目标是在控制风险的前提下,捕捉高概率的交易机会。`, + TradingFrequency: `# ⏱️ 交易频率认知 + +- 优秀交易员:每天2-4笔 ≈ 每小时0.1-0.2笔 +- 每小时>2笔 = 过度交易 +- 单笔持仓时间≥30-60分钟 +如果你发现自己每个周期都在交易 → 标准过低;若持仓<30分钟就平仓 → 过于急躁。`, + EntryStandards: `# 🎯 开仓标准(严格) + +只在多重信号共振时开仓: +- 趋势方向明确(EMA排列、价格位置) +- 动量确认(MACD、RSI协同) +- 波动率适中(ATR合理范围) +- 量价配合(成交量支持方向) + +避免:单一指标、信号矛盾、横盘震荡、刚平仓即重启。`, + DecisionProcess: `# 📋 决策流程 + +1. 检查持仓 → 是否该止盈/止损 +2. 扫描候选币 + 多时间框 → 是否存在强信号 +3. 评估风险回报比 → 是否满足最小要求 +4. 先写思维链,再输出结构化JSON`, + }, + } + + c.JSON(http.StatusOK, defaultConfig) +} + +// handlePreviewPrompt 预览策略生成的 Prompt +func (s *Server) handlePreviewPrompt(c *gin.Context) { + userID := c.GetString("user_id") + if userID == "" { + c.JSON(http.StatusUnauthorized, gin.H{"error": "未授权"}) + return + } + + var req struct { + Config store.StrategyConfig `json:"config" binding:"required"` + AccountEquity float64 `json:"account_equity"` + PromptVariant string `json:"prompt_variant"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "无效的请求参数: " + err.Error()}) + return + } + + // 使用默认值 + if req.AccountEquity <= 0 { + req.AccountEquity = 1000.0 // 默认模拟账户净值 + } + if req.PromptVariant == "" { + req.PromptVariant = "balanced" + } + + // 创建策略引擎来构建 prompt + engine := decision.NewStrategyEngine(&req.Config) + + // 构建系统 prompt(使用策略引擎内置的方法) + systemPrompt := engine.BuildSystemPrompt( + req.AccountEquity, + req.PromptVariant, + ) + + // 获取可用的 prompt 模板列表 + templateNames := decision.GetAllPromptTemplateNames() + + c.JSON(http.StatusOK, gin.H{ + "system_prompt": systemPrompt, + "prompt_variant": req.PromptVariant, + "available_templates": templateNames, + "config_summary": gin.H{ + "coin_source": req.Config.CoinSource.SourceType, + "primary_tf": req.Config.Indicators.Klines.PrimaryTimeframe, + "btc_eth_leverage": req.Config.RiskControl.BTCETHMaxLeverage, + "altcoin_leverage": req.Config.RiskControl.AltcoinMaxLeverage, + "max_positions": req.Config.RiskControl.MaxPositions, + }, + }) +} + +// handleStrategyTestRun AI 测试运行(不执行交易,只返回 AI 分析结果) +func (s *Server) handleStrategyTestRun(c *gin.Context) { + userID := c.GetString("user_id") + if userID == "" { + c.JSON(http.StatusUnauthorized, gin.H{"error": "未授权"}) + return + } + + var req struct { + Config store.StrategyConfig `json:"config" binding:"required"` + PromptVariant string `json:"prompt_variant"` + AIModelID string `json:"ai_model_id"` + RunRealAI bool `json:"run_real_ai"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "无效的请求参数: " + err.Error()}) + return + } + + if req.PromptVariant == "" { + req.PromptVariant = "balanced" + } + + // 创建策略引擎来构建 prompt + engine := decision.NewStrategyEngine(&req.Config) + + // 获取候选币种 + candidates, err := engine.GetCandidateCoins() + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "获取候选币种失败: " + err.Error(), + "ai_response": "", + }) + return + } + + // 获取时间周期配置 + timeframes := req.Config.Indicators.Klines.SelectedTimeframes + primaryTimeframe := req.Config.Indicators.Klines.PrimaryTimeframe + klineCount := req.Config.Indicators.Klines.PrimaryCount + + // 如果没有选择时间周期,使用默认值 + if len(timeframes) == 0 { + // 兼容旧配置:使用主周期和长周期 + if primaryTimeframe != "" { + timeframes = append(timeframes, primaryTimeframe) + } else { + timeframes = append(timeframes, "3m") + } + if req.Config.Indicators.Klines.LongerTimeframe != "" { + timeframes = append(timeframes, req.Config.Indicators.Klines.LongerTimeframe) + } + } + if primaryTimeframe == "" { + primaryTimeframe = timeframes[0] + } + if klineCount <= 0 { + klineCount = 30 + } + + fmt.Printf("📊 使用时间周期: %v, 主周期: %s, K线数量: %d\n", timeframes, primaryTimeframe, klineCount) + + // 获取真实市场数据(使用多时间周期) + marketDataMap := make(map[string]*market.Data) + for _, coin := range candidates { + data, err := market.GetWithTimeframes(coin.Symbol, timeframes, primaryTimeframe, klineCount) + if err != nil { + // 如果获取某个币种数据失败,记录日志但继续 + fmt.Printf("⚠️ 获取 %s 市场数据失败: %v\n", coin.Symbol, err) + continue + } + marketDataMap[coin.Symbol] = data + } + + // 构建真实的上下文(用于生成 User Prompt) + testContext := &decision.Context{ + CurrentTime: time.Now().Format("2006-01-02 15:04:05"), + RuntimeMinutes: 0, + CallCount: 1, + Account: decision.AccountInfo{ + TotalEquity: 1000.0, + AvailableBalance: 1000.0, + UnrealizedPnL: 0, + TotalPnL: 0, + TotalPnLPct: 0, + MarginUsed: 0, + MarginUsedPct: 0, + PositionCount: 0, + }, + Positions: []decision.PositionInfo{}, + CandidateCoins: candidates, + PromptVariant: req.PromptVariant, + MarketDataMap: marketDataMap, + } + + // 构建 System Prompt + systemPrompt := engine.BuildSystemPrompt(1000.0, req.PromptVariant) + + // 构建 User Prompt(使用真实市场数据) + userPrompt := engine.BuildUserPrompt(testContext) + + // 如果请求真实 AI 调用 + if req.RunRealAI && req.AIModelID != "" { + aiResponse, aiErr := s.runRealAITest(userID, req.AIModelID, systemPrompt, userPrompt) + if aiErr != nil { + c.JSON(http.StatusOK, gin.H{ + "system_prompt": systemPrompt, + "user_prompt": userPrompt, + "candidate_count": len(candidates), + "candidates": candidates, + "prompt_variant": req.PromptVariant, + "ai_response": fmt.Sprintf("❌ AI 调用失败: %s", aiErr.Error()), + "ai_error": aiErr.Error(), + "note": "AI 调用出错", + }) + return + } + + c.JSON(http.StatusOK, gin.H{ + "system_prompt": systemPrompt, + "user_prompt": userPrompt, + "candidate_count": len(candidates), + "candidates": candidates, + "prompt_variant": req.PromptVariant, + "ai_response": aiResponse, + "note": "✅ 真实 AI 测试运行成功", + }) + return + } + + // 返回结果(不实际调用 AI,只返回构建的 prompt) + c.JSON(http.StatusOK, gin.H{ + "system_prompt": systemPrompt, + "user_prompt": userPrompt, + "candidate_count": len(candidates), + "candidates": candidates, + "prompt_variant": req.PromptVariant, + "ai_response": "请选择 AI 模型并点击「运行测试」来执行真实的 AI 分析。", + "note": "未选择 AI 模型或未启用真实 AI 调用", + }) +} + +// runRealAITest 执行真实的 AI 测试调用 +func (s *Server) runRealAITest(userID, modelID, systemPrompt, userPrompt string) (string, error) { + // 获取 AI 模型配置 + model, err := s.store.AIModel().Get(userID, modelID) + if err != nil { + return "", fmt.Errorf("获取 AI 模型失败: %w", err) + } + + if !model.Enabled { + return "", fmt.Errorf("AI 模型 %s 尚未启用", model.Name) + } + + if model.APIKey == "" { + return "", fmt.Errorf("AI 模型 %s 缺少 API Key", model.Name) + } + + // 创建 AI 客户端 + var aiClient mcp.AIClient + provider := model.Provider + + switch provider { + case "qwen": + aiClient = mcp.NewQwenClient() + aiClient.SetAPIKey(model.APIKey, model.CustomAPIURL, model.CustomModelName) + case "deepseek": + aiClient = mcp.NewDeepSeekClient() + aiClient.SetAPIKey(model.APIKey, model.CustomAPIURL, model.CustomModelName) + default: + // 使用通用客户端 + aiClient = mcp.NewClient() + aiClient.SetAPIKey(model.APIKey, model.CustomAPIURL, model.CustomModelName) + } + + // 调用 AI API + response, err := aiClient.CallWithMessages(systemPrompt, userPrompt) + if err != nil { + return "", fmt.Errorf("AI API 调用失败: %w", err) + } + + return response, nil +} + diff --git a/decision/engine.go b/decision/engine.go index 470d43a9..5207aac7 100644 --- a/decision/engine.go +++ b/decision/engine.go @@ -146,6 +146,164 @@ func GetFullDecision(ctx *Context, mcpClient mcp.AIClient) (*FullDecision, error return GetFullDecisionWithCustomPrompt(ctx, mcpClient, "", false, "") } +// GetFullDecisionWithStrategy 使用 StrategyEngine 获取AI决策(新版:策略驱动) +// 关键:使用策略配置的时间周期来获取市场数据,与 api/strategy.go 的测试运行逻辑保持一致 +func GetFullDecisionWithStrategy(ctx *Context, mcpClient mcp.AIClient, engine *StrategyEngine, variant string) (*FullDecision, error) { + if ctx == nil { + return nil, fmt.Errorf("context is nil") + } + if engine == nil { + // 如果没有策略引擎,回退到默认行为 + return GetFullDecisionWithCustomPrompt(ctx, mcpClient, "", false, "") + } + + // 1. 使用策略配置获取市场数据(关键:使用多时间周期) + if len(ctx.MarketDataMap) == 0 { + if err := fetchMarketDataWithStrategy(ctx, engine); err != nil { + return nil, fmt.Errorf("获取市场数据失败: %w", err) + } + } + + // 确保 OITopDataMap 已初始化 + if ctx.OITopDataMap == nil { + ctx.OITopDataMap = make(map[string]*OITopData) + // 加载 OI Top 数据 + oiPositions, err := pool.GetOITopPositions() + if err == nil { + for _, pos := range oiPositions { + ctx.OITopDataMap[pos.Symbol] = &OITopData{ + Rank: pos.Rank, + OIDeltaPercent: pos.OIDeltaPercent, + OIDeltaValue: pos.OIDeltaValue, + PriceDeltaPercent: pos.PriceDeltaPercent, + NetLong: pos.NetLong, + NetShort: pos.NetShort, + } + } + } + } + + // 2. 使用策略引擎构建 System Prompt + riskConfig := engine.GetRiskControlConfig() + systemPrompt := engine.BuildSystemPrompt(ctx.Account.TotalEquity, variant) + + // 3. 使用策略引擎构建 User Prompt(包含多周期数据) + userPrompt := engine.BuildUserPrompt(ctx) + + // 4. 调用AI API + aiCallStart := time.Now() + aiResponse, err := mcpClient.CallWithMessages(systemPrompt, userPrompt) + aiCallDuration := time.Since(aiCallStart) + if err != nil { + return nil, fmt.Errorf("调用AI API失败: %w", err) + } + + // 5. 解析AI响应 + decision, err := parseFullDecisionResponse( + aiResponse, + ctx.Account.TotalEquity, + riskConfig.BTCETHMaxLeverage, + riskConfig.AltcoinMaxLeverage, + ) + + if decision != nil { + decision.Timestamp = time.Now() + decision.SystemPrompt = systemPrompt + decision.UserPrompt = userPrompt + decision.AIRequestDurationMs = aiCallDuration.Milliseconds() + } + + if err != nil { + return decision, fmt.Errorf("解析AI响应失败: %w", err) + } + + return decision, nil +} + +// fetchMarketDataWithStrategy 使用策略配置获取市场数据(多时间周期) +// 完全按照 api/strategy.go handleStrategyTestRun 的逻辑实现 +func fetchMarketDataWithStrategy(ctx *Context, engine *StrategyEngine) error { + config := engine.GetConfig() + ctx.MarketDataMap = make(map[string]*market.Data) + + // 获取时间周期配置(与 api/strategy.go 逻辑完全一致) + timeframes := config.Indicators.Klines.SelectedTimeframes + primaryTimeframe := config.Indicators.Klines.PrimaryTimeframe + klineCount := config.Indicators.Klines.PrimaryCount + + // 兼容旧配置 + if len(timeframes) == 0 { + if primaryTimeframe != "" { + timeframes = append(timeframes, primaryTimeframe) + } else { + timeframes = append(timeframes, "3m") + } + if config.Indicators.Klines.LongerTimeframe != "" { + timeframes = append(timeframes, config.Indicators.Klines.LongerTimeframe) + } + } + if primaryTimeframe == "" { + primaryTimeframe = timeframes[0] + } + if klineCount <= 0 { + klineCount = 30 + } + + logger.Infof("📊 策略时间周期: %v, 主周期: %s, K线数量: %d", timeframes, primaryTimeframe, klineCount) + + // 1. 先获取持仓币种的数据(必须获取) + for _, pos := range ctx.Positions { + data, err := market.GetWithTimeframes(pos.Symbol, timeframes, primaryTimeframe, klineCount) + if err != nil { + logger.Infof("⚠️ 获取持仓 %s 市场数据失败: %v", pos.Symbol, err) + continue + } + ctx.MarketDataMap[pos.Symbol] = data + } + + // 2. 获取所有候选币种的数据(与 api/strategy.go 完全一致,不做数量限制) + // 持仓币种集合(用于判断是否跳过OI检查) + positionSymbols := make(map[string]bool) + for _, pos := range ctx.Positions { + positionSymbols[pos.Symbol] = true + } + + // OI 流动性过滤阈值(百万美元) + const minOIThresholdMillions = 15.0 // 15M USD 最小持仓价值 + + for _, coin := range ctx.CandidateCoins { + // 跳过已获取的持仓币种 + if _, exists := ctx.MarketDataMap[coin.Symbol]; exists { + continue + } + + data, err := market.GetWithTimeframes(coin.Symbol, timeframes, primaryTimeframe, klineCount) + if err != nil { + logger.Infof("⚠️ 获取 %s 市场数据失败: %v", coin.Symbol, err) + continue + } + + // ⚠️ 流动性过滤:持仓价值低于阈值的币种不做(多空都不做) + // 但现有持仓必须保留(需要决策是否平仓) + isExistingPosition := positionSymbols[coin.Symbol] + if !isExistingPosition && data.OpenInterest != nil && data.CurrentPrice > 0 { + // 计算持仓价值(USD)= 持仓量 × 当前价格 + oiValue := data.OpenInterest.Latest * data.CurrentPrice + oiValueInMillions := oiValue / 1_000_000 // 转换为百万美元单位 + if oiValueInMillions < minOIThresholdMillions { + logger.Infof("⚠️ %s 持仓价值过低(%.2fM USD < %.1fM),跳过此币种 [持仓量:%.0f × 价格:%.4f]", + coin.Symbol, oiValueInMillions, minOIThresholdMillions, data.OpenInterest.Latest, data.CurrentPrice) + continue + } + } + + ctx.MarketDataMap[coin.Symbol] = data + } + + logger.Infof("📊 成功获取 %d 个币种的多时间周期市场数据(已过滤低流动性币种)", len(ctx.MarketDataMap)) + return nil +} + // GetFullDecisionWithCustomPrompt 获取AI的完整交易决策(支持自定义prompt和模板选择) func GetFullDecisionWithCustomPrompt(ctx *Context, mcpClient mcp.AIClient, customPrompt string, overrideBase bool, templateName string) (*FullDecision, error) { if ctx == nil { diff --git a/decision/strategy_engine.go b/decision/strategy_engine.go new file mode 100644 index 00000000..55c2da2c --- /dev/null +++ b/decision/strategy_engine.go @@ -0,0 +1,719 @@ +package decision + +import ( + "encoding/json" + "fmt" + "io" + "net/http" + "nofx/logger" + "nofx/market" + "nofx/pool" + "nofx/store" + "strings" + "time" +) + +// StrategyEngine 策略执行引擎 +// 负责基于策略配置动态获取数据和组装 Prompt +type StrategyEngine struct { + config *store.StrategyConfig +} + +// NewStrategyEngine 创建策略执行引擎 +func NewStrategyEngine(config *store.StrategyConfig) *StrategyEngine { + return &StrategyEngine{config: config} +} + +// GetCandidateCoins 根据策略配置获取候选币种 +func (e *StrategyEngine) GetCandidateCoins() ([]CandidateCoin, error) { + var candidates []CandidateCoin + symbolSources := make(map[string][]string) + + coinSource := e.config.CoinSource + + // 设置自定义的 API URL(如果配置了) + if coinSource.CoinPoolAPIURL != "" { + pool.SetCoinPoolAPI(coinSource.CoinPoolAPIURL) + logger.Infof("✓ 使用策略配置的 AI500 API URL: %s", coinSource.CoinPoolAPIURL) + } + if coinSource.OITopAPIURL != "" { + pool.SetOITopAPI(coinSource.OITopAPIURL) + logger.Infof("✓ 使用策略配置的 OI Top API URL: %s", coinSource.OITopAPIURL) + } + + switch coinSource.SourceType { + case "static": + // 静态币种列表 + for _, symbol := range coinSource.StaticCoins { + symbol = market.Normalize(symbol) + candidates = append(candidates, CandidateCoin{ + Symbol: symbol, + Sources: []string{"static"}, + }) + } + return candidates, nil + + case "coinpool": + // 仅使用 AI500 币种池 + return e.getCoinPoolCoins(coinSource.CoinPoolLimit) + + case "oi_top": + // 仅使用 OI Top + return e.getOITopCoins(coinSource.OITopLimit) + + case "mixed": + // 混合模式:AI500 + OI Top + if coinSource.UseCoinPool { + poolCoins, err := e.getCoinPoolCoins(coinSource.CoinPoolLimit) + if err != nil { + logger.Infof("⚠️ 获取 AI500 币种池失败: %v", err) + } else { + for _, coin := range poolCoins { + symbolSources[coin.Symbol] = append(symbolSources[coin.Symbol], "ai500") + } + } + } + + if coinSource.UseOITop { + oiCoins, err := e.getOITopCoins(coinSource.OITopLimit) + if err != nil { + logger.Infof("⚠️ 获取 OI Top 失败: %v", err) + } else { + for _, coin := range oiCoins { + symbolSources[coin.Symbol] = append(symbolSources[coin.Symbol], "oi_top") + } + } + } + + // 添加静态币种(如果有) + for _, symbol := range coinSource.StaticCoins { + symbol = market.Normalize(symbol) + if _, exists := symbolSources[symbol]; !exists { + symbolSources[symbol] = []string{"static"} + } else { + symbolSources[symbol] = append(symbolSources[symbol], "static") + } + } + + // 转换为候选币种列表 + for symbol, sources := range symbolSources { + candidates = append(candidates, CandidateCoin{ + Symbol: symbol, + Sources: sources, + }) + } + return candidates, nil + + default: + return nil, fmt.Errorf("未知的币种来源类型: %s", coinSource.SourceType) + } +} + +// getCoinPoolCoins 获取 AI500 币种池 +func (e *StrategyEngine) getCoinPoolCoins(limit int) ([]CandidateCoin, error) { + if limit <= 0 { + limit = 30 + } + + symbols, err := pool.GetTopRatedCoins(limit) + if err != nil { + return nil, err + } + + var candidates []CandidateCoin + for _, symbol := range symbols { + candidates = append(candidates, CandidateCoin{ + Symbol: symbol, + Sources: []string{"ai500"}, + }) + } + return candidates, nil +} + +// getOITopCoins 获取 OI Top 币种 +func (e *StrategyEngine) getOITopCoins(limit int) ([]CandidateCoin, error) { + if limit <= 0 { + limit = 20 + } + + positions, err := pool.GetOITopPositions() + if err != nil { + return nil, err + } + + var candidates []CandidateCoin + for i, pos := range positions { + if i >= limit { + break + } + symbol := market.Normalize(pos.Symbol) + candidates = append(candidates, CandidateCoin{ + Symbol: symbol, + Sources: []string{"oi_top"}, + }) + } + return candidates, nil +} + +// FetchMarketData 根据策略配置获取市场数据 +func (e *StrategyEngine) FetchMarketData(symbol string) (*market.Data, error) { + // 目前使用现有的 market.Get,后续可以根据策略配置自定义 + return market.Get(symbol) +} + +// FetchExternalData 获取外部数据源 +func (e *StrategyEngine) FetchExternalData() (map[string]interface{}, error) { + externalData := make(map[string]interface{}) + + for _, source := range e.config.Indicators.ExternalDataSources { + data, err := e.fetchSingleExternalSource(source) + if err != nil { + logger.Infof("⚠️ 获取外部数据源 [%s] 失败: %v", source.Name, err) + continue + } + externalData[source.Name] = data + } + + return externalData, nil +} + +// fetchSingleExternalSource 获取单个外部数据源 +func (e *StrategyEngine) fetchSingleExternalSource(source store.ExternalDataSource) (interface{}, error) { + client := &http.Client{ + Timeout: time.Duration(source.RefreshSecs) * time.Second, + } + + if client.Timeout == 0 { + client.Timeout = 30 * time.Second + } + + req, err := http.NewRequest(source.Method, source.URL, nil) + if err != nil { + return nil, err + } + + // 添加请求头 + for k, v := range source.Headers { + req.Header.Set(k, v) + } + + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var result interface{} + if err := json.Unmarshal(body, &result); err != nil { + return nil, err + } + + // 如果指定了数据路径,提取指定路径的数据 + if source.DataPath != "" { + result = extractJSONPath(result, source.DataPath) + } + + return result, nil +} + +// extractJSONPath 提取 JSON 路径数据(简单实现) +func extractJSONPath(data interface{}, path string) interface{} { + parts := strings.Split(path, ".") + current := data + + for _, part := range parts { + if m, ok := current.(map[string]interface{}); ok { + current = m[part] + } else { + return nil + } + } + + return current +} + +// BuildUserPrompt 根据策略配置构建 User Prompt +func (e *StrategyEngine) BuildUserPrompt(ctx *Context) string { + var sb strings.Builder + + // 系统状态 + sb.WriteString(fmt.Sprintf("时间: %s | 周期: #%d | 运行: %d分钟\n\n", + ctx.CurrentTime, ctx.CallCount, ctx.RuntimeMinutes)) + + // BTC 市场(如果配置了) + if btcData, hasBTC := ctx.MarketDataMap["BTCUSDT"]; hasBTC { + sb.WriteString(fmt.Sprintf("BTC: %.2f (1h: %+.2f%%, 4h: %+.2f%%) | MACD: %.4f | RSI: %.2f\n\n", + btcData.CurrentPrice, btcData.PriceChange1h, btcData.PriceChange4h, + btcData.CurrentMACD, btcData.CurrentRSI7)) + } + + // 账户信息 + sb.WriteString(fmt.Sprintf("账户: 净值%.2f | 余额%.2f (%.1f%%) | 盈亏%+.2f%% | 保证金%.1f%% | 持仓%d个\n\n", + ctx.Account.TotalEquity, + ctx.Account.AvailableBalance, + (ctx.Account.AvailableBalance/ctx.Account.TotalEquity)*100, + ctx.Account.TotalPnLPct, + ctx.Account.MarginUsedPct, + ctx.Account.PositionCount)) + + // 持仓信息 + if len(ctx.Positions) > 0 { + sb.WriteString("## 当前持仓\n") + for i, pos := range ctx.Positions { + sb.WriteString(e.formatPositionInfo(i+1, pos, ctx)) + } + } else { + sb.WriteString("当前持仓: 无\n\n") + } + + // 交易统计 + if ctx.TradingStats != nil && ctx.TradingStats.TotalTrades > 0 { + sb.WriteString("## 历史交易统计\n") + sb.WriteString(fmt.Sprintf("总交易数: %d | 胜率: %.1f%% | 盈亏比: %.2f | 夏普比: %.2f\n", + ctx.TradingStats.TotalTrades, + ctx.TradingStats.WinRate, + ctx.TradingStats.ProfitFactor, + ctx.TradingStats.SharpeRatio)) + sb.WriteString(fmt.Sprintf("总盈亏: %.2f USDT | 平均盈利: %.2f | 平均亏损: %.2f | 最大回撤: %.1f%%\n\n", + ctx.TradingStats.TotalPnL, + ctx.TradingStats.AvgWin, + ctx.TradingStats.AvgLoss, + ctx.TradingStats.MaxDrawdownPct)) + } + + // 最近完成的订单 + if len(ctx.RecentOrders) > 0 { + sb.WriteString("## 最近完成的交易\n") + for i, order := range ctx.RecentOrders { + resultStr := "盈利" + if order.RealizedPnL < 0 { + resultStr = "亏损" + } + sb.WriteString(fmt.Sprintf("%d. %s %s | 入场%.4f 出场%.4f | %s: %+.2f USDT (%+.2f%%) | %s\n", + i+1, order.Symbol, order.Side, + order.EntryPrice, order.ExitPrice, + resultStr, order.RealizedPnL, order.PnLPct, + order.FilledAt)) + } + sb.WriteString("\n") + } + + // 候选币种 + sb.WriteString(fmt.Sprintf("## 候选币种 (%d个)\n\n", len(ctx.MarketDataMap))) + displayedCount := 0 + for _, coin := range ctx.CandidateCoins { + marketData, hasData := ctx.MarketDataMap[coin.Symbol] + if !hasData { + continue + } + displayedCount++ + + sourceTags := e.formatCoinSourceTag(coin.Sources) + sb.WriteString(fmt.Sprintf("### %d. %s%s\n\n", displayedCount, coin.Symbol, sourceTags)) + sb.WriteString(e.formatMarketData(marketData)) + sb.WriteString("\n") + } + sb.WriteString("\n") + + sb.WriteString("---\n\n") + sb.WriteString("现在请分析并输出决策(思维链 + JSON)\n") + + return sb.String() +} + +// formatPositionInfo 格式化持仓信息 +func (e *StrategyEngine) formatPositionInfo(index int, pos PositionInfo, ctx *Context) string { + var sb strings.Builder + + // 计算持仓时长 + holdingDuration := "" + if pos.UpdateTime > 0 { + durationMs := time.Now().UnixMilli() - pos.UpdateTime + durationMin := durationMs / (1000 * 60) + if durationMin < 60 { + holdingDuration = fmt.Sprintf(" | 持仓时长%d分钟", durationMin) + } else { + durationHour := durationMin / 60 + durationMinRemainder := durationMin % 60 + holdingDuration = fmt.Sprintf(" | 持仓时长%d小时%d分钟", durationHour, durationMinRemainder) + } + } + + // 计算仓位价值 + positionValue := pos.Quantity * pos.MarkPrice + if positionValue < 0 { + positionValue = -positionValue + } + + sb.WriteString(fmt.Sprintf("%d. %s %s | 入场价%.4f 当前价%.4f | 数量%.4f | 仓位价值%.2f USDT | 盈亏%+.2f%% | 盈亏金额%+.2f USDT | 最高收益率%.2f%% | 杠杆%dx | 保证金%.0f | 强平价%.4f%s\n\n", + index, pos.Symbol, strings.ToUpper(pos.Side), + pos.EntryPrice, pos.MarkPrice, pos.Quantity, positionValue, pos.UnrealizedPnLPct, pos.UnrealizedPnL, pos.PeakPnLPct, + pos.Leverage, pos.MarginUsed, pos.LiquidationPrice, holdingDuration)) + + // 使用策略配置的指标输出市场数据 + if marketData, ok := ctx.MarketDataMap[pos.Symbol]; ok { + sb.WriteString(e.formatMarketData(marketData)) + sb.WriteString("\n") + } + + return sb.String() +} + +// formatCoinSourceTag 格式化币种来源标签 +func (e *StrategyEngine) formatCoinSourceTag(sources []string) string { + if len(sources) > 1 { + return " (AI500+OI_Top双重信号)" + } else if len(sources) == 1 { + switch sources[0] { + case "ai500": + return " (AI500)" + case "oi_top": + return " (OI_Top持仓增长)" + case "static": + return " (手动选择)" + } + } + return "" +} + +// formatMarketData 根据策略配置格式化市场数据 +func (e *StrategyEngine) formatMarketData(data *market.Data) string { + var sb strings.Builder + indicators := e.config.Indicators + + // 当前价格(总是显示) + sb.WriteString(fmt.Sprintf("current_price = %.4f", data.CurrentPrice)) + + // EMA + if indicators.EnableEMA { + sb.WriteString(fmt.Sprintf(", current_ema20 = %.3f", data.CurrentEMA20)) + } + + // MACD + if indicators.EnableMACD { + sb.WriteString(fmt.Sprintf(", current_macd = %.3f", data.CurrentMACD)) + } + + // RSI + if indicators.EnableRSI { + sb.WriteString(fmt.Sprintf(", current_rsi7 = %.3f", data.CurrentRSI7)) + } + + sb.WriteString("\n\n") + + // OI 和 Funding Rate + if indicators.EnableOI || indicators.EnableFundingRate { + sb.WriteString(fmt.Sprintf("Additional data for %s:\n\n", data.Symbol)) + + if indicators.EnableOI && data.OpenInterest != nil { + sb.WriteString(fmt.Sprintf("Open Interest: Latest: %.2f Average: %.2f\n\n", + data.OpenInterest.Latest, data.OpenInterest.Average)) + } + + if indicators.EnableFundingRate { + sb.WriteString(fmt.Sprintf("Funding Rate: %.2e\n\n", data.FundingRate)) + } + } + + // 优先使用多时间周期数据(新增) + if len(data.TimeframeData) > 0 { + // 按时间周期排序输出 + timeframeOrder := []string{"1m", "3m", "5m", "15m", "30m", "1h", "2h", "4h", "6h", "8h", "12h", "1d", "3d", "1w"} + for _, tf := range timeframeOrder { + if tfData, ok := data.TimeframeData[tf]; ok { + sb.WriteString(fmt.Sprintf("=== %s Timeframe (oldest → latest) ===\n\n", strings.ToUpper(tf))) + e.formatTimeframeSeriesData(&sb, tfData, indicators) + } + } + } else { + // 兼容旧的数据格式 + // 日内数据 + if data.IntradaySeries != nil { + klineConfig := indicators.Klines + sb.WriteString(fmt.Sprintf("Intraday series (%s intervals, oldest → latest):\n\n", klineConfig.PrimaryTimeframe)) + + if len(data.IntradaySeries.MidPrices) > 0 { + sb.WriteString(fmt.Sprintf("Mid prices: %s\n\n", formatFloatSlice(data.IntradaySeries.MidPrices))) + } + + if indicators.EnableEMA && len(data.IntradaySeries.EMA20Values) > 0 { + sb.WriteString(fmt.Sprintf("EMA indicators (20-period): %s\n\n", formatFloatSlice(data.IntradaySeries.EMA20Values))) + } + + if indicators.EnableMACD && len(data.IntradaySeries.MACDValues) > 0 { + sb.WriteString(fmt.Sprintf("MACD indicators: %s\n\n", formatFloatSlice(data.IntradaySeries.MACDValues))) + } + + if indicators.EnableRSI { + if len(data.IntradaySeries.RSI7Values) > 0 { + sb.WriteString(fmt.Sprintf("RSI indicators (7-Period): %s\n\n", formatFloatSlice(data.IntradaySeries.RSI7Values))) + } + if len(data.IntradaySeries.RSI14Values) > 0 { + sb.WriteString(fmt.Sprintf("RSI indicators (14-Period): %s\n\n", formatFloatSlice(data.IntradaySeries.RSI14Values))) + } + } + + if indicators.EnableVolume && len(data.IntradaySeries.Volume) > 0 { + sb.WriteString(fmt.Sprintf("Volume: %s\n\n", formatFloatSlice(data.IntradaySeries.Volume))) + } + + if indicators.EnableATR { + sb.WriteString(fmt.Sprintf("3m ATR (14-period): %.3f\n\n", data.IntradaySeries.ATR14)) + } + } + + // 长周期数据 + if data.LongerTermContext != nil && indicators.Klines.EnableMultiTimeframe { + sb.WriteString(fmt.Sprintf("Longer-term context (%s timeframe):\n\n", indicators.Klines.LongerTimeframe)) + + if indicators.EnableEMA { + sb.WriteString(fmt.Sprintf("20-Period EMA: %.3f vs. 50-Period EMA: %.3f\n\n", + data.LongerTermContext.EMA20, data.LongerTermContext.EMA50)) + } + + if indicators.EnableATR { + sb.WriteString(fmt.Sprintf("3-Period ATR: %.3f vs. 14-Period ATR: %.3f\n\n", + data.LongerTermContext.ATR3, data.LongerTermContext.ATR14)) + } + + if indicators.EnableVolume { + sb.WriteString(fmt.Sprintf("Current Volume: %.3f vs. Average Volume: %.3f\n\n", + data.LongerTermContext.CurrentVolume, data.LongerTermContext.AverageVolume)) + } + + if indicators.EnableMACD && len(data.LongerTermContext.MACDValues) > 0 { + sb.WriteString(fmt.Sprintf("MACD indicators: %s\n\n", formatFloatSlice(data.LongerTermContext.MACDValues))) + } + + if indicators.EnableRSI && len(data.LongerTermContext.RSI14Values) > 0 { + sb.WriteString(fmt.Sprintf("RSI indicators (14-Period): %s\n\n", formatFloatSlice(data.LongerTermContext.RSI14Values))) + } + } + } + + return sb.String() +} + +// formatTimeframeSeriesData 格式化单个时间周期的序列数据 +func (e *StrategyEngine) formatTimeframeSeriesData(sb *strings.Builder, data *market.TimeframeSeriesData, indicators store.IndicatorConfig) { + if len(data.MidPrices) > 0 { + sb.WriteString(fmt.Sprintf("Mid prices: %s\n\n", formatFloatSlice(data.MidPrices))) + } + + if indicators.EnableEMA { + if len(data.EMA20Values) > 0 { + sb.WriteString(fmt.Sprintf("EMA indicators (20-period): %s\n\n", formatFloatSlice(data.EMA20Values))) + } + if len(data.EMA50Values) > 0 { + sb.WriteString(fmt.Sprintf("EMA indicators (50-period): %s\n\n", formatFloatSlice(data.EMA50Values))) + } + } + + if indicators.EnableMACD && len(data.MACDValues) > 0 { + sb.WriteString(fmt.Sprintf("MACD indicators: %s\n\n", formatFloatSlice(data.MACDValues))) + } + + if indicators.EnableRSI { + if len(data.RSI7Values) > 0 { + sb.WriteString(fmt.Sprintf("RSI indicators (7-Period): %s\n\n", formatFloatSlice(data.RSI7Values))) + } + if len(data.RSI14Values) > 0 { + sb.WriteString(fmt.Sprintf("RSI indicators (14-Period): %s\n\n", formatFloatSlice(data.RSI14Values))) + } + } + + if indicators.EnableVolume && len(data.Volume) > 0 { + sb.WriteString(fmt.Sprintf("Volume: %s\n\n", formatFloatSlice(data.Volume))) + } + + if indicators.EnableATR { + sb.WriteString(fmt.Sprintf("ATR (14-period): %.3f\n\n", data.ATR14)) + } +} + +// formatFloatSlice 格式化浮点数切片 +func formatFloatSlice(values []float64) string { + strValues := make([]string, len(values)) + for i, v := range values { + strValues[i] = fmt.Sprintf("%.4f", v) + } + return "[" + strings.Join(strValues, ", ") + "]" +} + +// BuildSystemPrompt 根据策略配置构建 System Prompt +func (e *StrategyEngine) BuildSystemPrompt(accountEquity float64, variant string) string { + var sb strings.Builder + riskControl := e.config.RiskControl + promptSections := e.config.PromptSections + + // 1. 角色定义(可编辑) + if promptSections.RoleDefinition != "" { + sb.WriteString(promptSections.RoleDefinition) + sb.WriteString("\n\n") + } else { + sb.WriteString("# 你是专业的加密货币交易AI\n\n") + sb.WriteString("你的任务是根据提供的市场数据做出交易决策。\n\n") + } + + // 2. 交易模式变体 + switch strings.ToLower(strings.TrimSpace(variant)) { + case "aggressive": + sb.WriteString("## 模式:Aggressive(进攻型)\n- 优先捕捉趋势突破,可在信心度≥70时分批建仓\n- 允许更高仓位,但须严格设置止损并说明盈亏比\n\n") + case "conservative": + sb.WriteString("## 模式:Conservative(稳健型)\n- 仅在多重信号共振时开仓\n- 优先保留现金,连续亏损必须暂停多个周期\n\n") + case "scalping": + sb.WriteString("## 模式:Scalping(剥头皮)\n- 聚焦短周期动量,目标收益较小但要求迅速\n- 若价格两根bar内未按预期运行,立即减仓或止损\n\n") + } + + // 3. 硬约束(风险控制)- 来自策略配置(不可编辑,自动生成) + sb.WriteString("# 硬约束(风险控制)\n\n") + sb.WriteString(fmt.Sprintf("1. 风险回报比: 必须 ≥ 1:%.1f\n", riskControl.MinRiskRewardRatio)) + sb.WriteString(fmt.Sprintf("2. 最多持仓: %d个币种(质量>数量)\n", riskControl.MaxPositions)) + sb.WriteString(fmt.Sprintf("3. 单币仓位: 山寨%.0f-%.0f U | BTC/ETH %.0f-%.0f U\n", + accountEquity*0.8, accountEquity*riskControl.MaxPositionRatio, + accountEquity*5, accountEquity*10)) + sb.WriteString(fmt.Sprintf("4. 杠杆限制: **山寨币最大%dx杠杆** | **BTC/ETH最大%dx杠杆**\n", + riskControl.AltcoinMaxLeverage, riskControl.BTCETHMaxLeverage)) + sb.WriteString(fmt.Sprintf("5. 保证金使用率 ≤ %.0f%%\n", riskControl.MaxMarginUsage*100)) + sb.WriteString(fmt.Sprintf("6. 开仓金额: 建议 ≥%.0f USDT\n", riskControl.MinPositionSize)) + sb.WriteString(fmt.Sprintf("7. 最小信心度: ≥%d\n\n", riskControl.MinConfidence)) + + // 4. 交易频率与信号质量(可编辑) + if promptSections.TradingFrequency != "" { + sb.WriteString(promptSections.TradingFrequency) + sb.WriteString("\n\n") + } else { + sb.WriteString("# ⏱️ 交易频率认知\n\n") + sb.WriteString("- 优秀交易员:每天2-4笔 ≈ 每小时0.1-0.2笔\n") + sb.WriteString("- 每小时>2笔 = 过度交易\n") + sb.WriteString("- 单笔持仓时间≥30-60分钟\n") + sb.WriteString("如果你发现自己每个周期都在交易 → 标准过低;若持仓<30分钟就平仓 → 过于急躁。\n\n") + } + + // 5. 开仓标准(可编辑) + if promptSections.EntryStandards != "" { + sb.WriteString(promptSections.EntryStandards) + sb.WriteString("\n\n你拥有以下指标数据:\n") + e.writeAvailableIndicators(&sb) + sb.WriteString(fmt.Sprintf("\n**信心度 ≥%d** 才能开仓。\n\n", riskControl.MinConfidence)) + } else { + sb.WriteString("# 🎯 开仓标准(严格)\n\n") + sb.WriteString("只在多重信号共振时开仓。你拥有:\n") + e.writeAvailableIndicators(&sb) + sb.WriteString(fmt.Sprintf("\n自由运用任何有效的分析方法,但**信心度 ≥%d** 才能开仓;避免单一指标、信号矛盾、横盘震荡、刚平仓即重启等低质量行为。\n\n", riskControl.MinConfidence)) + } + + // 6. 决策流程提示(可编辑) + if promptSections.DecisionProcess != "" { + sb.WriteString(promptSections.DecisionProcess) + sb.WriteString("\n\n") + } else { + sb.WriteString("# 📋 决策流程\n\n") + sb.WriteString("1. 检查持仓 → 是否该止盈/止损\n") + sb.WriteString("2. 扫描候选币 + 多时间框 → 是否存在强信号\n") + sb.WriteString("3. 先写思维链,再输出结构化JSON\n\n") + } + + // 7. 输出格式 + sb.WriteString("# 输出格式 (严格遵守)\n\n") + sb.WriteString("**必须使用XML标签 标签分隔思维链和决策JSON,避免解析错误**\n\n") + sb.WriteString("## 格式要求\n\n") + sb.WriteString("\n") + sb.WriteString("你的思维链分析...\n") + sb.WriteString("- 简洁分析你的思考过程 \n") + sb.WriteString("\n\n") + sb.WriteString("\n") + sb.WriteString("第二步: JSON决策数组\n\n") + sb.WriteString("```json\n[\n") + sb.WriteString(fmt.Sprintf(" {\"symbol\": \"BTCUSDT\", \"action\": \"open_short\", \"leverage\": %d, \"position_size_usd\": %.0f, \"stop_loss\": 97000, \"take_profit\": 91000, \"confidence\": 85, \"risk_usd\": 300},\n", + riskControl.BTCETHMaxLeverage, accountEquity*5)) + sb.WriteString(" {\"symbol\": \"ETHUSDT\", \"action\": \"close_long\"}\n") + sb.WriteString("]\n```\n") + sb.WriteString("\n\n") + sb.WriteString("## 字段说明\n\n") + sb.WriteString("- `action`: open_long | open_short | close_long | close_short | hold | wait\n") + sb.WriteString(fmt.Sprintf("- `confidence`: 0-100(开仓建议≥%d)\n", riskControl.MinConfidence)) + sb.WriteString("- 开仓时必填: leverage, position_size_usd, stop_loss, take_profit, confidence, risk_usd\n\n") + + // 8. 自定义 Prompt + if e.config.CustomPrompt != "" { + sb.WriteString("# 📌 个性化交易策略\n\n") + sb.WriteString(e.config.CustomPrompt) + sb.WriteString("\n\n") + sb.WriteString("注意: 以上个性化策略是对基础规则的补充,不能违背基础风险控制原则。\n") + } + + return sb.String() +} + +// writeAvailableIndicators 写入可用指标列表 +func (e *StrategyEngine) writeAvailableIndicators(sb *strings.Builder) { + indicators := e.config.Indicators + kline := indicators.Klines + + sb.WriteString(fmt.Sprintf("- %s价格序列", kline.PrimaryTimeframe)) + if kline.EnableMultiTimeframe { + sb.WriteString(fmt.Sprintf(" + %s K线序列\n", kline.LongerTimeframe)) + } else { + sb.WriteString("\n") + } + + if indicators.EnableEMA { + sb.WriteString("- EMA 指标") + if len(indicators.EMAPeriods) > 0 { + sb.WriteString(fmt.Sprintf("(周期: %v)", indicators.EMAPeriods)) + } + sb.WriteString("\n") + } + + if indicators.EnableMACD { + sb.WriteString("- MACD 指标\n") + } + + if indicators.EnableRSI { + sb.WriteString("- RSI 指标") + if len(indicators.RSIPeriods) > 0 { + sb.WriteString(fmt.Sprintf("(周期: %v)", indicators.RSIPeriods)) + } + sb.WriteString("\n") + } + + if indicators.EnableATR { + sb.WriteString("- ATR 指标") + if len(indicators.ATRPeriods) > 0 { + sb.WriteString(fmt.Sprintf("(周期: %v)", indicators.ATRPeriods)) + } + sb.WriteString("\n") + } + + if indicators.EnableVolume { + sb.WriteString("- 成交量数据\n") + } + + if indicators.EnableOI { + sb.WriteString("- 持仓量(OI)数据\n") + } + + if indicators.EnableFundingRate { + sb.WriteString("- 资金费率\n") + } + + if len(e.config.CoinSource.StaticCoins) > 0 || e.config.CoinSource.UseCoinPool || e.config.CoinSource.UseOITop { + sb.WriteString("- AI500 / OI_Top 筛选标签(若有)\n") + } +} + +// GetRiskControlConfig 获取风险控制配置 +func (e *StrategyEngine) GetRiskControlConfig() store.RiskControlConfig { + return e.config.RiskControl +} + +// GetConfig 获取完整策略配置 +func (e *StrategyEngine) GetConfig() *store.StrategyConfig { + return e.config +} diff --git a/docs/i18n/zh-CN/README.md b/docs/i18n/zh-CN/README.md index 17cbc370..02f12569 100644 --- a/docs/i18n/zh-CN/README.md +++ b/docs/i18n/zh-CN/README.md @@ -89,6 +89,10 @@ ![详情页面](../../../screenshots/details-page.png) *专业交易界面,包含权益曲线、实时持仓、AI决策日志,支持展开查看输入提示词和AI思维链推理过程* +### 🎛️ 策略工作室 - 自定义策略构建器 +![策略工作室](../../../screenshots/strategy-studio.png) +*三栏式策略编辑器,支持多时间周期选择(5m/15m/1h/4h)、技术指标配置、风险控制设置,以及基于实时市场数据的AI测试运行* + --- ## 🏦 支持的交易所(DEX/CEX教程) diff --git a/manager/trader_manager.go b/manager/trader_manager.go index ec510ba6..4dea8161 100644 --- a/manager/trader_manager.go +++ b/manager/trader_manager.go @@ -2,14 +2,12 @@ package manager import ( "context" - "encoding/json" "fmt" "nofx/logger" "nofx/store" "nofx/trader" "sort" "strconv" - "strings" "sync" "time" ) @@ -360,17 +358,6 @@ func (tm *TraderManager) LoadUserTradersFromStore(st *store.Store, userID string maxDailyLossStr, _ := st.SystemConfig().Get("max_daily_loss") maxDrawdownStr, _ := st.SystemConfig().Get("max_drawdown") stopTradingMinutesStr, _ := st.SystemConfig().Get("stop_trading_minutes") - defaultCoinsStr, _ := st.SystemConfig().Get("default_coins") - - // 获取用户信号源配置 - var coinPoolURL, oiTopURL string - if signalSource, err := st.SignalSource().Get(userID); err == nil { - coinPoolURL = signalSource.CoinPoolURL - oiTopURL = signalSource.OITopURL - logger.Infof("📡 加载用户 %s 的信号源配置: COIN POOL=%s, OI TOP=%s", userID, coinPoolURL, oiTopURL) - } else { - logger.Infof("🔍 用户 %s 暂未配置信号源", userID) - } // 解析配置 maxDailyLoss := 10.0 // 默认值 @@ -388,15 +375,6 @@ func (tm *TraderManager) LoadUserTradersFromStore(st *store.Store, userID string stopTradingMinutes = val } - // 解析默认币种列表 - var defaultCoins []string - if defaultCoinsStr != "" { - if err := json.Unmarshal([]byte(defaultCoinsStr), &defaultCoins); err != nil { - logger.Infof("⚠️ 解析默认币种配置失败: %v,使用空列表", err) - defaultCoins = []string{} - } - } - // 获取AI模型和交易所列表(在循环外只查询一次) aiModels, err := st.AIModel().List(userID) if err != nil { @@ -465,7 +443,7 @@ func (tm *TraderManager) LoadUserTradersFromStore(st *store.Store, userID string } // 使用现有的方法加载交易员 - err = tm.addTraderFromStore(traderCfg, aiModelCfg, exchangeCfg, coinPoolURL, oiTopURL, maxDailyLoss, maxDrawdown, stopTradingMinutes, defaultCoins, st) + err = tm.addTraderFromStore(traderCfg, aiModelCfg, exchangeCfg, maxDailyLoss, maxDrawdown, stopTradingMinutes, st) if err != nil { logger.Infof("⚠️ 加载交易员 %s 失败: %v", traderCfg.Name, err) } @@ -505,7 +483,6 @@ func (tm *TraderManager) LoadTradersFromStore(st *store.Store) error { maxDailyLossStr, _ := st.SystemConfig().Get("max_daily_loss") maxDrawdownStr, _ := st.SystemConfig().Get("max_drawdown") stopTradingMinutesStr, _ := st.SystemConfig().Get("stop_trading_minutes") - defaultCoinsStr, _ := st.SystemConfig().Get("default_coins") // 解析配置 maxDailyLoss := 10.0 // 默认值 @@ -523,15 +500,6 @@ func (tm *TraderManager) LoadTradersFromStore(st *store.Store) error { stopTradingMinutes = val } - // 解析默认币种列表 - var defaultCoins []string - if defaultCoinsStr != "" { - if err := json.Unmarshal([]byte(defaultCoinsStr), &defaultCoins); err != nil { - logger.Infof("⚠️ 解析默认币种配置失败: %v,使用空列表", err) - defaultCoins = []string{} - } - } - // 为每个交易员获取AI模型和交易所配置 for _, traderCfg := range allTraders { // 获取AI模型配置 @@ -595,17 +563,8 @@ func (tm *TraderManager) LoadTradersFromStore(st *store.Store) error { continue } - // 获取用户信号源配置 - var coinPoolURL, oiTopURL string - if signalSource, err := st.SignalSource().Get(traderCfg.UserID); err == nil { - coinPoolURL = signalSource.CoinPoolURL - oiTopURL = signalSource.OITopURL - } else { - logger.Infof("🔍 用户 %s 暂未配置信号源", traderCfg.UserID) - } - - // 添加到TraderManager - err = tm.addTraderFromStore(traderCfg, aiModelCfg, exchangeCfg, coinPoolURL, oiTopURL, maxDailyLoss, maxDrawdown, stopTradingMinutes, defaultCoins, st) + // 添加到TraderManager(coinPoolURL/oiTopURL 已从策略配置中获取) + err = tm.addTraderFromStore(traderCfg, aiModelCfg, exchangeCfg, maxDailyLoss, maxDrawdown, stopTradingMinutes, st) if err != nil { logger.Infof("❌ 添加交易员 %s 失败: %v", traderCfg.Name, err) continue @@ -617,36 +576,29 @@ func (tm *TraderManager) LoadTradersFromStore(st *store.Store) error { } // addTraderFromStore 内部方法:从store配置添加交易员 -func (tm *TraderManager) addTraderFromStore(traderCfg *store.Trader, aiModelCfg *store.AIModel, exchangeCfg *store.Exchange, coinPoolURL, oiTopURL string, maxDailyLoss, maxDrawdown float64, stopTradingMinutes int, defaultCoins []string, st *store.Store) error { +func (tm *TraderManager) addTraderFromStore(traderCfg *store.Trader, aiModelCfg *store.AIModel, exchangeCfg *store.Exchange, maxDailyLoss, maxDrawdown float64, stopTradingMinutes int, st *store.Store) error { if _, exists := tm.traders[traderCfg.ID]; exists { return fmt.Errorf("trader ID '%s' 已存在", traderCfg.ID) } - // 处理交易币种列表 - var tradingCoins []string - if traderCfg.TradingSymbols != "" { - symbols := strings.Split(traderCfg.TradingSymbols, ",") - for _, symbol := range symbols { - symbol = strings.TrimSpace(symbol) - if symbol != "" { - tradingCoins = append(tradingCoins, symbol) - } + // 加载策略配置(必须有策略) + var strategyConfig *store.StrategyConfig + if traderCfg.StrategyID != "" { + strategy, err := st.Strategy().Get(traderCfg.UserID, traderCfg.StrategyID) + if err != nil { + return fmt.Errorf("交易员 %s 的策略 %s 加载失败: %w", traderCfg.Name, traderCfg.StrategyID, err) } + // 解析 JSON 配置 + strategyConfig, err = strategy.ParseConfig() + if err != nil { + return fmt.Errorf("交易员 %s 的策略配置解析失败: %w", traderCfg.Name, err) + } + logger.Infof("✓ 交易员 %s 加载策略配置: %s", traderCfg.Name, strategy.Name) + } else { + return fmt.Errorf("交易员 %s 未配置策略", traderCfg.Name) } - // 如果没有指定交易币种,使用默认币种 - if len(tradingCoins) == 0 { - tradingCoins = defaultCoins - } - - // 根据交易员配置决定是否使用信号源 - var effectiveCoinPoolURL string - if traderCfg.UseCoinPool && coinPoolURL != "" { - effectiveCoinPoolURL = coinPoolURL - logger.Infof("✓ 交易员 %s 启用 COIN POOL 信号源: %s", traderCfg.Name, coinPoolURL) - } - - // 构建AutoTraderConfig + // 构建AutoTraderConfig(coinPoolURL/oiTopURL 从策略配置获取,在 StrategyEngine 中使用) traderConfig := trader.AutoTraderConfig{ ID: traderCfg.ID, Name: traderCfg.Name, @@ -656,7 +608,6 @@ func (tm *TraderManager) addTraderFromStore(traderCfg *store.Trader, aiModelCfg BinanceSecretKey: "", HyperliquidPrivateKey: "", HyperliquidTestnet: exchangeCfg.Testnet, - CoinPoolAPIURL: effectiveCoinPoolURL, UseQwen: aiModelCfg.Provider == "qwen", DeepSeekKey: "", QwenKey: "", @@ -664,15 +615,11 @@ func (tm *TraderManager) addTraderFromStore(traderCfg *store.Trader, aiModelCfg CustomModelName: aiModelCfg.CustomModelName, ScanInterval: time.Duration(traderCfg.ScanIntervalMinutes) * time.Minute, InitialBalance: traderCfg.InitialBalance, - BTCETHLeverage: traderCfg.BTCETHLeverage, - AltcoinLeverage: traderCfg.AltcoinLeverage, MaxDailyLoss: maxDailyLoss, MaxDrawdown: maxDrawdown, StopTradingTime: time.Duration(stopTradingMinutes) * time.Minute, IsCrossMargin: traderCfg.IsCrossMargin, - DefaultCoins: defaultCoins, - TradingCoins: tradingCoins, - SystemPromptTemplate: traderCfg.SystemPromptTemplate, + StrategyConfig: strategyConfig, } // 根据交易所类型设置API密钥 diff --git a/market/data.go b/market/data.go index 6a151391..c60e024e 100644 --- a/market/data.go +++ b/market/data.go @@ -112,6 +112,230 @@ func Get(symbol string) (*Data, error) { }, nil } +// GetWithTimeframes 获取指定多个时间周期的市场数据 +// timeframes: 时间周期列表,如 ["5m", "15m", "1h", "4h"] +// primaryTimeframe: 主时间周期(用于计算当前指标),默认使用 timeframes[0] +// count: 每个时间周期的 K 线数量 +func GetWithTimeframes(symbol string, timeframes []string, primaryTimeframe string, count int) (*Data, error) { + symbol = Normalize(symbol) + + if len(timeframes) == 0 { + return nil, fmt.Errorf("至少需要一个时间周期") + } + + // 如果未指定主周期,使用第一个 + if primaryTimeframe == "" { + primaryTimeframe = timeframes[0] + } + + // 确保主周期在列表中 + hasPrimary := false + for _, tf := range timeframes { + if tf == primaryTimeframe { + hasPrimary = true + break + } + } + if !hasPrimary { + timeframes = append([]string{primaryTimeframe}, timeframes...) + } + + // 存储所有时间周期的数据 + timeframeData := make(map[string]*TimeframeSeriesData) + var primaryKlines []Kline + + // 获取每个时间周期的 K 线数据 + for _, tf := range timeframes { + klines, err := WSMonitorCli.GetCurrentKlines(symbol, tf) + if err != nil { + logger.Infof("⚠️ 获取 %s %s K线失败: %v", symbol, tf, err) + continue + } + + if len(klines) == 0 { + logger.Infof("⚠️ %s %s K线数据为空", symbol, tf) + continue + } + + // 保存主周期的 K 线用于计算基础指标 + if tf == primaryTimeframe { + primaryKlines = klines + } + + // 计算该时间周期的系列数据 + seriesData := calculateTimeframeSeries(klines, tf) + timeframeData[tf] = seriesData + } + + // 如果主周期数据为空,返回错误 + if len(primaryKlines) == 0 { + return nil, fmt.Errorf("主时间周期 %s K线数据为空", primaryTimeframe) + } + + // Data staleness detection + if isStaleData(primaryKlines, symbol) { + logger.Infof("⚠️ WARNING: %s detected stale data (consecutive price freeze), skipping symbol", symbol) + return nil, fmt.Errorf("%s data is stale, possible cache failure", symbol) + } + + // 计算当前指标 (基于主周期最新数据) + currentPrice := primaryKlines[len(primaryKlines)-1].Close + currentEMA20 := calculateEMA(primaryKlines, 20) + currentMACD := calculateMACD(primaryKlines) + currentRSI7 := calculateRSI(primaryKlines, 7) + + // 计算价格变化 + priceChange1h := calculatePriceChangeByBars(primaryKlines, primaryTimeframe, 60) // 1小时 + priceChange4h := calculatePriceChangeByBars(primaryKlines, primaryTimeframe, 240) // 4小时 + + // 获取OI数据 + oiData, err := getOpenInterestData(symbol) + if err != nil { + oiData = &OIData{Latest: 0, Average: 0} + } + + // 获取Funding Rate + fundingRate, _ := getFundingRate(symbol) + + return &Data{ + Symbol: symbol, + CurrentPrice: currentPrice, + PriceChange1h: priceChange1h, + PriceChange4h: priceChange4h, + CurrentEMA20: currentEMA20, + CurrentMACD: currentMACD, + CurrentRSI7: currentRSI7, + OpenInterest: oiData, + FundingRate: fundingRate, + TimeframeData: timeframeData, + }, nil +} + +// calculateTimeframeSeries 计算单个时间周期的系列数据 +func calculateTimeframeSeries(klines []Kline, timeframe string) *TimeframeSeriesData { + data := &TimeframeSeriesData{ + Timeframe: timeframe, + MidPrices: make([]float64, 0, 10), + EMA20Values: make([]float64, 0, 10), + EMA50Values: make([]float64, 0, 10), + MACDValues: make([]float64, 0, 10), + RSI7Values: make([]float64, 0, 10), + RSI14Values: make([]float64, 0, 10), + Volume: make([]float64, 0, 10), + } + + // 获取最近10个数据点 + start := len(klines) - 10 + if start < 0 { + start = 0 + } + + for i := start; i < len(klines); i++ { + data.MidPrices = append(data.MidPrices, klines[i].Close) + data.Volume = append(data.Volume, klines[i].Volume) + + // 计算每个点的 EMA20 + if i >= 19 { + ema20 := calculateEMA(klines[:i+1], 20) + data.EMA20Values = append(data.EMA20Values, ema20) + } + + // 计算每个点的 EMA50 + if i >= 49 { + ema50 := calculateEMA(klines[:i+1], 50) + data.EMA50Values = append(data.EMA50Values, ema50) + } + + // 计算每个点的 MACD + if i >= 25 { + macd := calculateMACD(klines[:i+1]) + data.MACDValues = append(data.MACDValues, macd) + } + + // 计算每个点的 RSI + if i >= 7 { + rsi7 := calculateRSI(klines[:i+1], 7) + data.RSI7Values = append(data.RSI7Values, rsi7) + } + if i >= 14 { + rsi14 := calculateRSI(klines[:i+1], 14) + data.RSI14Values = append(data.RSI14Values, rsi14) + } + } + + // 计算 ATR14 + data.ATR14 = calculateATR(klines, 14) + + return data +} + +// calculatePriceChangeByBars 根据时间周期计算需要回溯多少根 K 线来计算价格变化 +func calculatePriceChangeByBars(klines []Kline, timeframe string, targetMinutes int) float64 { + if len(klines) < 2 { + return 0 + } + + // 解析时间周期为分钟数 + tfMinutes := parseTimeframeToMinutes(timeframe) + if tfMinutes <= 0 { + return 0 + } + + // 计算需要回溯多少根 K 线 + barsBack := targetMinutes / tfMinutes + if barsBack < 1 { + barsBack = 1 + } + + currentPrice := klines[len(klines)-1].Close + idx := len(klines) - 1 - barsBack + if idx < 0 { + idx = 0 + } + + oldPrice := klines[idx].Close + if oldPrice > 0 { + return ((currentPrice - oldPrice) / oldPrice) * 100 + } + return 0 +} + +// parseTimeframeToMinutes 将时间周期字符串解析为分钟数 +func parseTimeframeToMinutes(tf string) int { + switch tf { + case "1m": + return 1 + case "3m": + return 3 + case "5m": + return 5 + case "15m": + return 15 + case "30m": + return 30 + case "1h": + return 60 + case "2h": + return 120 + case "4h": + return 240 + case "6h": + return 360 + case "8h": + return 480 + case "12h": + return 720 + case "1d": + return 1440 + case "3d": + return 4320 + case "1w": + return 10080 + default: + return 0 + } +} + // calculateEMA 计算EMA func calculateEMA(klines []Kline, period int) float64 { if len(klines) < period { @@ -481,9 +705,54 @@ func Format(data *Data) string { } } + // 多时间周期数据(新增) + if len(data.TimeframeData) > 0 { + // 按时间周期排序输出 + timeframeOrder := []string{"1m", "3m", "5m", "15m", "30m", "1h", "2h", "4h", "6h", "8h", "12h", "1d", "3d", "1w"} + for _, tf := range timeframeOrder { + if tfData, ok := data.TimeframeData[tf]; ok { + sb.WriteString(fmt.Sprintf("=== %s Timeframe ===\n\n", strings.ToUpper(tf))) + formatTimeframeData(&sb, tfData) + } + } + } + return sb.String() } +// formatTimeframeData 格式化单个时间周期的数据 +func formatTimeframeData(sb *strings.Builder, data *TimeframeSeriesData) { + if len(data.MidPrices) > 0 { + sb.WriteString(fmt.Sprintf("Mid prices: %s\n\n", formatFloatSlice(data.MidPrices))) + } + + if len(data.EMA20Values) > 0 { + sb.WriteString(fmt.Sprintf("EMA indicators (20‑period): %s\n\n", formatFloatSlice(data.EMA20Values))) + } + + if len(data.EMA50Values) > 0 { + sb.WriteString(fmt.Sprintf("EMA indicators (50‑period): %s\n\n", formatFloatSlice(data.EMA50Values))) + } + + if len(data.MACDValues) > 0 { + sb.WriteString(fmt.Sprintf("MACD indicators: %s\n\n", formatFloatSlice(data.MACDValues))) + } + + if len(data.RSI7Values) > 0 { + sb.WriteString(fmt.Sprintf("RSI indicators (7‑Period): %s\n\n", formatFloatSlice(data.RSI7Values))) + } + + if len(data.RSI14Values) > 0 { + sb.WriteString(fmt.Sprintf("RSI indicators (14‑Period): %s\n\n", formatFloatSlice(data.RSI14Values))) + } + + if len(data.Volume) > 0 { + sb.WriteString(fmt.Sprintf("Volume: %s\n\n", formatFloatSlice(data.Volume))) + } + + sb.WriteString(fmt.Sprintf("ATR (14‑period): %.3f\n\n", data.ATR14)) +} + // formatPriceWithDynamicPrecision 根据价格区间动态选择精度 // 这样可以完美支持从超低价 meme coin (< 0.0001) 到 BTC/ETH 的所有币种 func formatPriceWithDynamicPrecision(price float64) string { diff --git a/market/types.go b/market/types.go index 3e4fd256..2c00e102 100644 --- a/market/types.go +++ b/market/types.go @@ -15,6 +15,21 @@ type Data struct { FundingRate float64 IntradaySeries *IntradayData LongerTermContext *LongerTermData + // 多时间周期数据(新增) + TimeframeData map[string]*TimeframeSeriesData `json:"timeframe_data,omitempty"` +} + +// TimeframeSeriesData 单个时间周期的序列数据 +type TimeframeSeriesData struct { + Timeframe string `json:"timeframe"` // 时间周期标识,如 "5m", "15m", "1h" + MidPrices []float64 `json:"mid_prices"` // 价格序列 + EMA20Values []float64 `json:"ema20_values"` // EMA20 序列 + EMA50Values []float64 `json:"ema50_values"` // EMA50 序列 + MACDValues []float64 `json:"macd_values"` // MACD 序列 + RSI7Values []float64 `json:"rsi7_values"` // RSI7 序列 + RSI14Values []float64 `json:"rsi14_values"` // RSI14 序列 + Volume []float64 `json:"volume"` // 成交量序列 + ATR14 float64 `json:"atr14"` // ATR14 } // OIData Open Interest数据 diff --git a/screenshots/strategy-studio.png b/screenshots/strategy-studio.png new file mode 100644 index 0000000000000000000000000000000000000000..37165957059910dca875d34bf62c1ffc00399786 GIT binary patch literal 436306 zcmeEuS3py1w{2*;5e3DKC((x!ZsY-3j)P}bZ=cZ4Y6IG3eNi-vbP^T%o-=+26`m?Db@a~(uMQq zu4{_&X}-MlHs%1e=|Vok{tACs zcx!yYqTn{QYlF%E1|-l76JTbBS~7WaBlgI_rTp(hF;?-||Na#CL^E{$+P|Iv&1H}L z`-xXB1}y)2=3ar)|NoKy^<@6vJ+Akcg)dyViG@M*=H};NBZe9Rpod4&(bRPXyFD6V z^)P7o<-fe*dn?#VixGA+CeZMc_QT_=9H8OkfBUm4Y=ub|mk}0WWri&`x;ZyH3j!I~ zuQ%E5%`c(%*KO~kH9$HN|FTsyTS_D_@}A?V-y}iB!dnFJDwFA3w&8+*`w?j;N5@|o zhuJaAn%ghwAV$==)nl|BwwU^F|FUae={2}x*FPEuE{z3#GzGGX=9IEXwzNmf9O3)_@g9#SPEK0GFw7v;)+2~^ zh4EEh(D38Gt~M1aBP$;AL0@I``RvQc^E;hHyZ=~u>%#TR_VMK)(4sCH{NLBfldhn?bC+c&f@yoK|Ezp}>pxfCKYV8-i4pO~ z=~VIJgv;M2*7axt8LmwKtQb08#0Gi|T%23KnnLto|GmhIAgSFinETG##!{cs+LEKZXD&w_ zk-(1bQ!RzJ(Dk~7FVbpcx@ zkNaJe!m`xs^Uaq#k><;rRwR$~bn4Cb$T(Wi)|o)p|J-Nin3gr&T5Afq{`jJo6<-#; ze{z={`d?RRdTj8{oO#80k9d2-Ov!XuJ?QuuCd+dOrDHlEm3ukf%cMW*LX2bW%`C-+ z@g4rZZx94ZB^qDVYzy;FJ{h5Z%_1IU3jzTv`~UY!mVa4!S(DJ@pB%Pips;Ld>1b1H z5Uv6`m;bLD>!QlT=O&5&;|V~R>+8BQqp%Y?j#D%mNVE0tkoj*L|8CGX?y^(i(f?7~ zhONX|U9<9Y+kaMGB;5Dm1r=ZT*GKPoSlZXU=D%+OQ5DVHBi}8Oj!S`n&>7DACj{>3 z1wq-c)!tw3O=Pe9a+QHU1;h8;c=Bs%U?z2M$z!E2`80|WEEO-`>@Q4x)47SLRBkLU zhM7rC_(_-@nI3p4la-%wB6Okw*42a>qUmELgH;cn^s9fp`D`ZqgoBBgD!f~Mg1`=1 zeEQ#m#mI6%z~al+LnLD@N75zY8bcWplqsyfkuRiPsqXZB-O>8^g%$z=Jw2P}?DU0Z%L1Cy&k&E` zG>}($n0@3>FuW2!-$JoJf`>o_tXe6T9D&rJQ(77ts@{fFy}U~JGh%>S8@8%tuJ@T* zwAIKLcO)!R*kS^J%7Ta?|cRNxR!SMdQ9Ul5M@Z)&on4g1>D!o>M9E}y{91E z6ENR-Q+!zZ^{ela1Sp=#vL?`Xwo9heaI?r~W}64g1&)n>CS;{|=?LgsYs3T(c~DFn zi`?H$X$>JplxduSR<+)yjJI@+z=M6tgt|qqFJ08n`CJmku!bNk&dqVWCv{Z~JG!?6hv`0nD>9zbeo!aKbNsc~zztc{j8mHi_8?u{v6^b7 zj<#=Qg%n<;sE1DPQ|$Jsdks5rDW~7ad$&RxRtG;UCU))$Hj9WuD;FeXUox>Af|V77 z4yfGDz2;UsQg~_IqS>hz`UPh6E{+~SpbR}6K6$Y94i1qE2N~#>+-SwE#v!6NNarxC zYkK7aEr@Jcj(a9Slc(ObWV@-~jAcWmTpdAx8R&1A&L{_>t`4Z4yZUE&Ns1RJ;^EHB z2=ce~WwNZW=6^2e4?FDoWt&4bKh*vXUr~Rh@pVdv5+U2nn2>p!D?3vwMqaG#F|T@K zR|2@8&q&ViJo>U1T6(u7wWpoxu2m2}%7bCcyrfj%Qe0>B?shnDR^n8+ZSb~(D6gr4 z5Ai(ATtZWQvrBu|i%)I)DDYT zmNeZ{9V&SwkhB}s>-ZL0s}#92*Bjd8*`_~5e}9v_=u%*&5=?=tcF^A_M{Jr*74Gvjxb)=Z_fEA_fm)f-?VG<^JMyOpBwV|iKpSr_$&9!KygTB`sxIEr%f!P4J zFL=7V-WVu+Bk$EQ;FfaRJI)dLU*TGuRm(Zp=yfWJ5-9%CtD$M%6x$x^zv{f{htTiM zl**4PE`9u%8C$AvRVJW#hSjwfN?nG*Y-TRH-)&-UxIccW!D%=kaDP*YT;uNy7sIHV zsVM~|gzdhl!wP8|+@mMu6s??<)kO$}H!7o7LD5QZ&hNHl-M#3?L|E|Ybs#m&6Ok^O3Jx4 z*;ye=s*uA?y@@Nl`e9K5SzB8R$$Ct5Unuu=|52~x-uJ5lhKaFHFNRCqM8zK*!7#bJtjOA>BlgSKF7oT?D>tt(Do0LL{KdOS;-XKFSuU6#rlv*)G!c-0!Z- z4mta*&u%-r)+1=-F7I>GaycAzIP+)j*$L;u?C(igcbbLr&EveYaxYDxWh6#B6J_$d zG9_ty24=>Kmdv4Pck`}Iz{9fB(!TfU%W*f#HlegJ1p}wgSrq@+P0?VGQMf2-6B?c) z=W%HJ0-LK#f6feATQ609Z2AkZ-FlMZi4i*j(JMfPoudOx1#b}~dHcoL#maa9_WpHT z(svRlLIqZYORGb=8}Wo_*cs)3*Fcyy`wLbSX>+-FT9gB+Z6xkt@Z{EEAG_{`V85FV zbv}bdAKb^5l?wbZD%05!zBC>D18rrcWx zUb*N6oxo3@-N-H3yl?@MZ8=T9poAzCT%fE-K1*Huw&osJ3EZdHF6@w5jp4T7MH+$Ov z$6rifM7+v02TJrRVnS^1Qrm{UDElBMMNr96oRU)2ZHyumh72SH>fHzOL=R9mzVcqx zb9&=^?9*!I@ynVL_U7Ts-L3ZaA&TaLR+!yyY(0VQP}AsW;oSjUE+i+{0qwgK zDSqKXBW$8VT%`@B?D3<;os!v>$9QK`|4SVE7NX+fEy5C?Oe^3ISHkxtW`-;^kc78H z7VbxHz0&bBQ}mBybsf=e3!=1xyRTIwi0+Vorp*vB%JtiwR?+KSlBi`rq$LSO*EpTV zdHo=+?-fr-`xi&FU39P}H(uED<;T^W$lPU6_{I z#xe)_d0D~QK2+z@+{Z*|r~`(t?8uR@^4m##JXT)v2M9v+{RN13(^OD=jx3!S+u+gk z`iauwdrs?%BZ)X|b-`8^mGuI#Xz;90Eb4`+FE#=4$SV^QMmt?3iA5GJ#cDTLHBGIc)#q+YITude zx{05&n;MhWnBHkGBJ~xhDO}Oc^g)`)veet{QTZG8-*;UdDpb-^WwI0&4%+Aho0RF( z@p=-PD&Lo%6T7|j)iDd|?1Me}0kgBsi%%GbQG2V=yAzAK@(gR2$iGA49O{)*Or!3n zpC09j8&rQKVn4ir|CA$a|5mfSjcScFK`5Ld`W+YAb*FJ6>TFqp?@Z?o?s4`kK8K8j ztIV84=w(&8cb8;UxD*nqfU5O&kJcX?Wq(M?r)jmn3EP14GIGhg8h0O266IYL{po@4 z?0DIuy|%rFDbsZ7G&*>m1>n9(Hq?ZS(Ycm>?9ERD#!bn&Z!pDPAK2Nj*Ng!k^OmP!~z+!$SW(V)U~hOT2K+z8m8QqhPP=-!sp{G`r$ZJC$k?p zS43X@NhQ`UN$S>r@g&ucKa9csYgzW;>k&K4BVk-W$M|orB9AFdEp0xB zD|q<>F?OEKbS9JmDUg?e-DdUr=z1bnd!{6dx@I^Zb8C3nqD z9OSlhX^y-{hlb0B6j!;EnH`DES#(qi5*}DsPm-UFxrh~!)eOf(a)n?8W33gd2y^e7 z0Gwz0rQEe3JgQAYo7uP3rlYb}NbKb*Re`up%U~^>a}h9aUS9u6Z`PURFwS;~x6xPD z-1%bHu`d41EqZI+$F|M-vrpqv;&#cjXV%uRL5zH$lZy-dl$7Odr@j0(Msi!;-j#LH zc9gV9C4lzCRs3czfkh;u2{N+1bbZC1#{$iFGd-Mn^WVShsY^lhLp3_A13WKxJ@z|! zel32^f}G%=n9PqR6wEY4Z-)&1ifn>VyAt_%+29|^AcSd|jgst$M)FjHoYj<{+mLS_ ztLtHaadbpq-BncRvkE?5q%T)<$W>p#3-zU~`xUCvQSVj^ZCgqqOaVVAZBadVCjCgU zOm$2Cw(K!uJxPUSr87geGtMzVQ`^T3qD9K`gK{*G%^<|&?#&xz58lT-vdxVk4sOi( zdpJ91YJY5~NzF}O*a9$!Rg?D&WE~5wY{##rgAi(FUt`&Z!Tb3C3PF(5nIfAYfZyZw zcUJw8`@~j7zbmx9C@lql%mD1$X4lO>LodsA;)Eh^@bWJbd8n)4=YTN5;bg`2Cx?h~ zw^~8BBxkM7QVP`aol5HR+i1Tq7_X-3GYc0q6VtB)(4d~;Gi`?&sf`aq>54VfU00zR=Vy{zaze=ye4*}!-W_=C+qTwA z3WiQ*3FsL1~1eTSo@t*sRb~1pu$r z=Jf02FUkQ$eJ{E^uV^zUvD~&9a%Dg1$p8ep&lT9? z=EXod-PJ|ga7Jh-hkV`Q7Kged@vo{Hh}Z$D)AJiZi0D52OtgDm1aETVhKBBcVo?{U zIu*UQj*M!1y44Rtu)0vZZU+F^>&)yga#OxmmmUs$>1dm`#k~OQkX4AqBPBy0N!Yn? zYURf@+1tDV9Ow?IuxF6NuF+u)IrNRg^ixEU#d%Q+_q)??=lV2MZVE)43tPeBp-YzNp3KoSWOnRbhk5)%OR&k*07ms#dNS$t%tQxXQ1TUyXnI4W`^fx~DL_2)l)j|REjXRxElRq5 z*p=R~7Z>cnN6DJrqfmRNKJ^C;HF{b7kFrEVs7!g3JDfOGgh(?nV$8YGEkn}2f)Ji{ z3`GMr0OJ`?@BgZcu3B7lDKx{vGWHzQc7W2Sq_kt5^=kOnf>R$=fUOg?UjG z&8_w`7a?syUM?+*J@{Ik|C}wpQK4TIN(t6hlphE~vy!<5 z-(P^2K!_{gd3gclnt>ibh1bSC)!-c}SapQunCN>=h9P;Im&QxtbFM{J(f4DskiMM- zJr4l*pJSq=X+_j8jC_ucj!Qlo$LD2yIp|9(f;b*%wO8bh^96s*_}0kTIney@`G^l$ z!SyM6#anG#nV};n`&;#L!dz6F^;1+hW+~S0*J#Db*CUk{{(;|S3{|bXo4YOM0U?9o z#9gHC!==7iy-iS<4h^_Z6Vlk9XH?R0T>HPi2+8_G*H#5;SY6GK7G;gZ2oKX*fiQmW zsi3wIpO=4d?n`ix*GRjn%iYrzA8*IdX2&1(I%caDCn)begiy!wArL}ote1@?WZipP zq|3-SBgpl-6Visc(b$MK{!WRE3WvdhLbZC+$jI$+z2qbc)fLG78nQ6F`+`MRtOPgd6{UmfX< zkQr=#8%jmHP}0Ic61fHhc^xJysn9b9YFfEK{04?T2dIhf+bLe%9ZrEf>fh3F%%(Av z3E$X1xk0Hp!ZDce{K+R|nxSJ1^lKv_rK~;O!@Y0g_6FGE+Y8 z{*He7#Y)hR?G*eRd~HUooB~F1zitAcptwTQqq>OSh5swxOH^1`G+@&kHb#3JtSZXH z>&<-h-708c*Ed0qK@cR4TuSt^C{kY@w4(T^XbOB4s_d|xvSWnqUJ0yBKar#MeWV~Z znST0BasWS!GhhKp^uUgA46e8h+M@g(Y=K8TOAF}C^%VBOxAlsDDAar@)yFIAea5Rl zu=jHp9n(-u6<5k7#m1}0^E}-@ktC*Rg>u)T_QF@pg?nqdcu7Cj&J6f{)~2^D8QhM6 za#qiVR^u+q+rC^w>tEr^4YKPi}|wJ~Mq@ryr&5v$D;Qb3!Ao7`gpB+-Ew9jEmmuvPxzRq3r26Zqby}tOLno5P(VXx_9x1ItG^~Z~Ih<|B zy=HQMH!4ree!9v_yh5LsSHMAUy8grv&T4F#kzch8qF`}Pr!U>X_xr9l-Ce=Er;N-> zH?2pBDio(CjK8~`MB9s+n0f0q^tL2emRm{bvb|y`=9S7mex@Fv*6U4{28ucBIdUdb zZM-4-`@0ysLzy)WB*AEFZ||x)RpBmuwQ#C2>27{0fF1882}Z`z%^i-NfL2*g?A%rH z-er~Z*%Kx1&i7k|On;hin7dWsnTVQxN*oB<+8R(5i4ScTUS$MD>%Q)~YmfAm0{RN+ zCk$ht$qhNzyvVXC4B-03;!{Eu9BU~PZJ5GOF6aJcaQA>rGU0GisE7ySCEeQHkhuU< z$TmjEof`u~WDkdJuG8O|dX_^e7A*1JzBU#SYrl^=M$ z;nH`s(onqr&NG}KZ+Bh`FRS-sDTRc_u5p+dvg$xtmM&13&b1qS7k?lc<8W`a65q?? zfZleY7-_G+BkmY~7==p4nz+1BGLb_2#nK}bd<2g&j)X4PayhA9G^r+ zN6UGPc{Vt98?RCaYfQvk^4tJreNUdYG9@;c^%dlmeo=q4*>?uz!LqrRnCfv#asT$dUJIHAynBs*$>M=_id2XznH~hd2XZ8*f8cT^&eluCnBE zF?V@0B-N`bh|{BlQzNHLJ-Rd-k3%Mgp?wsn*P{%n_PtSL6yFo)sI{a?l%76^ia+RO4Q*Qmb% z?K!Y_c+96R3O@*sy0%Tdgz=^FrGZm|>oQf5b( z@T*b3y3r@63(>pqu$3(eaeq!vYlAaVjK8QsVq7#wa@tnxr8ewy4{uUhdo@EedRiCa z(S}yk1Gi0DlsQWiI6u5*!iU`2zMJh0Ncl4L{qW)rLcvMdjnlm=iMPkz;m&x(K)r8K zNo9WRxgy<)TV`~DkRtbQA@`D7C|#MJ2S7aNxU6wZqkisNjP;MM!l*#?bPo0!H6Sq$ zO!Ei}M~7-;R#&KDMr$0zsKXK}d0RJ#T?(G~O7a+j)F&aWnVX-FuqDu)@AvHp3I4p% zvb~{s&F=zpcz(K=q0wP3fuPQWU?Sr^{F?`6X!f-cY-jJ+2zbC+xG=cOP*LTIHu2=L zuY85M50azX{;=y@aeaihWCavqnUx6ga&|6lrO;FyYUko|nR{P|X{rQ_Kg5>knN1&4 z@TTqnsjCiy`o@sN6iycDYOFxakTlYP;o+~tiRTYZRv@r)8HBL-dKr0Li&_Wyd3lJ* zaw2GF?bXvW?vo89Ii&vMm;<~&EnR%>L#KXj{#K&|(z0T2eQuiBzX9O9AtY~#(zf%j zA=T~ilSFfNU9!iQ&+$S60Uw|FssBuB+M7+;T1QSRe(yPSjE~iOIbw>c5VEoCC1C)E zB1Y}ddt-J3XIx(RcDi!6tA;E*+ZZQCk<^g22!VwR`DitS)!}WCrxM>uDH=+Au37hC zmD=+ifU04w^p)W#^kG-K$_Z=KH#S!ei9w+476b?$drQVuCbc_> z4z>i5-rAiszkdjfyd_$oC}Zv8N>kQl11yL#_9fePA6xecK3J7)HSUujrWwBS>?ie3 zhG4j7C8zpn+wTnyiQi)1cOMx{@F2x&6gGyNz1j`E)v~`xlid| zWmE4m$P@fcxTjqL>a!M|DV_(YEPNP(*CErrtyKf~xpwuy->l<@9k5k5d86}#GA!8TmeePp6Na>iR~i-;ALxhKTkd?l zE~I)l=bA->2X0{Bg83Xx=B==1u5CaJG@fgApF1-REIPNpK38&vQ+Wb}c*@kVOI~^q zxx>)d4ea549~3PTG!E((;V9rushv~bA!XJkJ*gJ4DObk0~RQ*Adc!2Ds9-KWhJAaY(`l`dg(RQTP`PE=! z{jmb@?EEFaCmi9)Ui*(y@{fDfgAixqzxG4>qS(vHux3DA=)nYuKFr+&qu0erzC9$a zx^<^(3e&Cqh1xNV5j8CJe#}!uyS1-A(;e2Vu5)$IP?WTYz#kj+Eqy>m90K$rGXH$U z28D}=Vf`;hRZK-CbA6k45Qfmz!#PNd3WXN^8g?3yVV*e&Y)h{uAw%8QZ#q#()b}ZC zqB_aJvW4vKat2S9TgqFLSJIe#b2I*ZyUum}bk4ye?9n-q#w}yk#E)8uEDY|5`X-aF~Umo$b~Pr94k%JvAxQE%O>Di zH>3}MhKYgNw3*@L$n99m>W4-}QkF5$Ogh~s`eEh;k-W`va^ig;gkty)5tph)2a>l> z_$TI(9M(2bRxhO35OC_5*e#DZ7d9sR`gOpnQ@2!JX5dlU=u&UAbFsm6dOsDuSHf5R z&I4bez(+F{swX2j0evf8nbWi|;Pl(%dZ86a9-}>;zd)b*=XcrRZpAcOKm5}nB^abB zFR96YDzzcYfv(M;>q^@&vIO+$z?iz*23pkq4R0R&bP&X3EA#`0C(vuO^%i*HnoG)1 z{YL#kjpdai+@>Af8%p`TD1*}1Q+~Yeh4_m6@7m(@JNIz5O^aZ|x$+TM+arvraE6X( zs+e#mObNS7Gq4HoJS%wZ36j)ru>fJiMpF5&0YZ+%(Sa(0@oDd)0O*i2nmDwWRpf=5 zjEgEXWzJXhN=7FGL{D)e5THP5wP!=EEi5LYq5(>XO`uw#u5$mlCIk=Ko7A#Jo7Ob! z-123@r#XmiF&r=jD{4XhE2C$4cNmO#)|>63C0V=xG%pZhKd&(0A;>3~mhd5LIori> zLwt;^-f}5?_tlxG=%_C5fe5z|26v9vRO1t&(^W0Fon8b6@^Op5q0=3KT<|cC6K(#u(Q<$+&-V;Qtlzq zYtUQUy!I?{G>k-al8Bdr}-tB+H3JhfX^rbq1kzD-c=$^AdyXI3k?YyLRrd+Sx+f3#>?7YF>7TmV$$+RN z@S_3kD*q|g1Bc++>~^@cU}P!~MDPk`^&WljGRQt|YqqM9)@>TvzCQ6|VGYAV@nase z&Z?Hc>N(j|OiB>8$OBWv{NVm5rBKlgXH0?Ba*%DqM}`4Yw=g7SZniiTRtbb^RN1We z@Rzje=7I}MmRoz8nG!NGGI@dSz|-Zm4XBw8UL3xk5zbt{GV@>7(ZzQ_-s%$aN0udL z0F7!&tt9eW+Fr|@xg+FH(>|}Hxc|vsx7l~P<)r+M73Oih+^7&*4#p$~Ee>NX2Ht+r zV|H*n_}cc;W~YIp)3XmP&R&%vAxhZaRM;*uUw24{EIrs$KT{fL!NQus`XAEiTqNF&Ut z7PYjGdEpfycjn^8)_3n5r`LgxNPN%9@YJdYQQB4`f!NISSaVdOO&&Bh)ov?sUBa0X zgZG~pe1p;ujLC7FwCdXI2yrIcZ@{!+3%|rd8l1bT!vpn?asygiN>SsA@t0>+$x=|J=0ss=Q>l~Bj$#Xpj>|T;Sc1=4MhP1_)*iGUrDZL9N>aK)d zjzK|J865$NiVkDC5FmGU*GvU`RFtpX%5`V5w6`n#UGG_=h<_^g-*5-u4*i@%aa8RG zDf-tA+;V`sCIunY>bmjP_q#n#t;rE^^d)BU097?E_Irl;oU{gQ++3}?2eEv?xxgr- zrX8@F@FUH9B#&5iz6;)2;7K1?u-W!87Q1QoJYQBL)P-V0N%rg-okeWpX)d3cHUw8 zarI=W5+moSnUjURu%SRyMvQ0Vh2Okno)n258%!7hwBh+4htwm8VU6fTtO0tbr z7qmn7v+mshcH67VBt_)&D*zHy310az)gsjgct(DJwL8w%?daE@4WH0C*040XW~+BG zl(GA31i81D@e{3fQIMt_8zJnD7K~+eIY?wZSwFc4UhWI228>%|ayF@Lc-p^btvFGX zghSJR7jyv>D7(slm_|iqO+wpEr$8K!1=+4Gaa-g){8RgnrhM!uL!xdpM!Mo;aRWWL zwbt;4?lW71!Dkw%jSgNJ*&RA+tC3IDvAiyC?c@L_tF}_hk{S4pCEz)4TPgN zD0kXOcaI4Q;R~JS2HtOX>fSJL&SoetmjMr}%OmTgjf|PW(Hw>|kFl^=8ijI;d=GDOz60Bqfc$lgJ&=B-0yeVTpYov?0ZOGP-wb-zi*O5`l#g1gs^eKd4+58U41!o z&}8iT1|eKQXUrk+_*xvl&pKf?!p~fEc+RZqXV*BB)yBo<8_X$wdqmF>0Q|m&_=?_j zlQubgS+2rU;?cb+@O4ACx-20nO^MlUohdMhH+bd9DZx~V_jCtJqZHs;wz1Yz;GIgq z1RE6%h=A?KH-@Htno$qtVDD#+C-U0yna5k}-KS+iV`#%AS!`oFzfKw|F-;ufS77VR z^X)v12A@D0sc1@&?mM9uqAG|U@vlV3B`|G*7jQ}01Yz9M*Grf5*H|CSoUwxbHrP49 zH8_9GOoiNN>|^Lz6(qk}L>r@2a@yf-QPXeQwu`iUs76asRr zhv+<@G97=nlCD{$W+waOxpB?dvh2;YTIukr)GK&Ex?k%&D(G7}5-kI4tgt(6tdIO* zkl=ZDDp}zkAef7as7h?oKA$XVXhMk`NLN;4lX{tKcz^!96{NO!KYrsHyCt$?h116x zU{j=in}xoSKJg~!b5?uN)KV|oLe)dz1-h9?9FSuhZQ`Z(RJR1`b`mc@!ryrnwg+t= zJzJWIZ24f9auHMVbnp}N4;{7s+@^bgX;bRBdOA3EmeXl|Dd?Lv&f~7J{YglFu55E|8?n~;&z9A@w4clGA3Zrwe5mtPw@*+l9ENY0a=;xH3RA3Z z*GkO%73o}L@O8Q$aQ7Rpe20~N=>}{M0U)P!B-+5F(UiC_6RZi$9 zeJd8mC+!yxGle$;9c~P0<$k|uZ%5!c2z=FAL5U2bx%SM^{F#@cdihE>ssx4|pf-_7 z)6(`QLujQrmo^}`=gF4EcJ|SI-M{#ndhBVR9SUJVs^LKw7a3H0&qXs z7PjmHZ9eu%d~YiM?Occ1xDMLs7Qybb4sj3l*F)x7S=vxV+9~gME$T?D+khQQLZN-k zfA02#evW)#=hx8t6|`0lj0gF^X|i*RF8V{x{jjU(s0RiOIAWL`It%9Z)U&U)urgB{301cixRg@&J4*iR{ z%`w~iTkj8i$2#rPCZBUDVUIkCw6W?EESjo4r@Gwg8TKnSwI<}s4L1A+LepJ_r9ML( z`cs^a@0DTvG&cBFrCo6=-ayneCxfzL#{PZrzU_hOHR@_4O>|G@qj;CQ9~0u~8K+8t zBJA}k2^?{@PqtgDuNCjL|KS~T)4_nkjDF zNhcNnn<#K8-Yi5SSry6sFw;r5+%i)%BcT5(YWo-sH&Ur(B-(#v-MYK^rXpplUX>rN!w{BiT?zh;TAthY!ur=Ke%1Gz4zrC`}+oe*?elI+yTu3o^p=qOD`;} zp|0}Efz?7lC1`zbejMxBPlqZoxzf7(^_QL4l^$JC(C_Z+3)o%;=Zn5}A)eOqM730l zdx-$u{JDXq`P1xFJdb>AB=^Yf&h|WEm34d8r)Bbz^Jw`Hkz^2_FV9>*mwu*5>iI1; z*OJz{mGqPC&UWI5U4xg85?cTx)b&__BF5~`tE(!*uQ&Ot+RWWSSM zQ?^Y|E$S5QY~VokDAypKM^~<;N)P5m_6>3x;Gzlr+?iEvRI|&K_X_)_`f~Ex#Bz#) zrUVnFX>Zf}eliWe~zP8ki=6`c~{r*GF`8}Oe>qz$9UFvI9|}? zSJBY4g16v}${O%SXas(w8Wo1}6{A9J&8XfR%vA3u>g0uHTe5~-uyJ%t5n4G<;YQ?` z!_$*_Qd|cd1@3sr@g4QeYkqMe|fGtBA)Pb zqQXN%G^yKqN5I2>dPEnzcaybnZiYgkfb z*z*+-ZynQcc$@<`kinxZ-%G<8POd>QLE{T+QFd6E(twP9SYgIBO^^83`T}j6KfAD1 zCKw-|q1OEAg6SH#EXEP~5{UO)LUs8OAHZpE5bZl=9bKjnygU2LR?nCb{Q32BGAuCG z-dk9BP8@P4>H^CvgltzqNziKOl*&1*mvISH$UGw8XR2(O;u@>#7eEnY(130LclmF( z0Yb6}LPS(-PjP94Vy`b@;j7f_VEV`%3C*23GrMr!{jQ$&PeK5IxTqj&fwq4~FX`B_ zd$^Py59V5$aNyqtGY$P7o2}eC+c{YnRCo##9sro{&KhPHLOKl< z2`Xd5*YSWKN#a9z%i7D`%BHM;?E6+cFpC*Q}zC<_Dq&7ZyKL!35EPjAy3iihhf|Jp7WZ7Iy2;Z<#%fFX(E4=c&E1I zt)LkBO5-X|v{I?$-q^%4E@$`bm@`K2B6EF>guEup4 znV-$T=$rgvC2bd|z_xWQVd~un5snnmh;NwKxF`L$`R3MPSGmQJrDyUhz#!>Zg@sWh zBQHFwFnR@6y3S|1IUadlQd7k%^d6v1-7 zIt|GbB&^VMA%oOo>m$N(u@w3Y5lLE!`f8vPIDTdRbcMP*So?9^u!6#k_hTXsjt6zT z_gPnEV%DL|G$36_=-QclBe%NNMkBoSGOUU+q7 z)(Cw1xXaO(+K)lT0@tAPyc*nb^*dg5&i(9_VBqCGol)OiD4G_tQ(jPKuCFjW?26uB zbD_={qCJSa?d0gW z84j`naXY=PBf$Bvbb9~M!2;~`v5ti3)ysbdW)dMWS=8{NX7~q-GvuBPS?sjk!<5_$ zp#l1hIg!qBbpwvo2f_hMy_sEI=a~y4cXwzit8ATjupa(>fSKOc`~3Y{xPR^{g5ceD zVNguraCOrgMOqfde)d+b8s>Ms7}~ctp9cIKdBX`6ghB_qo$*h*csUuGFa-@!_O7A%&yEFv_W>)q^uf`Y<9au0Qlx}GrZv` z%_;kT^j83#5>wVC4s zoMjXLWvZ3;(akIoO%JdM90Jdjh0e~)|MmiI)l@azL~8iRZyCMeHB0&qjAGD8z?f#s zP)B_)^?Iv5tTAV)4VcAr$l3Wl*3HqH$M)p9$7u!+$BqsPQsnOn zEML(?kyu@G8G=QW)KQ?*5!BE9eZucAv>cLmHwLPs2pz{diJpe<%axjBd#*@nF~Bu4zx7F5=YiIf0CPSH1?k52j<;{rzHVYL^_>%_i zV$acLx4Y!gV^FLv04o>Bl_$%zxN0xv5DNh8B>Jp&nY^@HV=T~oFf^uHmr0z#&6E!0 zk*Hu>!J~tB7ECaR&>a3|`F#I9t-YwG9iTE1M3Ax5#5y0N*H`YQs6W}Q0je5cs+RFt zO!&wFb-=oOyAqwRpZmo&wCm!Iky&lNynn|?%4{0gZJ8zhmSz2~;rH7=03Gmo`o*0{ zzpKqpb&K;sUgQy=beParHO|#PHUl8nF2mfC2_G*M+P9c8U$7(ilLVMS^=s{x!4E~p z-S@1Gfeb3}IwRGxZFhGNg!t+)*5{+}NkV^PefNH&>6?uEnSx?(_`)L>`+%VvE1)mK z*)LJC52VA4Xu@1e@A2nA;XJo&hWRX5gz}Cmt?O{C0YWH2PE(@FJj&_*vOmU$zBB8e zIUy$Uunn*%w8JLWn}*vjR9%_2!d2P`Eu_=E!Wmzl)12ycAH!+ZQb7H(Niw_9vaZyq z_$2;lV5X>;)vOQFG&gefNy;wyb)$y*uIqh4prNJ}r2)89!%dYVqya;Jqq%xk@)`fq zFo4*mJar4)Ax;~1aBO&YZOdu{9w$cV7s%sefKm%vSG0S`82;XM5*T+K&BEC15F-dy znBiV&dRK2P1sD#^YgdZX)QfEIS>oj$X!!HL003kWdzrW-Hm;KM7d1|7df5=5v4XdlAq4vBcmN{7fHqn?@m}oa{wfpI89v z#y~%&&YzVs2Hg|?lrz(Zn;5~UuQqgVJ!tuUFs2~C)B^0Yfz`#0KEKFR?H;=>vJ z0hxwepNUhat;U$}$@$6^=;)m%(_$$uz|d7V#C&cyiZozj3gly!jo$N`9vbm}Hc!+_ z6`zMB6#(k_iBoTrHrvtx_pAfykShVOM@0hGg6Xs)^@#8amMzBUn`9QOSbluS_i@AU z7p8@}=3}zPk?x8_ho{QJf#u4B9q6zo2p9Es`ha`zlL)FGC6gQr3>>taq{&Mj9khM* z8HD()&HMRJ&lb|PKmPH8D&Rh;w*S=L_+z}6oum8qd3&qyz3%FRsP&0~E>Btpq}5(L z%51hxvF1~>-ycYCAG~@ zG&s~rU)<4q((?4L|HIyUhb6tgf50}aJY_btH1$-cX==m0%Ti0tmYU+IOu>QXK*a$z z%*q^PYKp5|nW8C(8!9tPMBD}{R^~)RMR6eTyy=|tJ*V&Q_s8?^b3H%)=;A{9@E-TR zU-x}Gg!0ox$kZo06FriP1L`9N^P8u5q8QgwxmWh#d=Sit&%v9oEB6~(a8}&|qH7}P z0zKESP`^ZNjCJ-(1OZ9b5LE8o`%#Bae=H##>M|h)KUuOuu&l8tpN`z`*g!Y}qOfRC zzZ1*?jxoFWL`=F?zq3g#;57`h3II}d`PYB&S?z@y!T!Y#q1msm9t*}rXe_2*$uHKo zW)e!RA6MP_mdGf3kMenj9f%$sw&0MSTyTKyIn$ZS5A z4EF$j?R>@g$yqw!E+gkJGHpNI+qJ3i8K+%`4$1&E`7TOf)8i+%iuChx{t!E;>GkB% z*I}I>{M|}QWJM7)0Xdc^f18ge`@;)fvR8WeY>z5wiC#Ecgxm$s_1v%zn(DSd8BubcP+s?C+{zg&wZ4y6JurC zZ+kTls__)dnfaRncf8t!P$&ZU^6|)<{8lf?^%U6+Ca>y2$pn9q-&La=`YPN~r@(O| zy&&16V)ixF00J64urBX0Qfl^0UPsONPXg|0M7P4$LbEP6b=+aB{`}1^R8#juX8~9) z;oNvn`sA*vg@qB@e(oDF>_Yv_5ol2`C-(IV@k38KKNajKeNTOVc4x~1C?Sp=-|hsr zeJpoj;l5g))sJIjs=uPK9ka{lf#RfRFA>+_Bd6n$1`cySWo7u5;f`>Z{TBYi_m%5G zg!ABq`R%p{Tu4mnd5jtGN&9j*wOmjtC%?{%ZjblQzaOhd4pqor^W;Wu#es{!Ixsd3 zb@}7w;gg;<&YuFEaf=#0eNUC{uAtlJcTM-~<$cH~>?*Q`z$?cTd>lljPWRGs9Tn<< zBdp^eS=*BHy39$$`p7U5z*94brruL%F?edq?0$^OlKhi%#6aN>&W5|gGhy3p`!$u6 zdeJD=tCf9YrsEJi?Ce(~r#nx!9Ki zOqF%_Z&w}xC7^B zl9aE%LohY9{Ck5&H(!l9YD}8Z?41ZjjCezLn#mV{;^Tq!b-!ts!fjBovnj?-z1K-f zdv>m%*P9y7Eo}<->*UdZo0GFtK1-Ib7z&~+^Zdrz$zA&M`d@|1{5Zo<8SO93|8$=k z%LhOJT;qLbafN6gN^VSkIo$H!{NJrNu*)#BtQ{w2fDfxNzSmOIt< za?i#sub;{7BQ0`uQN2XX0ULFX&RfF@yjcl!^MtlPpL=M;Vy-tcY{?GlghGX~^=d)N zN@d*Ogw~<$5DKzpo~RJ)aQ&Ulp>5YEi1lx(k4sGL>yx&Q2Oml?F{(i$dEWuh+uLzwI^Af*0HqgHM2)u8|!s?5P!l z%ghBvubgvY0;?S5jCfNohIrL+t)#l>-py4n?CMKF3Gada`>*2Y^S11Y@dAcNyB!N2 zU*c5Ie-56!0k1w&d$^*;KG0TXXn3E#QQ_zEQ-N|#`#_&AQCk}TP(?h@u(hq>p% z`dYLztGw~R9Z`||QxLUzZ8!O@VP19kl}|;D_)(CnzgumxDaOe!aNUq^*+GH9fF`6=->RK2aaO#b22tjBJ*MnxP=I_$8;sPi2W z0C;3Z6BZ?svD3U75OHo!jxR1=It27MsJ^u?pSCgdI=K66=+2iADvI%ZpRKnj^R;G4 zR8^-j1}UFTYK=aS9jUo*v(med?;9%)&mysx_SK_{fB4>yd6@ju$ai%f^W7+`?z?mb z)WqJ65jT3r4|DJJoW^H=*+AbAW}rNO=(8YpcIio#o9pNbV-sDM_-X)GSsCPc z;&Za(mP>K~LUclP%Lya7vqj=WpyxAz&?|qfA37fy!b_iD=I`)~;0{A77C|6XZgN(F zW8VFz!T+(gGE)rhk)YZ)%aQ7EJA!0Bw|z9JjbbzrCe{bg=i1t`np(ohhSlI+N9V%q`{4M{uvW0Bh!H z!94@@#Tq{{p||!mc3A5ef*yd@4y?3!t((fUt5FHQWcG!Pjnfz0%yK?2cJ6`A`+Vy{ z8*2#}<-k*fOHXX56~JG%vzkv~kJ0x@Nb69ekWrU+2i>Lk3^=K~w}0qeyL0aW9ZEvN z_m-MT?w!&Q?U|Ifzp)14qx)N%dW*{PcC^x zuIh;?f2r!VcmF3%>?yzJK+cmWAjUr0b8p#metki3N%F;~Vyt1$lKBy|U_`a9$Nva` z7%d;td{pJmRBnN`fi4jRNnYrd*bl`SyFjR{w@A3wOx(1r)CHW*qtmfy&& zo|thxAMA9VXg=zUqW(ArjIkL#f16o$?BDsgw*@6Y6u~i(&Ytqo00Zg=za8#~+yjuz zEbic;hgVOrv6Xs*zj@Y6e>z);Ep|VlWy!mY=~=G%0Lo{_`Sq{q}QR*6SUJ!f&RxT@3{vE;Gsv zw>YRrM~=eVCN2zV4xmbsoU7i4#sc*`Cx#Ysqu%ZiSt^|6g#i+;t>DLDYW+K7)0Ld9 zAcZT3L<7WY?Np)s@UwGohC}A-rUQRZJN&Nqr~hU#K;$nAPS=`P&56NZi(>BUTU(ln zu^B~O7Il~M6GL*HS=!6`xH05mB~I%0%Lym(SRBf3LZbUP(6A$j{UO1b~}YV)S|k+u2vMSXs-2T)-fvAB$wEL zh6hXGGxR5i3%1O5UjGKrh6%OOs2x|{f8vYB&2%5)6}e)<)DgpaB|bEENeVF39-;1< zEbuQCASU;bJEuF*+ zhVWCjZSjcP=8!aEb*Cq!=$_w@`u;eprJK%Y)ki=<>~!NNcIK7r^5n=)wct+|@;y@S z9cg}>&7BNY43UX2|Jv;o`%nxX0?;vz*u#%k%g&-6s~dSb{TQf51dFvTKeb+I=9m2L zYKjcM_r;nV70^@R_?}2R3sHnv;zih5Rrr>ppFumNMsqP!CkVIt4~vc$E~d~$QD7tQ zkqTC#u%*c|efHS1T_pmcsG+R`qRtSt^8Sb4bLKPRjpAD|v#p_*rJlw9Zu#i9pRsXC3-V`fhdX9cgxx%(hs+6hf!&Mol`P{J@&Ep^zUB@Kt8^-s73K{L>L zikPtT>Hcoez@QdpEx`^QIq~t_v~Z!C(YL*wN~&B4!jnkzp(Cn9HGH>IubD!Y;}%e) zcwtj(V7EM}S~nC+?%BG#_xo(mK-dBP*C=5I*3jqi5klwvnNZKZ#Cag^0P@C(+VqY# zMe*qp7I$8Z(0FEue-!QjFYg*3e)zj5QnxBSkddq592)d(qtqWNs5dF(-lP80x1q?4 zg{&j8pdbp8VPjx3*ceB38X$8b*PW9d$z^X}h409xzOs;P5Q8J_AMEc6lXqO-`cb^t zHi<};)ESNUvWKq3>$33v@Qlcj3|md?#fU)nfNfdI;*En>x5vS2?{6E46NCE-Dvw#- zgGO^c%-a~~JE4xCk8(Y1rX>N$j4%FhyXl9;_k8FB* zB5LX`qGNAZsulX{3)3=cAIBX6FGmddZsX77K|0vNshcdJYVGW~e&UDeBW#~AR3LvN zsi>&%ph2T>c)M+Pj4~5MA9ATH_8tkH`J7299;lh{OonE@OD>TcEf9m>vy1K}&T(~> zc*LnRf9CMR@T$e6-ZIR*!Q8Arq63BEZ%iCY=4u}XogP=ibX8a4LBUTV>Uda4HL`Oe zpyQ<&ic4Ln(UhWvVZ*?vobuCPX&mU~3)ql+QiAzaG9e2S7 zTs8E_%5}f8c67y%k-P2el?aVHIH`EPP@#{wC5_U6f1aOz7e6%E2C0_I+97B2xO&lQ&t0dI^YXfu|u~)J|0-eEjX4IBS_`&$J445{$i3Bc^j{Z-A~6 zpX?NrZj73=NBi1OzN(XPHggQ*URSaic9xc&coVAZpy|TxYnnBAgw2+sD_JQX^9#_K zD~k5yY)ijIUv!^+?mHGyZW#x4oN1G96nGH5(0dU_TBca|dex*e<=T@>h%FglJL|T{ z#3AqLaPEKIe0^M!J<#0^S}%2p!N1&$hBLdRX2b%trV<+SHyYwyxoqOP*85tL4SaF~ z%JhQPDeB_Y)o3y~$mAX@sE@Tb5sp8g;D7HKnR)P$QP90`GC3&@p*8woYkT|)eV&dP zHCk@VL@l{^Y{|Lr>U?zQ1CtkF#L72Ic@Xcy=B+`iqld^$3g9VUUqs&;mD5`J<*Hpf6;1=`f3Wi~Hxl-~tuME9jLSj>z;EJH9LE;Q5({qR}^F?pLlm9B6Yd zbjEcJOg#2R1dx(!^O}ijNWNomo2>^~V*_qmxlER_#=(z@?>Wdpb!G44@mA4>Ez-tx zsi|1qLrE2FubXa@i3FOxQV!Yh#2Z`6?urlPGa%DKEUH#~J z#kXkJhK+koV=X}M0W;UdvW3N?_S(^8l|x3l9&)AeG-wRa#Y3;O_2G%u~hJV z$sm0BVL4`dz#n%$)JI8{Kmy<2TR$eF$+(hIal|R#(0}GoBIahKKb3dGRR98_6<3CH zeGr;Pa@VN~Qzz`>qd_O}y^m*RTuZ(BHZFcPG=R)69~4-GE{%{b$f**($TXyva**GR zd%oit>sqDR)sCB5rR&S5-vv(lM*2l)#GZ7xAT{7A=Tmmp6;f51JzFwKte6S^v-3DU z12l`#cPC9&v~m-_jLZy<7RR27Ib#lJ3+4`I=QW>c`%WM23*2uc*R%4>=&{TL2CEcx zy&d}Xa8PQC>=h2uyK0U*aiS#pS4D0#u>>S^E*#)QYUdLo67Vzs%IMf)^_Xsb0a zL;P4CqW9ql1UXROLlnd`86=+3h3{g|lwEhv$X2M5I=4n2%wnzca+szq z=QQKe6TCBzs`jfRDYHy>&wO#W;$(#k-1U%va?AE?Pp>3}bdqaGut0ijauJg+*S&CI zsl|ht9}UGO5|6^?0-AGZ?(Aa;?ZbtS&oYbD^sqWNucm4RH>kNqzH^`5z&0ODQcTOM zg-&iTZtpg>Js%a5n#Pqop}kRQ`?q(OUjNp*s_Axn@j-Ez%#o|{G3EKSUKj7(Am65$ z>@kBlq1>OvnflnJioq+tKii$?O4b2~onX+drDi|dt!jG?U6-rF$Vk`lUOq)SvJ!vd zfJ$b0b5e!W%js8oXcc<|yE2C#jT^kfjv2OA-OPd`nb3QVd;4rN7-p;IXKpbCQM(*d z6!ySmDX&A(6Y&94PY$>#_vgw7@^5j|1Pi+x zbFdWy%9iN{N|^4gE9eeIN*Vss3(<{xPe-$tpbzaF8DN2GTbE#}cNDAW#tf?s(&PG}Yul&|(V(zf~q6+tD zq*iwYeciL|y^@l8Q(wJ^>+YEvX(+}SR+@e_q{|G(EiDE=*#8+;t>jbK^=wsg_&)El z*#!Tn?)RltK|YR$B=V(4;HseHsi@*q$O5DbbDY08Qr~W!Dfcvxann}`u8RSKdH{`uaaLAt{;i5UbY=8WXw%z3e z9{e3zv<|=B8Rs|s?yKoM|0-AaGO}vl8kljZoIEOfqqvdV3gP~0399Q!ef)_{ywyeFKTM}H!k z4r*g`mlI4o`H$ZS*2;A%4}jWe_m2FYH7=S1VbOH_g3)owqDJ;Tu)yXFW<%pbtB(RX zwScO}oCx@lAA3%**GFivjFKj?;nibqcJUg-5)Il9V|N@y!wTYEjtJbE%jXJ%-MAA3 zlJB3rQn2nI`k8Mrx(sFU&rJ9)`UcpVzWDgEWi`zBo_Tg1Zej7_gZtEl<)Dv`cP6^} zrLS+z5GU|>xnH7bXBC|7NsFK$;&_Td-9p61vYKu$3-ov zjwKy%Q98N)E&3&X=|*9JsIMo*p`2NO1Nt!cQpyV@XfSlmOi0R)(h~ROd=mzLFR12A z_*$M>9X5FX+tARXYTmBxSuDs(e7a_E)k*jC`Hhx}@;ZCu^}W1wLKl7ne10`H_NWxs z9(16^av)t#)lnPaw6ydLIrhGwFhBCLjroD|_UiI_s1UmQj|DtK+$3+OvF*9N3{5R; z>sNY?iH$ufQtkRwyo##0`GuWX;?Gv)I<`4Q5cI4}XG~~*9IwY`l;8{t$fmYoa>MM5 zPR;8uy%2KyT9~P%;xng3yGGKRBcLkfMH?G^{qxDbmZjyB@|xvb5ZaC$N;VI2w5i*y zTN}cEqjo)@(dQIyzj7wy5PtXehSD%${P=Oo_>_wQCUSX`?$Wa+d|9IH&Wt?D^Yq~& zqMLMtSHKE?A3NWM-R=_$4{4}p`3RF*o0y%N-|G0nYpKUPTSA#TFQ!0$zv{a12~U^x z%stcr&D|dLTY&}pG0fT#F)3^J0ACmVmRFd9vn^b6d2m-!evqkNTvXhSL~w@*AFa~T z^r=mpfHQj38~SY<^tp8-y=4M}7fgehws575XRAh>f)DZTUVvuE_+AWHE&Yhx*k9A4 z6MDTrOv)l!qR4plrzWPml|#G}qvGW{^V7GAYj=g0h=hjLvqrhanMj!)!uA*Az1~7= z%jw01_vR&?mXN0-&cRg#ucCY{Wx{1t+AMHWSnZ?dBLef&g9`YDf>*mrAhu{;4T2dy z)YXG)H6zBRoPb(;+fP+>7&y~x3J-~^@Xp~Iq|sK7*3vT54b|W^?=~bN<<`LJ(+bG> zR+9#m{lBvg1YX^hrSBK_&aM^l?OWFy=6#OMr@TmP56Do6DZ93f>YxSoc3-?dJeU*~ z%dBWy$1r)IVo(X`X2nnQ>{c&zJNOH>4EPTgzw=EZ<|8=LrN!>|2WgJ@5n2mNcV+Zun$AW&U3k^GN$=kf?`#oN{#W<#`z1#lm!E2 zYOmSy#0BqgC%PD1&o+Czj=^Z`@4<_)WM3Ip7^CC7bJ)pKtM9oSAsR+E5)OQrzlJpY z$=(s&r68^Ot+3J7(3V|t!_aX)=t?rX2==NUTDZ?Sp4Pj9P7QzQn>}eNa|9`T-xjLr)Oe;baMxyq zgC=qE1J{F9^TGwSCx%XYu!Mgl~uy(^bGmNKqrlSp-E8Pdt9As zY6De3xQl!y!Fo|IS)V^4;ofB}GhlIT9Pgfp3^De~U)CB^e6)fN3yZ#B2IUXURd|pC z4;abqE~<^uOQo5p zJ|TWwSw_;b#;aOu!oK@r1mPe`lgMc&{LZqJ*@U%VKhiUjBMk_?-+8e;&Z%7MjgpZB z{-tUfGLVadJ$U1f41sOSatvi5%BEmyM||q8VJ5dHCe+*uDEh$yovkXmKfsRAEqdnGA+w2_=aG_cYKCjPh_Ljcn zMP?N*AYawS{q+5fm{$Rwp{hd{T|Z8g=GimQ)g$r7l7+m-<8zt=pJlxV?bBy!Sr3^{ zn_OZ}`;WKOOr!?(!z-Hb4i22>Y;*jJqFEBZ}~$?YEFerjC=5?Py3K#t@x$ck20j~bD*{4-L7OSArgY<-)$dA=4fug)&_-@ z^Ff=ua}ccVEqiV9o(GlvDxvxQD#YWg>K@caRr@}_-gM9FA3&<{<#G9>MA&=%$!C#c zczxFFHsji1Q9#f>lzL7l!_*Vxd!B_3bq$;y zsQup5grC#_3O>hYxpzB)81OFAZt#nd$5U_h5%lz(Bk|!ZgyCxo@|oY&hu4QrRM~1s z?~a6-8Z17e+MK@XThTxNO0A(m@lYHnW2-yg>nq%j4vRJPjw)Wu9L!s>SSC{cO|xa; zh6HC85+m*%_1n&;bs8Jx>DgR!&Mhh)6e5Toge;&PmC@`xi&p%pdkQdOz_DseImR0H4ac-Yf^_xyBR=HTE* zEmPF^tAOTXjjoz9+G8gU*rJLh7h_C+l2$}_c@dCtkByhm4>Y)?wF5`etrXFx`YpNj zqR`LM(vUDIJfnOhBQ$rB({t`}-g%1sxga_+d3NyxG2Xk16&t`&uCVUz$*7zht&(wS z>gLnseDYUG>b>#~!53%D(5PK3V+W|6lO!ILSHav9SA-a8U!ZRXlTwta$!2e8=G=|jbv3Pfl6mC0`u2v#;^*DZY2^~(p`ekl z*Qg)OMY%-t^s2VeZ(S1oI>$q2W;QAcPxNdwFD&XTpPQ5MeK)WoO3_xLQ31I;=3W=0 zVV;mrF>`6OG%LiG+AN8@2aZaW4hHppq{TD%`ko^aB3DJ)X%;)NSUL4lsZ1I_?EPxnq4NjXgl9e@w3y$aRreuIU4(Gc6fbYNu-KB7cuX^!q>L~18RF+cSwx<~ z*po(-?Rq@nzpEOO24+POB_Ya@i5?#f_QqOANI_rNZ)90`JkUhj1*e54zW=Wgj6PJ;O zWBP?HDG8gjzGek*-}|=%WuxcF;Vb5_ojCk}&$g=O`RRg1Jkz@-_t53MD@l;2iMCGK z^1eUv+a-&67el7LnYJ^1hzSDFu4F7$m)%0}|MVg%S2FDDs>C5M(+1}I7jb(uHLkLM zmvu5Va;KJ_^NI+Y%bOh99hye|8j2Iq-JQIGeybhDKX6)(cZp$`T7OOn`|MEMDlo04 zwf*p_*$BTZeAlx$5$I+%*YE4o;Y$Vsf9(lRAZ}{CFWCHYd&U|Vm`|jPJ#Hj1gXm2jDtG4SMh@ht20t*6Wj|BNcwTsBYu-)l{7 zx^13nz8Ln`{F_$#l6i!N*KzdK>iHRux8)Td2sbc8d@-2o|C{v*wq;S$ea+YvZ67t7 zde<05NZUKOMkrj^^o)=?GYx(&f~e+yNj>1K{{w%>zxE~Ak+so3U((!JpC}vVXkXfL zH3%6hhL`$BZHXub{QoRfOL@&#TWWK(KU69I>$1@sTZi*3b|jsr`}|z^4g&55?W$=} zVJ%8*{D0f^#~3hs$;Q_kBsKp$EpRgftMF&qc7?X8z$y3&lxyy6XSq^t1*%Hxpqwza z^tm+WLoMBHMYRdomHmJ13O{pn1>J4?2qBF4S1U~zeAOW%2_yD@QT@+7D3g}`62I=F z>~4Yo>)-*5`QVoSx#N-;xq?Un?Sr;*CiKsxiY5zXnf))TAbh{3jHm2xabMK?>pCMq zk;0k(<>tg)?t8v~OZ%#jM`ZqbsAvk;|Mpdx%Z=;XHU;=@B9CnU>#Ke%@nYNlms52v z(h9B;UGTHdZ#R#qv|L}T{R=r_bUs2lV$Z*nfQV1P)0Prm7~g}5ztn>IPBxAFJ+tM} zKSv?@MOaAN4IM;Z);Y5T!J(GKVY|PUp=12dL%~N8NypqOH^b2~Bd@|3e|;rO3QP(E zk9(18{ZlmCpHsucf`)dz10S^8bpEOrH?m#dy7IywKN(8&|5~3WIisrZGjC4X-SQu= zJn251NnezQu`$lsti9hbgJU%Lw)Ly5M<_g;y?l&76Gv)4~EE}%$a z_NRbg`sa1cNY)@MSUO2oKO|tE*%~9yhx2!WtsczZpW&@(-E#O}1E|ErR<(b9cNh2O znY4XGcTxrQez4C$lCzldi{t-1PE73RHEdbaVY_P{APx*#4JaRU;tlHm&XD-7|6Z@AV!jzhKU*);V4H3gzO6I0h6-)R-^Q*G<{dvs){P4Bk z3;#X04gBG)kpPy1r{Zsq=^OJ}?FhA{I4+0A3 zvS{Spzh7AeqB(~DezjitpFanr$1g9n?SM&td8I!3r?~3RKUkjmzvcXWME`d>f1iYy z*#FVaKW70u{C}MF_i6l}-1++?fYJQ_O{r||{{7yQv8;ZR9HsMe84A^Y!6B@V-^NI6 zh3SlCX6WS3ltt4?#zl6xd>2>!L^Y+P@unc3i3X~JxQw1v9C(ZMCGdx7OJeY2r**LupS;{?tBecCzJG3A z^lsH{0B9~E4L_J|O^kkDmhO=u-<3zE;E>k{mV?7Iy`#Nd!?Xr04$1Ml=Qikx8A~xO zNl(?d>S-~gHJdnw8_v;XS8Ik36*`+|YE8wfLFXiGhTU%t@FmT91XGP;9}=uAA#hx{ zthQU2Ylf@)yFlGMY(@X>nDnDn$FVytpX({>`gj&q1-jZVyq&r@mef0GVH?g%oh`_Y zGnex&v(vE2D5=2K2u#KjGIjPlhJAJ&`-t%|AE+9pH~pM$`k(#GqCrXue{E1|tXysb z7Uu}hfFCe}xM#$4({epBD2SIxf{Iy9C6b_QrpvD@f$yeQpwyM&HDh0zrbi{9nY@PC zNwmOFJwM&o#x=tP-- zD$@)ZoGFL4eR%lB7%Gj zsIv^NEK?ldGb9i5O8)>0CK1BaD8wZ?2GKzZVo7$K%?~R!hA4k2E>k@t2?`orYwCt_ z4eRV_C{u2~Frs?M8O=#ob02?9pIr!gynSS>pt~n-a{ggJo2?4#DFCW)v3gd}4+Jvr z7nka7*>0nn)iS8+FIqMChH3WK2z0&PyjCs1T@!}cNUk6@70P+*RgToS+@n=9>bYBu zS7JiJCBB{56W7wboOy=m*Ob#VZ72QGajqd*=&;^T0R!S^5n^XgpS;4E@K@qp>dah)4`LvE`e$szM?w)Dak}45 zAUfDp>~~E%)yzU?o{6h4Iq^#%68+DufOl6l06^}INEivRKm_zc_ZmT9S@04hH^U>I z(5}a0ma@Ys#`s7sZCz`(daDL31FP0*1L!QJg6ejieuFd7Y0vS(x42PoRopxHxYN%A zZRodH#}WrSG56zSF_Q~j`iZx0K*6l3dkNJKY~ zA13?Y_~*;Vd{LRf<0;i+Z3|0%5~@MwYRl3Us=qo2t*KzmQ`nCCGN*9zYE&Cpn2aV> zko`pu;+3U*-z^)d;h6>R1jAUe9QyzniS{K2WA;LO;ThO9ZvJz(X|Qy-XI6UGaH-wc zc;w~7jRl(F(`1>R$Sux*wgN`KndbR8_*(ZbRFqU{u!Ilqju(|ruC@Du(;65tK)Y$M zh~f&xa)#W6gu`Sup^=fuKeQI+L!66M14z5sdbH3TJ`r(O(i}I^QV0oJ4Le|kNf8V_ zH0+KEYG`XzaHb^#^oH)9^x&C-bQ?Vtsc~g1_NTVS^b0i9-kvaFb#r!wHA8CNj zq|!u3F+~M$%RkaS{^Y))VOlMMplpOurVN@)0|T<7Mbi+5F?yU8R_`4K7pAufQYN>!1$0Lm=S=nE3xcFR_HUk zLqEGF+Y$yc06uO>&b#R&(VtRYUJANt9>5;=v*@qxu|sEjF}`2b8d;WT&nY-@IPeRy zVzyfsT}YYl?4ahh4eqxAq`s}bwxo6`#5Kg~xvmdomg_9UO&;^9sc$JCQ;OS>UcQ_Z zM{d7*DI$=JtpE+HtsWv|D)#*snShg*(}K;f`>axc47`F-(WDOFrfI}rMC@n_&Z?p% z5YUIXn*;@CHwYM%K$&RX&9eZBYsQw1xuE^f$dULRmL(1DnTr$dh}#X3BjE)a@VhaZ zmKZOBtIkw>eFq0*;UvC$myJmy$O9lVRqncXw2B)dXG3uAP8Va98!r3y3;jW*nX`L| zBpXs8C^+Gke;^|y&zo2utM$4}(Yz2;R!GIxeanL|6&h8&Ypc97;uLS)>YrVwI}kc> z7vWMu};yb)VU zoIxGIGB&kl_>GSxHr8FMk@xJ#R@O>IM0b#a-<@&)@q8NL64dYS?Aq^m5wuU7&(6#- zACO~iES>yL_%C;UDOL==N)q&M=XmYb>g^w<@pOR75Qm0VBQ9^Vs*^#}F%OYZ3vvY7@Xsqf)i^KCZy5zwszuD69sz5t?BInAP05YLkKW&i~TNK-?yjTlayXqq11*a4*!+}n~|{w3K2tAR49>R@_Mr90uJ5YFz)u6hK%R*(smG8L;yIvs)Tb?VcQQcy2RkcWsJ7tkyCwy!v%LDYD zr3>yp?nz>-WkffXZf)%A7$xs}#Wl2wLtGdFCezuv?ODnS(PiseV`X)B_Y1%JjDHkK z{3BX& z6}47Ek6x&iy2yCr&wZIE4)3O);(^M0rYsC_0nieK6r8ZR7m7OyFGU7=V38X3P~0%h zA@n4@=r&N=ypl^iFUWJ72#tV!Mi7+O?)OR5x+y!V2-8Za~i_Z|7dQ7}T8(o!~!d5*+zFQN`>xtmk)Xm z_23xHVjA1ix(u(T{2k~0xs?ba=*ni~$nna(9q0?JhDShnuchCBX{17NYw19853Qv) zP;k?8vE;^WbSP&neTfSoO%n-*8P8C&xuw82fMroS#oe+I1ng}MpA1U5Oe)+H7*`WQ zet+5eR+G&LfZH8Sl5rOJE069Fs#vj$L^KBA(4Y@}azJl-P(H9zb2YdaQ*^SouuC8D zqS-GZ@cj?>vG3+8WcvAN&USs__sp_uFeFbuR}*xi{{w>Bbw+~Fd+aBzxeU~BqYz90 zDb-byJQ385PbthZMe}&oh~?2nLvzI)2Ct9%cu(B>Y{&HSO%Y`zLo=R@{Bo07KI>aG zfN3k0idFlYdv1xmlXr%IkyJLcFa&eQ+@lduIYUVhm90XezC?%gDm+kT?qda+=U*%1 z8k6ej?{SEqmSizq4*~_n3-57NGt>6cd-}fEQ4NHblz;r(y&1CR3;-!W0rFd9AcN6u zRo(-BKDBc_vw*v?k4=Bql(jc~tYAw^&TRvC?&CO@PS?p!p95Y*Vd#-IqtII~ay3!| z4_KyOtcV4j?;QPEbM3|eedxU?u82~T&`2Ip#vBi~sm|UO4~B|sc1(tbR~}dWH|2_j zgR=VDz=3NIJoRj4aLPksajr%_L~ViUMdq>k}%ME#7G<#k_QyEXPV410jm0b@3vw&)A*%;p=CY*M6OHUwf3nr0{5s1*AP z)xPm>D;jjAcuLv@mOAzJxbl-MD!L{W*JC)$ut4IZtXQ z=uSA;nfk1SWmD!KWXDogmNd8u7n(Wl*^=;#HJ+ONH<K? zERHE9qx2o;Sf1^1=#cR05u!LK%x0#Oa`opIVXl~84r6xX3i{f^|E0qSfXst6f*LhH zs(55!eKKM;!(ltJl-Ib|bm;X;=WNf~ND5z;9D8=z%1Tmi)(k%JNQsnwUZ3^2dX7Km zgD&yfyS%9Clan2%yIbT|^=oX>`!N;R3#+G8FfP*aCr4w%SkI>uL=H{Dnu~)%fDoPz z-s=T%GI+KMAE(C+rh7L!Cc%Kp#}*Y%WEmUUX=mt` zgFhVZHLpMaIrV%rGn7vW8W$*Td^M7WKA8##%9UUB@Nym$TV4W+`})gjCWyAK4ADm5 z&vje^Sp#4T@`uD>Y;f95di~|&9-f`p8qE(?3^!i-;oe`8G1q8Yvfx=@TvPopZ5_2c z6)F=6tLX#>o95`{w-g54nucoQ;|;=O3{4+8H@Gb=6O0-egzw_wpnqUs2DGWAdCj{}ZnV$7 zqrJ_B$m#eVIxA&K46iDSCm=i%KxfCBEDtxj=e?Dji zpOQHEOM>E--}+X<1@8>(A+;6_ppdSsQ3dCne?~~?dYCZR?@|e}r%KwiD z>dcPtha(=dl@Dq0*Z0Z|Z~U=n=hxEId3e{mUI06_{`gDWNNaI546@)%O0S?w%fiS& ze+C9nJr!Om@{wwjyKfwA5|K$a$w-SKOsM*TZ zpyu_2aJ(#WZzg00c67X%OxJ95W1|u0D4|saXIHyL`|mx9$?2v6(P|7M#0}HVtzy|F zG7&G!<+9|pLmaqG2Mqd;&hyZm0i3Bq??CJEkm0F|cJrM(4^7CvYxy3wf<8D1#;FN= zGlkaNA@saA$zXa+^DysljUW$#(`D0pl7uq@f|saGr49-{u59@r>)2oH#_LwRXF1!<`4fr)UICoY zr`P+{ECLV=M6w+iaJt$?HDO(;6aDkVwxcBn@02FwSy=h+wcsfV2GK2oC2`?i9>ZA( zudk(s3uKgdE%H<`){w1J0@k6fxIioFd!M8SXf3^1H%bl?P8r$|bQyc5AO*c>?Uh8J-dI#tTBh`Fm^tWt1dRmmL6OCWL?e)>uYbW(-_e8RLpxFcluE zS)$9e2m0_QsMa6r;Xw>XZPaA&T3GTC$VD1@vLV?S{v0&<()_QqAIQ@~V01k>EUvLr z590}VO&qpY4I}Ofjw3thzyT%*j$S>F#Q_TRi|1BqP?PT9heWr(q1EKgtn;#=@b&eH z5~A?#eH)sgkj#b($E*Yc_q9tYK+$!)Q6VgT$R9Af-8VB0sF0-#`eYgMqS>w_-ek|x zTtN?`Xrl064WC6P`1P)F1R)ZIfs*=cIbPaYy-u8oI0ozdOuQGM{k8O|7L1GBN7W4=bUk zam2AxPnnwDEk6YXQ6*__1dl2l^0~4y&RGz|&NHDeMkl%LHH|CWRZ+Afi!T^hp5ONT z$bE$Hdx<~?tE2#yHw;^eC(ZRb7dLC$Z>`RE0|ewlRuqmHVl$0_w1uQ-A?=4Mf1!u8 zFu;XsY9gnHp%?ncY2B=!P7fOpMV;=UHEz+nX`KeVu2jDW?pww;(^L3zF?i@tnNCQB zN`R(=mp5loVlvhCg^sp0Vh9gSj0mCQkJU;*@B<a%WU%B?>R zLe{l(%RzbW8CY>Q;996dd%{A!heFa}P^$B@@Z~NmSK%C0P`3Np&OKtGqhnCqiKw{O zRJM{>mETP@~|5!1YBHh2W9cLm~=p{&-b;hDjAQ#X^N;C7$-N&iIymD)U0(y|h5UN}s$ zeUJHOC730-$*`)6${f)vJ{6a4EwdsCQnnG5*(bu-B|;6}`x1WiHaBH&+uvFR7@%Yc zKwLkPmvN@QDFKrcZg0-g*O4?_3g#|BQGss-6RJd8!>Fq&aTR-G9SszJxu)}=ua&gy zDO{T#MivGHVv-yz6a(F>)$4stLnfw7>X{`L2YhGE@?p=8vQ?p`R|rh=d+wxJZq6_W zuCApshH07GFibqv$)C<4u+4~7D>?m;;=bXDRpjn825dYGSqZKt@^umOyX{~u;@-Ku;u zSCT6;IXtHVp|Qpt^V9PI|K{~1Y|Glnkx_=jR>kb6XY%_-aJUiG*UicvnnsxD-$x5G zL-ctZ&_yx4Wd@D+%d z{$r0gk&c&cxe=2!aT^ll>Kx``F_RrsgPUjGra5RI?d{c*Lph++oj7xSkN=>%8LtKh z6(>z+bknreSAlqNifxtCfp)&6!PAuwr9L^-dYy5tO}V`m<`0mu%^5n&VcdM-5VfqZ zxbDSq)RCqY^k~&OJxJw`v^<7jf~wgJm(F4Zq;JlO@n4t+DWLq*|NGJI0uFMqbQYh| zQ+;?vH|R_Y3;de&;*cKXL{%Qpepc~Zeu<^kp3@j7lEL245$yW2V1_n%n702U{Tyea zVz@i)!&>?+ptxye+ed7==Z6LaEw*KB!8f$UjVe7xCJ2UEcgq)Aj`)xb0>55x1nNCe zy9%zW;{99>jvLZWpByYf9p-&xgT8lM8b`^$3BDmEEzc~035#Je>JM!uO?%2hnu#8ZZlCZHQwIM8i& zl~;x((ce$*KLg(WB($}sfY!LJPVK&ftJ}X{N^}%8mwLUlo9W4`LOH*~89ES&RzUvj zusrEhWuKm8ST?`Cw;$xUzmD4Y*A(k#$`Ny?%>A!hX5m+*Uqmk}$!4FfMWTJfeW$MODh)Vc8|i z!ay8fz4bhG(}aB6O@`^yAV%u*Iu7^4MB~8oE|=jaJ$3~MQG$Z8}W54T-7{DN1JysE*P6~iR0w$5qOO~b^n$Z zUUYjfG4I`oI z|AkOWw*Xs)0m~m8e8`{|bC|{ugI6I5(l4=V-1BE^71jeLFF31h1O)E4YX#xlM(50n z{(l%jeA2Mue+dF0_e^eyjO_o1y*H1CdT;;7(?&^>ima!c>O@E~_9coo6xp{VX2jSH zgF#X%p$*x|mVKEqc8X9KV;^HIAqHdYW|*=3UUTmI-1q4`KA+$J-|ypl{^{|UI<-J zMVWBnw%14#=KCEb*apS8FeQmaQ5UJf@z8{S6V4z>0rh0i&GO5a^a3-6PY66gw*Uro z2LQq!PF?m19pAR+fIwD-#2!gh9h@S%$^#xN zy67(%>A&7tBl}1yJk2Z^TQEg@c7*zKZjz~eF9bb#1Re@~2ey@fOLFHxXC1gEw0LNE z1iFCba4lScFa8McQeoED19|hW-w^`7V=K7yS`%|`2%0e3mch#0&SuhgVwn0Wosve7 z#jmpy?Gy0dPP8-bXz|lhYLy^m`0aJ49;f(F`*e3~MWN%0vnmTi{FUoDUd9KqfW=d} z`ubvz|LMW4(TLCX4?bF%<6fZ=k7ZE-{w3H1!Ef6gq2Wr1OprI#?u_(;A6SE6=CY%nN3iO38PR?|WDA4t@B>z7KS-HrImYFQB#*iKWYGl)?8 z2aW$^Ca*>RPwr$Io&+CJAql2R%H#VrF=G-bqN7JrQOl8IU>tA6IbUgDmma1X0} z1da!|?DTF03$I1&T@chY(b4~LSskn#Zr$pQDyZAeJ=j~NZ_--;-BEX1P{z;F-a4p5NKKqn z$*h{Is-(CunOEphP}EWEJgL` zzwDFVr($uqX1^6^FIL=yw z-MsLV@{W(}>v8!b6>|PGUiDZj?+G0W<+LR~<@7PLaE#tyG zAu;ui2p<*S+Ydx1w_+kh)XzVCDRw=8yv2@gEDC`5XOWY=^b?HYNRji7Xf!*m{x!~~ zw6so2GhVQx{!`|f1>zo!cbxHc>&0g$ca(~Bln}$$FOYFC48jk&M5QoD^KDrj@d>IM z-4^HX2vQ_GneO&@*<(!evhB^*0gZOhCyQvaiV}*xM$RvsD}pVr5{Y9b>aoM_quZ^f zUER@?9_WiZZpb;`Zwq53))Id=ydSH-f!G5;$g?Bxa8>~RGjZRdXPvRxczS>+t*(BS z89``)?ofsuCF7y~dob$T&G}V6BgwrrNbGHOgy7OUJD2&{3*eFOJ1u*zXbr2C(BB^^H2x zqT`^_`S}vnzId)^yHG*bpx>UFh1-%iDw-iCmO(lws|zhvFdoT{i2ELM={2J-3>`9# z%+yAyy%Y8u!#(ps&uU@plV6dmATuMcGb(iviLeiB}2}v65%;mm-O1*Y;XER;sSF3 zt#kY{?ivTA<5Z!^5D77~v+n7b;GK{V7U^j+*iT9Zh=FUL! zU?lP1k2hBF6bEg_>0`ZGQ0%jwE0opSc+Z-^whm_;k|c3@+Ct6e*T-^(MYn)Z6OXC~ zJj7ZK>D|8}4v6;)t9}25O5c6>L`yO} zYV|@n^tBb1VAMJX*MmQY*E-*=c{kC%m+)pkM3W`;rrIsuh7|A|YA0M9kmCjuNa=OX z--_SpS|Qd79Q8m+l3M-9wv7XNfjd(rQ$z#Pu8Am1BRQzmBKtI9PCdZUht1eL` zL^<7)dA6O;n%}Vtv|$^}whpYe9nONsX28b@Bjz4&;Y}jD7dYp~$vEU3FI;@s5^pwXZ|tHFs2u1Ea<_UKFD&!@^R0&r7P)dh@vOS|a1rTOvPy z!LIw+LHu3@1j7^+eI86JN~RXdKtp`CbPBwjSegzmY9) z`RL)XMY^Z@f!M5%?$b3%FfliZGRlMg0q&mfOy5kUtIp-hW=H|3;vEsxZQyws0r_F8 zir-AvuY0Sy`L)eaF@?`|rb4}>NO2`L%X#dBDA8WEPP%Y^|DuIn@BKBYiBc;+f3*cky^NoTLjz~!1{iJhN@a1XEV!7p?-xXNYq`H7cAuk z{);8ZDw^B{$COTujer$(&ye9J521$y&A3&$?}etcF)xHKI$Gu}Gc1P|WN*Qnw!ZJd z=%j-QYvwU_D)B)p-sJp|5B=Bf$lLG{lma0iZz$OCkwvLr&pVIEVM`YRss~Jfjrnei zeHNsCmMI_F6r!v2>&SW`cmD3WKF{cayrO8kAykZQ5RA3>Gv~`?fwvT6zgDuQD~SjyHE-_*YklXM&NRc&jTL_AIyeKR6j zv$8!)pOd_m=}9O1u~N?-mhnR+O=IALh#U1E6&2qTe@1CrmTJ!JhAaH**Y)m_b{J`f_5D6fYDC!P*zN}{cI}A)=F`y zm6vQOQv_ou=olgq8(uWmGf5bU!Pc&9KZ!1JIE(+#sfRl$$J1U1VAV8lX!F+&iFm^2gxNqw{%4tWY9L ziMg zq(MROQ!Hc~>=P`f4a5YjK0ep&TMZ-xqIfSPN_OI`t}ZU8WJh^H{WTY5LugVFcfqPs zZC|;VuiDDo)99s->nE$$=5^j}nwG%p3Z+5p%9)eCy5hQF20L4*^+%Cw*1%bzg$Whu znxC`BXpxHxMgV`txK^#CwXPfiRoT&%i_9?-wS?pi#KJEvfNp*~snkX&cZBN*%i%o( z>fB%~C{Y0-#^O(XBuHR^5KA5}0yOYVB2JKHP&we*{bw8}SS@*VW^#?)Q zfpJqbxFQe47USz(!3xP|o#$*eZzC2f2|XKJCn1+`pzbc#TZv?55_$3UZ<@tw6zcrV zCxsG#Iy5~~t|7Ig4(#)KMw-`Ov6zw2@TWD{M{iK$>mSSFgPTt*^;;n7MlA)jKjcxuOg?_98swQkQ zTpQGvz z1iB;`K2ScfUe+HVeu$9&^z*`2MXUkvhcMbp!TH-1A4@-71YS%(+wL-Fr(V2LUQVI= zJMorpznq;tok4jfd9!Bnb z>HR~ zc-s2c?UT_I&(cIN=y-Z*`1~LIp7TMQm8*U|N!*#mV_TyBQj}y!^-)lcTiOl@r}ff% z#5F7q>BN8?#V!@8CuaROs9u4{=RUtlen18z)|v})zIcKJtcP)|M&&5~E4;zs&KP=6 zq>6_B@Q6R!JHZEYW~vzisxay9^iEFKEGL1L2|sJ!?|odlm==LlTr|+eV%kZ5Q9i*C zKKf>yi5jU`YA_HaKf0wn!I4=LmEke+`B9%;ovQUOb~NKc4McWW&~9FZ#@G6b`KeZlk|=eiV7O8W@<5gOj`d~DZ3@w|Vvln!(O6o=3q z5P1e(p-(&{iyXKH;u*Cr*$F`{U=AMjv`eT1aNpc-!7j}3zGC6E_9)6pc%HlN@)0W7 zZv&?B&aR#Wr5TWJDL$33+jzJiHW3%Tf$p$2jT=qj_#)yvUv^AM(nXY@SZJcci5t8h z28tgQg=B#gw4Ys-i@Q|UX8~$~tUvAKi6Ya4NZtwHK5kGP@K%X|C$s>kAh_^ppPx>Y z>&X2?cGyIj%8Bs+EhI{6cd-s{YQ#z;cJv6feJk$LM1JpAOSQv)KVdgNAX92o*^#U!1_RCx@?Ts}7y8}&wl9o80kMx%PF27X@1T!fphvf1kn21VF5A-)a`WC6q< zufKv9Ca8v_l_c)Qs7_c-oXxyHiL~$$HUv)YO$oJQm;mN-@N^87+WDBP#jy=e=HYLx z#3ogzU8)y$R|nz?wH-f*UB~9J4{EF93B-5OwS9;`-5j)A`nzA*JE3Ny-u!QkdYqzFroHdc-~BO zg6FHW=r3qQ0R=cu$CcSGB0Vs#UyTIV&ro}yHb^p*{qbjoya(v6x!Vt8kl21D!EIVz zI9iet&rZ_I;^@@=CfVRp06?7bqq$Iq2N?f&JM_M2(9}C3O4J`h@*IXc1`-BdL?dxR zQM;&s2<;ABrXz!CfSR~D*6A=FK;r7uwxj->@f4@9=5{gNM(x5#Z%5JKnyb9`n=vZ; z>pd zdk4nNB0Bl;dqPfecha(lK_uiC^{qj20QyLK&q7FM-r(EvH7r=0DcRR?y2MXA3XI`PiW4pFZbSqx(V7oexQXFFF|6 zVk+W+8wT9p>fC#JtkVggGW!=`xrryS@Q*o6?74phS&7AXA5_v&P}p&H>L6JYi+*ii z>EvS@OkZqmi>D`h^=p}$K&*7x)hK@r;sr4Yhg2P? z+bb_m5x~ttpSYk)kP8|G0}DZ%B7$&toLj`V#4#8#(>jQlM2x#phNH6JrxR(Hu2bQjkwC*o??lCCpzWuoryaOT8eRqCa|J-mHoNCC0;;RHEz-Lj?Z`7V#kUt%mC zPEv!;j`jPzsj4^I_`K~?{2v(raQ6QLhwG6v za!N{cfoXT(o~iFg$68rHio*1$*^Oz`j`%(wxSn&l&XIJ+(F!2rgZlxk>pTDkC!vI# z0CAWjBSMZV0tu1?!KJVrKiuOvLfs2XUy^MutQqTQH3eU^>zDvMo%+1;&(z5b-2OU% z*qXf~7H6lIBJdr#-WJ^uo&gn~tqn)T-T9MLPb!E@rlP3D7rg@lw#4;0kfN7j(+YwS^*kOC!E+nR(nTyfZgZ=qNusnRW#i$& z73)4vs}c^qiSWSRfR%c)a zl9mmskx6xbbp|@Z60H)qehgnDvOEKAgABDVpPT7u)`y9Vs952W%N6!boHjKTk#IVm znuP2RnVSzwzHP@7k0X%T1|K|mgmKX3g&{}N>UUAS%SRHL#SWQ?aI$Je5qyoGkf2@= z%i_-s*^^NPz`+JTY>!HPgxq1Jh|L|Os=P}lmUmH~tw`s-Dm&`gMjnbq0H|6ZlEBTK7`5-C*T)R$*#P-&HO{>y+JW9P29!~K;-Cpzxn;vZ=x8orX}>^v;o6&;c$ zBl36{hEYu?2ey<&d7nxSr_e?c3SCuVmsGBPgP7YCRc_2XclXB4SOOG}F5UT{?9;Wp z+AbV0zsA^(DHyyHr(8ges{ko{*+kY^!X6?+QrX~^E7C=(BV9-&;(K6zNOGb2}0RP6LnJHT5SbAM_k z7okR?j2iL^0Ju0ClD<(@p+1REb^`M$izZ8s*nS5{&|J?hK?SDtV6`F{H5#u*PU9QR zzl_O>Ap*J5VaWK4LwLPVuFgKmDi` zdT&A~#c!ryj#WkAnAS^?Radp>YK|XmGaW$^%ee4YuHn&G0JXhrCRV;8cse4;sr4yO zVg3Y;{-NAci@Wx<|=}KS`^0oN5TF{_%6vO&D)J-#nxS5 z^LTW~yU9xX$z4=noZU>=d8=YCBl|$WJ*{8nrcJUnv5H;oTp+;^3-zjsl`?rlQ3#RJJWe zm0$wS*hqZN?d}1y@S1;grP%XbOW*p z+j&N!-(HKe0FAr)`C>?HQ>v{589r=u;0A=3De>rd`>XqI7-#K^7?l`hr!S>3X+3(p zT=jcuUAN9d8lL%TGpbC|TYLz62t02iHN2j?xgzJ?`^FPbcMj|AsuAvzvalw!|D36n z{Av#-uTPBmTD=2>+21GETG|%x+8L}X3_7>j*^a+I=~#pR2i1W2#}(N1IrX0tgZ|$u ze@~eH?>&v~61G9)t&U$RfV=J=IZwW!f9zL~vul^$OONE$t1|-tZHitv$5apg&k=P- z*3;?R)=#)m(^^EZE4Ng}uK6MF+1uAaF|NrJS+~#viUf%Q0MvW!t^e&m^Q%&Mk2eLAzt z(aW0rC$_%t)L-9mSJEe;=fZ!CMuEVnAP0JLr#S+zaQyYR8t25>AF#Lnub*Gc}Le8~4N3YIt+8(8CilX1QZdFW+=d;Vt4I~v)U_P^hj;4isMsxWcY z$Mut-C!w`fDEC=WeDdy`$u%9gDZX}HT}rQtb|F8KuHe}{;5?Tk;jdK;7f|vs*xE)| zRbLh?aYsNVO?Hc}<(ZGRk*LFS8QB;w*PD;K@>gdQq zZB*qm(aPvkcK$nw!l;Q-=LU2FL(VJE$36vmNR;SLb+x&B5^Tt+a9)%Da$&R>4E226wLKX3(CO5q$)f76oI+vW;QZ`S+t zij1&ww~MEL-X=@f;SPz)ofRBaEzpM^YRfCoabSv|&QgO|^;X)xLoVztBJsjC_AvXc z`{Td(9*=)n)*phGoF7{3zf_(d(C%>7OCJy3+VB$eOLyyf45xG(V!lqw0;K9#`hkFp zS2ZBqM%u3-Bl4WR2*1~m`1{pT7N+uE{a;%X9iB1E|>juZR%vMZ};L!c(AQ>luW$>lnaFLqgp zWK;qD8i9@lX zn7!(NcXH`BMn6+YJjhJb0iLHZXe=HeMufMed+M0}Ms+J5!6u7t$}2sU&e+jmi#)H9urQIHH_PPro(b^_MvRA(O{PxlL9-MsT2LnUG$PvPEYvK!@YRs!DTY@p`8Q0GSmRk)&`2$8x-g3MlD=GIYDU zwN4ALI4eGu*4*EoIk^&nPEvuEL>IkINl$}}#740tZvS`E2mkxCkwyDt+D_@}NvqN? z&f8CJH~eOB`0L^K3oTqCU4sI)O&-3*R_A1|E5BZx$TS%qS|K`^(5`sC%WD7A!IuJs zU+cQYtAu-PqM>PGI@yP`hTi?LE4)S%8R(+v_KcvGnv0r?ycmHTc^V3%3^Q&?lpq3**cWiBN!1WmG5p7#@ZoS=Ppr}4JF{R5>F zU}}XpJFGg$*2HhL3_1q*{%5D`bh6-i&ZQPIc>?~ctgT%_im>z3XW1s6$vI6pu$oDH>j(A%-Seul={kdObwh6?bu;& zGHResD^0F{A4BJ6sRaJ=VTT}EF)4lg4MW%q%68PvxmVX@owD>l@=nsT$<|G(P8DIQ zbWA{s{!`$j+O@qR@Y+!+iJ+TKGT|c90pdP;K}lmMyyBd@>$pf$t@voYp3%Qg`Y=ua zDt23tB4#SMTv;MSNr3a}X}`t-nSkb}99eRIQkk3CBcY12vyt z?7Z{CMJd73vLiLGe&m0in~`k5Y;4U{mb*tu(6@f)S1Og*C)<{$t7I{RuJD;;5*`0- z?L9V%9D->L5AI{tC#j7u4tIe$6$OJ=CX{CZDfdxL8n70M_k_W2&QJp}i90p4jpet; zodl;Mg_KW4yUJBe^)ohGO`~AnB}LI-pu;M0Wp+WjayiR+HT1jVNIshH;f8D(< z^2)$P3Be$kUDE*5#H6D@x+jRv7=&(_Qbke0Js`Y@vWPRk>ubI*P*Y4-Kr~Ub>Toa1 z5(H^JKnVR%>seH8qVh%G|IXyS_{Z(I*IbnkqkqiZzjvsMHZ)N|h-L=uzIHKRsQu?^ zxA+j@{9i|7p}09HzOLkF=>tLa*ZdB8*!K_#OPxT~{3_vcnfyg$Q^fg!xF{}B#j^=Y zl)2vpGC+-Mqr=)u4}1RxrPy$DHZ*W!^72#}^b0(WAP5u2m=`Gm~BbBPm4{FdrJacM?|7yVe z0OEV=8W&w=6dF`eV(*@e{3KTns>0%A^+$7GpD9vd2q|E)c2+82J9-jud5tu8xK!wFxs9xb#rD#F%2GT1C z0kyCGn9kLCI7#_@0z=AWy_=%t1v zSlge;Tt$zG@?!#rQ6VY7_RME~O8h>@Hm1<^cT^1w01?Fwmm{V;Tlhi>yB?VDs3b_; z9)*v3jLkP}EELR1YZkKv#bdHl9it`Hj*5xqP`Bar`m`w5=QjNBwor}EdoRTEx zbJt!^Mx*-C@CK{LBHrAbg9bFSddV{9a0y7`0!JB8PPQnIs#WD>eP+5x@V*Qu;GLAV11rkf!b9P%yZ*#T%mO{f_+PF*sqW?2H-{?(j&It}i-j`Un@p8Y4KA-Qb-IAv z4E3wCj3Jl-ju5+tch4XBCJ7*axLX210shdJBC^ zT|tAa;Cstef#$2|w$j<^uE+jg=H#LRmsy~(G_lBFZKqgmE%4 zdUu|`VJBi_{5TPy90OTOd<1FMQ*&wLs+-qb=zKCBov$WhJ8H_usOq=|goQ2&+BTr- zP6EmR@2Me16>KZQdk+w*@cS{(mx5u`0 zDnLnnJhod1Q=i4LKl?51*+vOPiAafzSDW^crqgBQED4E{c0&+ zv{ZMV+-0`85PQu$(X25yE=3>BnF`yx2M$QGX`pES^PW`?rZlrPK&edbr z?p-}{?708Jaevo89_a9_nMT$=VCPv&T&W3N`)QpJ*PdTyh`1j2`>48_2`wLj4u7jk zU`$$=J$wYK7Z1xAgW-Au>5KSn$6TB7l2IcOGb3`69gPj$^K#Gx~6s zUPlPrpO0^HzsdjF;i*(txJ?oF&dmir-dU*1H>(Dkm5F=f-hJk?oGT5KIh%3pnvfM!nGtPNRhxE4<_MVf zpYZuWXRAJ1I)@f(bM7~ZDBSkk=EsSHoeqZu@`Ge-{5v4Sgx3e&K`Bd9a=SRNNZ#ta zjlQ*N4=by0#v%z@)}=9(fjVEf{!0k}R!kzY^`E3v zB%Z}YE=9=f$*vt|T2P*UeedPd{)#syC)s@~Uq-XAG3T^I`~4Dm4GG&jo^|(LtXbJ56jtA5PLE;x;R&eo*YleWiua@oBPze<>)F!D?68H!&4$W&B4(LxuV53 zIJcSRq5&~@IxxZ2d6W5L{LQ=o*ZGrHj!B{#E$66;ity@$3|7*Ko!Rh!U23_h8nHp1}dyGz_W2O@h#wfWB&^ z7f+2>f|iiTuX9TryvuqQC_;yc3-g7BicPch+(Z?UaDw5*UILk`6R|)oVu(L< zt?jX~d5(5{;89DM``!1XW=ES&m}}DW+4?KHX_8o9 zrXjuEBrSRS<@CohyD@1awcgQYX18{iI0Qqe5sPK3f827V?}Dd9iw&)59YEzHHC}_k ztRW1r!cZc&w?C=8f~{XNb~L~BQPAC(x(v*1Ipmb4cWWHqwA#sY^)-HEKz$4&n&7#g zGKR)qfnlazdjCagtR%3L=V_^7BU@|y17*t>QeO%*EtqB()kSeUDX*RPUFfR(?(Y(K zc<{-|=Mg8E6G~vt(15#~Y<}RWKEos#yS&CPI?|4w4BXAU!`U{ye7$ff*I=y7Q9rpx zbc3Km(nTb;Z-HOtQH^rpCrraEUHp8?k4QPKMj#H!pe*f!k+lyy%gJewOx-Z|VL8eO zpugBr0u!kU6pd%RS1WEX6bynPl0Cesy7+#$Bu^?%Qm8O*;UIeaBB)JRw+N<2ANl0N z<*LvtL^7yJBfwU35ALLeF!~?41Y-#qmOc^5>9Qyg3F>{z^+W2Z!l_hMbn3j{LBoHa z<8E0El7!k7N%Ok?++F_P`+R0o&Lve{In%do5U^zAQ-NBEEhy=afM`gtS$T4mxKqHC zi^qDee$^T&eeC=;GgbSM3pl*ie@wp@ znEqt+m`2)Rbz^a0Te3RA*&j9lKA5N&635Jc@ z7xO%D6<-jHC>!Uc+k4nd!86sln_C_DN1adJK3L|#!t(k$&>Io*&}Yj!dQ5#Nl}s<) zsofs}I@x$1{yg?+{Egizes1%$cSnqb_x&|MK}?Hd^sXbmEp|N`Zl*GpriA5lk7vX0 zP2@tS72nj|Q(zn9;|LM`2A`13}c9yVR|$q#j`MZr&k@q=~gu&*#5XX3z%ZEtfK4GQK= zRz~&7(Cci2X=O#874S^ZGJG`{@pby9PlQPA7V{yf{4G8LPF%CJLnti2C*BAutokgg zFNr>!DUP_`SZ_y*e?1YY?@zgE#nVp;s$nx14j!(*ieK=d!G`-6hPuQz#>^O|n#JAO zjb&x1v`{srZxU7Hb7j}T-K*T=l8{e8Fesdzt&Hw0f{o%3Jj%v6pOG(VG+ad@?+yt8 z&-nNuNu#{}q=jepCMhL1n$G<`a}%wXpb`@ty{TC-5nt^^+8`D6)%%|NJ=4qy!A-NOkWgU8S!6P>Fj5P3Z;f^g{uzxttgybeiB_u8IlIR{T4`Uot%ZH z#eNv)%bP>)4rRvgcuySHD&lEaVNiVgEmrL7PRG1fq2H`x}u3QPmvdO4U+;hAZt+Y~eD>XlP?k5cAMmNX7F?l&!Sd1p_G zF6T|%rzEo*^F`*5qC3KB9=%*C^CM`2fSmy3<853bD#W~uaoPLJQ@$K0*9tS$^+mhc z2-L!K=O_7g@x!7Uw^CXxTe{BK1~Zn(qeDwNJKIIA-*TBx%T9fFjH~kuTwkg$kkOUP z4akpIb+x_sbFkLQd87)=@=ieomV5tw!hfgx%#Vz{Fx;IpRmbR_N5*82Muf6CvYhOb z8u}DDtsw640L(jd%l(s$;hv(SF~T3>vacQN&_)~Ig0<~}kA6MoGnBut%{xup^VRE} zWT^DPu!oaSyl>E2J@#tD=-7gY+r3XpRBRt<8h$<^d23zc3G z-YfMuyCFq`oIa9I4cp**9Vn&pd=zn~jwTeFnfLQ%5Ptb~ANi-P_~Z*BmkBQ7k_P3B z(Zi%bAOKys+P9E@SKN`{Wp%!su#^!OC^qv`^{H(FdQVN==dYRM&DS<&7VsK&8xcRe5O;mPrJgmG z-b_(DFbhnw8JMKfIWSpnBAPJLef+L&y)dJPk1@0}&)(1P-cgybsg@Kkgp9oS9z+ABtZwwln>@97v}Ptgqvm7z&ed zm5c#PeJ9|i{Pm*)E>uunx7HX~LENFyHv`?C-2|@Nrd|u|bK!hTiOlo3ciTfhE14pMO=3a3B zA)}8@p!E`t1IeTWj5*P%@GkT9iQZEmDCHPnhBu#kbmu>v2WbeW z*K1ixS^eX&k#`Lpq&=9q*-5EdX;T6qOh#`QG#TwK7HheEFYd{~dtJ{xR9jApm9B*6 zdwwfJ78!+P68CAX2}})S!7gY}`dl?$)*((xkC`BKA0`XMzBhp=wo4d!qdmetJtl52 zOh+W>-U(`>baO>E^PEQ#SB4*(A?KCG=mGXrs2|4r@UA2aU`shlPS2$6^DzldnCMXW z#E_GW#COOif9j5ON&>lqiY_hm*jU;NtBr(J{BS!O zyI}g9_FYljLBqxgcjv)q6(t|EwR$=m4>Jv_12>newzhJldsX#ymU}$!?Fdg84UM0s zC*Gjza@(}bjqf3QZS|Ixzj5X6&Wx!stssLjlg0eU3Z4cpRt+{7xc zLxm|M=d*p>nS9O%%WS@M&%H^kfVUv~){)S~vnNH7-wOW@u2@+ z-iIVkqw>Vd{ezqxkHYes{@!VU@VE1E zQ&@U+vD7^YM)KIsa0%h-l`6l&WFPXqy@!_c$xokqhi#uuLre){i{kGPrxyE4j?5Vct!r`T49|Dhc+Dyc@73&dIWpqb z2A_?rp7*BuE%LCS?E0XPzRFr+A7Z@pxSz0VFm0`T1l!SbFLu7BmGAeht;M@#0h5os zR|g9~*FY-Mgs1}R^zHO>CeuV*wT1${X&T<*HVX2Tqm?I@knPf}~E5^)Vi(35M$ zY`B5>$3p^MytSkEZJ0)-&AMp1Wn^e_7AU|JgsRy$a+PnERNQsGz);M45V; z!uQdXkMBPg}V|Q=*{R?pnD)}YStKcQdH7}X+yz+BhWIq`6wsBKD_ukqnG8f?b zMfZ)pMi6Y(jh8oD3)TcKJ^Tto6&^60GDTgv|F?^iW`C7810LmO>%SLv4WI!zzs=v} z{O?-v8(;7A_&M-Gyw2vWTuWC!o4I3~(B*-HTQ|SSXQvj5+x+fx*`AN0KK`tPHN;xzKT4upxs+Yb%NK+-s%9!FNL1J?_5rA zyW4atQ>nFbQfNf(=MYlsS+(6IPtJmsUDKPV_c;h3{Uq0tPTL_OZ@5Gg*LlOLs9TU% z{cuOuluwMp^G3sd13{m!h_|)!=NuAzH>kgsY#V0QGop0&>G(u`Wn}1z#6A4-1anKt z*2(JHXoi)n*B=8yd-fgxNwLOnd)M}leY+c^wpUmF4ZkP5O}lm)}Svz#6ZO|Y7P5>sw`!)_0B+& z_nfX#(B?+D@_cwvyh>+jUnm{?`I~PQ*rZMxs&bo^Z2SMnd(WsQx2|mzdqKp8 zY^kCG3L+u`f;1~lia_W^MF9x`A%q@46tMwH@4Y4@krI%us30}8By>c2LXnanguq$R zU39yt961jx92%!Ecm|fzOM0kdAQTCc}02#UK}3!M`}x> zxPFGXC{^{o0auiv36(Ew^yMXouf+#_p~gDNu%uGuj5=aBG<#z57VLyRm%(_0ZV^sM z{!y^$#C?vx!pdz3e?GG(hLKzc!nqcPUaz_Jw#-{z3$sERZe%`Gcolc{DE_^wo%ypv zsfdp>?R;cSp<&9p2F)lbRvD5}cWJuCv=xcxJN}SjA)>|@nx;!D44Cfbe7BjETVvaZ^pNFQ&oGFYV zS+H3KA4!k0LAA=Jt4Uf4%ZlVVIs4}7CTdoem?0!@6x3fV*J3NN__TMAv1?2UQ!?cX zrO5Rv%-r9{ik+QC!FX#oK#)3;#7kC1f;(A6)Bx3;UpZ<4l-MOV#P7Bxaqvr?4RH9@ zf4H?w*{!acA5#^N#+YP*h@HDC)Xt9g=aZ7(G|&-2L<%|7I)Kjs{AFpkLRe z{*H4SAraimm0w$xT$cnP7u;eIeg+^310(cv=ek{%<~C4q@bMLru4ao~ir+lmxxWFe zi^l>g=-Xz&)c5QE2N^fU^!E=FH>{6HyMTLL0(ggtiA|%B*@m9b&4Vbo}0?$ z(fPQ8CMppRcSr5jFVIcCjhW$E{5~b-)_R@@Yka^zjVHnG@k^+Rr=5^~*=u;9T!sui zlXEQpvAw}LS46@=FoN6m4$R-{>R6P)QY^^ky7CpN@nK}(lSp1>k5;_wp|(e5%`Wu| z?r^&XBCNi6Lw31Gxm$`BF)kT(Bu}hYC{JvhU5JbN(~@+Dc*a`!GM2sV@E(bRRypW< zSDAA95WAOUGybt*Y*gd>am5J3T$zc@lioX9Ht%HJdx zAUbW#0V>$zP3tw^JM=*?pQfL;FCq3^8(DxXdI`ydU6`z3S?(+gXExAoM~uiZrH1C^ zcQ8ThZZP0Nu0q*+K9i~I0xqn<+>%bdqGs6e8O)Ii8$|l1Sqb4X^6jjCou9K43nrg( zE%*w5;emh9=Tbo2x$tiF%YBsj^+Ivmjl%%GP!LwU9#-KJ_q@!ZK)e_cimz6#Z`QAR zVt%dUv~G~dUdVvhcB(3@H2pLe>J*lpl6-#9EJFfO43H)-Qr;?M>$Mga5j!ibAp3f9 za~D$)R9MBlk*X$AqEo^`NHZRa%}BzM*d>)_P?_A zz;cznlMaE0Qlp-~(Z`s4-q7tVVn1e79d+mI*oY{V^48Y+ggyeqyWSs)E|Zck+{1z@ zglbfzu3nt{Hf_}I(>8YEIM! z3SHxSSK`otO=e{)XDja-K4Qg5miI`G8^d1+vnyjD?s|KxN!C)E?C23IrxAZJb)d=) z$M`;3^2YX)iJV@=1RoS;>{2o?E@R8Ox&7Rh zqH&iiW@1+pj19jg%Sk&w?ehbPruw<l_h|x)v**|u*$4^*Q7tZ2;SvwoQ zni_kXrl-*kW1xa9g1MLBjlM7d)(WH~J>*=WI5B#IwBdA3NnTr_i&F*YIQN=%;}YW^eeUI< zb)kRt}Tj<&DoQBpokCT6s?I;LeLhMD){RD~zXTHwt!yCS9ql zAyUY6=YkY1@yW?eW}^H0UZscc9^z?D%&$BKW!6Q8pk2rqNmX+h1lEtQ;bU(#2yWS* zH-#oqx5}KYP!-OZ$OVX$cC>+>Bc{i!`A@ugcgOmLRB>uTY`z#O`~Igan|wd8A~)r~ zH)N|lOoA&_#u_SBc{g&E&Je`F{pM*NVz*VF%lrz)xb5K=R`szMHkATySkce>LjLM) z%cmras!x7={*}vboZiw*{7aW?$gYfrVW_-w_8g!7fUNrvz`J7k7ioMGy$M-#Gt5NC zZUt|UMZXCNvTtF-G{2_Xqua(gC1@CP>wuC|AW6@@yGI{l@FB`6I4T6**NosfMuuYh zep?XhOeQs1Orgy}>T)~l4UO`uaFzSpb5i`r*u4ZiH;zMJzMUdnTrvYSgPB2btEiW! zoudW));?JpfU2FgF!>8I1Za$)|GIWnLc3+i^-` z;ko*i``hh>V-u28x*!*PBYl#m1MgT{ucp2y$@6XLDD290iCC)KWnfEfEYe}5*50Ot zzso=PH7aFFo|cl46_*lRV!QoL23IEY$3%&?sGpgHTG^$yw?{;*-xb+5xhTSLMAyH9WHQF!8ZM(vps;> zRl*Yk??B|eqLU47%0PDbwMbza))b3nr1$Y+LJL{_DQs*CygwZAdc91F)yW(-&czKA}9M!&+JbPk@t9FTasX=s7O88x;NMk-f3uWbicd* zrWm~nGrS0kn}L#%2i%a}Rl7L|E?00IPi&y%StF}kr9PnES2Dg;|M>k@g^W5~{Vhf8 zU8%Lh)xa*t^GlU?oO7@U@k!o4=3euvY!I%VAg#9Nh*WR+UdcR7YLbDz@}<(a5wnE9 z0vi5%{(P)=a|2g&vP@zz?_;hJF=Dg);%Se51WvNe>wPqg^hbNCf4EhS_*Q$BweLfe zM7Ug@2fb#lWWc?CfYQGx#~?ANDI2B}`)bzQO)&Dz8(f_krE`2*Ituc4WXuYD2v*ei zUv@zCO);>qyWV$azm#_xVIN?FBJT*8WR%|%p*j>QOnQ?dA28M>@H40A@q2f*9ll58 z4{J4+@<^OEt|;-riV}($WWzpcNqDG0YLplb#P*EKIj=weam0K`LHqUjv*sJ;w-g`9 zmm!c1&w(3SJx5K@H3e)iGo$K@B@aA5*qBHBwfakatj;GkHp^{4o#4#&;UdCZ$>oIh zlLGtw&Kx*{=(R#JC5GgIKcG+9S+~KKJ$tiTVlj7o>Q;a~slPcij|&dXW#u@}PHn-^ z_;+p5cO&)=aWW=!l4U>e{5l6ZFbiC(o1PZncm*j@o2P1?jJuO!3jV2}&zxm^ee$4B zN{XDAJMqz?`mEx($t&4$5*NK(APo^=_`^RW#GsuXbr{-z)e}$b`$Imb%n3RL^eX$Y z9sjwKYDD_&?e;r3#SOreERQJN*mOocvDu9vz1}_Y+D2rxuF=A7;Q20t4`g}2a8&MY z6+lm&dbAz=vj6f6xWqBLZ)edeHhO6YCg%NLT9G=#>dRsazy^Zy=FxpD;0U0zLmS^B z`sg1G2rI4aASyB~@?I$R_7Z>FXj3!Hf#g4!oP6Q5A@;o!cyJ?>Y~15fUn zjo|Y>Acsk9jha3$k5|#XrU&;4Fq&7t$%Ct!d~|Q7QKP%GP<>#8OY9L}nJ}tNsB~Bc z*pRC5PI%XM4QW<%;5$qLmXlfJXb~b)|2jSnt=TA=yXn5E)7kD_ZALm^rYBbjFr((b zCVj9!m4oYVYMQx9J#0lvS#PEW3tefWLDZ#&)NyJorTI!uLOUp z#2@;#CN;ynE)u(#@stn(X?E;KE!Od*@lV_pBM*jz5sqz0DQ-Pm2~1#sc)&^P0rpQh!5*bIM{;_fnmwvo7Kmk}^Ph%Dw(^OdoQl{qtv@yOzJo`p#_n-nQMM z7y2l}J!WY=$Ekt&V=Ltn)6Hvx*~<4#S7zli z12H{AMt=u6pkTn-;YqQdF+r}}&WTp*OtCr$Y7n_PHNwFwx3W1&#vmL0c+)8d`Y!e^ z8S+5x>WMuMCiY4m8RG@B2orpvrQp|%eXSATV!iKmnlk+%6PBr$2Ykv#GBus_9iHs1 z7(aYyr4AIwemTtg;~quBg^|wsft7HCCL=AKSv}S zN#z2Jsnxd*6pJVj6`1v13XoO!k)00wG-rRs^z++q`wp#B+62`Q4;DYS`@4Pb0wjT* z^yLr3Qg`OVBl=gGjIs2PBx&a~XC`TPo92V%cMQRmIxmg0Mq<;ACc8TQm@}7XWR(pA z|8<(+(A$dHfqR%4`vx}5<4CRR(P}5iU--2G4*#ZJ?Fg9seKA8N!%x*UGX3;kFDL8C={%DB9a#d3inFZ05Ag89W>u7z zg&;i9i;qKE)m+gvzhbbhW4DJzCU9}t{4&_Oq?C(yALFZ!s`B!){P)q>KP^?jPfO+b z=)w5(LEqt)Dd`ClfZGGMhW^C&*Yzo`6A4_minfn2NX~%8WEi1DO}o0BC6(+q9$Td7GvFebFYu{PZ&Oo!Z*8U4+9=|^Qi}9 z0c9{7#$uEWmaWMXi>Wiz?wpB=utNhwMv{*Q)65!i7s0gRarUo&s=)4_D)3Zpr*q|s zyWHDTQT8LNC$8=R7wGmXESuD#nFk_hYvjTHi4y;f54xmP2~b|SHMJ-?J5OVRify?o z7JiyA9Q;UyQTI8KU9!BJED~jps~WcD|13k8JNnyI2Rxlon~SA5Qx5OV9>nVl)+-k& z^BEyGj#(mQi(Sf}BeSrzj?GMv>DH5j!iM@YFW)O0#_yIkY#t05rf)Gfw7(ka#3{i~ zZRLQey!UVd831S`AQ5;qm8^7j%9+`2>jf3dypHE$Pzz9yc^&>5T}N&K}iFYr*>)lyga z_EHc@8wC|_f=I=*l1C~+B$mRKx7ugb!X`84Y2k0cu<#Ke>y*KQ_%c2IdZZ~v{M*>U+8i} zgL5TH^IdRCKD>1?#Jtq+5h8Sat34|UTEeUAkt&|N3UCCrQowGzeU|p+w*W_%AYato zTm$ZBdd#C_n}|@30K5l4y!@pSJZV;bBY-4z!4lD=g9sDurqJ(Y=Q#3og=i;8^~IC*0*pS=H1xU*0Oo$1WZy`cGDiaseV%1y{(jnA_N4|LRecft zclCvZzJNcg8eaz9V&Be7<(IxM43d#)EvWcB2j&wvu@M68s!#EookJ&oP3X(;5Ty0Q z41KRVZBf~!5Nz)N%GZsv$T1G_8)EC<7o8CUA*Hzw<9bMn?Ir=Fo98R94tNom6yW0W z;X8L#dDr8V?_tV8#(zHVC=@H28IF^_egWbMs8WBwBU_sccuBxjg>8)P5jXse4-{DZ zGa)PobygNK+rd$re`$sCEGN11VGF>t)B7qf8A=|3whk4}94OtG@fZT6IQUD}YmRd7 zh13WtQ$nLOi&+U2Po%MZ2+hGEfb=@aJQWM7C5Xwea=6A(6ER}EO#&D+^UoWxS#H^6 z_B48To5&vZqQIz0p3y3~zl!GSj32C~R8TBsXWRMs=-^R{H}=o4%Hm;yo|F5@>P5?1VqW_GCkiC1vQE{nW?#&W%s%_+@pZWKxEvb9)CqJ zg7l>+ocJaE>r=GQTo}%|`grW~;gixzPFUxOs>S1yD|0 zSwte4IxVrD!(mTnWxT0L9yA2Imm^&+Tep@CJ>%K1I9Tk37C$BPfoCK)?%aS}iSxz@ z=&zTI?9A3fNNwuHw(e>p`5kU1s1{s=FyL!?_MEIRa2kX|Tb~`dwV5qd zDRx5{fB1(Kf7$-e;0>UO69;+Xw77b)4sL$mt8hPg>H7gak*o0P#ECil%6cg`h^-`8 zdK>t0&)H3EfK~0EV#fX>QGW2~??EGAwW$X+Z=~*q8IL};8$*JhG659#$g@XVcAKZe zUoUt24)sO+qzkjLUAnV97QpSC<2AaNp#QXS@ z{Mi1YkeBXQmCVo_orR6vb2`MzMgy>|YlB3yAMsKeW@FReGg-jjRCy^wxt~(6ts2i&d$s<=+`Tq2g2GSc`H$rGKTAeK))J1rokWpU7}|X+ z{gGJnw_rQy5R}SvzUIQ*ZgTsE+vx>?_&MmSSU_eg__@a39sg<9*5w1%iFSYPwfr9&n{it zoGKFd-pk)%NZgwBt2yJ0et|oH(FPc=ZfB*zaw#c^w}WKcl}D>yEngkv^$HuUIyY34 zdhSOj!w)p6nDal09Ct))>gD5brqB&HMf_Y^WekbI?sn`ii3JBhzx2a9^dJ3o>nGE_ z>+|&79WLB3x6HpRtu^yXB=FMD{}qKKj8+v5>ZTt2Z~r%_FF*ZnN5jUp^VnY^4^EuH z3T=08b=vo`S~?9J zWd>!!nlle1=|(kEpri&-3ti6`Z?(Ql!=K+pQ>K6Hq&!J*f^3n7gDOVSmfwvzFgACA za)0_6C)o=Es$3gDF}*je1=a3(PMw4%#aJV+FqtVE20>SX(JVhya&gw_O$W6^>rCee zD0yk~JIXMqMN=Tut3=}}+9}XxaEVMCT+s8o6q*p37@fAhMpdEU{MX4M4@nV5`5k0> z54W}4_wr4X-M>48|0!F20qYuhP7fC2CfqBk!5~fA2%%=BcaZVrxKfF)V-`Mi>+LM( z2kmF^h(6)fdD6_qe3#JvKp|GJNpZ3ErD1rC^ld|)jfQJ^P~;Chkzw$J$0la`F`1m; z-unR`H#WKOsiJYpJd4~Rz-V#~#zmBtI$u&LvlDEy^E$Szlp~{kM z{Oter@V|iWpCo0imZTc>QZTZaN^;g)Je=HpD}dgDWFS%uqoZtgwXV|$8(kH1Os!A! zmqm3Kf!Q-+MRCdELcI^;gree4 zbwW&6OpLurNAbw|G4D#l&ru~exkmbT7l<1rQFtX!JfJG298Bdv%w>g*Rf0=93{{f# zluVad%tI@2f_d-V<`B6dTQ6oyDWc|aWXr_%RGZ=7Joo=JWw0%vb`@cayD3?vh&kiYhkHvg8xSE+g6-{oq{2ioP$);W@Fp>`ga!u3jnvv#wTZm@-fv)!NPYv(8L?% zHTQz-Be1X|M&{%YETXK6al*vr_-oB#Tk{jFlt?+uFi?hZtbx}e)5>%Ho@E)S?+oFl zSd9QcVo`2}K~51z=X!VvWQa9ksFEmWRr^MNlToV#(X(aIQwCHj2e+BKB`B_g!7IcV zYyTX-b=oVeI@OX&p*nTh2q4!^Q5D$~1pb?~mwg9%j7E&D{k0@aD!Vw^jC7N;m6>be z10W|FALTGI$R@ZV=ZU4|&J7x(jNYKF1}%%SF@^zAix%E1QAXBRyq9Ke@EZHvTY9Ap z0o6b``VG#2LstKr$5QNkxoiI8XD!OOY{0n0N2PSg-5Is#{|Xp`%y|ZqgT>deO}_mYCafjOdig zUWH&XkSF8PLBAMk2DpNKG5$cR1dq|zicopc({JixGvjCT%N7&vuBQvn_AYc!xT6|r<^!yf-)w(2Vq zYRJzX^c;;X8&puca^h-V7u!s~7dx#x#a}7Y-wHVpLW&(}uh0!-C;|@fkfBZh{Sl{1 z`}*pHKP6^pFSS0!e?|Kv+f3wCQGYckcwe(DUlil7jIzn=O|ZVurSQMX5a0>CP0lz6 z>6kI-dbdSOqQfcFnNw+G74>yLt;WjhQ7|g}^_X`eUsztge#P=M1i%STWlEF*oej_si;ier^^{5hAX5V+jVO(B7|8lD^Aa#nTIdRo&@tMg z--%IXB@<Se+3^@Co^NXo$SdKT_x zb$8qdrO0hX6Ytej;td<9{(uw!$03(x$5GfS1W=G=&>%EA4{G}u!HuP+xoWnVkMXA{ zJrmY$1je@v-CPiA48%mpnaudz$2o0)3V$wuxwAAI8!?NUCNBiK{VSef3uf_<0iZ#X z$9&w~>aFpPl-L>V{b?Bzrb5eKooP!!c`uwtTYpZz({sgl2phaK52~q4^T6sjhhV}E zX}i)->c%N|!XzcodV>C|UJ(stE%-+c!(X#jS7!VC-%$>x@QZt%NHfiW(c(K1ee9A| zjv*d5;uWp{ZURk23lQcCKx2<@%~h_6Q`1X~;fz&_jQW>Ftt^D)JQ#F-ods4SMp{Z& z)M=eVoE!J??C|xL(t#JPYl>>#0vL>I zMAU?l&Rgg?mcRScpGybI=<|fT2g#yc;ouO9)8mXYFb3f|w@Npt=qL&3Z}WbsID8 z>;k$paWbsMuf9fkwNwBOdOH|`o+kXOBe_=4p68I&l{l&=Z8jqH%7-Dpjf`@@4?}}? zW>#q(9MCV%PFC?EbuKKT%~20jhC$7+iqnkFrIibRpDyf_VqmZC3z#{{yGWuX9m)BybU zdY%cy7?E5yB3-!Ml*u8rrP%b*!T>%U0_=1JcG^+2nq$4Wu%iUQ*o$0SF&?7W zv`b?pe?XAMM?kB=t8dx9mljsj>D-=q-VP<~bN!%^l?Y<8NlCSyvTYPrfR}Kl^0R^( zYx^+CiY=>~=erN;lKs+FwS+}-Oh=BpY%U%VF*HYBzKm++<^j0Q#X(PMl8v=RykM%* z@>+|7`ut9rlQnuui~X}AWo{D?K*mnDO+E?xMTv>1%o7U#1xButI5`Nq-eg9-OU^nUuWMg6pSEJrnkgwR@13? zd~M7-bMA?`QxWze52%EdU_I*c%Sab+0K&d!0ZPIOumNu+U9r!N1&{r;n#8)^?7!Db z9unwcf>`criKW|oR{0EI+q?H&&7_pddp#O}Ml5Ug9+s5X5cCIaZAhCRfMY5KTqnI< zR25pn?u_rMe1B~<<~z5Quc_di*BF9E>YFozQ#yfNm#D9^M9y$H^#KEqNHC0)saNYT z36PahYGPiFNQ}NsyJ#k+Dqer>)A4?|tnIRv4+ajx^gzFV*{3!cRvR3CdHwBR=OUyw z$i{GEX5^S=Wpy2BTm!XfA?OmSv4G?(p`W)j%Mj3e^x`>f9%N&vWsVK^NnIKL_5(8T zRz+B!aLknZF0uk_uN~F~bOVr-@7AMnHDkQuM7u0YRLmdmJ|WUoQ)Kayo_N}MW2 zJCaD{B0maiJHfp)9IwQ3sd9_V%d`t>}9S#Jh%QIucvf=LNW6=1C`>+9@Pw1HCYV0zHb8jUPaCA-Y$27hf zSM2-{rj%E`F)Z5B!^>R61uqqBy;fy2!k`;FPqTA#ha-Dx1QgN*wLD3C#;6gLc0o-g*EZm^3VMM1Hp zq#9O5A{l4|^#Ymxs6D~zIH0kbb0^4tE0NDD4nnhYK_;Sy zbUUpm&OGo%h9CqaB#PW_Q7?4K@(7qPG5NiB@n5kL8|}w-8O}4Sq?Z6eby0jPU8tm-y?WWR!WRguzLyXq0)q zk&auKalXPQo;fi4g7l-eQ8CY*3X@B*zS3NFnI4re!gDOj=^x!yO?kY@!50#;_r7MV zL3QFD^&`37bt^S)@`-x6Ck4&({2y+t_6hpVENE4)ZA;HK45Dqf4~~i?`sFcnHnttj zsR8K;Bj`%?`M5>)Cx@tC&}*Lr%AAUZsI5M;WTH({V*!}vk(c09bp^*<0acIcNR2VF zl8<#~n05c+b1@#Hbez`aPY3QM)!0A7R|C8`V6~Y1Z;9l&1HcZV6=Ou-+A8$}_EcDl zQQF7PjFb!^Xr`iqIqnoRfhlnt5cyGBk~JN6r2dt1XFvhyI;g8;=e0P)^j4W4KCXsQ zzJ2(Q1GH`SYN0$Cz%i!nt=xFsCwZdZ>-%Tx*@8nhy@1}lw-{@NjK>;5lQV=4T#Z8P ztz1r1j!wU>1F|7vhwo$m#^>K za6LT>nvs?hb^3rmWx;4{sV%@xenc6NDUv(~Jfrqer|gn3AF`(K*88v(!?qB8BkU>& ztp$C*KU1(_Zub~ORtR*|yleVn&KvYPX_hugZj6`R0DcWSy%;FZ z-b&3r8(l?M3xbsw2*5Ee{2Z@UrxO^p)+ek%IvEuikM&;Gcu>RFV6zfl0#bJttdp~M zeF<$=K2)Hj%Tokkwm6IF9MGRgdlxo)+hMwU_D4e|Hpi@sK% zk{Qbg8eRV2kNTt)Lv`QPHVb;v2F_4V=KwQ1C zjm;AJk9MoQCHzt+24?Jws89Y~T-0<~c$IPc*1dfRAT*C&nr*%m@c&AVAn)wi{6r3#n{R)$zU955j+tptgQ zI=>;LAB>q&mR1$#av0OPb%Jc+A0hD5bW^wA24y!|r`&^Mn#|5GRUb8d}KCh*EUz&V>8w7272dbq4o zSof?y@R)}q07B3zJcZnALn+8Sa(K$1a#=Pjw_UDUeqT?r0B#cIZ4}BI8s){B2vJ2J zSFYklE)*Y`^*#_NGoc`c7MWr-njARkH#(o=R02;0}z+ydr~n@xUp~!=kKMA zt4IIQp1~@ULb;}X9M=gJT0etV!Gfy(^t-K5B_0nCCpZO*@KQK6K^6X!X3FEs!jWRI z5FocBr_!6~_{V9bSOk3l5wL~io2_NZ6d_$pvMlt-I>fz|!= zeb=lRtCNCKvp)VHO<3r?eo+k&tctLi<2Ars({y*eS0KAAVh}!^S%Guw9x6{KBXnyX zOvF>QxO!Nq2SXPiDr7)aaQ{&EV3Rm5OoiFc!z#G(fua+~E6v=67vGEH;7cy=U)=%o zYYN2yPvb^Z&4m+D_s71k@;bL$$KHMEds~{k7>>f7n=KGcE?MoD8WDMW+gK=!Wj^_P zE#a$ir0-8Mv+bq=rU4u~4jrPkWl(^jqfA7`Cfc^Z&kL(kKYwl|S{n*qRYa03&^37= zIAfupI_9Oy>A=P6hk<<4&36Xz=*=nbx@Cj7vTL(4wqqQSyf`lsht=Pzv8Lj)JRo?D zwz09XSylaHhmY<~;mCkPTRJj5wr+ZTEHF3qXyBnsm##fOdhM#-)qPx1#{vUSiap=F zTiv;1|2Is^kjw=YYtf-2c7z6zik`dY90mOQoo#g!3aR-;rCzJ76A$?OS=wabbo8P{ zv|@%Z!6A;|yzL>&Ql=2CvrM#BAx?Uv%$NuG1rSILJ;b=PIdpRv{?*VVhc zg%Um4W!J4fpHaOy9M@1jhaMPu3zG+ff4uVz@FXpg>*cp!7n3%)PBv;7F`|=zF9>dq zL6uq!R_7`_A0P}@992KZPH!%hr!|?4uNG>bHR6gZ5TAZ+{ z*Gb6--IC&DP^Gx-;fV)~c~Ns>Y{AIDQPj&t>`=80x6FfYdgSjp$?o-&V9}G z0JCI;dnMJg?Jk@WgKwtId3~!vrF)%1v%%)|?;+TXdI`xDx#GDBNZSDS(TuPuGDy7L z>rb4B>e{$*+9izlDi}JK9l3gcw%h)Ns26Q|fMBUcXSPd)*-dpsQEx9xfLpk)GeRj} zaB52~V0UtolQRi%8mRY;7xHdE>GEcFkDp`<-&h;{sBs%MupVT!IPs{)3~BYq)zp4B zc<-ITKWGPQYY)%r>R-{nVxVQn zg;IIR3O~~(KrJ1U0n@??5l>d^GxC6W+M)wIZyJLYcILoy5$lD zIr%!M4LDwV3+^IF_EQb&(^r`7KUX#YWRoGCToiPE`7%aN71 zB8*?>l7Ib$k*X;7MKGiXQfYXEwpz$F+pCXvZ&-+0oqG|3MfqL-)MH6B2W@1&!^zRXI(&Z_l{s z9uqcj}6feYN^Mdqz= z3)^o6M_GgyuC7HF;<6p^L}%t4Xk*d&SzC%3!KO&B;k+EtsnoF$mAPD?F6}UcJ_Vh^ zxlY+GpMjt>dwDSB;np{6_?56|l;#lTqCfR4rcBVv3k-_`GyN{wPJ3GBk>yL^+-LGa zIo&wpjtlj2TP5aThbm`6BlbC>Wnl>akX{64F^T)GC47S=iTywLACCi9AGR50Uxri( zA}Df2ev!YQ+V?9zj%+mU%%Z$x4GVZr3UJLBbS{~@XWR9vyS&<+<_@2p#}uy49X=36gX=@S!i9 zUQe`=$HMK(nnCFfZ;7^XRWVDr{`uf)zgq6I>glEyv+jeymBXyBimOv`Ol9{}f(5zoTyS4{K8Y zdJ|l#qVbQe%E%wA%z#?f^;)1uYGI4e4|t8W`#+zZPyRpnQP|_>F{iO8Lrr}IR3vW| z@%0hk3%&@x1g}cAFQut#s_MVCbbxgP3Y{cGv4nfu*bmZi>Kh?d-iMl8GvDr4zP33Z z#>=*LC{l3eZ}eJV0M2e5D?9h2#=-Z45O)al7{c`mF1v_3^59U$LRZ;Szib`barp=M z``3m6-?rzH7q*!N@t>^!;m?9NHuX9ldeT@VBG$h7mQ*A9`9rFfv%*q9KSn;Wfj3QcM`gJ~G* z5J8T6{<>VYw|(3G=hl8WyCo|q#7mj&Xw9~<9koZd*!7NS5t$o^!s%#MvbX1|lgk9{=l`slNJO7P*oJF$?D*Uc4!zfoD{9 z=ugXbGFuK3+py1!e4OGYwy-Uj1HC;x2}b_yK%pZ9PdwRrCoErApFR0Z&USZnc1MRp zh0U1r{RrhFBT2`hpF!yD7tv<>NMspBf?dqRDlyP$VTvdb-K0F=*YX|}GW;&2wpv%_ z&#ujFoE~88*<*^n*%|Hd<;n-5G-x8bre&N9EIDc~)BE(@)|AqXoccJ1&|Q^8mnLIO z!K#gv_jClH2$c2+?vgh?usK?0w3|Y5KG3nzQzDrUKZJP(26y!RW|afQ{_~N9e2l#P zscV({Kw(t-bj^I&(&s(u2#2`bWWk#^WLl1?Uz~Y;hw`~R9ff=`{h{E6$RUFbU(=5c z1c|>zdE1dx{&w7Ru0;NexrH)k_>Mrg-@m5~x3Ie3`&AilLl&ToB|8%bkqn{-gELpq zUpaHHfHEpH=>q1AWtr2q3&&knC>(g`vXzWq?dYqS1}Hp#YT`;w-ryF2LONtCxDX5{;Qg-7CupU6?Du_xc7Lyj+s!4I@4t(zIUVZk|m5r zlQW_OIQH$eL`~O_Tul5sajgt>@gVlsR`gg z=Q1AQwSU`+$+6tz>kQ2xQqsp!Y|gO}9}w_FrKkwT=!H-ktn!v{3i z^kr>a%r;10^)cQrQ;g;h*LHrDS#73oXgOqdRjKRKEH^YqG`A@Q%p(1BfA*(pV~y34 z){ZV-ymZ>L+(O;|dQ-f^h*lPD`LWy|;+fj3cVBvh<`2Jojlah`?!H*tbp+nUZS99C zaU9B1?ytO7RXThH?>*z=u#({XLjz(aB#l^>pj3Xi)oYPEuj~30$xJ>^U-}wN@ca#Y z<76%fKlIpRPJ58^qdHFBb##4{?VV^Glg#X&FHEtmc?I(%PxWKME{fu`lNCA@uGi;t zTf5h52oKSdeBOc#>IO8FTY93olUX{umV{pXRjSywYX1iZut!>tXP2mI1(n89h^t_p zCe-C7e>g}m!)Q&8P4>|%W@2sC=c;4zSo`q!Ol73-C0dyZ7#&&XUy8IfxQSLO{o4W_ z1~YeQOB-T!@lkemVdz^ywjW*>43-UQ7NhODxnRum_TB1o`xL;m6SRt4A()mc+x*Vq zgacWN-BeAi#IJB{kq=qA5m51D4Mw*cOAA&rtskXL7n^!lX$$&iqlh~A&Bf>ZXVL7I zJ2(Z2%!xA=yYG9%Qh#`*zog_6cjQDPD=Q6jgDTCUClQ?fmwccaaR%cFxxl8 zJ#C>>>l>x``{66)mn?l+)HUAH*VKTk?5|3cv@05LZuN^*`8XaEdPJuG74SW0GM-SUujK z))HR*w8g!Kxh%Mq9#*h&N$i8dCgWY76lMk+i(*u?c1}raq`Y*g^AT^?OzE_G1+iZ| zrpov{=>nQrtUQp+8P3^woP_rW*j#Uszj}cCc%qlX+T#YNYsLk@$PS1AHJU21;|2rE zr&$Ju`-~+dFQntjDi9qyMeg%V-&&75)Dq{%31%w!aK7oi_LgmCPP8=__?o*KB@>Pb zzehl`vVX-)JL_-enI*jn9!Hb!r#3>cX_}E|a0fsvUdNK9w~PjVYLowBlRu+LDPTES zb#{OA{QOfk*dMm3=MR7pLl5%T3@p}*pY~Rb){t3O19Voec}n4JZrk=%NFP{&N}-Hx z*-BtV8)DnRI1i{(r_1mN=pqUfmHtp(aE`EpZM5|0n(E25y=_)Q(JPi;Fvxq_^lvGrhJw56{#T3U`Us=40*@5IbhE)HJz z2${Z-tRQ_twXYl|s#J3+!e^jl3{84VJ>!dv>r1u-X!K`=5i5V2d+OHin|e9roLv|K zlkH?PvQQKZH&mJ7wC1IzL~Di{`M(7X%MV)$LP7Uvd7sE{4oT0m_$@9XzQQwvWcTeP zT1E6+eVimTj_J4SPr=*f#rJ9M6xtyxGf0s)#<1|E3~N}3>RN=)rn#!HtK4WB%~+LLyP&nVUdZMA4)Exx^2PH zHx_qn5Mr)%NkX5SG0SczbFzJQ-nOzOEhYtkelzHbhvaR#G4MXQYQtXGvQaWJ)sh2` zxP6M|zhN~Ov?c-5sVVKv&mS&s>eZ=m?CcLS(N2=8=eR%4m3I>Al#{xp7y>04F#HvA z>oq>(uO-l(tlzT17L8`QSotwsw{-RmX(`-`?9}f{HZA{(dDR95LPpr(Zx9xe5}PI5 zWL!pNbxHm6oKyrvWBV(`gWpbX>b=3z%54Zf;YLF}R)$pq&CZ-^G#LMb_4%N%e%{YY zfj@Sq|6;7o*KI#dkdp;a#Q5`Fd+QadO`}a^=taf{^OYrcwS)bbAqy1^<+=7%Un7mA z|G68qEolt|wwa>iV&(5i4+l_FB@Xy-;!wr8K05BqY-m(!{$tyu`MviSpV;3EEpFl| zj4p2IZS@3rwP3*lfKHmr<`^lb!L-xaP#m8Py8UDb3O$)jQi zje-w9^Y$qckHigcuhgx;$aL^_g0 z5{mQ^LZpO1Lf|`boObW;e)G=r$BZ-MNS>3k+uCcdjSCPHE|e?D?coygP4&0d!`*=7 z>sQ}g)JB4@bH9C%4c)1?^f^%Is!67+tCw{rA$L?dNV@jyV+}V*S_P>A9P|T)Y?Un) zT5v@{WbVmo7tTyn9L~zV(NDhyR_@YJWgvTV4uzHokEta@@klzBy8^+1}i21I3~tDF}wuI%2w)`pGhI-2cH3I2s-CCSoTx&;n(rOdn+XP zewx>7+my>>tCsDduNIe^q@)CLy0}vM&g-zeatJ~u74x0*?IQDl#zY9n5vd+JuCf8- z7Cg;0(A`Kz=0_w)orIt4i~!~Zt<^I2U2bX8LYGBh1}U9B z(;YSj4PVaUFHr<7;4JP%Xan}bei5&2a!j%;AjO=O0Q4fr+J`ycgq33wwvc06wd2JC zA$s`1mBb-w*8XJQ4?C5pHf=(uF9(Cd$7AfplouXk)U#Fo3%G1Y1!kKWsKw)$6NE)D z^7)qo34JI0;@Yj#&TQ&G^Oi?ijJ+B98p^om~?oz(0~W<7VtXL zkIjzIP}JBm3NkFKL*Mi_R_abAF*-O%Ti4OUJ0)i* zUKCP&LqtI|1?Qaoo3+8WRgdpy#?5Z^v;ry!qV7NAQ%BFlIR^x? zq3KX=hb^7)=GR^Xv&<-~FA8^VHE{h*RC3rBrVJwsxNRc~6cjFo=|ER!F5o`KT5d03HdyETg*44Ea5t#++c!|^C)yO1-_nCWuT%i&!lVvL8G!-P_F4lZzuT@C z^3Jvk!<|X|T9t?^z3E#W&8Lz(GrYbM-O$Q#yCGXatF=-i1JhgGmoW!+gxT;!Ar+Bh~Z;#GB zbGl%sx7!|XTD75B2ub9%g);Yv1em|o1^eM@OFR-A`S6FU*#JEu|IJ@|l@(sU=Dx-I z6_xB&WFczph|h&=&v$M!9ptDi8nehEzmWcMhBp(XZiwBCt4dn}tt}O&DYwuyVgQB! zXYCQUD<9%@1pe2CvUQeDp{Q&j&l;q=?!F=jbS|b(gTf267c%OXiQ~DV!%_+79dk7* z6HA88APW9f)0*>9oJHuo7!^}GiwY7{6$AL^p&gx8N$n*6 zHJLP8Pr5&NGTcq`ciSS!9(ti$kJlBkZk=b?R_N_XzISyQvBCQ)w!Jie`sFs3Bc{QL zoaXwbaRZCFn&usqr>p#f9wc8xCM5%hjH{BBT$lH@bA4m}plsRZT~+vqFk*kPFyaKJ z3Jcv)*)}SHDE1P5t+l3W#%psL5t$NMAej<@pd~+!P9!(mTALAVpOb^0|H{anWLkiK zdipc`zs39+{`oMf^7>wcDMaOR1ZfNbUq0 z^)|lt`qi)*J^@bmGm6x)X|ee@v5W=?0LZiOAI3%jZSOfly(dP6zuyhn4wid?RHJ2W;?d836Irw*DcT_nr{h@~mRog74<~RZ1pF8-AHW zO1rqVul=#0^9`h=A?7yq1_YS-tCi&k{LHwZsN}+ZA$EN*TJyF}4N%Lt=?QB7t(gf! zeG`zSqitOMdLit|LxgC@W{)Va*xT}Gy>lA0Jg&d=6|RD!(9{h=z^Zf?6J&Uxb^iPF zQ8FO|E{E*zx3wkQaBE!%TnsX~zc%(frmm!c!d1}r$p_G%_aSUcwh%T%v*GDyfGK_G zY(fiuXmk(Zhn1wvoGH-D zIASbz;&HXgh0-MIXC9i>M?L<{A&_@oHvq|gak}x@ z4v&h8HuJr#eL=LV{WD;Pk)3x2xSSVfrgwv;oViC{L3W#Ap^Eo*&#;ySSpD^IU$2(N zyYkWP^$LdxY8PIU~EgzLb;<*XHhQ=%0S}y!Teuq`iydOXjUHVqS!g$2O1=;RQgWuC@@4PZ9;k+648PG;C57`dpUd^PhpWxrNZ|#4 z23XM5JlwLgl2_8Bmf6yq)28f>jdhLT!p}N-|3|hBTU?{_jpzV&kdDMcUg3N8l>s%E z@>?KlH>0;Zwf{At(2CqZCDNh~;~eS2qilMV(lC*Me^s;1|(u zZw`2}vxZ`d6Q`TkfZP|bE1L}r*!s+9A`6|px}WPX*j%wk`I4P|bI^ODV})0ku2=5> zF50v~5+=3&G1Fom3SU9h#5zz)0dOaaT#8U|6k2mo_{6@9GH3-UJ% zX>a+TS7g14(UxLb5*=9-{mqp2asR|nkKIz+io8GYq>xOJ18 zWQw@LB~eJfkaMH&4R*I@NHP4cH7S3Y-9mUftX@P7#DdlNpfb}$WUn|6`IQ7N1BKZ^nM>+59#eaDBy{`>Xivs z3bJcahE6{~7}wla80DJT<^Hi~U*e5LT5gfNk>?^e}6+c?g8gC9>dCM;a4kL7r)}JCWjQzrh zZtbBQD2}1?NAd*oS>zb6MAgzd$KT(L@po0DpPd4+mgx5-M8>~*;<)7R2z1dvX=U^E zNBU=L)O>9p7@#*v*2B7A8IJHK3&GXLn9W7!%j<758*>_z;~yJuXJ z$15Use)4PAZ`~NjQh?!enux7UvOKkj^?&J3FXY_S%{W2@%5jLzndm?Rz*gmMyCK%_z+Keo3;2=zA(z1 z;Qxv?#oo=vI+Gk9I(6LSgmlG^g7x>0%JlzZC&sxic+da+v+`zgwv*=z&|f+p?sCd5 z3)13hdR*tFcH-B&wbY4aDM(}fyvO;R`T18XA?{Lf+&1*Qfy(Lm^>)c*E{CXivq$ln zMX`X8bp<-xZwfdvLGeSGh4`~?v7AL18)sfYKA0T?SFK*8>m#k5j8YWgkC=)VLil_aP;UIy}{o)M$Om44rD_8It#Mimx6|wm4J2Jv*%?O z+w6V>i9i0>MXmp3OI=#I5&pH8M%pi=%rG-;9su?PdT>qkRVBsgyvD|2X(kq^6nmSv zmRx;m=h7d4AmbOeYkr40;k@CFKf>36mT_V;Sgy9;!=g$fZ%H>Atq5oOt_Lo0*onV^ zGE9HARQ~HN4;GlT?@wvvmeX3PWqxC*w($ULeEi!_etY1LY+`>)H3OJ93IB+P0k~#w z{P}pU9F*;s{TU;uNvp}E$*-LgyO}_5abLpU!AGV)+ONw5*-hMjqXSycPGl#v)Y<62 zk{_Pe7_-Q`cZNQAV2)B zFaN~GtQGnDlfL4uoh(HblqyrS2c~SAQ(DSHsAz<~2Vq^|XtM99nDKjUWyA>?&#VYe z3707L7xKd7VaiH+IVWScmGk?g%QH>-uLFNJPHTtzQj<%0_mgX5-95yQtoW6a_S_Hc$ZF}Z>^m-H( z%)MuDQML%D_<4(v90q(@vNBZ3Wx>y8G36mO-1DVWTg#d*7wA5FTZyvfxLvU4ralVj zcOR(B9Jc%r@soq_k4Fl|zZp%+?(}U9g@CaaaL6955b8!OVzl6Cm4V{?P*u3{vFHq4$gQ{T+>wgNYXiX4y6wWc+kp;e6Ia88!?E^NlFLq z5{A2B5WFqD4=6<1mF;o=80qWSw=xA2x6LX?14`DZ!cF7>7jNOWXmVMk zfeAHN=3`i!)lY)2>sZEJYWonmJ2Ihm<_vuVW6_fBR~Iq=sqApjP}XR)HJx!bD6_-y zkW}U1w`?c0Bbgw#r!+&Wp{?}A6HPSsN`?vC_*d6S^Kd4op&`7RS7mIj-J+!so_%)y zZTRCtAt3`37|SmvN`*wLS}0htBsa;iW!Ar#a3!Z-O?iMaJAy)}8`@aUjwhVW@~i5ofZ( zX)9bFB)Ew`Mn%q8sTY-xu*t5L5?AO;@3{ghl^y=wgLGd0QmUX2fbWC2Nyy;Q`3~Lp ztzD}$;Tg5+K*K>cFUK4J8>?{V4K?!L+=fR_Dz+=;qwGG4AbhcWRNs>%{W~5So({6h zgMQr~vz^-r^G(k;gJ++ttz3&({#?oTrvIBN}1zSf^U*(sQ;RtL<7BIy0ePP3jz*?_t+v2 zGlLeIoiLQ0C(bu-N5cxASPo0?Z!YOcpgsbE&P#8p$w$}4f3a~2fEwYlxg zD&iHLGp5$sJCa;8G!TWlSI~orHzgfzQ?$F=fW;dDe8kwkX)8Zixty)Hb$ReWSu;Nv zz60?qh#McUV1ioo%&(E47qW8~VUIR1^38x1f*vS=w|4m+sE2)`X2sKM?JZ#-T>H$_ zbl0lf@Iq#=9PE(m1jQYx@QVy79*ZOfwfo392d~b1l6Nv4kVrjw>yiNO%FHfe^C^HM zG34rBO8i}u_b=?Rjvuwo^UwOB7;ZQ>Z9Pr^W{@jZm@}B=Yw1}$3tS?%$xC7|?M8IP z8kh{IoMtPuntQk__fCFI5BK-Ohvp?`BA?L|>N&M*ZsD(!BSFp)Zbp6y+qwhDFHq`v zs5jvknM<$IdbS;z#=kC^B5bA?pT4G z?LNTx_a!}aY?`D8uArpkRqa}g<6@hwR5;4g-`{4&xuvJgSL=m-wfk}!f4ep2o*xnf zI#tD|mkw|fzy7Q2pbj)_W_ws?yOID+mDKCq=0{^FH3m8u%$gwVgYb!{dwMneR5Dmu zrYGVCSof2{K$+U#`wb~kqh;=M{Hn!z8wn3LQ*HX*#;IiRE@h9R$%`o?O+m*#2&va}U z2fJ_E+AJCiw#=I}CG2N|*Sj>-!&j;m3{zX~TC?*lmr7}O-%0th{0sx1v!i9FsBE!<3(*&H#2P%B8cc^sL zb!YGc?>p`%__(@^&~ViO*jQDhSx%R@*}|vD9u4G7?=QXbXuprkGM3tA@q<2~8KLCe z_riq%?=GEd2)*SG8~eAmR&AgQ3+R3?sMSC;(f@MuSWAX1Z$f}wRWfw-9_#3EBiZuu zN|S(v_gysicgdYed6jux!)1cnDz4;kL1rh`Jl)#uRtza_mfs2cEHziNWA0>g@ zw61#-+z#N`Dg3g>FN&9aP{Nc=JvO}w#iZ6*WWCFZLZT%e%ZRcX zFswEEY+D+v(f(kV=jhC`}G#k-1? zjbnH0f2GJNbk7)f#|^SDsWyHVIhSH?d-`9cY*S}d@eQM@0S5Wv!^3OoFlqy_&%JM6 zS*ZnNix!Tj0g-!rF-+!LqUpJ6^(l|VudIfK)l@-&wh+K(Z)$D-GNVp)NN?%IVN>k@ z%$3GZ*f=u6gt`e-VlYdSj~6PC$HaLEFh`+4k)v)OxvRm*`O0|3K>|$xOg~y=S;ZZG z(F924Xra?dR3PqPjXwf3PkcYo&N!weWQl+Rlq5@ljTw=(813&Nad2rfydjt6~=0^m>w-8Dg5@1 zNF{o^F%Ze6kvGqwhPyK z51_P&H$2mI-X(R*Uu?U{zxL@|O%veFV;WPzsjPwyj!Le6_j5C&`066;_JDwnufruU zprck&wbG$vk@3Dznu<>M21f&A{unOP{ikyPEx&#e1VRpGjJw6)tAb0=#|)kZe@5gB zsmypy3{#|QVS!75Pslt$+w|lMp3z=$h_?n-R?pxIKA!3Aw)8-->BB+=wD0em-pAaE zG5dEpC1{%Z_|l^7gOFz5UPdHMCxJnr0eZ&0>aO_}gjH_6h(+T|bTi0al(u6!ux4Ox z3<+-ovjgs~4Km*XfPI)(tGjqUbDqeHAv_<1q>Abk>90Py> z4mS};-RO?Z%#iseglTLTNfvEHUuiN|=5<^gDWZuxHf5cV_HqT>Fx8C5aNM9oa(X|kub z(?F8XqC7BE6uhrcFCd^3)RiuEsOYo?1Skw9qQS_28C?1@FikLRPoIXMPY-VeSS#-| z=rxaSQxwX8(CunMXv6S$t8qThW*%&oW6b=9cXQR*90}l^ku$&Ag<4$Nri|{E^X?a# zF=$OD$WJywG3{PJa(1tTJB73C6acsOKFqxL7VupEigJZs+xwHu^#fje`Vwrr>g^pv zXp`VJJ<4?S6R;i?s8INQ>*Ep}3EmDXMT z0#M9hkF7lK?tBF#B+Yo`1JG#iTtkGv?vp-N8(mF(k{w8eKt8y5yf8tO7KbhKy23?8eH_e9P}0${?bDhP#F@m$lh2sz!KEFFMN zlD!#$CavFIaa)uPbZqb=<@TsW;o3bGCJYgW^SkH2<)*T5IfF67^BL?QTz~+1#tODI z?gIV({UDvBlZ%k@yImd7a=%_4SrMa`h^ky0D|{NKPMz9p4;D6$ol3n0rWl`5P3Lj|!Od55Mi%|w9m(g2808Z6Sb zw1*|K+8tmlR?eq@8iuuoNJ27fKdT#~ycD3FpXp}x{4D2=Z;spF_n9!0*Hwx+04jA^ zr$803TJzy88vF4aM#E)MP1 z?qKNs;{G{%(|0da_+$&}DGSbB7oxbgU&^l%j6GWzW**jP{b*lTXvRVtE&yAUQnSTo z?L3nhY}QKWMQ!9&o}Htvry1pA0aakmqp{1TvV8j0ywnv_&+@Mvtm0mSTaP?qF#~^K z8&`HaxY@Hh>Bc+wUNy)uDf3k{i9#;~T)BG(x719%HSDqCt*)id#F@9EGBdrKl#YdC zCTTcsI~k4ni-x!}zn&+&0v(Zm2c>1k{+jmCr~x2JHq|$|&G%X!(LbMMV#1BspVr{P zS!7nzdiT-3^>%n=cda9IGa%}=T7T-NY6YcUeUf%vggJ5xknt;l29o@@b2Dd(Vx9bf zBizVk6ar@k7ao*EGweCo)~!H%IJi&*?FlA*pR83pk9QyCkW?kaBC40ub4KwtmPt}G zF51)n^ZoW!?oh|-EIjf9HSklU?{QSqD7>U+?6bMIEuc=EyaSq8#?cl2L+X4?sN5nKUl^`F4$cOrJ7M>o8OsZrEM zJxxsNgMxq}(80T`h4@8b8!inQ>Hh)SM%K_G)VVVu7AnS3v(}w#G0aTr?Nuhluco1w zO8&72U~nBEp5HEcyeMWEMh1#%$l|s1ly`6eRToQROsvnJWMkS>`1(7 z(2wR!yY}_vbykntGfoKD%4M{ylnxs8D#yc2-vnL6q&jvAt6aC|bCpr?(>suto;kiv zFFo_^G`a{L4*!R@jsR<2Pz0L8m3_$)67v1w&iRV zi`&&BKp&P=9R+iGjTo)f{515wh1b*()?~=wJKM+zg*}coYBNa1)RX7=`-NyPZKwTD zN!|T=1*WL}A5&(pXxw7H`Vw;_75Ai|*)d~_(b+OXgl)hUX41PNWGJquK#xx(M>Z?;#@N18% zTKX7N)hhe8dWy{41;D7WXlGA;yy_BgPYhRS2}YVQFmI$41Vxa7Vf5xFU#%E#OgGSj zysB`8K`jpt?}2A(kCxK@mPj3`{GTsQvl{LE{Dh-Yw^H4aDYQ`lYgLE&EQM{{uPqAN zK7jm@GLn)7=B=}LK6|hAtPe861YvM?u-R>7PgcDA3Y7!?m0el4px;hLXz6%nywQ?j z3y(imZk2EWU2pGJqXKv{kVO*GYlNy7lOhvh3`qZN6u@k&w|`J$pemmV;%W7ou#kz1 z)wI0Ytqa$_-yYWb`y8v<(f?+!gPvt$?u=t|kcO1|^61PtJ5Z;-5%8jc=|fw>tDsew z5lh~qTN=|k?q6^EBECh$d!x{h!$SIK-@o^^zIh$~pGTm*dOq*H9Wlieb`)@B|9%2s z`l;Gy1p}np9$HRS0rhS`$|-i0Uwz&=Ul}b$Y9{UB@3F7VF-WV6%~gA^WrIKbe3!dh z_ba!qj?eF~iFLk!lQ`oA8)|Np4xGR0>Bv*zaBq+|VD2*%-R#Q&Dzf;ST}$fGmQ?TI z4TUz{(y>pCbe8>v0VDW=Mbf}9gaa@$+($LVtk?3W_hu{+z)4_&27T1qOx|K{a?80k zHl&TvS;C+F$E;z)?^9u*FU?SDA)Y=W!3aB`p9`pRfO0%J0$9|xAMHb{O&*=*olL%X zUJYH~!P3OU6sT8Rb*C%dv&1f}i*P6BHwF_JC{U~m7=?E*+NV3COoY)3z7Hw^5Z=zN z?5h2synBr=#N!2Ztj)19yCuV~Z4+>Py=ig0244+OpGUqs<)jBq%Q5D4 z>+cZr;9_cD$=oV;g9?tr(pviq+Whk`Xw}ucTdgt=9ub1ZUh|Oqy|PI$l2A%zsg|PWRiuQ2MUZE$hpk z#5WQx^`2MA);EJ8ecT&BB^bs~Y?yzSTO?9tTwmqgeZn=i!m>rpYjnD&+LjPR26VRh zk>F6Y_&YF>pyG3Ok|(%*EfwMhzE<5g7gc!jlS_GODx%G5rP^FHF>78$fCEY$l1r8H z9-($Xd>^34m(ko_4G;7Gw+%;Md_JNGZVZYlUErp&_d^EIbCWbolHxjbDH~T;^R2ZzF~PZzMoS1!G$^ zE#JpQG185EfM{%=-4iO{)c}SnJ-X!WKMr`}qa~oDXhMh$>@~wYt9eY+FxIvY-i|Z_ zTARsr^xTTYfRv64o*+Xi;0_t-ix2AB0*wpahBYf^Ua++mT9alTD$P?E)No@kB`AHD zwWEFQ2m2YI-cu;IGF=3QK&@8Fzf_Py)W+SLz!&m&Cc$m&@AF!4UTt*~od8>%GaXiR zhDjWV9@3Dd9A@wnM^WQo1R~HK;Cx>C3g31!ed7NwBWH0xb6ehf>lE*`MgYru3>R0( z2XDQA!{$48%M6|4)M0SU8I!Dxk&o(-x*2?IRcb^&7@2a1bcnuSA_B2*WFV<{Ta}_y zWmh2~R35?@!J5(gKaXIccG*nbb8%^3HeU<^_z#WaL>`+g8^k2&|fCe!8J#YSva(i>V68(MtuDu6_XZ-!53do?UD#GL-}3_*UUX=k(< z*J(x2en|xwH+aTmDc9~80t#mrI3iJIapUYiZjC(FaiyL|SS93SXEflZCvfo&fDLh^ zJ;&WTyMIB-17~IyG^;9Ir!`d;ib-2pQy>gqn@=Dr03~E{JeWk3 zHUU6`3pYp1y{jzAV4#4X!>?z^jkKh+v3kTlDuC2X7a;H}_}EzHLHZk`s+x5~7UWk> z^AIXycqB(4i4ku`)v zHvo}i6@$codweXH4fSOah_ZOH;^1KVN%!X0PSmd==GF|#;C8~boM!}FMN5N2P*F8z ztr3L2iUbI{^q{j@2|R4bpLNEe&R_DO>Dbz~8>u-PDN?>o+NL2%-bM#ci)eUV^gDd{ z!GkBvI|Zj7hCMlcA=K&3FHWj&f7QDB`bzUXacG)orWnCU00a4YswA7z z!!L9tFh+U22<#J>FgDZ0_5{tq0ynbj96xo4Wajpg?}zjG2B9Opo{DDj%DR^(U7BJp z^V<-CsVr}HT3$|EY$DU`NHMD_o9;f_VKEV1wgI#FxeQ`wq9X_UW5;0M>P86|FXW5` zHhgzw<#5u28|oQfpnLx=!2xbwW)f!yDSqjsbfJ1n%+BQa_8HH?;-Px>AGbC%yG5aQ zRA82LXtO$bKQkz$CU@YtMJOM^;@+XB_A>DhR^J*b9ouk_3mSb%fc1BZARdt z=Eeq4T^9DvX0H}`V`gg^mc%Uf5qYGe-``sDP3NxNfLP&PE2Ok-l!*Qma7`2M0PS@GOpK|RNT@4b>$qm`RDr;L!JkrF$uTZ_WHYIcM@f78ZHlJ_fkUY-&+ex4Cn;I_bweX3fedQ3h zrufw+4&}1uZog}!t&5mT?+w+NiSgK>ObL~x)r#>vTW`w7>PpEJq>`R6s?{l$m(S(n z+RP*KA=)^8&Ay%{-eX&P86JguQMAJbXA!)V>zvAW_bvi1ZmFt=zhC1udPaG3UGl=M z50CDT-N}H5cZB3k_P&oP^RjgJ{qAgd^{{13!(e?B&&6-&n&J~r*-!)CG%AT?D#2!N zFAYfcM27Rh)Q4as#}A2)61|js$~)5EsxHPs8Kp%`Q9j>2kYWaHjKR^Q4nPzrs+WJG zG~PE;)C&p7Y|;3R*JIuRyxu3)U6t*9du-SY;<>$F6*y}}oa@3Lq1JDO^NR`bnkAgK zJwpl^E9i6jl0aNu0UMs$gTyaxt?4vhGqG;CUeSos*tkC)-9SQPO_A;VVW({CA@B20 z7|75YwXmtYplJ?`$yh#t=@=^`aHd;DQAHF}DZ*~&E-l3_gswqQYRi(?LXU6N!L;h__ z%hdQH?B_ZHp8qn%VKH;1%bH{pqdf~Ppk0M|)Hiz3y1g}5%A+yPr&-;zjegO^`^`y> z`jWz^8Z9_8hS(+jQXKaEe28Q`Bs8 zYyw-3m%wGbGUUl98uJZ^H{&-KSZv;#Rt-7!>vpkbh~+tSR|VUj7vgcR6hT_|NF?HJ z+_)K3$vDMDSY#^3r}ynnzvH?i+q0$wWj4t9Tu24jR8^UDX#-A|YRm9@+}s1C(8Nk; z9wX{?&({jwT-S}P5Ibz)cwo)WN^Y?jV#h}}N4Oxr=X_kxCu03Pxp#)5vR<&6DxKX= z_~yu;tC7feu{*czE__<_;s^7X5MV$^n&`apk%DD>?ap8dmeO-9X#ZBD4^Lp{67@oH z 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

8+2N9 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

?8ATIp}6-$3h$VP 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�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 literal 0 HcmV?d00001 diff --git a/store/ai_model.go b/store/ai_model.go index d8f0594c..556325e8 100644 --- a/store/ai_model.go +++ b/store/ai_model.go @@ -42,8 +42,7 @@ func (s *AIModelStore) initTables() error { custom_api_url TEXT DEFAULT '', custom_model_name TEXT DEFAULT '', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, - updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ) `) if err != nil { diff --git a/store/exchange.go b/store/exchange.go index ee532c1b..73b668e0 100644 --- a/store/exchange.go +++ b/store/exchange.go @@ -56,8 +56,7 @@ func (s *ExchangeStore) initTables() error { lighter_api_key_private_key TEXT DEFAULT '', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (id, user_id), - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE + PRIMARY KEY (id, user_id) ) `) if err != nil { diff --git a/store/position.go b/store/position.go index 71677927..3b26277e 100644 --- a/store/position.go +++ b/store/position.go @@ -69,7 +69,11 @@ func (s *PositionStore) InitTables() error { return fmt.Errorf("创建trader_positions表失败: %w", err) } - // 创建索引 + // 迁移:为现有表添加 exchange_id 列(如果不存在) + // 必须在创建索引之前执行! + s.db.Exec(`ALTER TABLE trader_positions ADD COLUMN exchange_id TEXT NOT NULL DEFAULT ''`) + + // 创建索引(在迁移之后) indices := []string{ `CREATE INDEX IF NOT EXISTS idx_positions_trader ON trader_positions(trader_id)`, `CREATE INDEX IF NOT EXISTS idx_positions_exchange ON trader_positions(exchange_id)`, @@ -84,9 +88,6 @@ func (s *PositionStore) InitTables() error { } } - // 迁移:为现有表添加 exchange_id 列(如果不存在) - s.db.Exec(`ALTER TABLE trader_positions ADD COLUMN exchange_id TEXT NOT NULL DEFAULT ''`) - return nil } diff --git a/store/store.go b/store/store.go index 4c327ead..20daf185 100644 --- a/store/store.go +++ b/store/store.go @@ -27,6 +27,7 @@ type Store struct { backtest *BacktestStore order *OrderStore position *PositionStore + strategy *StrategyStore // 加密函数 encryptFunc func(string) string @@ -151,6 +152,9 @@ func (s *Store) initTables() error { if err := s.Position().InitTables(); err != nil { return fmt.Errorf("初始化仓位表失败: %w", err) } + if err := s.Strategy().initTables(); err != nil { + return fmt.Errorf("初始化策略表失败: %w", err) + } return nil } @@ -165,6 +169,9 @@ func (s *Store) initDefaultData() error { if err := s.SystemConfig().initDefaultData(); err != nil { return err } + if err := s.Strategy().initDefaultData(); err != nil { + return err + } return nil } @@ -289,6 +296,16 @@ func (s *Store) Position() *PositionStore { return s.position } +// Strategy 获取策略存储 +func (s *Store) Strategy() *StrategyStore { + s.mu.Lock() + defer s.mu.Unlock() + if s.strategy == nil { + s.strategy = &StrategyStore{db: s.db} + } + return s.strategy +} + // Close 关闭数据库连接 func (s *Store) Close() error { return s.db.Close() diff --git a/store/strategy.go b/store/strategy.go new file mode 100644 index 00000000..39c56522 --- /dev/null +++ b/store/strategy.go @@ -0,0 +1,452 @@ +package store + +import ( + "database/sql" + "encoding/json" + "fmt" + "time" +) + +// StrategyStore 策略存储 +type StrategyStore struct { + db *sql.DB +} + +// Strategy 策略配置 +type Strategy struct { + ID string `json:"id"` + UserID string `json:"user_id"` + Name string `json:"name"` + Description string `json:"description"` + IsActive bool `json:"is_active"` // 是否激活(一个用户只能有一个激活的策略) + IsDefault bool `json:"is_default"` // 是否为系统默认策略 + Config string `json:"config"` // JSON 格式的策略配置 + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +// StrategyConfig 策略配置详情(JSON 结构) +type StrategyConfig struct { + // 币种来源配置 + CoinSource CoinSourceConfig `json:"coin_source"` + // 量化数据配置 + Indicators IndicatorConfig `json:"indicators"` + // 自定义 Prompt(附加在最后) + CustomPrompt string `json:"custom_prompt,omitempty"` + // 风险控制配置 + RiskControl RiskControlConfig `json:"risk_control"` + // System Prompt 可编辑部分 + PromptSections PromptSectionsConfig `json:"prompt_sections,omitempty"` +} + +// PromptSectionsConfig System Prompt 可编辑部分 +type PromptSectionsConfig struct { + // 角色定义(标题+描述) + RoleDefinition string `json:"role_definition,omitempty"` + // 交易频率认知 + TradingFrequency string `json:"trading_frequency,omitempty"` + // 开仓标准 + EntryStandards string `json:"entry_standards,omitempty"` + // 决策流程 + DecisionProcess string `json:"decision_process,omitempty"` +} + +// CoinSourceConfig 币种来源配置 +type CoinSourceConfig struct { + // 来源类型: "static" | "coinpool" | "oi_top" | "mixed" + SourceType string `json:"source_type"` + // 静态币种列表(当 source_type = "static" 时使用) + StaticCoins []string `json:"static_coins,omitempty"` + // 是否使用 AI500 币种池 + UseCoinPool bool `json:"use_coin_pool"` + // AI500 币种池最大数量 + CoinPoolLimit int `json:"coin_pool_limit,omitempty"` + // AI500 币种池 API URL(策略级别配置) + CoinPoolAPIURL string `json:"coin_pool_api_url,omitempty"` + // 是否使用 OI Top + UseOITop bool `json:"use_oi_top"` + // OI Top 最大数量 + OITopLimit int `json:"oi_top_limit,omitempty"` + // OI Top API URL(策略级别配置) + OITopAPIURL string `json:"oi_top_api_url,omitempty"` +} + +// IndicatorConfig 指标配置 +type IndicatorConfig struct { + // K线配置 + Klines KlineConfig `json:"klines"` + // 技术指标开关 + EnableEMA bool `json:"enable_ema"` + EnableMACD bool `json:"enable_macd"` + EnableRSI bool `json:"enable_rsi"` + EnableATR bool `json:"enable_atr"` + EnableVolume bool `json:"enable_volume"` + EnableOI bool `json:"enable_oi"` // 持仓量 + EnableFundingRate bool `json:"enable_funding_rate"` // 资金费率 + // EMA 周期配置 + EMAPeriods []int `json:"ema_periods,omitempty"` // 默认 [20, 50] + // RSI 周期配置 + RSIPeriods []int `json:"rsi_periods,omitempty"` // 默认 [7, 14] + // ATR 周期配置 + ATRPeriods []int `json:"atr_periods,omitempty"` // 默认 [14] + // 外部数据源 + ExternalDataSources []ExternalDataSource `json:"external_data_sources,omitempty"` +} + +// KlineConfig K线配置 +type KlineConfig struct { + // 主时间周期: "1m", "3m", "5m", "15m", "1h", "4h" + PrimaryTimeframe string `json:"primary_timeframe"` + // 主时间周期 K 线数量 + PrimaryCount int `json:"primary_count"` + // 长周期时间框架 + LongerTimeframe string `json:"longer_timeframe,omitempty"` + // 长周期 K 线数量 + LongerCount int `json:"longer_count,omitempty"` + // 是否启用多时间框架分析 + EnableMultiTimeframe bool `json:"enable_multi_timeframe"` + // 选中的时间周期列表(新增:支持多周期选择) + SelectedTimeframes []string `json:"selected_timeframes,omitempty"` +} + +// ExternalDataSource 外部数据源配置 +type ExternalDataSource struct { + Name string `json:"name"` // 数据源名称 + Type string `json:"type"` // 类型: "api" | "webhook" + URL string `json:"url"` // API URL + Method string `json:"method"` // HTTP 方法 + Headers map[string]string `json:"headers,omitempty"` + DataPath string `json:"data_path,omitempty"` // JSON 数据路径 + RefreshSecs int `json:"refresh_secs,omitempty"` // 刷新间隔(秒) +} + +// RiskControlConfig 风险控制配置 +type RiskControlConfig struct { + // 最大持仓数量 + MaxPositions int `json:"max_positions"` + // BTC/ETH 最大杠杆 + BTCETHMaxLeverage int `json:"btc_eth_max_leverage"` + // 山寨币最大杠杆 + AltcoinMaxLeverage int `json:"altcoin_max_leverage"` + // 最小风险回报比 + MinRiskRewardRatio float64 `json:"min_risk_reward_ratio"` + // 最大保证金使用率 + MaxMarginUsage float64 `json:"max_margin_usage"` + // 单币种最大仓位比例(相对账户净值) + MaxPositionRatio float64 `json:"max_position_ratio"` + // 最小开仓金额(USDT) + MinPositionSize float64 `json:"min_position_size"` + // 最小信心度 + MinConfidence int `json:"min_confidence"` +} + +func (s *StrategyStore) initTables() error { + _, err := s.db.Exec(` + CREATE TABLE IF NOT EXISTS strategies ( + id TEXT PRIMARY KEY, + user_id TEXT NOT NULL DEFAULT '', + name TEXT NOT NULL, + description TEXT DEFAULT '', + is_active BOOLEAN DEFAULT 0, + is_default BOOLEAN DEFAULT 0, + config TEXT NOT NULL DEFAULT '{}', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP + ) + `) + if err != nil { + return err + } + + // 创建索引 + _, _ = s.db.Exec(`CREATE INDEX IF NOT EXISTS idx_strategies_user_id ON strategies(user_id)`) + _, _ = s.db.Exec(`CREATE INDEX IF NOT EXISTS idx_strategies_is_active ON strategies(is_active)`) + + // 触发器:更新时自动更新 updated_at + _, err = s.db.Exec(` + CREATE TRIGGER IF NOT EXISTS update_strategies_updated_at + AFTER UPDATE ON strategies + BEGIN + UPDATE strategies SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id; + END + `) + + return err +} + +func (s *StrategyStore) initDefaultData() error { + // 检查是否已有默认策略 + var count int + s.db.QueryRow(`SELECT COUNT(*) FROM strategies WHERE is_default = 1`).Scan(&count) + if count > 0 { + return nil + } + + // 创建系统默认策略 + defaultConfig := StrategyConfig{ + CoinSource: CoinSourceConfig{ + SourceType: "coinpool", + UseCoinPool: true, + CoinPoolLimit: 30, + CoinPoolAPIURL: "http://nofxaios.com:30006/api/ai500/list?auth=cm_568c67eae410d912c54c", + UseOITop: false, + OITopLimit: 0, + }, + Indicators: IndicatorConfig{ + Klines: KlineConfig{ + PrimaryTimeframe: "5m", + PrimaryCount: 30, + LongerTimeframe: "4h", + LongerCount: 10, + EnableMultiTimeframe: true, + SelectedTimeframes: []string{"5m", "15m", "1h", "4h"}, + }, + EnableEMA: true, + EnableMACD: true, + EnableRSI: true, + EnableATR: true, + EnableVolume: true, + EnableOI: true, + EnableFundingRate: true, + EMAPeriods: []int{20, 50}, + RSIPeriods: []int{7, 14}, + ATRPeriods: []int{14}, + }, + RiskControl: RiskControlConfig{ + MaxPositions: 3, + BTCETHMaxLeverage: 5, + AltcoinMaxLeverage: 5, + MinRiskRewardRatio: 3.0, + MaxMarginUsage: 0.9, + MaxPositionRatio: 1.5, + MinPositionSize: 12, + MinConfidence: 75, + }, + PromptSections: PromptSectionsConfig{ + RoleDefinition: `# 你是专业的加密货币交易AI + +你的任务是根据提供的市场数据做出交易决策。你是一位经验丰富的量化交易员,擅长技术分析和风险管理。`, + TradingFrequency: `# ⏱️ 交易频率认知 + +- 优秀交易员:每天2-4笔 ≈ 每小时0.1-0.2笔 +- 每小时>2笔 = 过度交易 +- 单笔持仓时间≥30-60分钟 +如果你发现自己每个周期都在交易 → 标准过低;若持仓<30分钟就平仓 → 过于急躁。`, + EntryStandards: `# 🎯 开仓标准(严格) + +只在多重信号共振时开仓。自由运用任何有效的分析方法,避免单一指标、信号矛盾、横盘震荡、刚平仓即重启等低质量行为。`, + DecisionProcess: `# 📋 决策流程 + +1. 检查持仓 → 是否该止盈/止损 +2. 扫描候选币 + 多时间框 → 是否存在强信号 +3. 先写思维链,再输出结构化JSON`, + }, + } + + configJSON, _ := json.Marshal(defaultConfig) + + _, err := s.db.Exec(` + INSERT INTO strategies (id, user_id, name, description, is_active, is_default, config) + VALUES ('default', 'system', '默认山寨策略', '系统默认的山寨币交易策略,使用 AI500 币种池,包含完整的技术指标', 0, 1, ?) + `, string(configJSON)) + + return err +} + +// Create 创建策略 +func (s *StrategyStore) Create(strategy *Strategy) error { + _, err := s.db.Exec(` + INSERT INTO strategies (id, user_id, name, description, is_active, is_default, config) + VALUES (?, ?, ?, ?, ?, ?, ?) + `, strategy.ID, strategy.UserID, strategy.Name, strategy.Description, strategy.IsActive, strategy.IsDefault, strategy.Config) + return err +} + +// Update 更新策略 +func (s *StrategyStore) Update(strategy *Strategy) error { + _, err := s.db.Exec(` + UPDATE strategies SET + name = ?, description = ?, config = ?, updated_at = CURRENT_TIMESTAMP + WHERE id = ? AND user_id = ? + `, strategy.Name, strategy.Description, strategy.Config, strategy.ID, strategy.UserID) + return err +} + +// Delete 删除策略 +func (s *StrategyStore) Delete(userID, id string) error { + // 不允许删除系统默认策略 + var isDefault bool + s.db.QueryRow(`SELECT is_default FROM strategies WHERE id = ?`, id).Scan(&isDefault) + if isDefault { + return fmt.Errorf("不能删除系统默认策略") + } + + _, err := s.db.Exec(`DELETE FROM strategies WHERE id = ? AND user_id = ?`, id, userID) + return err +} + +// List 获取用户的策略列表 +func (s *StrategyStore) List(userID string) ([]*Strategy, error) { + // 获取用户自己的策略 + 系统默认策略 + rows, err := s.db.Query(` + SELECT id, user_id, name, description, is_active, is_default, config, created_at, updated_at + FROM strategies + WHERE user_id = ? OR is_default = 1 + ORDER BY is_default DESC, created_at DESC + `, userID) + if err != nil { + return nil, err + } + defer rows.Close() + + var strategies []*Strategy + for rows.Next() { + var st Strategy + var createdAt, updatedAt string + err := rows.Scan( + &st.ID, &st.UserID, &st.Name, &st.Description, + &st.IsActive, &st.IsDefault, &st.Config, + &createdAt, &updatedAt, + ) + if err != nil { + return nil, err + } + st.CreatedAt, _ = time.Parse("2006-01-02 15:04:05", createdAt) + st.UpdatedAt, _ = time.Parse("2006-01-02 15:04:05", updatedAt) + strategies = append(strategies, &st) + } + return strategies, nil +} + +// Get 获取单个策略 +func (s *StrategyStore) Get(userID, id string) (*Strategy, error) { + var st Strategy + var createdAt, updatedAt string + err := s.db.QueryRow(` + SELECT id, user_id, name, description, is_active, is_default, config, created_at, updated_at + FROM strategies + WHERE id = ? AND (user_id = ? OR is_default = 1) + `, id, userID).Scan( + &st.ID, &st.UserID, &st.Name, &st.Description, + &st.IsActive, &st.IsDefault, &st.Config, + &createdAt, &updatedAt, + ) + if err != nil { + return nil, err + } + st.CreatedAt, _ = time.Parse("2006-01-02 15:04:05", createdAt) + st.UpdatedAt, _ = time.Parse("2006-01-02 15:04:05", updatedAt) + return &st, nil +} + +// GetActive 获取用户当前激活的策略 +func (s *StrategyStore) GetActive(userID string) (*Strategy, error) { + var st Strategy + var createdAt, updatedAt string + err := s.db.QueryRow(` + SELECT id, user_id, name, description, is_active, is_default, config, created_at, updated_at + FROM strategies + WHERE user_id = ? AND is_active = 1 + `, userID).Scan( + &st.ID, &st.UserID, &st.Name, &st.Description, + &st.IsActive, &st.IsDefault, &st.Config, + &createdAt, &updatedAt, + ) + if err == sql.ErrNoRows { + // 没有激活的策略,返回系统默认策略 + return s.GetDefault() + } + if err != nil { + return nil, err + } + st.CreatedAt, _ = time.Parse("2006-01-02 15:04:05", createdAt) + st.UpdatedAt, _ = time.Parse("2006-01-02 15:04:05", updatedAt) + return &st, nil +} + +// GetDefault 获取系统默认策略 +func (s *StrategyStore) GetDefault() (*Strategy, error) { + var st Strategy + var createdAt, updatedAt string + err := s.db.QueryRow(` + SELECT id, user_id, name, description, is_active, is_default, config, created_at, updated_at + FROM strategies + WHERE is_default = 1 + LIMIT 1 + `).Scan( + &st.ID, &st.UserID, &st.Name, &st.Description, + &st.IsActive, &st.IsDefault, &st.Config, + &createdAt, &updatedAt, + ) + if err != nil { + return nil, err + } + st.CreatedAt, _ = time.Parse("2006-01-02 15:04:05", createdAt) + st.UpdatedAt, _ = time.Parse("2006-01-02 15:04:05", updatedAt) + return &st, nil +} + +// SetActive 设置激活策略(会先取消其他策略的激活状态) +func (s *StrategyStore) SetActive(userID, strategyID string) error { + // 开启事务 + tx, err := s.db.Begin() + if err != nil { + return err + } + defer tx.Rollback() + + // 先取消该用户所有策略的激活状态 + _, err = tx.Exec(`UPDATE strategies SET is_active = 0 WHERE user_id = ?`, userID) + if err != nil { + return err + } + + // 激活指定策略 + _, err = tx.Exec(`UPDATE strategies SET is_active = 1 WHERE id = ? AND (user_id = ? OR is_default = 1)`, strategyID, userID) + if err != nil { + return err + } + + return tx.Commit() +} + +// Duplicate 复制策略(用于基于默认策略创建自定义策略) +func (s *StrategyStore) Duplicate(userID, sourceID, newID, newName string) error { + // 获取源策略 + source, err := s.Get(userID, sourceID) + if err != nil { + return fmt.Errorf("获取源策略失败: %w", err) + } + + // 创建新策略 + newStrategy := &Strategy{ + ID: newID, + UserID: userID, + Name: newName, + Description: "基于 [" + source.Name + "] 创建", + IsActive: false, + IsDefault: false, + Config: source.Config, + } + + return s.Create(newStrategy) +} + +// ParseConfig 解析策略配置 JSON +func (s *Strategy) ParseConfig() (*StrategyConfig, error) { + var config StrategyConfig + if err := json.Unmarshal([]byte(s.Config), &config); err != nil { + return nil, fmt.Errorf("解析策略配置失败: %w", err) + } + return &config, nil +} + +// SetConfig 设置策略配置 +func (s *Strategy) SetConfig(config *StrategyConfig) error { + data, err := json.Marshal(config) + if err != nil { + return fmt.Errorf("序列化策略配置失败: %w", err) + } + s.Config = string(data) + return nil +} diff --git a/store/system_config.go b/store/system_config.go index 45fd0401..2bd13ec5 100644 --- a/store/system_config.go +++ b/store/system_config.go @@ -36,13 +36,9 @@ func (s *SystemConfigStore) initDefaultData() error { configs := map[string]string{ "beta_mode": "false", "api_server_port": "8080", - "use_default_coins": "true", - "default_coins": `["BTCUSDT","ETHUSDT","SOLUSDT","BNBUSDT","XRPUSDT","DOGEUSDT","ADAUSDT","HYPEUSDT"]`, "max_daily_loss": "10.0", "max_drawdown": "20.0", "stop_trading_minutes": "60", - "btc_eth_leverage": "5", - "altcoin_leverage": "5", "jwt_secret": "", "registration_enabled": "true", } diff --git a/store/trader.go b/store/trader.go index e951640e..485e9bb2 100644 --- a/store/trader.go +++ b/store/trader.go @@ -18,32 +18,36 @@ type TraderStore struct { // Trader 交易员配置 type Trader struct { - ID string `json:"id"` - UserID string `json:"user_id"` - Name string `json:"name"` - AIModelID string `json:"ai_model_id"` - ExchangeID string `json:"exchange_id"` - InitialBalance float64 `json:"initial_balance"` - ScanIntervalMinutes int `json:"scan_interval_minutes"` - IsRunning bool `json:"is_running"` - BTCETHLeverage int `json:"btc_eth_leverage"` - AltcoinLeverage int `json:"altcoin_leverage"` - TradingSymbols string `json:"trading_symbols"` - UseCoinPool bool `json:"use_coin_pool"` - UseOITop bool `json:"use_oi_top"` - CustomPrompt string `json:"custom_prompt"` - OverrideBasePrompt bool `json:"override_base_prompt"` - SystemPromptTemplate string `json:"system_prompt_template"` - IsCrossMargin bool `json:"is_cross_margin"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` + ID string `json:"id"` + UserID string `json:"user_id"` + Name string `json:"name"` + AIModelID string `json:"ai_model_id"` + ExchangeID string `json:"exchange_id"` + StrategyID string `json:"strategy_id"` // 关联策略ID + InitialBalance float64 `json:"initial_balance"` + ScanIntervalMinutes int `json:"scan_interval_minutes"` + IsRunning bool `json:"is_running"` + IsCrossMargin bool `json:"is_cross_margin"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + + // 以下字段已废弃,保留用于向后兼容,新交易员应使用 StrategyID + BTCETHLeverage int `json:"btc_eth_leverage,omitempty"` + AltcoinLeverage int `json:"altcoin_leverage,omitempty"` + TradingSymbols string `json:"trading_symbols,omitempty"` + UseCoinPool bool `json:"use_coin_pool,omitempty"` + UseOITop bool `json:"use_oi_top,omitempty"` + CustomPrompt string `json:"custom_prompt,omitempty"` + OverrideBasePrompt bool `json:"override_base_prompt,omitempty"` + SystemPromptTemplate string `json:"system_prompt_template,omitempty"` } -// TraderFullConfig 交易员完整配置(包含AI模型和交易所) +// TraderFullConfig 交易员完整配置(包含AI模型、交易所和策略) type TraderFullConfig struct { Trader *Trader AIModel *AIModel Exchange *Exchange + Strategy *Strategy // 关联的策略配置 } func (s *TraderStore) initTables() error { @@ -98,6 +102,7 @@ func (s *TraderStore) initTables() error { `ALTER TABLE traders ADD COLUMN use_coin_pool BOOLEAN DEFAULT 0`, `ALTER TABLE traders ADD COLUMN use_oi_top BOOLEAN DEFAULT 0`, `ALTER TABLE traders ADD COLUMN system_prompt_template TEXT DEFAULT 'default'`, + `ALTER TABLE traders ADD COLUMN strategy_id TEXT DEFAULT ''`, } for _, q := range alterQueries { s.db.Exec(q) @@ -116,25 +121,27 @@ func (s *TraderStore) decrypt(encrypted string) string { // Create 创建交易员 func (s *TraderStore) Create(trader *Trader) error { _, err := s.db.Exec(` - INSERT INTO traders (id, user_id, name, ai_model_id, exchange_id, initial_balance, scan_interval_minutes, - is_running, btc_eth_leverage, altcoin_leverage, trading_symbols, use_coin_pool, - use_oi_top, custom_prompt, override_base_prompt, system_prompt_template, is_cross_margin) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `, trader.ID, trader.UserID, trader.Name, trader.AIModelID, trader.ExchangeID, trader.InitialBalance, - trader.ScanIntervalMinutes, trader.IsRunning, trader.BTCETHLeverage, trader.AltcoinLeverage, - trader.TradingSymbols, trader.UseCoinPool, trader.UseOITop, trader.CustomPrompt, - trader.OverrideBasePrompt, trader.SystemPromptTemplate, trader.IsCrossMargin) + INSERT INTO traders (id, user_id, name, ai_model_id, exchange_id, strategy_id, initial_balance, + scan_interval_minutes, is_running, is_cross_margin, + btc_eth_leverage, altcoin_leverage, trading_symbols, use_coin_pool, + use_oi_top, custom_prompt, override_base_prompt, system_prompt_template) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `, trader.ID, trader.UserID, trader.Name, trader.AIModelID, trader.ExchangeID, trader.StrategyID, + trader.InitialBalance, trader.ScanIntervalMinutes, trader.IsRunning, trader.IsCrossMargin, + trader.BTCETHLeverage, trader.AltcoinLeverage, trader.TradingSymbols, trader.UseCoinPool, + trader.UseOITop, trader.CustomPrompt, trader.OverrideBasePrompt, trader.SystemPromptTemplate) return err } // List 获取用户的交易员列表 func (s *TraderStore) List(userID string) ([]*Trader, error) { rows, err := s.db.Query(` - SELECT id, user_id, name, ai_model_id, exchange_id, initial_balance, scan_interval_minutes, is_running, + SELECT id, user_id, name, ai_model_id, exchange_id, COALESCE(strategy_id, ''), + initial_balance, scan_interval_minutes, is_running, COALESCE(is_cross_margin, 1), COALESCE(btc_eth_leverage, 5), COALESCE(altcoin_leverage, 5), COALESCE(trading_symbols, ''), COALESCE(use_coin_pool, 0), COALESCE(use_oi_top, 0), COALESCE(custom_prompt, ''), COALESCE(override_base_prompt, 0), COALESCE(system_prompt_template, 'default'), - COALESCE(is_cross_margin, 1), created_at, updated_at + created_at, updated_at FROM traders WHERE user_id = ? ORDER BY created_at DESC `, userID) if err != nil { @@ -147,11 +154,11 @@ func (s *TraderStore) List(userID string) ([]*Trader, error) { var t Trader var createdAt, updatedAt string err := rows.Scan( - &t.ID, &t.UserID, &t.Name, &t.AIModelID, &t.ExchangeID, - &t.InitialBalance, &t.ScanIntervalMinutes, &t.IsRunning, + &t.ID, &t.UserID, &t.Name, &t.AIModelID, &t.ExchangeID, &t.StrategyID, + &t.InitialBalance, &t.ScanIntervalMinutes, &t.IsRunning, &t.IsCrossMargin, &t.BTCETHLeverage, &t.AltcoinLeverage, &t.TradingSymbols, &t.UseCoinPool, &t.UseOITop, &t.CustomPrompt, &t.OverrideBasePrompt, - &t.SystemPromptTemplate, &t.IsCrossMargin, &createdAt, &updatedAt, + &t.SystemPromptTemplate, &createdAt, &updatedAt, ) if err != nil { return nil, err @@ -173,15 +180,12 @@ func (s *TraderStore) UpdateStatus(userID, id string, isRunning bool) error { func (s *TraderStore) Update(trader *Trader) error { _, err := s.db.Exec(` UPDATE traders SET - name = ?, ai_model_id = ?, exchange_id = ?, scan_interval_minutes = ?, - btc_eth_leverage = ?, altcoin_leverage = ?, trading_symbols = ?, - custom_prompt = ?, override_base_prompt = ?, system_prompt_template = ?, - is_cross_margin = ?, updated_at = CURRENT_TIMESTAMP + name = ?, ai_model_id = ?, exchange_id = ?, strategy_id = ?, + scan_interval_minutes = ?, is_cross_margin = ?, + updated_at = CURRENT_TIMESTAMP WHERE id = ? AND user_id = ? - `, trader.Name, trader.AIModelID, trader.ExchangeID, trader.ScanIntervalMinutes, - trader.BTCETHLeverage, trader.AltcoinLeverage, trader.TradingSymbols, - trader.CustomPrompt, trader.OverrideBasePrompt, trader.SystemPromptTemplate, - trader.IsCrossMargin, trader.ID, trader.UserID) + `, trader.Name, trader.AIModelID, trader.ExchangeID, trader.StrategyID, + trader.ScanIntervalMinutes, trader.IsCrossMargin, trader.ID, trader.UserID) return err } @@ -215,11 +219,12 @@ func (s *TraderStore) GetFullConfig(userID, traderID string) (*TraderFullConfig, err := s.db.QueryRow(` SELECT - t.id, t.user_id, t.name, t.ai_model_id, t.exchange_id, t.initial_balance, t.scan_interval_minutes, t.is_running, + t.id, t.user_id, t.name, t.ai_model_id, t.exchange_id, COALESCE(t.strategy_id, ''), + t.initial_balance, t.scan_interval_minutes, t.is_running, COALESCE(t.is_cross_margin, 1), COALESCE(t.btc_eth_leverage, 5), COALESCE(t.altcoin_leverage, 5), COALESCE(t.trading_symbols, ''), COALESCE(t.use_coin_pool, 0), COALESCE(t.use_oi_top, 0), COALESCE(t.custom_prompt, ''), COALESCE(t.override_base_prompt, 0), COALESCE(t.system_prompt_template, 'default'), - COALESCE(t.is_cross_margin, 1), t.created_at, t.updated_at, + t.created_at, t.updated_at, a.id, a.user_id, a.name, a.provider, a.enabled, a.api_key, COALESCE(a.custom_api_url, ''), COALESCE(a.custom_model_name, ''), a.created_at, a.updated_at, e.id, e.user_id, e.name, e.type, e.enabled, e.api_key, e.secret_key, e.testnet, @@ -231,11 +236,11 @@ func (s *TraderStore) GetFullConfig(userID, traderID string) (*TraderFullConfig, JOIN exchanges e ON t.exchange_id = e.id AND t.user_id = e.user_id WHERE t.id = ? AND t.user_id = ? `, traderID, userID).Scan( - &trader.ID, &trader.UserID, &trader.Name, &trader.AIModelID, &trader.ExchangeID, - &trader.InitialBalance, &trader.ScanIntervalMinutes, &trader.IsRunning, + &trader.ID, &trader.UserID, &trader.Name, &trader.AIModelID, &trader.ExchangeID, &trader.StrategyID, + &trader.InitialBalance, &trader.ScanIntervalMinutes, &trader.IsRunning, &trader.IsCrossMargin, &trader.BTCETHLeverage, &trader.AltcoinLeverage, &trader.TradingSymbols, &trader.UseCoinPool, &trader.UseOITop, &trader.CustomPrompt, &trader.OverrideBasePrompt, - &trader.SystemPromptTemplate, &trader.IsCrossMargin, &traderCreatedAt, &traderUpdatedAt, + &trader.SystemPromptTemplate, &traderCreatedAt, &traderUpdatedAt, &aiModel.ID, &aiModel.UserID, &aiModel.Name, &aiModel.Provider, &aiModel.Enabled, &aiModel.APIKey, &aiModel.CustomAPIURL, &aiModel.CustomModelName, &aiModelCreatedAt, &aiModelUpdatedAt, &exchange.ID, &exchange.UserID, &exchange.Name, &exchange.Type, &exchange.Enabled, @@ -263,13 +268,78 @@ func (s *TraderStore) GetFullConfig(userID, traderID string) (*TraderFullConfig, exchange.LighterPrivateKey = s.decrypt(exchange.LighterPrivateKey) exchange.LighterAPIKeyPrivateKey = s.decrypt(exchange.LighterAPIKeyPrivateKey) + // 加载关联的策略 + var strategy *Strategy + if trader.StrategyID != "" { + strategy, _ = s.getStrategyByID(userID, trader.StrategyID) + } + // 如果没有关联策略,获取用户的激活策略或默认策略 + if strategy == nil { + strategy, _ = s.getActiveOrDefaultStrategy(userID) + } + return &TraderFullConfig{ Trader: &trader, AIModel: &aiModel, Exchange: &exchange, + Strategy: strategy, }, nil } +// getStrategyByID 内部方法:根据ID获取策略 +func (s *TraderStore) getStrategyByID(userID, strategyID string) (*Strategy, error) { + var strategy Strategy + var createdAt, updatedAt string + err := s.db.QueryRow(` + SELECT id, user_id, name, description, is_active, is_default, config, created_at, updated_at + FROM strategies WHERE id = ? AND (user_id = ? OR is_default = 1) + `, strategyID, userID).Scan( + &strategy.ID, &strategy.UserID, &strategy.Name, &strategy.Description, + &strategy.IsActive, &strategy.IsDefault, &strategy.Config, &createdAt, &updatedAt, + ) + if err != nil { + return nil, err + } + strategy.CreatedAt, _ = time.Parse("2006-01-02 15:04:05", createdAt) + strategy.UpdatedAt, _ = time.Parse("2006-01-02 15:04:05", updatedAt) + return &strategy, nil +} + +// getActiveOrDefaultStrategy 内部方法:获取用户激活的策略或系统默认策略 +func (s *TraderStore) getActiveOrDefaultStrategy(userID string) (*Strategy, error) { + var strategy Strategy + var createdAt, updatedAt string + + // 先尝试获取用户激活的策略 + err := s.db.QueryRow(` + SELECT id, user_id, name, description, is_active, is_default, config, created_at, updated_at + FROM strategies WHERE user_id = ? AND is_active = 1 + `, userID).Scan( + &strategy.ID, &strategy.UserID, &strategy.Name, &strategy.Description, + &strategy.IsActive, &strategy.IsDefault, &strategy.Config, &createdAt, &updatedAt, + ) + if err == nil { + strategy.CreatedAt, _ = time.Parse("2006-01-02 15:04:05", createdAt) + strategy.UpdatedAt, _ = time.Parse("2006-01-02 15:04:05", updatedAt) + return &strategy, nil + } + + // 回退到系统默认策略 + err = s.db.QueryRow(` + SELECT id, user_id, name, description, is_active, is_default, config, created_at, updated_at + FROM strategies WHERE is_default = 1 LIMIT 1 + `).Scan( + &strategy.ID, &strategy.UserID, &strategy.Name, &strategy.Description, + &strategy.IsActive, &strategy.IsDefault, &strategy.Config, &createdAt, &updatedAt, + ) + if err != nil { + return nil, err + } + strategy.CreatedAt, _ = time.Parse("2006-01-02 15:04:05", createdAt) + strategy.UpdatedAt, _ = time.Parse("2006-01-02 15:04:05", updatedAt) + return &strategy, nil +} + // GetCustomCoins 获取所有交易员自定义币种 func (s *TraderStore) GetCustomCoins() []string { var symbol string @@ -310,11 +380,12 @@ func (s *TraderStore) GetCustomCoins() []string { // ListAll 获取所有用户的交易员列表 func (s *TraderStore) ListAll() ([]*Trader, error) { rows, err := s.db.Query(` - SELECT id, user_id, name, ai_model_id, exchange_id, initial_balance, scan_interval_minutes, is_running, + SELECT id, user_id, name, ai_model_id, exchange_id, COALESCE(strategy_id, ''), + initial_balance, scan_interval_minutes, is_running, COALESCE(is_cross_margin, 1), COALESCE(btc_eth_leverage, 5), COALESCE(altcoin_leverage, 5), COALESCE(trading_symbols, ''), COALESCE(use_coin_pool, 0), COALESCE(use_oi_top, 0), COALESCE(custom_prompt, ''), COALESCE(override_base_prompt, 0), COALESCE(system_prompt_template, 'default'), - COALESCE(is_cross_margin, 1), created_at, updated_at + created_at, updated_at FROM traders ORDER BY created_at DESC `) if err != nil { @@ -327,11 +398,11 @@ func (s *TraderStore) ListAll() ([]*Trader, error) { var t Trader var createdAt, updatedAt string err := rows.Scan( - &t.ID, &t.UserID, &t.Name, &t.AIModelID, &t.ExchangeID, - &t.InitialBalance, &t.ScanIntervalMinutes, &t.IsRunning, + &t.ID, &t.UserID, &t.Name, &t.AIModelID, &t.ExchangeID, &t.StrategyID, + &t.InitialBalance, &t.ScanIntervalMinutes, &t.IsRunning, &t.IsCrossMargin, &t.BTCETHLeverage, &t.AltcoinLeverage, &t.TradingSymbols, &t.UseCoinPool, &t.UseOITop, &t.CustomPrompt, &t.OverrideBasePrompt, - &t.SystemPromptTemplate, &t.IsCrossMargin, &createdAt, &updatedAt, + &t.SystemPromptTemplate, &createdAt, &updatedAt, ) if err != nil { return nil, err diff --git a/trader/auto_trader.go b/trader/auto_trader.go index 13bb3f9f..f78b1d7b 100644 --- a/trader/auto_trader.go +++ b/trader/auto_trader.go @@ -3,12 +3,11 @@ package trader import ( "encoding/json" "fmt" - "nofx/logger" "math" "nofx/decision" + "nofx/logger" "nofx/market" "nofx/mcp" - "nofx/pool" "nofx/store" "strings" "sync" @@ -49,8 +48,6 @@ type AutoTraderConfig struct { LighterAPIKeyPrivateKey string // LIGHTER API Key私钥(40字节,用于签名交易) LighterTestnet bool // 是否使用testnet - CoinPoolAPIURL string - // AI配置 UseQwen bool DeepSeekKey string @@ -67,10 +64,6 @@ type AutoTraderConfig struct { // 账户配置 InitialBalance float64 // 初始金额(用于计算盈亏,需手动设置) - // 杠杆配置 - BTCETHLeverage int // BTC和ETH的杠杆倍数 - AltcoinLeverage int // 山寨币的杠杆倍数 - // 风险控制(仅作为提示,AI可自主决定) MaxDailyLoss float64 // 最大日亏损百分比(提示) MaxDrawdown float64 // 最大回撤百分比(提示) @@ -79,12 +72,8 @@ type AutoTraderConfig struct { // 仓位模式 IsCrossMargin bool // true=全仓模式, false=逐仓模式 - // 币种配置 - DefaultCoins []string // 默认币种列表(从数据库获取) - TradingCoins []string // 实际交易币种列表 - - // 系统提示词模板 - SystemPromptTemplate string // 系统提示词模板名称(如 "default", "aggressive") + // 策略配置(使用完整策略配置) + StrategyConfig *store.StrategyConfig // 策略配置(包含币种来源、指标、风控、Prompt等) } // AutoTrader 自动交易器 @@ -96,15 +85,13 @@ type AutoTrader struct { config AutoTraderConfig trader Trader // 使用Trader接口(支持多平台) mcpClient mcp.AIClient - store *store.Store // 数据存储(决策记录等) - cycleNumber int // 当前周期编号 + store *store.Store // 数据存储(决策记录等) + strategyEngine *decision.StrategyEngine // 策略引擎(使用策略配置) + cycleNumber int // 当前周期编号 initialBalance float64 dailyPnL float64 - customPrompt string // 自定义交易策略prompt - overrideBasePrompt bool // 是否覆盖基础prompt - systemPromptTemplate string // 系统提示词模板名称 - defaultCoins []string // 默认币种列表(从数据库获取) - tradingCoins []string // 实际交易币种列表 + customPrompt string // 自定义交易策略prompt + overrideBasePrompt bool // 是否覆盖基础prompt lastResetTime time.Time stopUntil time.Time isRunning bool @@ -164,11 +151,6 @@ func NewAutoTrader(config AutoTraderConfig, st *store.Store, userID string) (*Au } } - // 初始化币种池API - if config.CoinPoolAPIURL != "" { - pool.SetCoinPoolAPI(config.CoinPoolAPIURL) - } - // 设置默认交易平台 if config.Exchange == "" { config.Exchange = "binance" @@ -243,12 +225,12 @@ func NewAutoTrader(config AutoTraderConfig, st *store.Store, userID string) (*Au logger.Infof("📊 [%s] 决策记录将存储到数据库", config.Name) } - // 设置默认系统提示词模板 - systemPromptTemplate := config.SystemPromptTemplate - if systemPromptTemplate == "" { - // feature/partial-close-dynamic-tpsl 分支默认使用 adaptive(支持动态止盈止损) - systemPromptTemplate = "adaptive" + // 创建策略引擎(必须有策略配置) + if config.StrategyConfig == nil { + return nil, fmt.Errorf("[%s] 未配置策略", config.Name) } + strategyEngine := decision.NewStrategyEngine(config.StrategyConfig) + logger.Infof("✓ [%s] 使用策略引擎(策略配置已加载)", config.Name) return &AutoTrader{ id: config.ID, @@ -259,11 +241,9 @@ func NewAutoTrader(config AutoTraderConfig, st *store.Store, userID string) (*Au trader: trader, mcpClient: mcpClient, store: st, + strategyEngine: strategyEngine, cycleNumber: cycleNumber, initialBalance: config.InitialBalance, - systemPromptTemplate: systemPromptTemplate, - defaultCoins: config.DefaultCoins, - tradingCoins: config.TradingCoins, lastResetTime: time.Now(), startTime: time.Now(), callCount: 0, @@ -400,24 +380,24 @@ func (at *AutoTrader) runCycle() error { logger.Infof("📊 账户净值: %.2f USDT | 可用: %.2f USDT | 持仓: %d", ctx.Account.TotalEquity, ctx.Account.AvailableBalance, ctx.Account.PositionCount) - // 5. 调用AI获取完整决策 - logger.Infof("🤖 正在请求AI分析并决策... [模板: %s]", at.systemPromptTemplate) - decision, err := decision.GetFullDecisionWithCustomPrompt(ctx, at.mcpClient, at.customPrompt, at.overrideBasePrompt, at.systemPromptTemplate) + // 5. 使用策略引擎调用AI获取决策 + logger.Infof("🤖 正在请求AI分析并决策... [策略引擎]") + aiDecision, err := decision.GetFullDecisionWithStrategy(ctx, at.mcpClient, at.strategyEngine, "balanced") - if decision != nil && decision.AIRequestDurationMs > 0 { - record.AIRequestDurationMs = decision.AIRequestDurationMs + if aiDecision != nil && aiDecision.AIRequestDurationMs > 0 { + record.AIRequestDurationMs = aiDecision.AIRequestDurationMs logger.Infof("⏱️ AI调用耗时: %.2f 秒", float64(record.AIRequestDurationMs)/1000) record.ExecutionLog = append(record.ExecutionLog, fmt.Sprintf("AI调用耗时: %d ms", record.AIRequestDurationMs)) } // 即使有错误,也保存思维链、决策和输入prompt(用于debug) - if decision != nil { - record.SystemPrompt = decision.SystemPrompt // 保存系统提示词 - record.InputPrompt = decision.UserPrompt - record.CoTTrace = decision.CoTTrace - if len(decision.Decisions) > 0 { - decisionJSON, _ := json.MarshalIndent(decision.Decisions, "", " ") + if aiDecision != nil { + record.SystemPrompt = aiDecision.SystemPrompt // 保存系统提示词 + record.InputPrompt = aiDecision.UserPrompt + record.CoTTrace = aiDecision.CoTTrace + if len(aiDecision.Decisions) > 0 { + decisionJSON, _ := json.MarshalIndent(aiDecision.Decisions, "", " ") record.DecisionJSON = string(decisionJSON) } } @@ -427,18 +407,18 @@ func (at *AutoTrader) runCycle() error { record.ErrorMessage = fmt.Sprintf("获取AI决策失败: %v", err) // 打印系统提示词和AI思维链(即使有错误,也要输出以便调试) - if decision != nil { + if aiDecision != nil { logger.Info("\n" + strings.Repeat("=", 70) + "\n") - logger.Infof("📋 系统提示词 [模板: %s] (错误情况)", at.systemPromptTemplate) + logger.Infof("📋 系统提示词 (错误情况)") logger.Info(strings.Repeat("=", 70)) - logger.Info(decision.SystemPrompt) + logger.Info(aiDecision.SystemPrompt) logger.Info(strings.Repeat("=", 70)) - if decision.CoTTrace != "" { + if aiDecision.CoTTrace != "" { logger.Info("\n" + strings.Repeat("-", 70) + "\n") logger.Info("💭 AI思维链分析(错误情况):") logger.Info(strings.Repeat("-", 70)) - logger.Info(decision.CoTTrace) + logger.Info(aiDecision.CoTTrace) logger.Info(strings.Repeat("-", 70)) } } @@ -476,7 +456,7 @@ func (at *AutoTrader) runCycle() error { logger.Info(strings.Repeat("-", 70)) // 8. 对决策排序:确保先平仓后开仓(防止仓位叠加超限) - sortedDecisions := sortDecisionsByPriority(decision.Decisions) + sortedDecisions := sortDecisionsByPriority(aiDecision.Decisions) logger.Info("🔄 执行顺序(已优化): 先平仓→后开仓") for i, d := range sortedDecisions { @@ -622,11 +602,15 @@ func (at *AutoTrader) buildTradingContext() (*decision.Context, error) { } } - // 3. 获取交易员的候选币种池 - candidateCoins, err := at.getCandidateCoins() + // 3. 使用策略引擎获取候选币种(必须有策略引擎) + if at.strategyEngine == nil { + return nil, fmt.Errorf("交易员未配置策略引擎") + } + candidateCoins, err := at.strategyEngine.GetCandidateCoins() if err != nil { return nil, fmt.Errorf("获取候选币种失败: %w", err) } + logger.Infof("📋 [%s] 策略引擎获取候选币种: %d个", at.name, len(candidateCoins)) // 4. 计算总盈亏 totalPnL := totalEquity - at.initialBalance @@ -640,13 +624,19 @@ func (at *AutoTrader) buildTradingContext() (*decision.Context, error) { marginUsedPct = (totalMarginUsed / totalEquity) * 100 } - // 5. 构建上下文 + // 5. 从策略配置获取杠杆 + strategyConfig := at.strategyEngine.GetConfig() + btcEthLeverage := strategyConfig.RiskControl.BTCETHMaxLeverage + altcoinLeverage := strategyConfig.RiskControl.AltcoinMaxLeverage + logger.Infof("📋 [%s] 策略杠杆配置: BTC/ETH=%dx, 山寨币=%dx", at.name, btcEthLeverage, altcoinLeverage) + + // 6. 构建上下文 ctx := &decision.Context{ CurrentTime: time.Now().Format("2006-01-02 15:04:05"), RuntimeMinutes: int(time.Since(at.startTime).Minutes()), CallCount: at.callCount, - BTCETHLeverage: at.config.BTCETHLeverage, // 使用配置的杠杆倍数 - AltcoinLeverage: at.config.AltcoinLeverage, // 使用配置的杠杆倍数 + BTCETHLeverage: btcEthLeverage, + AltcoinLeverage: altcoinLeverage, Account: decision.AccountInfo{ TotalEquity: totalEquity, AvailableBalance: availableBalance, @@ -661,7 +651,7 @@ func (at *AutoTrader) buildTradingContext() (*decision.Context, error) { CandidateCoins: candidateCoins, } - // 6. 添加交易统计和历史订单(如果store可用) + // 7. 添加交易统计和历史订单(如果store可用) if at.store != nil { // 获取交易统计(使用新的 positions 表) if stats, err := at.store.Position().GetFullStats(at.id); err == nil { @@ -989,14 +979,15 @@ func (at *AutoTrader) SetOverrideBasePrompt(override bool) { at.overrideBasePrompt = override } -// SetSystemPromptTemplate 设置系统提示词模板 -func (at *AutoTrader) SetSystemPromptTemplate(templateName string) { - at.systemPromptTemplate = templateName -} - -// GetSystemPromptTemplate 获取当前系统提示词模板名称 +// GetSystemPromptTemplate 获取当前系统提示词模板名称(从策略配置获取) func (at *AutoTrader) GetSystemPromptTemplate() string { - return at.systemPromptTemplate + if at.strategyEngine != nil { + config := at.strategyEngine.GetConfig() + if config.CustomPrompt != "" { + return "custom" + } + } + return "strategy" } // saveDecision 保存决策记录到数据库 @@ -1235,77 +1226,6 @@ func sortDecisionsByPriority(decisions []decision.Decision) []decision.Decision return sorted } -// getCandidateCoins 获取交易员的候选币种列表 -func (at *AutoTrader) getCandidateCoins() ([]decision.CandidateCoin, error) { - if len(at.tradingCoins) == 0 { - // 使用数据库配置的默认币种列表 - var candidateCoins []decision.CandidateCoin - - if len(at.defaultCoins) > 0 { - // 使用数据库中配置的默认币种 - for _, coin := range at.defaultCoins { - symbol := normalizeSymbol(coin) - candidateCoins = append(candidateCoins, decision.CandidateCoin{ - Symbol: symbol, - Sources: []string{"default"}, // 标记为数据库默认币种 - }) - } - logger.Infof("📋 [%s] 使用数据库默认币种: %d个币种 %v", - at.name, len(candidateCoins), at.defaultCoins) - return candidateCoins, nil - } else { - // 如果数据库中没有配置默认币种,则使用AI500+OI Top作为fallback - const ai500Limit = 20 // AI500取前20个评分最高的币种 - - mergedPool, err := pool.GetMergedCoinPool(ai500Limit) - if err != nil { - return nil, fmt.Errorf("获取合并币种池失败: %w", err) - } - - // 构建候选币种列表(包含来源信息) - for _, symbol := range mergedPool.AllSymbols { - sources := mergedPool.SymbolSources[symbol] - candidateCoins = append(candidateCoins, decision.CandidateCoin{ - Symbol: symbol, - Sources: sources, // "ai500" 和/或 "oi_top" - }) - } - - logger.Infof("📋 [%s] 数据库无默认币种配置,使用AI500+OI Top: AI500前%d + OI_Top20 = 总计%d个候选币种", - at.name, ai500Limit, len(candidateCoins)) - return candidateCoins, nil - } - } else { - // 使用自定义币种列表 - var candidateCoins []decision.CandidateCoin - for _, coin := range at.tradingCoins { - // 确保币种格式正确(转为大写USDT交易对) - symbol := normalizeSymbol(coin) - candidateCoins = append(candidateCoins, decision.CandidateCoin{ - Symbol: symbol, - Sources: []string{"custom"}, // 标记为自定义来源 - }) - } - - logger.Infof("📋 [%s] 使用自定义币种: %d个币种 %v", - at.name, len(candidateCoins), at.tradingCoins) - return candidateCoins, nil - } -} - -// normalizeSymbol 标准化币种符号(确保以USDT结尾) -func normalizeSymbol(symbol string) string { - // 转为大写 - symbol = strings.ToUpper(strings.TrimSpace(symbol)) - - // 确保以USDT结尾 - if !strings.HasSuffix(symbol, "USDT") { - symbol = symbol + "USDT" - } - - return symbol -} - // 启动回撤监控 func (at *AutoTrader) startDrawdownMonitor() { at.monitorWg.Add(1) diff --git a/web/src/App.tsx b/web/src/App.tsx index 2347082a..74a2c172 100644 --- a/web/src/App.tsx +++ b/web/src/App.tsx @@ -9,6 +9,7 @@ import { ResetPasswordPage } from './components/ResetPasswordPage' import { CompetitionPage } from './components/CompetitionPage' import { LandingPage } from './pages/LandingPage' import { FAQPage } from './pages/FAQPage' +import { StrategyStudioPage } from './pages/StrategyStudioPage' import HeaderBar from './components/HeaderBar' import { LanguageProvider, useLanguage } from './contexts/LanguageContext' import { AuthProvider, useAuth } from './contexts/AuthContext' @@ -31,6 +32,7 @@ type Page = | 'traders' | 'trader' | 'backtest' + | 'strategy' | 'faq' | 'login' | 'register' @@ -62,6 +64,7 @@ function App() { if (path === '/traders' || hash === 'traders') return 'traders' if (path === '/backtest' || hash === 'backtest') return 'backtest' + if (path === '/strategy' || hash === 'strategy') return 'strategy' if (path === '/dashboard' || hash === 'trader' || hash === 'details') return 'trader' return 'competition' // 默认为竞赛页面 @@ -81,6 +84,8 @@ function App() { setCurrentPage('traders') } else if (path === '/backtest' || hash === 'backtest') { setCurrentPage('backtest') + } else if (path === '/strategy' || hash === 'strategy') { + setCurrentPage('strategy') } else if ( path === '/dashboard' || hash === 'trader' || @@ -291,6 +296,11 @@ function App() { window.history.pushState({}, '', '/backtest') setRoute('/backtest') setCurrentPage('backtest') + } else if (page === 'strategy') { + console.log('Navigating to strategy') + window.history.pushState({}, '', '/strategy') + setRoute('/strategy') + setCurrentPage('strategy') } console.log( @@ -384,6 +394,10 @@ function App() { window.history.pushState({}, '', '/backtest') setRoute('/backtest') setCurrentPage('backtest') + } else if (page === 'strategy') { + window.history.pushState({}, '', '/strategy') + setRoute('/strategy') + setCurrentPage('strategy') } else if (page === 'faq') { window.history.pushState({}, '', '/faq') setRoute('/faq') @@ -406,6 +420,8 @@ function App() { /> ) : currentPage === 'backtest' ? ( + ) : currentPage === 'strategy' ? ( + ) : ( + + + + - {isEditMode && ( -

- )} - {!isEditMode && ( -
- -
- - - - - - - 系统将自动获取您的账户净值作为初始余额 - -
-
- )} - - - {/* 第二行:AI 扫描决策间隔 */} -
-
- {/* 第三行:杠杆设置 */} -
+ {/* Initial Balance (Edit mode only) */} + {isEditMode && (
- +
+ + +
handleInputChange( - 'btc_eth_leverage', + 'initial_balance', Number(e.target.value) ) } className="w-full px-3 py-2 bg-[#0B0E11] border border-[#2B3139] rounded text-[#EAECEF] focus:border-[#F0B90B] focus:outline-none" - min="1" - max="125" + min="100" + step="0.01" /> +

+ 用于手动更新初始余额基准(例如充值/提现后) +

+ {balanceFetchError && ( +

+ {balanceFetchError} +

+ )}
-
- - - handleInputChange( - 'altcoin_leverage', - Number(e.target.value) - ) - } - className="w-full px-3 py-2 bg-[#0B0E11] border border-[#2B3139] rounded text-[#EAECEF] focus:border-[#F0B90B] focus:outline-none" - min="1" - max="75" - /> -
-
+ )} - {/* 第三行:交易币种 */} -
-
- - -
- - handleInputChange('trading_symbols', e.target.value) - } - className="w-full px-3 py-2 bg-[#0B0E11] border border-[#2B3139] rounded text-[#EAECEF] focus:border-[#F0B90B] focus:outline-none" - placeholder="例如: BTCUSDT,ETHUSDT,ADAUSDT" - /> - - {/* 币种选择器 */} - {showCoinSelector && ( -
-
- 点击选择币种: -
-
- {availableCoins.map((coin) => ( - - ))} -
-
- )} -
- - - - {/* Signal Sources */} -
-

- 📡 信号源配置 -

-
-
- - handleInputChange('use_coin_pool', e.target.checked) - } - className="w-4 h-4" - /> - -
-
- - handleInputChange('use_oi_top', e.target.checked) - } - className="w-4 h-4" - /> - -
-
-
- - {/* Trading Prompt */} -
-

- 💬 交易策略提示词 -

-
- {/* 系统提示词模板选择 */} -
- - - - {/* 動態描述區域 */} -
-
- {(() => { - const titleKeyMap: Record = { - default: 'promptDescDefault', - adaptive: 'promptDescAdaptive', - adaptive_relaxed: 'promptDescAdaptiveRelaxed', - Hansen: 'promptDescHansen', - nof1: 'promptDescNof1', - taro_long_prompts: 'promptDescTaroLong', - } - const key = titleKeyMap[formData.system_prompt_template] - return key - ? t(key, language) - : t('promptDescDefault', language) - })()} -
-
- {(() => { - const contentKeyMap: Record = { - default: 'promptDescDefaultContent', - adaptive: 'promptDescAdaptiveContent', - adaptive_relaxed: 'promptDescAdaptiveRelaxedContent', - Hansen: 'promptDescHansenContent', - nof1: 'promptDescNof1Content', - taro_long_prompts: 'promptDescTaroLongContent', - } - const key = contentKeyMap[formData.system_prompt_template] - return key - ? t(key, language) - : t('promptDescDefaultContent', language) - })()} -
-
-

- 选择预设的交易策略模板(包含交易哲学、风控原则等) -

-
- -
- - handleInputChange('override_base_prompt', e.target.checked) - } - className="w-4 h-4" - /> - - + {/* Create mode info */} + {!isEditMode && ( +
- - - - {' '} - 启用后将完全替换默认策略 - -
-
- -