feat: Add cross-sectional strategy support

- Add cross-sectional strategy type (single vs cross-sectional)
- Support multi-symbol portfolio management with automatic ranking
- Add portfolio size, long ratio, and rebalance frequency configuration
- Implement parallel order execution for cross-sectional strategies
- Add frontend UI for strategy type selection and configuration
- Add i18n support (Chinese and English) for cross-sectional features
- Fix decimal precision issues in exchange order quantities
- Add last_rebalance_at field to database schema
- Add comprehensive documentation and examples

Database migration required: Add last_rebalance_at column to qd_strategies_trading table
This commit is contained in:
TIANHE
2026-02-10 15:19:20 +08:00
parent a89cc9bee9
commit a51184497d
19 changed files with 1517 additions and 36 deletions
+17
View File
@@ -1324,6 +1324,21 @@ const locale = {
'trading-assistant.form.symbols': 'Trading Pairs (Multi-select)',
'trading-assistant.form.symbolHint': 'Symbol format depends on the selected market',
'trading-assistant.form.symbolsHint': 'Select multiple pairs to create strategies for each',
'trading-assistant.form.strategyType': 'Strategy Type',
'trading-assistant.form.strategyTypeSingle': 'Single Symbol Strategy',
'trading-assistant.form.strategyTypeCrossSectional': 'Cross-Sectional Strategy',
'trading-assistant.form.strategyTypeHint': 'Single Symbol: Trade a single symbol; Cross-Sectional: Manage a portfolio of multiple symbols',
'trading-assistant.form.symbolList': 'Symbol List',
'trading-assistant.form.symbolListHint': 'Select multiple symbols, strategy will rank and rebalance based on indicator scores',
'trading-assistant.form.portfolioSize': 'Portfolio Size',
'trading-assistant.form.portfolioSizeHint': 'Number of symbols to hold simultaneously',
'trading-assistant.form.longRatio': 'Long Ratio',
'trading-assistant.form.longRatioHint': 'Proportion of long positions (0-1), e.g. 0.5 means 50% long, 50% short',
'trading-assistant.form.rebalanceFrequency': 'Rebalance Frequency',
'trading-assistant.form.rebalanceDaily': 'Daily',
'trading-assistant.form.rebalanceWeekly': 'Weekly',
'trading-assistant.form.rebalanceMonthly': 'Monthly',
'trading-assistant.form.rebalanceFrequencyHint': 'Frequency of portfolio rebalancing',
'trading-assistant.form.addSymbol': 'Add Symbol',
'trading-assistant.form.addSymbolTitle': 'Add Symbol to Watchlist',
'trading-assistant.form.searchSymbolPlaceholder': 'Search by code, e.g. BTC, AAPL',
@@ -1439,6 +1454,8 @@ const locale = {
'trading-assistant.validation.mt5ServerRequired': 'Please enter MT5 server',
'trading-assistant.validation.mt5LoginRequired': 'Please enter MT5 account number',
'trading-assistant.validation.mt5PasswordRequired': 'Please enter MT5 password',
'trading-assistant.validation.portfolioSizeRequired': 'Please enter portfolio size',
'trading-assistant.validation.longRatioRequired': 'Please enter long ratio',
'trading-assistant.exchange.mt5ConnectionSuccess': 'MT5 connected successfully',
'trading-assistant.exchange.mt5ConnectionFailed': 'MT5 connection failed. Please check if terminal is running.',
'trading-assistant.form.notifyChannels': 'Notification Channels',
+17
View File
@@ -1228,6 +1228,21 @@ const locale = {
'trading-assistant.form.symbolHint': '目前仅支持加密货币交易对',
'trading-assistant.form.symbolHintCrypto': '加密货币:使用BTC/USDT等交易对格式',
'trading-assistant.form.symbolsHint': '选择多个交易对,将自动创建多个策略',
'trading-assistant.form.strategyType': '策略类型',
'trading-assistant.form.strategyTypeSingle': '单标的策略',
'trading-assistant.form.strategyTypeCrossSectional': '截面策略',
'trading-assistant.form.strategyTypeHint': '单标的策略:针对单个标的进行交易;截面策略:同时管理多个标的的组合',
'trading-assistant.form.symbolList': '标的列表',
'trading-assistant.form.symbolListHint': '选择多个标的,策略将根据指标评分进行排序和调仓',
'trading-assistant.form.portfolioSize': '持仓组合大小',
'trading-assistant.form.portfolioSizeHint': '策略同时持有的标的数量',
'trading-assistant.form.longRatio': '做多比例',
'trading-assistant.form.longRatioHint': '持仓中做多标的的比例(0-1),例如0.5表示50%做多,50%做空',
'trading-assistant.form.rebalanceFrequency': '调仓频率',
'trading-assistant.form.rebalanceDaily': '每日',
'trading-assistant.form.rebalanceWeekly': '每周',
'trading-assistant.form.rebalanceMonthly': '每月',
'trading-assistant.form.rebalanceFrequencyHint': '策略重新调整持仓组合的频率',
'trading-assistant.form.addSymbol': '添加交易对',
'trading-assistant.form.addSymbolTitle': '添加交易对到自选列表',
'trading-assistant.form.searchSymbolPlaceholder': '输入代码搜索,如 BTC、AAPL',
@@ -1317,6 +1332,8 @@ const locale = {
'trading-assistant.validation.mt5ServerRequired': '请输入 MT5 服务器',
'trading-assistant.validation.mt5LoginRequired': '请输入 MT5 账户号',
'trading-assistant.validation.mt5PasswordRequired': '请输入 MT5 密码',
'trading-assistant.validation.portfolioSizeRequired': '请输入持仓组合大小',
'trading-assistant.validation.longRatioRequired': '请输入做多比例',
'trading-assistant.exchange.mt5ConnectionSuccess': 'MT5 连接成功',
'trading-assistant.exchange.mt5ConnectionFailed': 'MT5 连接失败,请检查终端是否运行',
'trading-assistant.form.notifyChannels': '通知渠道',