diff --git a/backend_api_python/app/services/pending_order_worker.py b/backend_api_python/app/services/pending_order_worker.py
index 1f5d5b6d2..004d4290b 100644
--- a/backend_api_python/app/services/pending_order_worker.py
+++ b/backend_api_python/app/services/pending_order_worker.py
@@ -130,7 +130,7 @@ def _maybe_sync_positions(self) -> None:
except Exception as e:
logger.info(f"position sync skipped/failed: {e}")
- def _sync_positions_best_effort(self) -> None:
+ def _sync_positions_best_effort(self, target_strategy_id: Optional[int] = None) -> None:
"""
Best-effort reconciliation:
- If exchange position is flat, delete local row from qd_strategy_positions.
@@ -138,14 +138,21 @@ def _sync_positions_best_effort(self) -> None:
This prevents "ghost positions" when positions are closed externally on the exchange.
"""
- # 1) Load local positions
+ # 1) Load local positions (filtered if target_strategy_id provided)
with get_db_connection() as db:
cur = db.cursor()
- cur.execute("SELECT id, strategy_id, symbol, side, size, entry_price FROM qd_strategy_positions ORDER BY updated_at DESC")
+ if target_strategy_id:
+ cur.execute(
+ "SELECT id, strategy_id, symbol, side, size, entry_price FROM qd_strategy_positions WHERE strategy_id = %s ORDER BY updated_at DESC",
+ (int(target_strategy_id),)
+ )
+ else:
+ cur.execute("SELECT id, strategy_id, symbol, side, size, entry_price FROM qd_strategy_positions ORDER BY updated_at DESC")
rows = cur.fetchall() or []
cur.close()
- if not rows:
+ if not rows and not target_strategy_id:
+ # If global sync and no local positions, do nothing.
return
# Group by strategy_id for efficient exchange queries.
@@ -155,9 +162,20 @@ def _sync_positions_best_effort(self) -> None:
if sid <= 0:
continue
sid_to_rows.setdefault(sid, []).append(r)
+
+ # If targeted sync but no local rows found, we assume user might have opened position externally
+ # but DB is empty. However, without knowing *which* symbol to check, we can't easily auto-discover
+ # unless we fetch ALL positions from exchange for that strategy.
+ # But `load_strategy_configs(sid)` gives us the exchange keys.
+ # So if target_strategy_id is set but `sid_to_rows` is empty, we SHOULD explicitly add it to `sid_to_rows`
+ # so logic below enters and calls `client.get_positions()`.
+ if target_strategy_id and target_strategy_id not in sid_to_rows:
+ sid_to_rows[target_strategy_id] = []
# 2) Reconcile per strategy
for sid, plist in sid_to_rows.items():
+ if target_strategy_id and sid != target_strategy_id:
+ continue
try:
sc = load_strategy_configs(int(sid))
if (sc.get("execution_mode") or "").strip().lower() != "live":
@@ -169,20 +187,36 @@ def _sync_positions_best_effort(self) -> None:
if market_type in ("futures", "future", "perp", "perpetual"):
market_type = "swap"
- client = create_client(exchange_config, market_type=market_type)
+ # Lazy import MT5 here to allow elif chain later
+ global MT5Client
+ if MT5Client is None:
+ try:
+ from app.services.mt5_trading import MT5Client as _MT5Client
+ MT5Client = _MT5Client
+ except ImportError:
+ pass
+ client = create_client(exchange_config, market_type=market_type)
+
# Build an "exchange snapshot" per symbol+side
exch_size: Dict[str, Dict[str, float]] = {} # {symbol: {long: size, short: size}}
+ exch_entry_price: Dict[str, Dict[str, float]] = {} # {symbol: {long: px, short: px}}
if isinstance(client, BinanceFuturesClient) and market_type == "swap":
all_pos = client.get_positions() or []
+ # Handle dict response if needed (wrapper)
+ if isinstance(all_pos, dict) and "raw" in all_pos:
+ all_pos = all_pos["raw"]
+
if isinstance(all_pos, list):
for p in all_pos:
sym = str(p.get("symbol") or "").strip().upper()
try:
amt = float(p.get("positionAmt") or 0.0)
+ ep = float(p.get("entryPrice") or 0.0)
except Exception:
amt = 0.0
+ ep = 0.0
if not sym or abs(amt) <= 0:
continue
# Map to our symbol format: BTCUSDT -> BTC/USDT (best-effort)
@@ -191,6 +225,7 @@ def _sync_positions_best_effort(self) -> None:
hb_sym = f"{hb_sym[:-4]}/USDT"
side = "long" if amt > 0 else "short"
exch_size.setdefault(hb_sym, {"long": 0.0, "short": 0.0})[side] = abs(float(amt))
+ exch_entry_price.setdefault(hb_sym, {"long": 0.0, "short": 0.0})[side] = abs(float(ep))
elif isinstance(client, OkxClient) and market_type == "swap":
resp = client.get_positions()
@@ -351,15 +386,7 @@ def _sync_positions_best_effort(self) -> None:
except Exception:
continue
- # Check for MT5 client (forex)
- global MT5Client
- if MT5Client is None:
- try:
- from app.services.mt5_trading import MT5Client as _MT5Client
- MT5Client = _MT5Client
- except ImportError:
- pass
- if MT5Client is not None and isinstance(client, MT5Client):
+ elif MT5Client is not None and isinstance(client, MT5Client):
# MT5 forex positions
positions = client.get_positions()
if isinstance(positions, list):
@@ -383,6 +410,9 @@ def _sync_positions_best_effort(self) -> None:
logger.debug(f"position sync: skip unsupported market/client: sid={sid}, cfg={safe_cfg}, market_type={market_type}, client={type(client)}")
continue
+ # [DEBUG] Log all normalized exchange keys for inspection
+ logger.debug(f"[PositionSync] Strategy {sid} Exchange Keys: {list(exch_size.keys())}")
+
# 3) Apply reconciliation to local rows.
to_delete_ids: List[int] = []
to_update: List[Dict[str, Any]] = []
@@ -402,13 +432,31 @@ def _sync_positions_best_effort(self) -> None:
exch = exch_size.get(sym) or {}
exch_qty = float(exch.get(side) or 0.0)
+ # Lookup entry price
+ exch_ep_map = exch_entry_price.get(sym) or {}
+ exch_price = float(exch_ep_map.get(side) or 0.0)
+
+ try:
+ local_price = float(r.get("entry_price") or 0.0)
+ except Exception:
+ local_price = 0.0
+ logger.debug(f"[PositionSync] Check ID={rid} {sym} {side}: local_sz={local_size} px={local_price}, exch_sz={exch_qty} px={exch_price}")
+
if exch_qty <= eps:
# Exchange is flat -> delete local position (self-heal).
to_delete_ids.append(rid)
else:
- # Update local size if it diverged materially (best-effort).
- if local_size <= 0 or abs(exch_qty - local_size) / max(1.0, local_size) > 0.01:
- to_update.append({"id": rid, "size": exch_qty})
+ # Update local size if it diverged materially (best-effort), OR if entry_price changed significantly (>0.5% diff)
+ # or if local_price is 0 (first sync)
+ price_diff_ratio = 0.0
+ if local_price > 0:
+ price_diff_ratio = abs(exch_price - local_price) / local_price
+ else:
+ price_diff_ratio = 1.0 if exch_price > 0 else 0.0
+
+ if (local_size <= 0 or abs(exch_qty - local_size) / max(1.0, local_size) > 0.01) or (price_diff_ratio > 0.005):
+ logger.info(f"[PositionSync] -> Flagged for UPDATE: {sym} (local_sz={local_size}->{exch_qty}, px={local_price}->{exch_price})")
+ to_update.append({"id": rid, "size": exch_qty, "entry_price": exch_price})
if not to_delete_ids and not to_update:
continue
@@ -418,7 +466,10 @@ def _sync_positions_best_effort(self) -> None:
for rid in to_delete_ids:
cur.execute("DELETE FROM qd_strategy_positions WHERE id = %s", (int(rid),))
for u in to_update:
- cur.execute("UPDATE qd_strategy_positions SET size = %s, updated_at = NOW() WHERE id = %s", (float(u["size"]), int(u["id"])))
+ cur.execute(
+ "UPDATE qd_strategy_positions SET size = %s, entry_price = %s, updated_at = NOW() WHERE id = %s",
+ (float(u["size"]), float(u["entry_price"]), int(u["id"]))
+ )
db.commit()
cur.close()
@@ -876,6 +927,50 @@ def _signal_to_side_pos_reduce(sig_type: str):
if leverage <= 0:
leverage = 1.0
+ # [FEATURE] Sync positions before execution to ensure size is checking against reality
+ # The user requested to sync before EVERY live order to prevent mismatch.
+ try:
+ logger.info(f"[Sync] Triggering pre-execution sync for strategy {strategy_id} before order {order_id}")
+ self._sync_positions_best_effort(target_strategy_id=strategy_id)
+ except Exception as e:
+ logger.warning(f"Pre-execution sync failed: {e}")
+
+ # [FEATURE] Auto-correct amount for Close/Reduce signals if we hold less than requested
+ if reduce_only:
+ try:
+ with get_db_connection() as db:
+ cur = db.cursor()
+ # We need to find the specific position.
+ # Symbol stored in DB is normalized (e.g. BTC/USDT).
+ # The payload 'symbol' might be 'BTCUSDT' or 'BTC/USDT'.
+ # We try to match what stored in DB.
+ # Best effort: try exact match, then normalized.
+ qry_sym = str(symbol or "").strip().upper()
+ # Mapping logic similar to _sync:
+ if qry_sym.endswith("USDT") and "/" not in qry_sym:
+ qry_sym = f"{qry_sym[:-4]}/USDT"
+
+ cur.execute(
+ "SELECT size FROM qd_strategy_positions WHERE strategy_id = %s AND symbol = %s AND side = %s",
+ (strategy_id, qry_sym, pos_side)
+ )
+ row = cur.fetchone()
+ cur.close()
+
+ if row:
+ held_size = float(row["size"] or 0.0)
+ if amount > held_size:
+ logger.warning(f"[RiskControl] Adjusting Close amount from {amount} to {held_size} (Held) for {symbol}")
+ amount = held_size
+ else:
+ # No position found in DB?
+ # If reduce_only, and no position, maybe it's 0.
+ logger.warning(f"[RiskControl] Close signal for {symbol} but NO position found in DB. Setting amount=0.")
+ amount = 0.0
+ except Exception as e:
+ logger.error(f"[RiskControl] Failed to check DB position logic: {e}")
+
+
# Collect raw exchange interactions / intermediate states for debugging & persistence.
phases: Dict[str, Any] = {}
diff --git a/backend_api_python/scripts/test_sync_positions_binance.py b/backend_api_python/scripts/test_sync_positions_binance.py
new file mode 100644
index 000000000..4c71ba34a
--- /dev/null
+++ b/backend_api_python/scripts/test_sync_positions_binance.py
@@ -0,0 +1,275 @@
+
+import os
+import sys
+import logging
+from dotenv import load_dotenv
+
+# Add project root to path
+sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../")))
+
+# Load environment variables from .env file with explicit UTF-8 encoding
+env_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.env"))
+print(f"Loading .env from: {env_path}")
+load_dotenv(env_path, encoding='utf-8', override=True)
+
+# DEBUG: Check DATABASE_URL
+db_url = os.getenv("DATABASE_URL")
+if db_url:
+ # Mask password for safety but show repr to check for invisible chars
+ safe_url = db_url
+ if "@" in safe_url:
+ part1, part2 = safe_url.rsplit("@", 1)
+ if ":" in part1:
+ u, p = part1.split(":", 1)
+ # keep first 3 chars of password if possible
+ safe_p = p[:3] + "***" if len(p) > 3 else "***"
+ safe_url = f"{u}:{safe_p}@{part2}"
+ print(f"DEBUG: DATABASE_URL repr: {repr(db_url)}") # repr will show \xb2 if present
+ print(f"DEBUG: Safe DATABASE_URL: {safe_url}")
+else:
+ print("DEBUG: DATABASE_URL is NOT set in environment.")
+
+from app.services.pending_order_worker import PendingOrderWorker
+from app.utils.db import get_db_connection
+from app.services.exchange_execution import load_strategy_configs, resolve_exchange_config
+from app.services.live_trading.factory import create_client
+
+# Configure logging
+logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
+logger = logging.getLogger(__name__)
+
+def test_real_sync_binance():
+ logger.info(">>> Starting REAL Binance Position Sync Test")
+
+ with get_db_connection() as conn:
+ cur = conn.cursor()
+ probe_id = None
+ strategy_id = None
+
+ try:
+ # 1. Find a suitable LIVE Binance strategy
+ logger.info("Searching for a 'live' Binance strategy in database...")
+ cur.execute("""
+ SELECT id, user_id, strategy_name, exchange_config
+ FROM qd_strategies_trading
+ WHERE execution_mode = 'live'
+ AND status = 'running'
+ AND (exchange_config::text ILIKE '%binance%' OR exchange_config::text ILIKE '%exchange_id":"binance"%')
+ LIMIT 1
+ """)
+ row = cur.fetchone()
+
+ if not row:
+ logger.error("No active LIVE Binance strategy found in qd_strategies_trading.")
+ logger.info("Please create a strategy with execution_mode='live' and exchange_id='binance' first.")
+ return
+
+ strategy_id = row['id']
+ strategy_name = row['strategy_name']
+ user_id = row.get('user_id') or 1
+ logger.info(f"Found Strategy ID: {strategy_id} Name: {strategy_name} UserID: {user_id}")
+
+ # Load full config
+ cfg = load_strategy_configs(strategy_id)
+ exchange_config = resolve_exchange_config(cfg.get("exchange_config") or {})
+ market_type = cfg.get("market_type", "swap")
+
+ # 2. Inspect Real Exchange Positions
+ logger.info("--- Connecting to Exchange to fetch REAL positions ---")
+ try:
+ client = create_client(exchange_config, market_type=market_type)
+ # For Binance futures, get_positions returns list of dicts
+ positions_resp = client.get_positions()
+
+ real_positions_map = {}
+ positions_list = []
+
+ if isinstance(positions_resp, list):
+ positions_list = positions_resp
+ elif isinstance(positions_resp, dict):
+ # Handle case where client implementation wraps list in {'raw': [...]} or similar
+ if "raw" in positions_resp and isinstance(positions_resp["raw"], list):
+ positions_list = positions_resp["raw"]
+ else:
+ logger.warning(f"Unexpected dict structure from get_positions: keys={list(positions_resp.keys())}")
+ logger.debug(f"Response: {positions_resp}")
+
+ if positions_list:
+ logger.info(f"Exchange returned {len(positions_list)} position entries.")
+ for p in positions_list:
+ amt = float(p.get("positionAmt") or 0.0)
+ sym = p.get("symbol")
+ if abs(amt) > 0:
+ logger.info(f"REAL POSITION: {sym} | Amt: {amt} | Entry: {p.get('entryPrice')}")
+ real_positions_map[sym] = amt
+ if not real_positions_map:
+ logger.info("No open positions found on exchange (all amts are 0).")
+ else:
+ if not isinstance(positions_resp, list) and not (isinstance(positions_resp, dict) and "raw" in positions_resp):
+ logger.warning("Could not extract positions list from response.")
+
+ except Exception as e:
+ logger.error(f"Failed to fetch real positions from exchange: {e}")
+ # We continue mostly to test the sync logic itself, even if fetch failed (though sync will likely fail too)
+
+ # 3. Insert or Identify Probe Position
+ logger.info("--- Checking Local DB Positions ---")
+
+ # Check for ANY existing positions for this strategy
+ cur.execute("SELECT * FROM qd_strategy_positions WHERE strategy_id = %s", (strategy_id,))
+ existing_rows = cur.fetchall()
+
+ if existing_rows:
+ logger.info(f"Found {len(existing_rows)} existing positions in DB.")
+ for r in existing_rows:
+ logger.info(f"DB POS: ID={r['id']} {r['symbol']} {r['side']} Size={r['size']}")
+ # Use the first one as probe if available, or just insert the specific BTC/USDT probe
+ # Let's check specifically for BTC/USDT as our probe target
+ cur.execute("SELECT id FROM qd_strategy_positions WHERE strategy_id = %s AND symbol = 'BTC/USDT'", (strategy_id,))
+ probe_row = cur.fetchone()
+ if probe_row:
+ probe_id = probe_row['id']
+ logger.info(f"Using existing BTC/USDT position as probe (ID: {probe_id})")
+
+ if not probe_id:
+ # Insert a ghost position to see if it gets cleared
+ # Note: schema has user_id and updated_at, but NO created_at
+ logger.info("Inserting a GHOST PROBE position (BTC/USDT, size=0.0001) to test sync...")
+ cur.execute("""
+ INSERT INTO qd_strategy_positions
+ (user_id, strategy_id, symbol, side, size, entry_price, updated_at)
+ VALUES (%s, %s, 'BTC/USDT', 'long', 0.0001, 50000.0, NOW())
+ RETURNING id
+ """, (user_id, strategy_id))
+ row = cur.fetchone()
+ if row:
+ probe_id = row['id']
+ else:
+ logger.warning("INSERT did not return ID. Querying for it...")
+ cur.execute("SELECT id FROM qd_strategy_positions WHERE strategy_id=%s AND symbol='BTC/USDT'", (strategy_id,))
+ probe_id = cur.fetchone()['id']
+ conn.commit()
+ logger.info(f"Created probe position ID: {probe_id}")
+
+ # Force reset the probe to a known mis-state: Side=Long, Size=0.042
+ # (assuming Exchange has something else, e.g. 0.008, or even if 0, it tests logic)
+ # This ensures we test "Update" (if match) or "Delete" (if exchange is 0) correctly without side mismatch confusion.
+ if probe_id:
+ cur.execute("UPDATE qd_strategy_positions SET side='long', size=0.042, updated_at=NOW() WHERE id=%s", (probe_id,))
+ conn.commit()
+ logger.info(f"Reset probe (ID: {probe_id}) to Side='long', Size=0.042 for testing.")
+
+ # 4. Run Sync Logic
+ logger.info("--- Running PendingOrderWorker._sync_positions_best_effort ---")
+ worker = PendingOrderWorker()
+ worker._sync_positions_best_effort()
+
+ # 5. Check Result
+ if probe_id:
+ cur.execute("SELECT * FROM qd_strategy_positions WHERE id = %s", (probe_id,))
+ after = cur.fetchone()
+
+ real_btc_amt = real_positions_map.get("BTCUSDT", 0.0)
+
+ if not after:
+ if abs(real_btc_amt) < 1e-6:
+ logger.info("SUCCESS: Probe position was DELETED (Exchange matches 0).")
+ else:
+ logger.warning(f"WARNING: Probe deleted but exchange has {real_btc_amt}? (Unless symbol mismatch)")
+ else:
+ new_size = float(after['size'])
+ logger.info(f"RESULT: DB Position Size: {new_size}")
+
+ if abs(new_size - abs(real_btc_amt)) < 1e-6:
+ logger.info(f"SUCCESS: DB synced to Exchange Size ({abs(real_btc_amt)}).")
+ ep = float(after.get('entry_price') or 0.0)
+ logger.info(f"RESULT: Entry Price in DB: {ep}")
+ if ep > 0:
+ logger.info("SUCCESS: Entry Price populated > 0")
+ else:
+ logger.warning("WARNING: Entry Price is 0 or missing!")
+ else:
+ logger.warning(f"MISMATCH: DB={new_size}, Exchange={real_btc_amt}. Sync might have skipped or failed?")
+
+ except Exception as e:
+ logger.error(f"Error occurred during test: {e}", exc_info=True)
+ conn.rollback()
+ finally:
+ cur.close()
+
+def test_oversized_close_correction():
+ """
+ Test that if a Close signal asks for more than we hold, it clamps to held amount.
+ Uses REAL WORKER and DB (Integration Test).
+ Pre-condition: Exchange position is 0 (or known).
+ """
+ logger.info(">>> Starting Oversized Close Correction Test (REAL INTEGRATION)")
+
+ from app.services.pending_order_worker import PendingOrderWorker
+
+ # 1. Find Strategy
+ with get_db_connection() as conn:
+ cur = conn.cursor()
+ cur.execute("SELECT id FROM qd_strategies_trading WHERE execution_mode='live' LIMIT 1")
+ row = cur.fetchone()
+ cur.close()
+
+ if not row:
+ logger.warning("Skipping oversized test: No live strategy found.")
+ return
+
+ strategy_id = row['id']
+ logger.info(f"Using Strategy ID {strategy_id} for test.")
+
+ # 2. Setup DB Position: Ensure we have exactly 0.01 BTC (Ghost)
+ # Since sync runs before execution, this ghost position SHOULD be deleted if Exchange matches 0.
+ # Therefore, the Order Amount of 1.0 should become 0.0.
+ test_sym = "BTC/USDT"
+ target_pos_size = 0.01
+
+ with get_db_connection() as conn:
+ cur = conn.cursor()
+ # Find existing or insert
+ cur.execute(
+ "SELECT id FROM qd_strategy_positions WHERE strategy_id=%s AND symbol=%s AND side='long'",
+ (strategy_id, test_sym)
+ )
+ pos_row = cur.fetchone()
+ if not pos_row:
+ cur.execute(
+ "INSERT INTO qd_strategy_positions (user_id, strategy_id, symbol, side, size, entry_price, updated_at) VALUES (1, %s, %s, 'long', %s, 50000, NOW()) RETURNING id",
+ (strategy_id, test_sym, target_pos_size)
+ )
+ else:
+ cur.execute("UPDATE qd_strategy_positions SET size=%s, side='long', updated_at=NOW() WHERE id=%s", (target_pos_size, pos_row['id']))
+ conn.commit()
+ cur.close()
+
+ # 3. Instantiate Worker
+ worker = PendingOrderWorker()
+
+ # 4. Trigger _execute_live_order with amount=1.0 (100x holding)
+ payload = {
+ "strategy_id": strategy_id,
+ "symbol": "BTCUSDT",
+ "signal_type": "close_long",
+ "amount": 1.0,
+ "price": 60000,
+ "market_type": "swap"
+ }
+ order_row = {"id": 99999, "strategy_id": strategy_id, "amount": 1.0, "price": 60000, "symbol": "BTCUSDT"}
+
+ logger.info("Triggering execution with amount=1.0 (Held Ghost=0.01, Exchange=0.0)...")
+ logger.info("EXPECTATION: Sync deletes Ghost -> Held becomes 0 -> Amount corrects to 0 -> Order blocked/skipped.")
+
+ try:
+ # We catch exceptions because create_client might fail or create_order might fail if amount is 0
+ worker._execute_live_order(order_id=99999, order_row=order_row, payload=payload)
+ logger.info("[TEST END] Execution finished. Check logs above for '[RiskControl]' or '[Sync]' messages.")
+ except Exception as e:
+ logger.error(f"[TEST END] Execution raised exception (Expected if amount=0?): {e}")
+
+if __name__ == "__main__":
+ test_real_sync_binance()
+ print("-" * 60)
+ test_oversized_close_correction()
diff --git a/quantdinger_vue/src/locales/lang/en-US.js b/quantdinger_vue/src/locales/lang/en-US.js
index 8b88fb394..fadcc9341 100644
--- a/quantdinger_vue/src/locales/lang/en-US.js
+++ b/quantdinger_vue/src/locales/lang/en-US.js
@@ -2642,7 +2642,12 @@ const locale = {
'globalMarket.aboveForecast': 'Above Forecast',
'globalMarket.belowForecast': 'Below Forecast',
'globalMarket.upcomingEvents': 'Upcoming Events',
- 'globalMarket.releasedEvents': 'Released Data'
+ 'globalMarket.releasedEvents': 'Released Data',
+
+ // Trading Assistant
+ 'trading-assistant.form.notificationFromProfile': 'Notifications will be sent to the address configured in your profile.',
+ 'trading-assistant.form.notificationConfigMissing': 'You have not configured parameters for selected channels ({channels}). Please go to your profile to configure them.',
+ 'trading-assistant.form.goToProfile': 'Go to Profile'
}
export default {
diff --git a/quantdinger_vue/src/locales/lang/zh-CN.js b/quantdinger_vue/src/locales/lang/zh-CN.js
index 2ef2202ef..0a1514532 100644
--- a/quantdinger_vue/src/locales/lang/zh-CN.js
+++ b/quantdinger_vue/src/locales/lang/zh-CN.js
@@ -2,2460 +2,2465 @@ import antd from 'ant-design-vue/es/locale-provider/zh_CN'
import momentCN from 'moment/locale/zh-cn'
const components = {
-antLocale: antd,
-momentName: 'zh-cn',
-momentLocale: momentCN
+ antLocale: antd,
+ momentName: 'zh-cn',
+ momentLocale: momentCN
}
const locale = {
-// 通用
-'common.confirm': '确定',
-'common.cancel': '取消',
-'common.save': '保存',
-'common.delete': '删除',
-'common.edit': '编辑',
-'common.add': '添加',
-'common.close': '关闭',
-'common.ok': '确定',
-'submit': '提交',
-'save': '保存',
-'submit.ok': '提交成功',
-'save.ok': '保存成功',
-'menu.welcome': '欢迎',
-'menu.home': '主页',
-'menu.dashboard': '仪表盘',
-'menu.dashboard.indicator': '指标分析',
-'menu.dashboard.community': '官方社区',
-'menu.dashboard.analysis': 'AI 分析',
-'menu.dashboard.tradingAssistant': '交易助手',
-'menu.dashboard.portfolio': '资产监测',
-'menu.dashboard.globalMarket': '全球金融',
-'menu.settings': '系统设置',
-'menu.dashboard.aiTradingAssistant': 'AI交易助手',
-'menu.dashboard.signalRobot': '信号机器人',
-'menu.dashboard.monitor': '监控页',
-'menu.dashboard.workplace': '工作台',
-'menu.form': '表单页',
-'menu.form.basic-form': '基础表单',
-'menu.form.step-form': '分步表单',
-'menu.form.step-form.info': '分步表单(填写转账信息)',
-'menu.form.step-form.confirm': '分步表单(确认转账信息)',
-'menu.form.step-form.result': '分步表单(完成)',
-'menu.form.advanced-form': '高级表单',
-'menu.list': '列表页',
-'menu.list.table-list': '查询表格',
-'menu.list.basic-list': '标准列表',
-'menu.list.card-list': '卡片列表',
-'menu.list.search-list': '搜索列表',
-'menu.list.search-list.articles': '搜索列表(文章)',
-'menu.list.search-list.projects': '搜索列表(项目)',
-'menu.list.search-list.applications': '搜索列表(应用)',
-'menu.profile': '详情页',
-'menu.profile.basic': '基础详情页',
-'menu.profile.advanced': '高级详情页',
-'menu.result': '结果页',
-'menu.result.success': '成功页',
-'menu.result.fail': '失败页',
-'menu.exception': '异常页',
-'menu.exception.not-permission': '403',
-'menu.exception.not-find': '404',
-'menu.exception.server-error': '500',
-'menu.exception.trigger': '触发错误',
-'menu.account': '个人页',
-'menu.account.center': '个人中心',
-'menu.account.settings': '个人设置',
-'menu.account.trigger': '触发报错',
-'menu.account.logout': '退出登录',
-'menu.wallet': '我的钱包',
-'menu.docs': '文档中心',
-'menu.docs.detail': '文档详情',
-'menu.header.refreshPage': '刷新页面',
-'menu.invite.friends': '邀请好友',
-'app.setting.pagestyle': '整体风格设置',
-'app.setting.pagestyle.light': '亮色菜单风格',
-'app.setting.pagestyle.dark': '暗色菜单风格',
-'app.setting.pagestyle.realdark': '暗黑模式',
-'app.setting.themecolor': '主题色',
-'app.setting.navigationmode': '导航模式',
-'app.setting.sidemenu.nav': '侧边栏导航',
-'app.setting.topmenu.nav': '顶部栏导航',
-'app.setting.content-width': '内容区域宽度',
-'app.setting.content-width.tooltip': '该设定仅 [顶部栏导航] 时有效',
-'app.setting.content-width.fixed': '固定',
-'app.setting.content-width.fluid': '流式',
-'app.setting.fixedheader': '固定 Header',
-'app.setting.fixedheader.tooltip': '固定 Header 时可配置',
-'app.setting.autoHideHeader': '下滑时隐藏 Header',
-'app.setting.fixedsidebar': '固定侧边菜单',
-'app.setting.sidemenu': '侧边菜单布局',
-'app.setting.topmenu': '顶部菜单布局',
-'app.setting.othersettings': '其他设置',
-'app.setting.weakmode': '色弱模式',
-'app.setting.multitab': '多页签模式',
-'app.setting.copy': '拷贝设置',
-'app.setting.loading': '加载主题中',
-'app.setting.copyinfo': '拷贝设置成功 src/config/defaultSettings.js',
-'app.setting.copy.success': '复制完毕',
-'app.setting.copy.fail': '复制失败',
-'app.setting.theme.switching': '正在切换主题!',
-'app.setting.production.hint': '配置栏只在开发环境用于预览,生产环境不会展现,请拷贝后手动修改配置文件',
-'app.setting.themecolor.daybreak': '拂晓蓝(默认)',
-'app.setting.themecolor.dust': '薄暮',
-'app.setting.themecolor.volcano': '火山',
-'app.setting.themecolor.sunset': '日暮',
-'app.setting.themecolor.cyan': '明青',
-'app.setting.themecolor.green': '极光绿',
-'app.setting.themecolor.geekblue': '极客蓝',
-'app.setting.themecolor.purple': '酱紫',
-'app.setting.tooltip': '页面设置',
+ // 通用
+ 'common.confirm': '确定',
+ 'common.cancel': '取消',
+ 'common.save': '保存',
+ 'common.delete': '删除',
+ 'common.edit': '编辑',
+ 'common.add': '添加',
+ 'common.close': '关闭',
+ 'common.ok': '确定',
+ 'submit': '提交',
+ 'save': '保存',
+ 'submit.ok': '提交成功',
+ 'save.ok': '保存成功',
+ 'menu.welcome': '欢迎',
+ 'menu.home': '主页',
+ 'menu.dashboard': '仪表盘',
+ 'menu.dashboard.indicator': '指标分析',
+ 'menu.dashboard.community': '官方社区',
+ 'menu.dashboard.analysis': 'AI 分析',
+ 'menu.dashboard.tradingAssistant': '交易助手',
+ 'menu.dashboard.portfolio': '资产监测',
+ 'menu.dashboard.globalMarket': '全球金融',
+ 'menu.settings': '系统设置',
+ 'menu.dashboard.aiTradingAssistant': 'AI交易助手',
+ 'menu.dashboard.signalRobot': '信号机器人',
+ 'menu.dashboard.monitor': '监控页',
+ 'menu.dashboard.workplace': '工作台',
+ 'menu.form': '表单页',
+ 'menu.form.basic-form': '基础表单',
+ 'menu.form.step-form': '分步表单',
+ 'menu.form.step-form.info': '分步表单(填写转账信息)',
+ 'menu.form.step-form.confirm': '分步表单(确认转账信息)',
+ 'menu.form.step-form.result': '分步表单(完成)',
+ 'menu.form.advanced-form': '高级表单',
+ 'menu.list': '列表页',
+ 'menu.list.table-list': '查询表格',
+ 'menu.list.basic-list': '标准列表',
+ 'menu.list.card-list': '卡片列表',
+ 'menu.list.search-list': '搜索列表',
+ 'menu.list.search-list.articles': '搜索列表(文章)',
+ 'menu.list.search-list.projects': '搜索列表(项目)',
+ 'menu.list.search-list.applications': '搜索列表(应用)',
+ 'menu.profile': '详情页',
+ 'menu.profile.basic': '基础详情页',
+ 'menu.profile.advanced': '高级详情页',
+ 'menu.result': '结果页',
+ 'menu.result.success': '成功页',
+ 'menu.result.fail': '失败页',
+ 'menu.exception': '异常页',
+ 'menu.exception.not-permission': '403',
+ 'menu.exception.not-find': '404',
+ 'menu.exception.server-error': '500',
+ 'menu.exception.trigger': '触发错误',
+ 'menu.account': '个人页',
+ 'menu.account.center': '个人中心',
+ 'menu.account.settings': '个人设置',
+ 'menu.account.trigger': '触发报错',
+ 'menu.account.logout': '退出登录',
+ 'menu.wallet': '我的钱包',
+ 'menu.docs': '文档中心',
+ 'menu.docs.detail': '文档详情',
+ 'menu.header.refreshPage': '刷新页面',
+ 'menu.invite.friends': '邀请好友',
+ 'app.setting.pagestyle': '整体风格设置',
+ 'app.setting.pagestyle.light': '亮色菜单风格',
+ 'app.setting.pagestyle.dark': '暗色菜单风格',
+ 'app.setting.pagestyle.realdark': '暗黑模式',
+ 'app.setting.themecolor': '主题色',
+ 'app.setting.navigationmode': '导航模式',
+ 'app.setting.sidemenu.nav': '侧边栏导航',
+ 'app.setting.topmenu.nav': '顶部栏导航',
+ 'app.setting.content-width': '内容区域宽度',
+ 'app.setting.content-width.tooltip': '该设定仅 [顶部栏导航] 时有效',
+ 'app.setting.content-width.fixed': '固定',
+ 'app.setting.content-width.fluid': '流式',
+ 'app.setting.fixedheader': '固定 Header',
+ 'app.setting.fixedheader.tooltip': '固定 Header 时可配置',
+ 'app.setting.autoHideHeader': '下滑时隐藏 Header',
+ 'app.setting.fixedsidebar': '固定侧边菜单',
+ 'app.setting.sidemenu': '侧边菜单布局',
+ 'app.setting.topmenu': '顶部菜单布局',
+ 'app.setting.othersettings': '其他设置',
+ 'app.setting.weakmode': '色弱模式',
+ 'app.setting.multitab': '多页签模式',
+ 'app.setting.copy': '拷贝设置',
+ 'app.setting.loading': '加载主题中',
+ 'app.setting.copyinfo': '拷贝设置成功 src/config/defaultSettings.js',
+ 'app.setting.copy.success': '复制完毕',
+ 'app.setting.copy.fail': '复制失败',
+ 'app.setting.theme.switching': '正在切换主题!',
+ 'app.setting.production.hint': '配置栏只在开发环境用于预览,生产环境不会展现,请拷贝后手动修改配置文件',
+ 'app.setting.themecolor.daybreak': '拂晓蓝(默认)',
+ 'app.setting.themecolor.dust': '薄暮',
+ 'app.setting.themecolor.volcano': '火山',
+ 'app.setting.themecolor.sunset': '日暮',
+ 'app.setting.themecolor.cyan': '明青',
+ 'app.setting.themecolor.green': '极光绿',
+ 'app.setting.themecolor.geekblue': '极客蓝',
+ 'app.setting.themecolor.purple': '酱紫',
+ 'app.setting.tooltip': '页面设置',
-// 通知中心
-'notice.title': '通知中心',
-'notice.empty': '暂无通知',
-'notice.markAllRead': '全部已读',
-'notice.clear': '清空通知',
-'notice.close': '关闭',
-'notice.justNow': '刚刚',
-'notice.minutesAgo': '分钟前',
-'notice.hoursAgo': '小时前',
-'notice.daysAgo': '天前',
-'notice.detailInfo': '详细信息',
-'notice.aiDecision': 'AI决策',
-'notice.confidence': '置信度',
-'notice.reasoning': '分析理由',
-'notice.symbol': '标的代码',
-'notice.currentPrice': '当前价格',
-'notice.triggerPrice': '触发价格',
-'notice.action': '操作',
-'notice.quantity': '数量',
-'notice.viewPortfolio': '查看持仓',
-'notice.type.aiMonitor': 'AI监控',
-'notice.type.priceAlert': '价格提醒',
-'notice.type.signal': '交易信号',
-'notice.type.buy': '买入信号',
-'notice.type.sell': '卖出信号',
-'notice.type.hold': '持有建议',
-'notice.type.trade': '交易执行',
-'notice.type.notification': '系统通知',
+ // 通知中心
+ 'notice.title': '通知中心',
+ 'notice.empty': '暂无通知',
+ 'notice.markAllRead': '全部已读',
+ 'notice.clear': '清空通知',
+ 'notice.close': '关闭',
+ 'notice.justNow': '刚刚',
+ 'notice.minutesAgo': '分钟前',
+ 'notice.hoursAgo': '小时前',
+ 'notice.daysAgo': '天前',
+ 'notice.detailInfo': '详细信息',
+ 'notice.aiDecision': 'AI决策',
+ 'notice.confidence': '置信度',
+ 'notice.reasoning': '分析理由',
+ 'notice.symbol': '标的代码',
+ 'notice.currentPrice': '当前价格',
+ 'notice.triggerPrice': '触发价格',
+ 'notice.action': '操作',
+ 'notice.quantity': '数量',
+ 'notice.viewPortfolio': '查看持仓',
+ 'notice.type.aiMonitor': 'AI监控',
+ 'notice.type.priceAlert': '价格提醒',
+ 'notice.type.signal': '交易信号',
+ 'notice.type.buy': '买入信号',
+ 'notice.type.sell': '卖出信号',
+ 'notice.type.hold': '持有建议',
+ 'notice.type.trade': '交易执行',
+ 'notice.type.notification': '系统通知',
-'user.login.userName': '用户名',
-'user.login.password': '密码',
-'user.login.username.placeholder': '账户: admin',
-'user.login.password.placeholder': '密码: admin or ant.design',
-'user.login.message-invalid-credentials': '登录失败,请检查邮箱和验证码',
-'user.login.message-invalid-verification-code': '验证码错误',
-'user.login.tab-login-credentials': '账户密码登录',
-'user.login.tab-login-email': '邮箱登录',
-'user.login.tab-login-mobile': '手机号登录',
-'user.login.captcha.placeholder': '请输入图形验证码',
-'user.login.mobile.placeholder': '手机号',
-'user.login.mobile.verification-code.placeholder': '验证码',
-'user.login.email.placeholder': '请输入邮箱地址',
-'user.login.email.verification-code.placeholder': '请输入验证码',
-'user.login.email.sending': '验证码发送中...',
-'user.login.email.send-success-title': '提示',
-'user.login.email.send-success': '验证码发送成功,请查收邮件',
-'user.login.sms.send-success': '验证码发送成功,请查收短信',
-'user.login.remember-me': '自动登录',
-'user.login.forgot-password': '忘记密码',
-'user.login.sign-in-with': '其他登录方式',
-'user.login.signup': '注册账户',
-'user.login.login': '登录',
-'user.register.register': '注册',
-'user.register.email.placeholder': '邮箱',
-'user.register.password.placeholder': '请至少输入 6 个字符。请不要使用容易被猜到的密码。',
-'user.register.password.popover-message': '请至少输入 6 个字符。请不要使用容易被猜到的密码。',
-'user.register.confirm-password.placeholder': '确认密码',
-'user.register.get-verification-code': '获取验证码',
-'user.register.sign-in': '使用已有账户登录',
-'user.register-result.msg': '你的账户:{email} 注册成功',
-'user.register-result.activation-email': '激活邮件已发送到你的邮箱中,邮件有效期为24小时。请及时登录邮箱,点击邮件中的链接激活账户。',
-'user.register-result.back-home': '返回首页',
-'user.register-result.view-mailbox': '查看邮箱',
-'user.email.required': '请输入邮箱地址!',
-'user.email.wrong-format': '邮箱地址格式错误!',
-'user.userName.required': '请输入账户名或邮箱地址',
-'user.password.required': '请输入密码!',
-'user.password.twice.msg': '两次输入的密码不匹配!',
-'user.password.strength.msg': '密码强度不够 ',
-'user.password.strength.strong': '强度:强',
-'user.password.strength.medium': '强度:中',
-'user.password.strength.low': '强度:低',
-'user.password.strength.short': '强度:太短',
-'user.confirm-password.required': '请确认密码!',
-'user.phone-number.required': '请输入正确的手机号',
-'user.phone-number.wrong-format': '手机号格式错误!',
-'user.verification-code.required': '请输入验证码!',
-'user.captcha.required': '请输入图形验证码!',
-'user.login.infos': 'QuantDinger 是一个 AI 多智能体股票分析辅助工具,不具备证券投资咨询资质。平台中的所有分析结果、评分、参考意见均由 AI 基于历史数据自动生成,仅供学习、研究与技术交流使用,不构成任何投资建议或决策依据。股票投资存在市场风险、流动性风险、政策风险等多种风险,可能导致本金损失。用户应基于自身风险承受能力独立决策,使用本工具产生的任何投资行为及其后果由用户自行承担。市场有风险,投资需谨慎。',
-'user.login.tab-login-web3': 'Web3 登录',
-'user.login.web3.tip': '使用钱包进行签名登录',
-'user.login.web3.connect': '连接钱包并登录',
-'user.login.web3.no-wallet': '未检测到钱包',
-'user.login.web3.no-address': '未获取到钱包地址',
-'user.login.web3.nonce-failed': '获取随机数失败',
-'user.login.web3.verify-failed': '签名验证失败',
-'user.login.web3.success': '登录成功',
-'user.login.web3.failed': '钱包登录失败',
-'nav.no_wallet': '未检测到钱包',
-'nav.copy': '复制',
-'nav.copy_success': '复制成功',
-'user.login.oauth.google': '使用 Google 登录',
-'user.login.oauth.github': '使用 GitHub 登录',
-'user.login.oauth.loading': '正在跳转到授权页面...',
-'user.login.oauth.failed': 'OAuth 登录失败',
-'user.login.oauth.get-url-failed': '获取授权链接失败',
-'user.login.subtitle': '驱动的全球市场量化洞察',
-'user.login.legal.title': '法律免责声明',
-'user.login.legal.view': '查看法律免责声明',
-'user.login.legal.collapse': '收起法律免责声明',
-'user.login.legal.agree': '我已阅读并同意法律免责声明',
-'user.login.legal.required': '请先阅读并勾选法律免责声明',
-'user.login.legal.content': 'QuantDinger 是一个 AI 多智能体股票分析辅助工具,不具备证券投资咨询资质。平台中的所有分析结果、评分、参考意见均由 AI 基于历史数据自动生成,仅供学习、研究与技术交流使用,不构成任何投资建议或决策依据。股票投资存在市场风险、流动性风险、政策风险等多种风险,可能导致本金损失。用户应基于自身风险承受能力独立决策,使用本工具产生的任何投资行为及其后果由用户自行承担。市场有风险,投资需谨慎。',
-'user.login.privacy.title': '用户隐私条款',
-'user.login.privacy.view': '查看用户隐私条款',
-'user.login.privacy.collapse': '收起用户隐私条款',
-'user.login.privacy.content': '我们重视您的隐私与数据保护。1) 收集范围:仅收集实现功能所需的信息(如邮箱、手机号、区号、Web3 钱包地址)以及必要的日志与设备信息。2) 使用目的:用于账户登录与安全校验、服务功能提供、问题排查与合规要求。3) 存储与安全:数据加密存储,并采取必要的权限与访问控制措施,尽力防止未经授权的访问、披露或丢失。4) 共享与第三方:除法律法规要求或履行服务所必需外,不会与第三方共享您的个人信息;若涉及第三方服务(如钱包、短信服务商),仅在实现功能所需的最小范围内处理。5) Cookies/本地存储:用于登录态与必要的会话维持(如令牌、PHPSESSID),您可在浏览器中进行清理或限制。6) 个人权利:您可根据法律法规行使查询、更正、删除、撤回同意等权利。7) 变更与通知:本条款更新后将在页面显著位置提示。继续使用本服务即表示您已阅读并同意更新内容。若您不同意本条款或其中任何更新,请停止使用本服务并联系我们。',
+ 'user.login.userName': '用户名',
+ 'user.login.password': '密码',
+ 'user.login.username.placeholder': '账户: admin',
+ 'user.login.password.placeholder': '密码: admin or ant.design',
+ 'user.login.message-invalid-credentials': '登录失败,请检查邮箱和验证码',
+ 'user.login.message-invalid-verification-code': '验证码错误',
+ 'user.login.tab-login-credentials': '账户密码登录',
+ 'user.login.tab-login-email': '邮箱登录',
+ 'user.login.tab-login-mobile': '手机号登录',
+ 'user.login.captcha.placeholder': '请输入图形验证码',
+ 'user.login.mobile.placeholder': '手机号',
+ 'user.login.mobile.verification-code.placeholder': '验证码',
+ 'user.login.email.placeholder': '请输入邮箱地址',
+ 'user.login.email.verification-code.placeholder': '请输入验证码',
+ 'user.login.email.sending': '验证码发送中...',
+ 'user.login.email.send-success-title': '提示',
+ 'user.login.email.send-success': '验证码发送成功,请查收邮件',
+ 'user.login.sms.send-success': '验证码发送成功,请查收短信',
+ 'user.login.remember-me': '自动登录',
+ 'user.login.forgot-password': '忘记密码',
+ 'user.login.sign-in-with': '其他登录方式',
+ 'user.login.signup': '注册账户',
+ 'user.login.login': '登录',
+ 'user.register.register': '注册',
+ 'user.register.email.placeholder': '邮箱',
+ 'user.register.password.placeholder': '请至少输入 6 个字符。请不要使用容易被猜到的密码。',
+ 'user.register.password.popover-message': '请至少输入 6 个字符。请不要使用容易被猜到的密码。',
+ 'user.register.confirm-password.placeholder': '确认密码',
+ 'user.register.get-verification-code': '获取验证码',
+ 'user.register.sign-in': '使用已有账户登录',
+ 'user.register-result.msg': '你的账户:{email} 注册成功',
+ 'user.register-result.activation-email': '激活邮件已发送到你的邮箱中,邮件有效期为24小时。请及时登录邮箱,点击邮件中的链接激活账户。',
+ 'user.register-result.back-home': '返回首页',
+ 'user.register-result.view-mailbox': '查看邮箱',
+ 'user.email.required': '请输入邮箱地址!',
+ 'user.email.wrong-format': '邮箱地址格式错误!',
+ 'user.userName.required': '请输入账户名或邮箱地址',
+ 'user.password.required': '请输入密码!',
+ 'user.password.twice.msg': '两次输入的密码不匹配!',
+ 'user.password.strength.msg': '密码强度不够 ',
+ 'user.password.strength.strong': '强度:强',
+ 'user.password.strength.medium': '强度:中',
+ 'user.password.strength.low': '强度:低',
+ 'user.password.strength.short': '强度:太短',
+ 'user.confirm-password.required': '请确认密码!',
+ 'user.phone-number.required': '请输入正确的手机号',
+ 'user.phone-number.wrong-format': '手机号格式错误!',
+ 'user.verification-code.required': '请输入验证码!',
+ 'user.captcha.required': '请输入图形验证码!',
+ 'user.login.infos': 'QuantDinger 是一个 AI 多智能体股票分析辅助工具,不具备证券投资咨询资质。平台中的所有分析结果、评分、参考意见均由 AI 基于历史数据自动生成,仅供学习、研究与技术交流使用,不构成任何投资建议或决策依据。股票投资存在市场风险、流动性风险、政策风险等多种风险,可能导致本金损失。用户应基于自身风险承受能力独立决策,使用本工具产生的任何投资行为及其后果由用户自行承担。市场有风险,投资需谨慎。',
+ 'user.login.tab-login-web3': 'Web3 登录',
+ 'user.login.web3.tip': '使用钱包进行签名登录',
+ 'user.login.web3.connect': '连接钱包并登录',
+ 'user.login.web3.no-wallet': '未检测到钱包',
+ 'user.login.web3.no-address': '未获取到钱包地址',
+ 'user.login.web3.nonce-failed': '获取随机数失败',
+ 'user.login.web3.verify-failed': '签名验证失败',
+ 'user.login.web3.success': '登录成功',
+ 'user.login.web3.failed': '钱包登录失败',
+ 'nav.no_wallet': '未检测到钱包',
+ 'nav.copy': '复制',
+ 'nav.copy_success': '复制成功',
+ 'user.login.oauth.google': '使用 Google 登录',
+ 'user.login.oauth.github': '使用 GitHub 登录',
+ 'user.login.oauth.loading': '正在跳转到授权页面...',
+ 'user.login.oauth.failed': 'OAuth 登录失败',
+ 'user.login.oauth.get-url-failed': '获取授权链接失败',
+ 'user.login.subtitle': '驱动的全球市场量化洞察',
+ 'user.login.legal.title': '法律免责声明',
+ 'user.login.legal.view': '查看法律免责声明',
+ 'user.login.legal.collapse': '收起法律免责声明',
+ 'user.login.legal.agree': '我已阅读并同意法律免责声明',
+ 'user.login.legal.required': '请先阅读并勾选法律免责声明',
+ 'user.login.legal.content': 'QuantDinger 是一个 AI 多智能体股票分析辅助工具,不具备证券投资咨询资质。平台中的所有分析结果、评分、参考意见均由 AI 基于历史数据自动生成,仅供学习、研究与技术交流使用,不构成任何投资建议或决策依据。股票投资存在市场风险、流动性风险、政策风险等多种风险,可能导致本金损失。用户应基于自身风险承受能力独立决策,使用本工具产生的任何投资行为及其后果由用户自行承担。市场有风险,投资需谨慎。',
+ 'user.login.privacy.title': '用户隐私条款',
+ 'user.login.privacy.view': '查看用户隐私条款',
+ 'user.login.privacy.collapse': '收起用户隐私条款',
+ 'user.login.privacy.content': '我们重视您的隐私与数据保护。1) 收集范围:仅收集实现功能所需的信息(如邮箱、手机号、区号、Web3 钱包地址)以及必要的日志与设备信息。2) 使用目的:用于账户登录与安全校验、服务功能提供、问题排查与合规要求。3) 存储与安全:数据加密存储,并采取必要的权限与访问控制措施,尽力防止未经授权的访问、披露或丢失。4) 共享与第三方:除法律法规要求或履行服务所必需外,不会与第三方共享您的个人信息;若涉及第三方服务(如钱包、短信服务商),仅在实现功能所需的最小范围内处理。5) Cookies/本地存储:用于登录态与必要的会话维持(如令牌、PHPSESSID),您可在浏览器中进行清理或限制。6) 个人权利:您可根据法律法规行使查询、更正、删除、撤回同意等权利。7) 变更与通知:本条款更新后将在页面显著位置提示。继续使用本服务即表示您已阅读并同意更新内容。若您不同意本条款或其中任何更新,请停止使用本服务并联系我们。',
-// Login page additions
-'user.login.username': '用户名',
-'user.login.usernameRequired': '请输入用户名',
-'user.login.passwordRequired': '请输入密码',
-'user.login.tab': '登录',
-'user.login.submit': '登录',
-'user.login.register': '注册账户',
-'user.login.forgotPassword': '忘记密码?',
-'user.login.orLoginWith': '或使用以下方式登录',
-'user.login.methodPassword': '密码登录',
-'user.login.methodCode': '验证码登录',
-'user.login.email': '邮箱',
-'user.login.emailRequired': '请输入邮箱',
-'user.login.emailInvalid': '邮箱格式不正确',
-'user.login.verificationCode': '验证码',
-'user.login.codeRequired': '请输入验证码',
-'user.login.sendCode': '发送',
-'user.login.codeSent': '验证码已发送',
-'user.login.codeLoginHint': '新用户将自动注册',
-'user.login.welcomeNew': '欢迎!',
-'user.login.accountCreated': '您的账户已创建成功',
+ // Login page additions
+ 'user.login.username': '用户名',
+ 'user.login.usernameRequired': '请输入用户名',
+ 'user.login.passwordRequired': '请输入密码',
+ 'user.login.tab': '登录',
+ 'user.login.submit': '登录',
+ 'user.login.register': '注册账户',
+ 'user.login.forgotPassword': '忘记密码?',
+ 'user.login.orLoginWith': '或使用以下方式登录',
+ 'user.login.methodPassword': '密码登录',
+ 'user.login.methodCode': '验证码登录',
+ 'user.login.email': '邮箱',
+ 'user.login.emailRequired': '请输入邮箱',
+ 'user.login.emailInvalid': '邮箱格式不正确',
+ 'user.login.verificationCode': '验证码',
+ 'user.login.codeRequired': '请输入验证码',
+ 'user.login.sendCode': '发送',
+ 'user.login.codeSent': '验证码已发送',
+ 'user.login.codeLoginHint': '新用户将自动注册',
+ 'user.login.welcomeNew': '欢迎!',
+ 'user.login.accountCreated': '您的账户已创建成功',
-// OAuth
-'user.oauth.processing': '正在处理登录...',
-'user.oauth.error.missing_params': '缺少必要参数',
-'user.oauth.error.invalid_state': '无效的状态参数',
-'user.oauth.error.user_creation_failed': '创建用户失败',
-'user.oauth.error.server_error': '服务器错误',
+ // OAuth
+ 'user.oauth.processing': '正在处理登录...',
+ 'user.oauth.error.missing_params': '缺少必要参数',
+ 'user.oauth.error.invalid_state': '无效的状态参数',
+ 'user.oauth.error.user_creation_failed': '创建用户失败',
+ 'user.oauth.error.server_error': '服务器错误',
-// Register page
-'user.register.tab': '注册',
-'user.register.title': '创建账户',
-'user.register.email': '邮箱',
-'user.register.emailRequired': '请输入邮箱',
-'user.register.emailInvalid': '邮箱格式不正确',
-'user.register.verificationCode': '验证码',
-'user.register.codeRequired': '请输入验证码',
-'user.register.sendCode': '发送验证码',
-'user.register.codeSent': '验证码已发送',
-'user.register.username': '用户名',
-'user.register.usernameRequired': '请输入用户名',
-'user.register.usernameLength': '用户名需要3-30个字符',
-'user.register.usernamePattern': '以字母开头,只能包含字母、数字和下划线',
-'user.register.password': '密码',
-'user.register.passwordRequired': '请输入密码',
-'user.register.confirmPassword': '确认密码',
-'user.register.confirmPasswordRequired': '请确认密码',
-'user.register.passwordMismatch': '两次输入的密码不一致',
-'user.register.submit': '创建账户',
-'user.register.haveAccount': '已有账户?',
-'user.register.login': '登录',
-'user.register.success': '注册成功',
-'user.register.pleaseLogin': '请使用新账户登录',
-'user.register.pwdMinLength': '至少8个字符',
-'user.register.pwdUppercase': '至少包含一个大写字母',
-'user.register.pwdLowercase': '至少包含一个小写字母',
-'user.register.pwdNumber': '至少包含一个数字',
+ // Register page
+ 'user.register.tab': '注册',
+ 'user.register.title': '创建账户',
+ 'user.register.email': '邮箱',
+ 'user.register.emailRequired': '请输入邮箱',
+ 'user.register.emailInvalid': '邮箱格式不正确',
+ 'user.register.verificationCode': '验证码',
+ 'user.register.codeRequired': '请输入验证码',
+ 'user.register.sendCode': '发送验证码',
+ 'user.register.codeSent': '验证码已发送',
+ 'user.register.username': '用户名',
+ 'user.register.usernameRequired': '请输入用户名',
+ 'user.register.usernameLength': '用户名需要3-30个字符',
+ 'user.register.usernamePattern': '以字母开头,只能包含字母、数字和下划线',
+ 'user.register.password': '密码',
+ 'user.register.passwordRequired': '请输入密码',
+ 'user.register.confirmPassword': '确认密码',
+ 'user.register.confirmPasswordRequired': '请确认密码',
+ 'user.register.passwordMismatch': '两次输入的密码不一致',
+ 'user.register.submit': '创建账户',
+ 'user.register.haveAccount': '已有账户?',
+ 'user.register.login': '登录',
+ 'user.register.success': '注册成功',
+ 'user.register.pleaseLogin': '请使用新账户登录',
+ 'user.register.pwdMinLength': '至少8个字符',
+ 'user.register.pwdUppercase': '至少包含一个大写字母',
+ 'user.register.pwdLowercase': '至少包含一个小写字母',
+ 'user.register.pwdNumber': '至少包含一个数字',
-// Reset password page
-'user.resetPassword.title': '重置密码',
-'user.resetPassword.email': '邮箱',
-'user.resetPassword.emailRequired': '请输入邮箱',
-'user.resetPassword.emailInvalid': '邮箱格式不正确',
-'user.resetPassword.verificationCode': '验证码',
-'user.resetPassword.codeRequired': '请输入验证码',
-'user.resetPassword.sendCode': '发送验证码',
-'user.resetPassword.codeSent': '验证码已发送',
-'user.resetPassword.next': '下一步',
-'user.resetPassword.backToLogin': '返回登录',
-'user.resetPassword.resettingFor': '正在为以下邮箱重置密码',
-'user.resetPassword.newPassword': '新密码',
-'user.resetPassword.passwordRequired': '请输入新密码',
-'user.resetPassword.confirmPassword': '确认新密码',
-'user.resetPassword.confirmPasswordRequired': '请确认新密码',
-'user.resetPassword.submit': '重置密码',
-'user.resetPassword.back': '返回',
-'user.resetPassword.successTitle': '密码重置成功',
-'user.resetPassword.successSubtitle': '您现在可以使用新密码登录了',
-'user.resetPassword.goToLogin': '前往登录',
+ // Reset password page
+ 'user.resetPassword.title': '重置密码',
+ 'user.resetPassword.email': '邮箱',
+ 'user.resetPassword.emailRequired': '请输入邮箱',
+ 'user.resetPassword.emailInvalid': '邮箱格式不正确',
+ 'user.resetPassword.verificationCode': '验证码',
+ 'user.resetPassword.codeRequired': '请输入验证码',
+ 'user.resetPassword.sendCode': '发送验证码',
+ 'user.resetPassword.codeSent': '验证码已发送',
+ 'user.resetPassword.next': '下一步',
+ 'user.resetPassword.backToLogin': '返回登录',
+ 'user.resetPassword.resettingFor': '正在为以下邮箱重置密码',
+ 'user.resetPassword.newPassword': '新密码',
+ 'user.resetPassword.passwordRequired': '请输入新密码',
+ 'user.resetPassword.confirmPassword': '确认新密码',
+ 'user.resetPassword.confirmPasswordRequired': '请确认新密码',
+ 'user.resetPassword.submit': '重置密码',
+ 'user.resetPassword.back': '返回',
+ 'user.resetPassword.successTitle': '密码重置成功',
+ 'user.resetPassword.successSubtitle': '您现在可以使用新密码登录了',
+ 'user.resetPassword.goToLogin': '前往登录',
-// Security
-'user.security.retry': '重试',
+ // Security
+ 'user.security.retry': '重试',
-// Profile - change password
-'profile.passwordHintNew': '为了安全,修改密码需要邮箱验证。密码至少8个字符,包含大小写字母和数字。',
-'profile.verificationCode': '验证码',
-'profile.codeRequired': '请输入验证码',
-'profile.codePlaceholder': '输入验证码',
-'profile.sendCode': '发送验证码',
-'profile.codeSent': '验证码已发送',
-'profile.codeWillSendTo': '验证码将发送至',
-'profile.noEmailWarning': '请先在基本信息中设置邮箱',
+ // Profile - change password
+ 'profile.passwordHintNew': '为了安全,修改密码需要邮箱验证。密码至少8个字符,包含大小写字母和数字。',
+ 'profile.verificationCode': '验证码',
+ 'profile.codeRequired': '请输入验证码',
+ 'profile.codePlaceholder': '输入验证码',
+ 'profile.sendCode': '发送验证码',
+ 'profile.codeSent': '验证码已发送',
+ 'profile.codeWillSendTo': '验证码将发送至',
+ 'profile.noEmailWarning': '请先在基本信息中设置邮箱',
-'account.basicInfo': '基础信息',
-'account.id': '用户ID',
-'account.username': '用户名',
-'account.nickname': '昵称',
-'account.email': '邮箱',
-'account.mobile': '手机号',
-'account.web3address': '钱包地址',
-'account.pid': '推荐人ID',
-'account.level': '用户等级',
-'account.money': '余额',
-'account.qdtBalance': 'QDT 余额',
-'account.score': '积分',
-'account.createtime': '注册时间',
-'account.inviteLink': '邀请链接',
-'account.recharge': '充值',
-'account.rechargeTip': '请使用微信或支付宝扫描下方二维码进行充值',
-'account.qrCodePlaceholder': '二维码占位符(模拟)',
-'account.rechargeAmount': '充值金额',
-'account.enterAmount': '请输入充值金额',
-'account.rechargeHint': '最小充值金额:1 QDT',
-'account.confirmRecharge': '确认充值',
-'account.enterValidAmount': '请输入有效的充值金额',
-'account.rechargeSuccess': '充值成功!已充值 {amount} QDT',
-'account.settings.menuMap.basic': '基本设置',
-'account.settings.menuMap.security': '安全设置',
-'account.settings.menuMap.notification': '新消息通知',
-'account.settings.menuMap.moneyLog': '资金明细',
-'account.moneyLog.empty': '暂无资金明细',
-'account.moneyLog.total': '共 {total} 条记录',
-'account.moneyLog.type.purchase': '购买指标',
-'account.moneyLog.type.recharge': '充值',
-'account.moneyLog.type.refund': '退款',
-'account.moneyLog.type.reward': '奖励',
-'account.moneyLog.type.income': '指标收入',
-'account.moneyLog.type.commission': '平台手续费',
-'wallet.balance': 'QDT 余额',
-'wallet.recharge': '充值',
-'wallet.withdraw': '提现',
-'wallet.filter': '筛选',
-'wallet.reset': '重置',
-'wallet.totalRecharge': '累计充值',
-'wallet.totalWithdraw': '累计提现',
-'wallet.totalIncome': '累计收入',
-'wallet.records': '交易记录与资金明细',
-'wallet.tradingRecords': '交易记录',
-'wallet.moneyLog': '资金明细',
-'wallet.rechargeTip': '请使用微信或支付宝扫描下方二维码进行充值',
-'wallet.qrCodePlaceholder': '二维码占位符(模拟)',
-'wallet.rechargeAmount': '充值金额',
-'wallet.enterAmount': '请输入充值金额',
-'wallet.rechargeHint': '最小充值金额:1 QDT',
-'wallet.confirmRecharge': '确认充值',
-'wallet.enterValidAmount': '请输入有效的充值金额',
-'wallet.rechargeSuccess': '充值成功!已充值 {amount} QDT',
-'wallet.rechargeFailed': '充值失败',
-'wallet.withdrawTip': '请输入提现金额和提现地址',
-'wallet.withdrawAmount': '提现金额',
-'wallet.enterWithdrawAmount': '请输入提现金额',
-'wallet.withdrawHint': '最小提现金额:1 QDT',
-'wallet.withdrawAddress': '提现地址(可选)',
-'wallet.enterWithdrawAddress': '请输入提现地址',
-'wallet.confirmWithdraw': '确认提现',
-'wallet.enterValidWithdrawAmount': '请输入有效的提现金额',
-'wallet.insufficientBalance': '余额不足',
-'wallet.withdrawSuccess': '提现成功!已提现 {amount} QDT',
-'wallet.withdrawFailed': '提现失败',
-'wallet.noTradingRecords': '暂无交易记录',
-'wallet.noMoneyLog': '暂无资金明细',
-'wallet.loadTradingRecordsFailed': '加载交易记录失败',
-'wallet.loadMoneyLogFailed': '加载资金明细失败',
-'wallet.moneyLogTotal': '共 {total} 条记录',
-'wallet.moneyLogTypeTitle': '类型',
-'wallet.moneyLogType.all': '全部类型',
-'wallet.table.time': '时间',
-'wallet.table.type': '类型',
-'wallet.table.price': '价格',
-'wallet.table.amount': '数量',
-'wallet.table.money': '金额',
-'wallet.table.balance': '余额',
-'wallet.table.memo': '备注',
-'wallet.table.value': '价值',
-'wallet.table.profit': '盈亏',
-'wallet.table.commission': '手续费',
-'wallet.table.total': '共 {total} 条记录',
-'wallet.tradeType.buy': '买入',
-'wallet.tradeType.sell': '卖出',
-'wallet.tradeType.liquidation': '强平',
-'wallet.tradeType.openLong': '开多',
-'wallet.tradeType.addLong': '加多',
-'wallet.tradeType.closeLong': '平多',
-'wallet.tradeType.closeLongStop': '止损平多',
-'wallet.tradeType.closeLongProfit': '止盈平多',
-'wallet.tradeType.openShort': '开空',
-'wallet.tradeType.addShort': '加空',
-'wallet.tradeType.closeShort': '平空',
-'wallet.tradeType.closeShortStop': '止损平空',
-'wallet.tradeType.closeShortProfit': '止盈平空',
-'wallet.moneyLogType.purchase': '购买指标',
-'wallet.moneyLogType.recharge': '充值',
-'wallet.moneyLogType.withdraw': '提现',
-'wallet.moneyLogType.refund': '退款',
-'wallet.moneyLogType.reward': '奖励',
-'wallet.moneyLogType.income': '收入',
-'wallet.moneyLogType.commission': '手续费',
-'wallet.web3Address.required': '请先填写Web3钱包地址',
-'wallet.web3Address.requiredDescription': '充值前需要先绑定您的Web3钱包地址,用于接收充值',
-'wallet.web3Address.placeholder': '请输入您的Web3钱包地址(0x开头)',
-'wallet.web3Address.save': '保存钱包地址',
-'wallet.web3Address.saveSuccess': '钱包地址保存成功',
-'wallet.web3Address.saveFailed': '保存钱包地址失败',
-'wallet.web3Address.invalidFormat': '请输入有效的Web3钱包地址(以太坊格式:0x开头42位字符,或TRC20格式:T开头34位字符)',
-'wallet.selectCoin': '选择币种',
-'wallet.selectChain': '选择链',
-'wallet.chain.eth': 'ETH(ERC20)',
-'wallet.chain.trc20': 'TRC20',
-'wallet.chain.bsc': 'BSC',
-'wallet.targetQdtAmount': '想要兑换的QDT数量(可选)',
-'wallet.targetQdtAmount.placeholder': '请输入想要兑换的QDT数量,当前QDT价格:{price} USDT',
-'wallet.targetQdtAmount.requiredUsdt': '需要充值:{amount} USDT',
-'wallet.rechargeAddress': '充值地址',
-'wallet.copyAddress': '复制',
-'wallet.copySuccess': '复制成功!',
-'wallet.copyFailed': '复制失败,请手动复制',
-'wallet.rechargeAddressHint': '请确保使用{chain}链向此地址充值{coin}',
-'wallet.qdtPrice.loading': '加载中...',
-'wallet.rechargeTip.new': '请选择币种和链,然后扫描下方二维码进行充值',
-'wallet.exchangeRate': '1 QDT ≈ {rate} USDT',
-'wallet.withdrawableAmount': '可提现金额',
-'wallet.totalBalance': '总余额',
-'wallet.insufficientWithdrawable': '可提现金额不足,当前可提现:{amount} QDT',
-'wallet.withdrawAddressRequired': '请输入提现地址',
-'wallet.withdrawAddressHint': '请确保地址正确,提现后无法撤销',
-'wallet.withdrawSubmitSuccess': '提现申请提交成功,请等待审核',
-'menu.footer.contactUs': '联系我们',
-'menu.footer.getSupport': '获取支持',
-'menu.footer.socialAccounts': '社交账户',
-'menu.footer.userAgreement': '用户协议',
-'menu.footer.privacyPolicy': '隐私条例',
-'menu.footer.support': 'Support',
-'menu.footer.featureRequest': 'Feature request',
-'menu.footer.email': 'Email',
-'menu.footer.liveChat': '24/7 live chat',
-'dashboard.analysis.title': 'Multi-Dimensional Analysis',
-'dashboard.analysis.subtitle': 'AI驱动的综合金融分析平台',
-'dashboard.analysis.selectSymbol': '选择或输入标的代码',
-'dashboard.analysis.selectModel': '选择模型',
-'dashboard.analysis.startAnalysis': '开始分析',
-'dashboard.analysis.history': '历史记录',
-'dashboard.analysis.tab.overview': '综合分析',
-'dashboard.analysis.tab.fundamental': '基本面',
-'dashboard.analysis.tab.technical': '技术',
-'dashboard.analysis.tab.news': '新闻',
-'dashboard.analysis.tab.sentiment': '情绪',
-'dashboard.analysis.tab.risk': '风险',
-'dashboard.analysis.tab.debate': '多空辩论',
-'dashboard.analysis.tab.decision': '最终决策',
-'dashboard.analysis.empty.selectSymbol': '选择标的开始分析',
-'dashboard.analysis.empty.selectSymbolDesc': '从自选股列表中选择或输入标的代码,获取多维度AI分析报告',
-'dashboard.analysis.empty.startAnalysis': '点击"开始分析"按钮进行多维度分析',
-'dashboard.analysis.empty.startAnalysisDesc': '我们将从基本面、技术、新闻、情绪和风险等多个维度为您提供全面的分析',
-'dashboard.analysis.empty.noData': '暂无{type}分析数据,请先进行综合分析',
-'dashboard.analysis.empty.noWatchlist': '暂无自选股',
-'dashboard.analysis.empty.noHistory': '暂无历史记录',
-'dashboard.analysis.empty.watchlistHint': '暂无自选股,请先',
-'dashboard.analysis.empty.noDebateData': '暂无辩论数据',
-'dashboard.analysis.empty.noDecisionData': '暂无决策数据',
-'dashboard.analysis.empty.selectAgent': '请选择一个 Agent 查看分析结果',
-'dashboard.analysis.loading.analyzing': '正在分析中,请稍候...',
-'dashboard.analysis.loading.fundamental': '正在分析基本面数据...',
-'dashboard.analysis.loading.technical': '正在分析技术指标...',
-'dashboard.analysis.loading.news': '正在分析新闻数据...',
-'dashboard.analysis.loading.sentiment': '正在分析市场情绪...',
-'dashboard.analysis.loading.risk': '正在评估风险...',
-'dashboard.analysis.loading.debate': '正在进行多空辩论...',
-'dashboard.analysis.loading.decision': '正在生成最终决策...',
-'dashboard.analysis.score.overall': '综合评分',
-'dashboard.analysis.score.recommendation': '投资建议',
-'dashboard.analysis.score.confidence': '置信度',
-'dashboard.analysis.dimension.fundamental': '基本面',
-'dashboard.analysis.dimension.technical': '技术',
-'dashboard.analysis.dimension.news': '新闻',
-'dashboard.analysis.dimension.sentiment': '情绪',
-'dashboard.analysis.dimension.risk': '风险',
-'dashboard.analysis.card.dimensionScores': '各维度评分',
-'dashboard.analysis.card.overviewReport': '综合分析报告',
-'dashboard.analysis.card.financialMetrics': '财务指标',
-'dashboard.analysis.card.fundamentalReport': '基本面分析报告',
-'dashboard.analysis.card.technicalIndicators': '技术指标',
-'dashboard.analysis.card.technicalReport': '技术分析报告',
-'dashboard.analysis.card.newsList': '相关新闻',
-'dashboard.analysis.card.newsReport': '新闻分析报告',
-'dashboard.analysis.card.sentimentIndicators': '情绪指标',
-'dashboard.analysis.card.sentimentReport': '情绪分析报告',
-'dashboard.analysis.card.riskMetrics': '风险指标',
-'dashboard.analysis.card.riskReport': '风险评估报告',
-'dashboard.analysis.card.bullView': '看涨观点 (Bull)',
-'dashboard.analysis.card.bearView': '看跌观点 (Bear)',
-'dashboard.analysis.card.researchConclusion': '研究员结论',
-'dashboard.analysis.card.traderPlan': '交易员计划',
-'dashboard.analysis.card.riskDebate': '风险委员会辩论',
-'dashboard.analysis.card.finalDecision': '最终决策 (Final Decision)',
-'dashboard.analysis.card.tradePlanDetail': '交易计划详情',
-'dashboard.analysis.tradingPlan.entry_price': '入场价格',
-'dashboard.analysis.tradingPlan.position_size': '仓位大小',
-'dashboard.analysis.tradingPlan.stop_loss': '止损',
-'dashboard.analysis.tradingPlan.take_profit': '止盈',
-'dashboard.analysis.label.confidence': '置信度',
-'dashboard.analysis.label.keyPoints': '核心要点',
-'dashboard.analysis.label.riskWarning': '风险提示',
-'dashboard.analysis.risk.risky': '激进派观点 (Risky)',
-'dashboard.analysis.risk.neutral': '中立派观点 (Neutral)',
-'dashboard.analysis.risk.safe': '保守派观点 (Safe)',
-'dashboard.analysis.risk.conclusion': '结论',
-'dashboard.analysis.feature.fundamental': '基本面分析',
-'dashboard.analysis.feature.technical': '技术分析',
-'dashboard.analysis.feature.news': '新闻分析',
-'dashboard.analysis.feature.sentiment': '情绪分析',
-'dashboard.analysis.feature.risk': '风险评估',
-'dashboard.analysis.watchlist.title': '我的自选股',
-'dashboard.analysis.watchlist.add': '添加',
-'dashboard.analysis.watchlist.addStock': '添加股票',
-'dashboard.analysis.modal.addStock.title': '添加自选股',
-'dashboard.analysis.modal.addStock.confirm': '确定',
-'dashboard.analysis.modal.addStock.cancel': '取消',
-'dashboard.analysis.modal.addStock.market': '市场类型',
-'dashboard.analysis.modal.addStock.marketPlaceholder': '请选择市场',
-'dashboard.analysis.modal.addStock.marketRequired': '请选择市场类型',
-'dashboard.analysis.modal.addStock.symbol': '股票代码',
-'dashboard.analysis.modal.addStock.symbolPlaceholder': '例如: AAPL, TSLA, GOOGL, 000001, BTC',
-'dashboard.analysis.modal.addStock.symbolRequired': '请输入股票代码',
-'dashboard.analysis.modal.addStock.searchPlaceholder': '搜索标的代码或名称',
-'dashboard.analysis.modal.addStock.searchOrInputPlaceholder': '搜索或输入标的代码(如:AAPL、BTC/USDT、EUR/USD)',
-'dashboard.analysis.modal.addStock.searchOrInputHint': '支持搜索数据库中的标的,或直接输入代码(系统将自动获取名称)',
-'dashboard.analysis.modal.addStock.search': '搜索',
-'dashboard.analysis.modal.addStock.searchResults': '搜索结果',
-'dashboard.analysis.modal.addStock.hotSymbols': '热门标的',
-'dashboard.analysis.modal.addStock.noHotSymbols': '暂无热门标的',
-'dashboard.analysis.modal.addStock.selectedSymbol': '已选标的',
-'dashboard.analysis.modal.addStock.pleaseSelectSymbol': '请先选择一个标的',
-'dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol': '请先选择一个标的或输入标的代码',
-'dashboard.analysis.modal.addStock.pleaseEnterSymbol': '请输入标的代码',
-'dashboard.analysis.modal.addStock.pleaseSelectMarket': '请先选择市场类型',
-'dashboard.analysis.modal.addStock.searchFailed': '搜索失败,请稍后重试',
-'dashboard.analysis.modal.addStock.noSearchResults': '未找到匹配的标的',
-'dashboard.analysis.modal.addStock.willAutoFetchName': '系统将自动获取名称',
-'dashboard.analysis.modal.addStock.addDirectly': '直接添加',
-'dashboard.analysis.modal.addStock.nameWillBeFetched': '名称将在添加时自动获取',
-'dashboard.analysis.market.AShare': 'A股',
-'dashboard.analysis.market.USStock': '美股',
-'dashboard.analysis.market.HShare': '港股',
-'dashboard.analysis.market.Crypto': '加密货币',
-'dashboard.analysis.market.Forex': '外汇',
-'dashboard.analysis.market.Futures': '期货',
-'dashboard.analysis.modal.history.title': '历史分析记录',
-'dashboard.analysis.modal.history.viewResult': '查看结果',
-'dashboard.analysis.modal.history.completeTime': '完成时间',
-'dashboard.analysis.modal.history.error': '错误',
-'dashboard.analysis.status.pending': '待处理',
-'dashboard.analysis.status.processing': '处理中',
-'dashboard.analysis.status.completed': '已完成',
-'dashboard.analysis.status.failed': '失败',
-'dashboard.analysis.message.selectSymbol': '请先选择标的',
-'dashboard.analysis.message.taskCreated': '分析任务已创建,正在后台执行...',
-'dashboard.analysis.message.analysisComplete': '分析完成',
-'dashboard.analysis.message.analysisCompleteCache': '分析完成(使用缓存数据)',
-'dashboard.analysis.message.analysisFailed': '分析失败,请稍后重试',
-'dashboard.analysis.message.addStockSuccess': '添加成功',
-'dashboard.analysis.message.addStockFailed': '添加失败',
-'dashboard.analysis.message.removeStockSuccess': '移除成功',
-'dashboard.analysis.message.removeStockFailed': '移除失败',
-'dashboard.analysis.message.resumingAnalysis': '正在恢复分析任务...',
-'dashboard.analysis.message.deleteSuccess': '删除成功',
-'dashboard.analysis.message.deleteFailed': '删除失败',
-'dashboard.analysis.modal.history.delete': '删除',
-'dashboard.analysis.modal.history.deleteConfirm': '确定要删除这条分析记录吗?',
-'dashboard.analysis.test': '工专路 {no} 号店',
-'dashboard.analysis.introduce': '指标说明',
-'dashboard.analysis.total-sales': '总销售额',
-'dashboard.analysis.day-sales': '日均销售额¥',
-'dashboard.analysis.visits': '访问量',
-'dashboard.analysis.visits-trend': '访问量趋势',
-'dashboard.analysis.visits-ranking': '门店访问量排名',
-'dashboard.analysis.day-visits': '日访问量',
-'dashboard.analysis.week': '周同比',
-'dashboard.analysis.day': '日同比',
-'dashboard.analysis.payments': '支付笔数',
-'dashboard.analysis.conversion-rate': '转化率',
-'dashboard.analysis.operational-effect': '运营活动效果',
-'dashboard.analysis.sales-trend': '销售趋势',
-'dashboard.analysis.sales-ranking': '门店销售额排名',
-'dashboard.analysis.all-year': '全年',
-'dashboard.analysis.all-month': '本月',
-'dashboard.analysis.all-week': '本周',
-'dashboard.analysis.all-day': '今日',
-'dashboard.analysis.search-users': '搜索用户数',
-'dashboard.analysis.per-capita-search': '人均搜索次数',
-'dashboard.analysis.online-top-search': '线上热门搜索',
-'dashboard.analysis.the-proportion-of-sales': '销售额类别占比',
-'dashboard.analysis.dropdown-option-one': '操作一',
-'dashboard.analysis.dropdown-option-two': '操作二',
-'dashboard.analysis.channel.all': '全部渠道',
-'dashboard.analysis.channel.online': '线上',
-'dashboard.analysis.channel.stores': '门店',
-'dashboard.analysis.sales': '销售额',
-'dashboard.analysis.traffic': '客流量',
-'dashboard.analysis.table.rank': '排名',
-'dashboard.analysis.table.search-keyword': '搜索关键词',
-'dashboard.analysis.table.users': '用户数',
-'dashboard.analysis.table.weekly-range': '周涨幅',
-'dashboard.indicator.selectSymbol': '选择或输入标的代码',
-'dashboard.indicator.emptyWatchlistHint': '暂无自选股,请先添加',
-'dashboard.indicator.hint.selectSymbol': '请选择标的开始分析',
-'dashboard.indicator.hint.selectSymbolDesc': '在上方搜索框中选择或输入股票代码,查看K线图表和技术指标',
-'dashboard.indicator.retry': '重试',
-'dashboard.indicator.panel.title': '技术指标',
-'dashboard.indicator.panel.realtimeOn': '关闭实时更新',
-'dashboard.indicator.panel.realtimeOff': '开启实时更新',
-'dashboard.indicator.panel.themeLight': '切换到深色主题',
-'dashboard.indicator.panel.themeDark': '切换到浅色主题',
-'dashboard.indicator.section.enabled': '已启用',
-'dashboard.indicator.section.added': '我添加的指标',
-'dashboard.indicator.section.custom': '自己创建的指标',
-'dashboard.indicator.section.bought': '我选购的指标',
-'dashboard.indicator.section.myCreated': '我创建的指标',
-'dashboard.indicator.empty': '暂无指标,请先添加或创建指标',
-'dashboard.indicator.buy': '购买指标',
-'dashboard.indicator.action.start': '启动',
-'dashboard.indicator.action.stop': '关闭',
-'dashboard.indicator.action.edit': '编辑',
-'dashboard.indicator.action.delete': '删除',
-'dashboard.indicator.action.backtest': '回测',
-'dashboard.indicator.status.normal': '正常',
-'dashboard.indicator.status.normalPermanent': '正常(永久有效)',
-'dashboard.indicator.status.expired': '已过期',
-'dashboard.indicator.expiry.permanent': '永久有效',
-'dashboard.indicator.expiry.noExpiry': '无到期时间',
-'dashboard.indicator.expiry.expired': '已过期:{date}',
-'dashboard.indicator.expiry.expiresOn': '到期时间:{date}',
-'dashboard.indicator.delete.confirmTitle': '确认删除',
-'dashboard.indicator.delete.confirmContent': '确定要删除指标"{name}"吗?此操作不可恢复。',
-'dashboard.indicator.delete.confirmOk': '删除',
-'dashboard.indicator.delete.confirmCancel': '取消',
-'dashboard.indicator.delete.success': '删除成功',
-'dashboard.indicator.delete.failed': '删除失败',
-'dashboard.indicator.save.success': '保存成功',
-'dashboard.indicator.save.failed': '保存失败',
-'dashboard.indicator.error.loadWatchlistFailed': '加载自选股失败',
-'dashboard.indicator.error.chartNotReady': '图表组件未初始化,请先选择标的并等待图表加载完成',
-'dashboard.indicator.error.chartMethodNotReady': '图表组件方法未就绪,请稍后重试',
-'dashboard.indicator.error.chartExecuteNotReady': '图表组件执行方法未就绪,请稍后重试',
-'dashboard.indicator.error.parseFailed': '无法解析Python代码',
-'dashboard.indicator.error.parseFailedCheck': '无法解析Python代码,请检查代码格式',
-'dashboard.indicator.error.addIndicatorFailed': '添加指标失败',
-'dashboard.indicator.error.runIndicatorFailed': '运行指标失败',
-'dashboard.indicator.error.pleaseLogin': '请先登录',
-'dashboard.indicator.error.loadDataFailed': '数据加载失败',
-'dashboard.indicator.error.loadDataFailedDesc': '请检查网络连接',
-'dashboard.indicator.error.tiingoSubscription': '外汇1分钟数据需要 Tiingo 付费订阅,请使用其他时间周期或升级订阅',
-'dashboard.indicator.error.pythonEngineFailed': 'Python 引擎加载失败,指标功能可能无法使用',
-'dashboard.indicator.error.chartInitFailed': '图表初始化失败',
-'dashboard.indicator.warning.enterCode': '请先输入指标代码',
-'dashboard.indicator.warning.pyodideLoadFailed': 'Python 引擎加载失败',
-'dashboard.indicator.warning.pyodideLoadFailedDesc': '您当前所在区域或网络环境无法使用该功能',
-'dashboard.indicator.warning.chartNotInitialized': '图表未初始化,无法使用画线工具',
-'dashboard.indicator.success.runIndicator': '指标运行成功',
-'dashboard.indicator.success.clearDrawings': '已清除所有画线',
-'dashboard.indicator.sma': 'SMA (均线组合)',
-'dashboard.indicator.ema': 'EMA (指数均线组合)',
-'dashboard.indicator.rsi': 'RSI (相对强弱)',
-'dashboard.indicator.macd': 'MACD',
-'dashboard.indicator.bb': '布林带 (Bollinger Bands)',
-'dashboard.indicator.atr': 'ATR (平均真实波幅)',
-'dashboard.indicator.cci': 'CCI (商品通道指数)',
-'dashboard.indicator.williams': 'Williams %R (威廉指标)',
-'dashboard.indicator.mfi': 'MFI (资金流量指标)',
-'dashboard.indicator.adx': 'ADX (平均趋向指数)',
-'dashboard.indicator.obv': 'OBV (能量潮)',
-'dashboard.indicator.adosc': 'ADOSC (积累/派发振荡器)',
-'dashboard.indicator.ad': 'AD (积累/派发线)',
-'dashboard.indicator.kdj': 'KDJ (随机指标)',
-'dashboard.indicator.signal.buy': 'BUY',
-'dashboard.indicator.signal.sell': 'SELL',
-'dashboard.indicator.signal.supertrendBuy': 'SuperTrend Buy',
-'dashboard.indicator.signal.supertrendSell': 'SuperTrend Sell',
-'dashboard.indicator.chart.kline': 'K线',
-'dashboard.indicator.chart.volume': '成交量',
-'dashboard.indicator.chart.uptrend': 'Up Trend',
-'dashboard.indicator.chart.downtrend': 'Down Trend',
-'dashboard.indicator.tooltip.time': '时间',
-'dashboard.indicator.tooltip.open': '开',
-'dashboard.indicator.tooltip.close': '收',
-'dashboard.indicator.tooltip.high': '高',
-'dashboard.indicator.tooltip.low': '低',
-'dashboard.indicator.tooltip.volume': '成交量',
-'dashboard.indicator.drawing.line': '线段',
-'dashboard.indicator.drawing.horizontalLine': '水平线',
-'dashboard.indicator.drawing.verticalLine': '垂直线',
-'dashboard.indicator.drawing.ray': '射线',
-'dashboard.indicator.drawing.straightLine': '直线',
-'dashboard.indicator.drawing.parallelLine': '平行线',
-'dashboard.indicator.drawing.priceLine': '价格线',
-'dashboard.indicator.drawing.priceChannel': '价格通道',
-'dashboard.indicator.drawing.fibonacciLine': '斐波那契线',
-'dashboard.indicator.drawing.clearAll': '清除所有画线',
-'dashboard.indicator.market.AShare': 'A股',
-'dashboard.indicator.market.USStock': '美股',
-'dashboard.indicator.market.HShare': '港股',
-'dashboard.indicator.market.Crypto': '加密货币',
-'dashboard.indicator.market.Forex': '外汇',
-'dashboard.indicator.market.Futures': '期货',
-'dashboard.indicator.create': '创建指标',
-'dashboard.indicator.editor.title': '创建/编辑指标',
-'dashboard.indicator.editor.name': '指标名称',
-'dashboard.indicator.editor.nameRequired': '请输入指标名称',
-'dashboard.indicator.editor.namePlaceholder': '请输入指标名称',
-'dashboard.indicator.editor.description': '指标描述',
-'dashboard.indicator.editor.descriptionPlaceholder': '请输入指标描述(可选)',
-'dashboard.indicator.editor.code': '指标脚本(Python)',
-'dashboard.indicator.editor.codeRequired': '请输入指标代码',
-'dashboard.indicator.editor.codePlaceholder': '请输入Python代码',
-'dashboard.indicator.editor.run': '运行',
-'dashboard.indicator.editor.runHint': '点击运行按钮可以在K线图上预览指标效果',
-'dashboard.indicator.editor.guide': '开发指南',
-'dashboard.indicator.editor.guideTitle': 'Python 指标开发指南',
-'dashboard.indicator.editor.save': '保存',
-'dashboard.indicator.editor.cancel': '取消',
-'dashboard.indicator.editor.unnamed': '未命名指标',
-'dashboard.indicator.editor.publishToCommunity': '发布到社区',
-'dashboard.indicator.editor.publishToCommunityHint': '发布后,其他用户可以在社区中查看和使用您的指标',
-'dashboard.indicator.editor.indicatorType': '指标类型',
-'dashboard.indicator.editor.indicatorTypeRequired': '请选择指标类型',
-'dashboard.indicator.editor.indicatorTypePlaceholder': '请选择指标类型',
-'dashboard.indicator.editor.previewImage': '预览图',
-'dashboard.indicator.editor.uploadImage': '上传图片',
-'dashboard.indicator.editor.previewImageHint': '建议尺寸:800x400,大小不超过2MB',
-'dashboard.indicator.editor.pricing': '售价(QDT)',
-'dashboard.indicator.editor.pricingType.free': '免费',
-'dashboard.indicator.editor.pricingType.permanent': '永久',
-'dashboard.indicator.editor.pricingType.monthly': '月付',
-'dashboard.indicator.editor.price': '价格',
-'dashboard.indicator.editor.priceRequired': '请输入价格',
-'dashboard.indicator.editor.pricePlaceholder': '请输入价格',
-'dashboard.indicator.editor.pricingHint': '免费指标虽然价格为0,但平台会根据您的指标使用量和好评率给予奖励(QDT)',
-'dashboard.indicator.editor.aiGenerate': '智能生成',
-'dashboard.indicator.editor.aiPromptPlaceholder': '请描述你的信号逻辑(只输出 buy/sell)与绘图(plots)。仓位/风控/加减仓请在回测配置中设定。',
-'dashboard.indicator.editor.aiGenerateBtn': 'AI生成代码',
-'dashboard.indicator.editor.aiPromptRequired': '请输入您的想法',
-'dashboard.indicator.editor.aiGenerateSuccess': '代码生成成功',
-'dashboard.indicator.editor.aiGenerateError': '代码生成失败,请稍后重试',
-'dashboard.indicator.editor.verifyCode': '代码检查',
-'dashboard.indicator.editor.verifyCodeSuccess': '代码检查通过',
-'dashboard.indicator.editor.verifyCodeFailed': '代码检查未通过',
-'dashboard.indicator.editor.verifyCodeEmpty': '代码不能为空',
-'dashboard.indicator.boundary.message': '提示:指标脚本只负责“计算 + 绘图 + buy/sell 信号”;仓位、风控、加减仓、手续费/滑点属于策略执行配置。',
-'dashboard.indicator.boundary.indicatorRule': "指标脚本请只输出 buy/sell(并设定 df['buy']/df['sell'])。不要在脚本内撰写仓位管理、止盈止损、加减仓。",
-'dashboard.indicator.boundary.backtestRule': '规则:同一根K线若出现主信号(buy/sell→开/平仓/反手),本K线将跳过所有加仓与减仓。',
-'dashboard.indicator.backtest.title': '指标回测',
-'dashboard.indicator.backtest.config': '回测参数',
-'dashboard.indicator.backtest.startDate': '开始日期',
-'dashboard.indicator.backtest.endDate': '结束日期',
-'dashboard.indicator.backtest.selectStartDate': '选择开始日期',
-'dashboard.indicator.backtest.selectEndDate': '选择结束日期',
-'dashboard.indicator.backtest.startDateRequired': '请选择开始日期',
-'dashboard.indicator.backtest.endDateRequired': '请选择结束日期',
-'dashboard.indicator.backtest.initialCapital': '初始资金',
-'dashboard.indicator.backtest.initialCapitalRequired': '请输入初始资金',
-'dashboard.indicator.backtest.commission': '手续费率(%)',
-'dashboard.indicator.backtest.commissionHint': '按名义价值(含杠杆)收取;每笔成交(开/平仓)都会从余额扣除。',
-'dashboard.indicator.backtest.leverage': '杠杆倍率',
-'dashboard.indicator.backtest.timeframe': 'K线周期',
-'dashboard.indicator.backtest.tradeDirection': '交易方向',
-'dashboard.indicator.backtest.longOnly': '做多',
-'dashboard.indicator.backtest.shortOnly': '做空',
-'dashboard.indicator.backtest.both': '双向',
-'dashboard.indicator.backtest.run': '开始回测',
-'dashboard.indicator.backtest.rerun': '重新回测',
-'dashboard.indicator.backtest.close': '关闭',
-'dashboard.indicator.backtest.running': '正在进行指标回测...',
-'dashboard.indicator.backtest.loadingTip1': '正在获取历史K线数据...',
-'dashboard.indicator.backtest.loadingTip2': '正在执行策略信号计算...',
-'dashboard.indicator.backtest.loadingTip3': '正在模拟交易执行...',
-'dashboard.indicator.backtest.loadingTip4': '正在计算回测指标...',
-'dashboard.indicator.backtest.loadingTip5': '即将完成,请稍候...',
-'dashboard.indicator.backtest.results': '回测结果',
-'dashboard.indicator.backtest.totalReturn': '总收益率',
-'dashboard.indicator.backtest.annualReturn': '年化收益',
-'dashboard.indicator.backtest.maxDrawdown': '最大回撤',
-'dashboard.indicator.backtest.sharpeRatio': '夏普比率',
-'dashboard.indicator.backtest.winRate': '胜率',
-'dashboard.indicator.backtest.profitFactor': '盈亏比',
-'dashboard.indicator.backtest.totalTrades': '交易次数',
-'dashboard.indicator.totalReturn': '总收益率',
-'dashboard.indicator.annualReturn': '年化收益率',
-'dashboard.indicator.maxDrawdown': '最大回撤',
-'dashboard.indicator.sharpeRatio': '夏普比率',
-'dashboard.indicator.winRate': '胜率',
-'dashboard.indicator.profitFactor': '盈亏比',
-'dashboard.indicator.totalTrades': '总交易次数',
-'dashboard.indicator.backtest.totalCommission': '总手续费',
-'dashboard.indicator.backtest.equityCurve': '收益曲线',
-'dashboard.indicator.backtest.strategy': '指标收益',
-'dashboard.indicator.backtest.benchmark': '基准收益',
-'dashboard.indicator.backtest.tradeHistory': '交易记录',
-'dashboard.indicator.backtest.tradeTime': '时间',
-'dashboard.indicator.backtest.tradeType': '类型',
-'dashboard.indicator.backtest.buy': '买入',
-'dashboard.indicator.backtest.sell': '卖出',
-'dashboard.indicator.backtest.liquidation': '爆仓',
-'dashboard.indicator.backtest.openLong': '开多',
-'dashboard.indicator.backtest.closeLong': '平多',
-'dashboard.indicator.backtest.closeLongStop': '平多(止损)',
-'dashboard.indicator.backtest.closeLongProfit': '平多(止盈)',
-'dashboard.indicator.backtest.addLong': '加多仓',
-'dashboard.indicator.backtest.openShort': '开空',
-'dashboard.indicator.backtest.closeShort': '平空',
-'dashboard.indicator.backtest.closeShortStop': '平空(止损)',
-'dashboard.indicator.backtest.closeShortProfit': '平空(止盈)',
-'dashboard.indicator.backtest.addShort': '加空仓',
-'dashboard.indicator.backtest.price': '价格',
-'dashboard.indicator.backtest.amount': '数量',
-'dashboard.indicator.backtest.balance': '账户余额',
-'dashboard.indicator.backtest.profit': '盈亏',
-'dashboard.indicator.backtest.success': '回测完成',
-'dashboard.indicator.backtest.failed': '回测失败,请稍后重试',
-'dashboard.indicator.backtest.quickSelect': '快速选择',
-// 多时间框架回测精度提示
-'dashboard.indicator.backtest.precisionMode': '回测精度模式',
-'dashboard.indicator.backtest.estimatedCandles': '预计处理约 {count} 根K线',
-'dashboard.indicator.backtest.highPrecisionDesc': '使用1分钟级别K线进行高精度回测,止损止盈触发更精确',
-'dashboard.indicator.backtest.mediumPrecisionDesc': '回测区间超过30天,使用5分钟级别K线以平衡精度与性能',
-'dashboard.indicator.backtest.standardModeWarning': '使用标准回测模式',
-'dashboard.indicator.backtest.standardModeDesc': '当前配置不支持高精度回测,将使用策略K线进行回测',
-'dashboard.indicator.backtest.onlyCryptoSupported': '高精度回测仅支持加密货币市场',
-'dashboard.indicator.backtest.noIndicatorCode': '该指标没有可回测的代码',
-'dashboard.indicator.backtest.noSymbol': '请先选择交易标的',
-'dashboard.indicator.backtest.dateRangeExceeded': '回测时间范围超出限制:{timeframe}周期最多可回测{maxRange}',
-'dashboard.indicator.backtest.dateRangeExceededDays': '回测时间范围超出限制:{timeframe}周期最多可回测{maxRange}({maxDays}天)',
-'dashboard.indicator.backtest.metaLine': '标的:{symbol} | 市场:{market} | 周期:{timeframe}',
-'dashboard.indicator.backtest.savedRunId': '回测已保存,记录ID:{id}',
-'dashboard.indicator.backtest.historyTitle': '回测记录',
-'dashboard.indicator.backtest.historyRefresh': '刷新',
-'dashboard.indicator.backtest.historyView': '查看',
-'dashboard.indicator.backtest.historyNoData': '暂无回测记录',
-'dashboard.indicator.backtest.historyUseCurrent': '仅目前币种/周期',
-'dashboard.indicator.backtest.historyFilterSymbol': '币种(Symbol)',
-'dashboard.indicator.backtest.historyFilterTimeframe': '周期(Timeframe)',
-'dashboard.indicator.backtest.historyApply': '应用筛选',
-'dashboard.indicator.backtest.historyAIAnalyze': 'AI分析',
-'dashboard.indicator.backtest.historyAIAnalyzeTitle': 'AI 分析建议',
-'dashboard.indicator.backtest.historyNoAIResult': '暂无 AI 分析结果',
-'dashboard.indicator.backtest.historyRunId': '记录ID',
-'dashboard.indicator.backtest.historyCreatedAt': '时间',
-'dashboard.indicator.backtest.historyRange': '区间',
-'dashboard.indicator.backtest.historyStatus': '状态',
-'dashboard.indicator.backtest.historyStatusSuccess': '成功',
-'dashboard.indicator.backtest.historyStatusFailed': '失败',
-'dashboard.indicator.backtest.historyActions': '操作',
-'dashboard.indicator.backtest.prev': '上一步',
-'dashboard.indicator.backtest.next': '下一步',
-'dashboard.indicator.backtest.steps.strategy.title': '执行配置',
-'dashboard.indicator.backtest.steps.strategy.desc': '仓位/风控/加减仓(策略层)',
-'dashboard.indicator.backtest.steps.trading.title': '回测环境',
-'dashboard.indicator.backtest.steps.trading.desc': '时间/资金/费率/杠杆/滑点',
-'dashboard.indicator.backtest.steps.results.title': '结果',
-'dashboard.indicator.backtest.steps.results.desc': '统计与交易明细',
-'dashboard.indicator.backtest.panel.risk': '执行配置:风控(止损/移动止盈)',
-'dashboard.indicator.backtest.panel.scale': '执行配置:加仓(顺势/逆势)',
-'dashboard.indicator.backtest.panel.reduce': '执行配置:减仓(顺势/逆势)',
-'dashboard.indicator.backtest.panel.position': '执行配置:开仓仓位',
-'dashboard.indicator.backtest.field.stopLossPct': '止损(%)',
-'dashboard.indicator.backtest.field.takeProfitPct': '止盈(%)',
-'dashboard.indicator.backtest.field.trailingEnabled': '移动止盈',
-'dashboard.indicator.backtest.field.trailingStopPct': '移动回撤(%)',
-'dashboard.indicator.backtest.field.trailingActivationPct': '移动止盈激活(%)',
-'dashboard.indicator.backtest.field.slippage': '滑点(%)',
-'dashboard.indicator.backtest.field.trendAddEnabled': '顺势加仓',
-'dashboard.indicator.backtest.field.dcaAddEnabled': '逆势加仓',
-'dashboard.indicator.backtest.field.trendAddStepPct': '加仓触发(%)',
-'dashboard.indicator.backtest.field.dcaAddStepPct': '加仓触发(%)',
-'dashboard.indicator.backtest.field.trendAddSizePct': '每次加仓资金占比(%)',
-'dashboard.indicator.backtest.field.dcaAddSizePct': '每次加仓资金占比(%)',
-'dashboard.indicator.backtest.field.trendAddMaxTimes': '最多加仓次数',
-'dashboard.indicator.backtest.field.dcaAddMaxTimes': '最多加仓次数',
-'dashboard.indicator.backtest.field.trendReduceEnabled': '顺势减仓',
-'dashboard.indicator.backtest.field.adverseReduceEnabled': '逆势减仓',
-'dashboard.indicator.backtest.field.trendReduceStepPct': '顺势触发(%)',
-'dashboard.indicator.backtest.field.adverseReduceStepPct': '逆势触发(%)',
-'dashboard.indicator.backtest.field.trendReduceSizePct': '每次减仓比例(%)',
-'dashboard.indicator.backtest.field.adverseReduceSizePct': '每次逆势减仓比例(%)',
-'dashboard.indicator.backtest.field.trendReduceMaxTimes': '最多顺势减仓次数',
-'dashboard.indicator.backtest.field.adverseReduceMaxTimes': '最多逆势减仓次数',
-'dashboard.indicator.backtest.field.entryPct': '开仓资金占比(%)',
-'dashboard.indicator.backtest.field.minOrderPct': '单次最小资金占比(%)(可选)',
-'dashboard.indicator.backtest.hint.entryPctMax': '最大可开仓:{maxPct}%(为后续加仓预留资金)',
-'dashboard.indicator.backtest.closeLongTrailing': '平多(移动止损/止盈)',
-'dashboard.indicator.backtest.reduceLong': '多头减仓',
-'dashboard.indicator.backtest.closeShortTrailing': '平空(移动止损/止盈)',
-'dashboard.indicator.backtest.reduceShort': '空头减仓',
-'dashboard.docs.title': '文档中心',
-'dashboard.docs.search.placeholder': '搜索文档...',
-'dashboard.docs.category.all': '全部',
-'dashboard.docs.category.guide': '开发指南',
-'dashboard.docs.category.api': 'API文档',
-'dashboard.docs.category.tutorial': '教程',
-'dashboard.docs.category.faq': '常见问题',
-'dashboard.docs.featured.title': '推荐文档',
-'dashboard.docs.featured.tag': '推荐',
-'dashboard.docs.list.views': '浏览',
-'dashboard.docs.list.author': '作者',
-'dashboard.docs.list.empty': '暂无文档',
-'dashboard.docs.list.backToAll': '返回全部文档',
-'dashboard.docs.list.total': '共 {count} 篇文档',
-'dashboard.docs.detail.back': '返回文档列表',
-'dashboard.docs.detail.updatedAt': '更新于',
-'dashboard.docs.detail.related': '相关文档',
-'dashboard.docs.detail.notFound': '文档不存在',
-'dashboard.docs.detail.error': '文档不存在或已被删除',
-'dashboard.docs.search.result': '搜索结果',
-'dashboard.docs.search.keyword': '关键词',
-'community.filter.indicatorType': '指标类型',
-'community.filter.all': '全部',
-'community.filter.other': '其他选项',
-'community.filter.pricing': '定价类型',
-'community.filter.allPricing': '全部定价',
-'community.filter.sortBy': '排序方式',
-'community.filter.search': '搜索',
-'community.filter.searchPlaceholder': '搜索指标名称',
-'community.indicatorType.trend': '趋势型',
-'community.indicatorType.momentum': '动量型',
-'community.indicatorType.volatility': '波动率',
-'community.indicatorType.volume': '成交量',
-'community.indicatorType.custom': '自定义',
-'community.pricing.free': '免费',
-'community.pricing.paid': '付费',
-'community.sort.downloads': '下载量',
-'community.sort.rating': '评分',
-'community.sort.newest': '最新发布',
-'community.pagination.total': '共 {total} 个指标',
-'community.noDescription': '暂无描述',
-'community.detail.type': '类型',
-'community.detail.pricing': '定价',
-'community.detail.rating': '评分',
-'community.detail.downloads': '下载量',
-'community.detail.author': '作者',
-'community.detail.description': '简介',
-'community.detail.detailContent': '详细说明',
-'community.detail.backtestStats': '回测统计',
-'community.action.purchase': '购买指标',
-'community.action.addToMyIndicators': '添加到我的指标',
-'community.action.favorite': '收藏',
-'community.action.unfavorite': '取消收藏',
-'community.action.buyNow': '立即购买',
-'community.action.renew': '续费',
-'community.purchase.price': '价格',
-'community.purchase.permanent': '永久',
-'community.purchase.monthly': '月',
-'community.purchase.confirmBuy': '确认购买该指标({price} QDT)?',
-'community.purchase.confirmRenew': '确认续费该指标({price} QDT/月)?',
-'community.purchase.confirmFree': '确认添加该免费指标?',
-'community.purchase.confirmTitle': '确认操作',
-'community.purchase.owned': '您已购买该指标(永久有效)',
-'community.purchase.ownIndicator': '这是您发布的指标',
-'community.purchase.expired': '您的订阅已过期',
-'community.purchase.expiresOn': '到期时间:{date}',
-'community.tabs.detail': '指标详情',
-'community.tabs.backtest': '回测数据',
-'community.tabs.ratings': '用户评价',
-'community.rating.myRating': '我的评分',
-'community.rating.stars': '{count} 星',
-'community.rating.commentPlaceholder': '分享您的使用体验...',
-'community.rating.submit': '提交评分',
-'community.rating.modify': '修改',
-'community.rating.saveModify': '保存修改',
-'community.rating.cancel': '取消',
-'community.rating.selectRating': '请选择评分',
-'community.rating.success': '评分成功',
-'community.rating.modifySuccess': '修改评价成功',
-'community.rating.failed': '评分失败',
-'community.rating.noRatings': '暂无评价',
-'community.backtest.note': '以上数据为历史回测结果,仅供参考,不代表未来收益',
-'community.backtest.noData': '暂无回测数据',
-'community.backtest.uploadHint': '作者尚未上传回测数据',
-'community.message.loadFailed': '加载指标列表失败',
-'community.message.purchaseProcessing': '正在处理购买请求...',
-'community.message.downloadSuccess': '指标已添加到我的指标列表',
-'community.message.favoriteSuccess': '收藏成功',
-'community.message.unfavoriteSuccess': '取消收藏成功',
-'community.message.operationSuccess': '操作成功',
-'community.message.operationFailed': '操作失败',
-'community.banner.readOnly': '仅供浏览',
-'community.banner.loginHint': '如需登录注册请点击按钮跳转到独立页面,从而避免CSRF问题',
-'community.banner.jumpButton': '跳转到登录/注册',
-'dashboard.totalEquity': '总权益',
-'dashboard.totalPnL': '总盈亏',
-'dashboard.aiStrategies': 'AI 策略',
-'dashboard.indicatorStrategies': '指标策略',
-'dashboard.running': '运行中',
-'dashboard.enabled': '已启用',
-'dashboard.pnlHistory': '历史盈亏',
-'dashboard.strategyPerformance': '策略盈亏占比',
-'dashboard.drawdown': '回撤曲线',
-'dashboard.strategyRanking': '策略排行榜',
-// New KPI labels
-'dashboard.winRate': '胜率',
-'dashboard.profitFactor': '盈亏比',
-'dashboard.maxDrawdown': '最大回撤',
-'dashboard.totalTrades': '总交易',
-'dashboard.runningStrategies': '运行中策略',
-'dashboard.equityCurve': '权益曲线',
-'dashboard.strategyAllocation': '策略分布',
-'dashboard.drawdownCurve': '回撤曲线',
-'dashboard.hourlyDistribution': '交易时段',
-// Chart labels
-'dashboard.dailyPnl': '日盈亏',
-'dashboard.cumulativePnl': '累计盈亏',
-'dashboard.tradeCount': '交易次数',
-'dashboard.profit': '盈亏',
-'dashboard.noData': '暂无数据',
-'dashboard.noStrategyData': '暂无策略数据',
-// Ranking labels
-'dashboard.ranking.totalProfit': '总收益',
-'dashboard.ranking.roi': '收益率',
-'dashboard.ranking.trades': '交易数',
-// Units and labels
-'dashboard.unit.trades': '笔',
-'dashboard.unit.strategies': '个',
-'dashboard.label.avgDaily': '日均',
-'dashboard.label.avgProfit': '平均盈利',
-'dashboard.label.win': '胜',
-'dashboard.label.lose': '负',
-'dashboard.label.trade': '交易',
-'dashboard.label.indicator': '指标',
-'dashboard.label.totalPnl': '总盈亏',
-'dashboard.label.maxDrawdownPoint': '最大回撤',
-'dashboard.profitCalendar': '收益日历',
-'dashboard.recentTrades': '最近交易',
-'dashboard.currentPositions': '当前持仓',
-'dashboard.table.time': '时间',
-'dashboard.table.strategy': '策略名称',
-'dashboard.table.symbol': '标的',
-'dashboard.table.type': '类型',
-'dashboard.table.side': '方向',
-'dashboard.table.size': '持仓量',
-'dashboard.table.entryPrice': '开仓均价',
-'dashboard.table.price': '价格',
-'dashboard.table.amount': '数量',
-'dashboard.table.profit': '盈亏',
-'dashboard.pendingOrders': '订单执行记录',
-'dashboard.totalOrders': '共 {total} 条',
-'dashboard.viewError': '查看错误',
-'dashboard.filled': '已成交',
-'dashboard.orderTable.time': '创建时间',
-'dashboard.orderTable.strategy': '策略',
-'dashboard.orderTable.symbol': '交易对',
-'dashboard.orderTable.signalType': '信号类型',
-'dashboard.orderTable.amount': '数量',
-'dashboard.orderTable.price': '成交价',
-'dashboard.orderTable.status': '状态',
-'dashboard.orderTable.timeInfo': '时间',
-'dashboard.orderTable.executedAt': '执行时间',
-'dashboard.orderTable.exchange': '交易所',
-'dashboard.orderTable.notify': '通知方式',
-'dashboard.orderTable.actions': '操作',
-'dashboard.orderTable.delete': '删除',
-'dashboard.orderTable.deleteConfirm': '确认删除这条记录?',
-'dashboard.orderTable.deleteSuccess': '删除成功',
-'dashboard.orderTable.deleteFailed': '删除失败',
-'dashboard.newOrderNotify': '新订单提醒',
-'dashboard.newOrderDesc': '有新的订单执行记录',
-'dashboard.soundEnabled': '声音提醒已开启',
-'dashboard.soundDisabled': '声音提醒已关闭',
-'dashboard.clickToMute': '点击关闭声音提醒',
-'dashboard.clickToUnmute': '点击开启声音提醒',
-'dashboard.signalType.openLong': '开多',
-'dashboard.signalType.openShort': '开空',
-'dashboard.signalType.closeLong': '平多',
-'dashboard.signalType.closeShort': '平空',
-'dashboard.signalType.addLong': '加多',
-'dashboard.signalType.addShort': '加空',
-'dashboard.status.pending': '待处理',
-'dashboard.status.processing': '处理中',
-'dashboard.status.completed': '已完成',
-'dashboard.status.failed': '失败',
-'dashboard.status.cancelled': '已取消',
-'dashboard.table.pnl': '未实现盈亏',
-'form.basic-form.basic.title': '基础表单',
-'form.basic-form.basic.description': '表单页用于向用户收集或验证信息,基础表单常见于数据项较少的表单场景。',
-'form.basic-form.title.label': '标题',
-'form.basic-form.title.placeholder': '给目标起个名字',
-'form.basic-form.title.required': '请输入标题',
-'form.basic-form.date.label': '起止日期',
-'form.basic-form.placeholder.start': '开始日期',
-'form.basic-form.placeholder.end': '结束日期',
-'form.basic-form.date.required': '请选择起止日期',
-'form.basic-form.goal.label': '目标描述',
-'form.basic-form.goal.placeholder': '请输入你的阶段性工作目标',
-'form.basic-form.goal.required': '请输入目标描述',
-'form.basic-form.standard.label': '衡量标准',
-'form.basic-form.standard.placeholder': '请输入衡量标准',
-'form.basic-form.standard.required': '请输入衡量标准',
-'form.basic-form.client.label': '客户',
-'form.basic-form.client.required': '请描述你服务的客户',
-'form.basic-form.label.tooltip': '目标的服务对象',
-'form.basic-form.client.placeholder': '请描述你服务的客户,内部客户直接 @姓名/工号',
-'form.basic-form.invites.label': '邀评人',
-'form.basic-form.invites.placeholder': '请直接 @姓名/工号,最多可邀请 5 人',
-'form.basic-form.weight.label': '权重',
-'form.basic-form.weight.placeholder': '请输入',
-'form.basic-form.public.label': '目标公开',
-'form.basic-form.label.help': '客户、邀评人默认被分享',
-'form.basic-form.radio.public': '公开',
-'form.basic-form.radio.partially-public': '部分公开',
-'form.basic-form.radio.private': '不公开',
-'form.basic-form.publicUsers.placeholder': '公开给',
-'form.basic-form.option.A': '同事一',
-'form.basic-form.option.B': '同事二',
-'form.basic-form.option.C': '同事三',
-'form.basic-form.email.required': '请输入邮箱地址!',
-'form.basic-form.email.wrong-format': '邮箱地址格式错误!',
-'form.basic-form.userName.required': '请输入用户名!',
-'form.basic-form.password.required': '请输入密码!',
-'form.basic-form.password.twice': '两次输入的密码不匹配!',
-'form.basic-form.strength.msg': '请至少输入 6 个字符。请不要使用容易被猜到的密码。',
-'form.basic-form.strength.strong': '强度:强',
-'form.basic-form.strength.medium': '强度:中',
-'form.basic-form.strength.short': '强度:太短',
-'form.basic-form.confirm-password.required': '请确认密码!',
-'form.basic-form.phone-number.required': '请输入手机号!',
-'form.basic-form.phone-number.wrong-format': '手机号格式错误!',
-'form.basic-form.verification-code.required': '请输入验证码!',
-'form.basic-form.form.get-captcha': '获取验证码',
-'form.basic-form.captcha.second': '秒',
-'form.basic-form.form.optional': '(选填)',
-'form.basic-form.form.submit': '提交',
-'form.basic-form.form.save': '保存',
-'form.basic-form.email.placeholder': '邮箱',
-'form.basic-form.password.placeholder': '至少6位密码,区分大小写',
-'form.basic-form.confirm-password.placeholder': '确认密码',
-'form.basic-form.phone-number.placeholder': '手机号',
-'form.basic-form.verification-code.placeholder': '验证码',
-'result.success.title': '提交成功',
-'result.success.description': '提交结果页用于反馈一系列操作任务的处理结果, 如果仅是简单操作,使用 Message 全局提示反馈即可。 本文字区域可以展示简单的补充说明,如果有类似展示 “单据”的需求,下面这个灰色区域可以呈现比较复杂的内容。',
-'result.success.operate-title': '项目名称',
-'result.success.operate-id': '项目 ID',
-'result.success.principal': '负责人',
-'result.success.operate-time': '生效时间',
-'result.success.step1-title': '创建项目',
-'result.success.step1-operator': '曲丽丽',
-'result.success.step2-title': '部门初审',
-'result.success.step2-operator': '周毛毛',
-'result.success.step2-extra': '催一下',
-'result.success.step3-title': '财务复核',
-'result.success.step4-title': '完成',
-'result.success.btn-return': '返回列表',
-'result.success.btn-project': '查看项目',
-'result.success.btn-print': '打印',
-'result.fail.error.title': '提交失败',
-'result.fail.error.description': '请核对并修改以下信息后,再重新提交。',
-'result.fail.error.hint-title': '您提交的内容有如下错误:',
-'result.fail.error.hint-text1': '您的账户已被冻结',
-'result.fail.error.hint-btn1': '立即解冻',
-'result.fail.error.hint-text2': '您的账户还不具备申请资格',
-'result.fail.error.hint-btn2': '立即升级',
-'result.fail.error.btn-text': '返回修改',
-'account.settings.menuMap.custom': '个性化',
-'account.settings.menuMap.binding': '账号绑定',
-'account.settings.basic.avatar': '头像',
-'account.settings.basic.change-avatar': '更换头像',
-'account.settings.basic.email': '邮箱',
-'account.settings.basic.email-message': '请输入您的邮箱!',
-'account.settings.basic.nickname': '昵称',
-'account.settings.basic.nickname-message': '请输入您的昵称!',
-'account.settings.basic.profile': '个人简介',
-'account.settings.basic.profile-message': '请输入个人简介!',
-'account.settings.basic.profile-placeholder': '个人简介',
-'account.settings.basic.country': '国家/地区',
-'account.settings.basic.country-message': '请输入您的国家或地区!',
-'account.settings.basic.geographic': '所在省市',
-'account.settings.basic.geographic-message': '请输入您的所在省市!',
-'account.settings.basic.address': '街道地址',
-'account.settings.basic.address-message': '请输入您的街道地址!',
-'account.settings.basic.phone': '联系电话',
-'account.settings.basic.phone-message': '请输入您的联系电话!',
-'account.settings.basic.update': '更新基本信息',
-'account.settings.basic.update.success': '更新基本信息成功',
-'account.settings.security.strong': '强',
-'account.settings.security.medium': '中',
-'account.settings.security.weak': '弱',
-'account.settings.security.password': '账户密码',
-'account.settings.security.password-description': '当前密码强度:',
-'account.settings.security.phone': '密保手机',
-'account.settings.security.phone-description': '已绑定手机:',
-'account.settings.security.question': '密保问题',
-'account.settings.security.question-description': '未设置密保问题,密保问题可有效保护账户安全',
-'account.settings.security.email': '绑定邮箱',
-'account.settings.security.email-description': '已绑定邮箱:',
-'account.settings.security.mfa': 'MFA 设备',
-'account.settings.security.mfa-description': '未绑定 MFA 设备,绑定后,可以进行二次确认',
-'account.settings.security.modify': '修改',
-'account.settings.security.set': '设置',
-'account.settings.security.bind': '绑定',
-'account.settings.binding.taobao': '绑定淘宝',
-'account.settings.binding.taobao-description': '当前未绑定淘宝账号',
-'account.settings.binding.alipay': '绑定支付宝',
-'account.settings.binding.alipay-description': '当前未绑定支付宝账号',
-'account.settings.binding.dingding': '绑定钉钉',
-'account.settings.binding.dingding-description': '当前未绑定钉钉账号',
-'account.settings.binding.bind': '绑定',
-'account.settings.notification.password': '账户密码',
-'account.settings.notification.password-description': '其他用户的消息将以站内信的形式通知',
-'account.settings.notification.messages': '系统消息',
-'account.settings.notification.messages-description': '系统消息将以站内信的形式通知',
-'account.settings.notification.todo': '待办任务',
-'account.settings.notification.todo-description': '待办任务将以站内信的形式通知',
-'account.settings.settings.open': '开',
-'account.settings.settings.close': '关',
-'trading-assistant.title': '交易助手',
-'trading-assistant.strategyList': '策略列表',
-'trading-assistant.createStrategy': '创建策略',
-'trading-assistant.noStrategy': '暂无策略',
-'trading-assistant.selectStrategy': '请从左侧选择一个策略查看详情',
-'trading-assistant.startStrategy': '启动策略',
-'trading-assistant.stopStrategy': '停止策略',
-'trading-assistant.editStrategy': '编辑策略',
-'trading-assistant.deleteStrategy': '删除策略',
-'trading-assistant.startAll': '全部启动',
-'trading-assistant.stopAll': '全部停止',
-'trading-assistant.deleteAll': '全部删除',
-'trading-assistant.symbolCount': '个币种',
-'trading-assistant.status.running': '运行中',
-'trading-assistant.status.stopped': '已停止',
-'trading-assistant.status.error': '错误',
-'trading-assistant.strategyType.IndicatorStrategy': '技术指标策略',
-'trading-assistant.strategyType.PromptBasedStrategy': '提示词策略',
-'trading-assistant.strategyType.GridStrategy': '网格策略',
-'trading-assistant.tabs.tradingRecords': '交易记录',
-'trading-assistant.tabs.positions': '持仓记录',
-'trading-assistant.tabs.equityCurve': '净值曲线',
-'trading-assistant.form.step1': '选择指标',
-'trading-assistant.form.step2': '交易所配置',
-'trading-assistant.form.step3': '策略参数',
-'trading-assistant.form.step2Params': '策略参数',
-'trading-assistant.form.step3Signal': '信号通知',
-'trading-assistant.form.indicator': '选择指标',
-'trading-assistant.form.indicatorHint': '只能选择您已购买或创建的技术指标',
-'trading-assistant.form.qdtCostHints': '使用策略将消耗QDT,请确保账户有足够的QDT余额',
-'trading-assistant.form.indicatorDescription': '指标描述',
-'trading-assistant.form.noDescription': '暂无描述',
-'trading-assistant.form.exchange': '选择交易所',
-'trading-assistant.form.apiKey': 'API Key',
-'trading-assistant.form.secretKey': 'Secret Key',
-'trading-assistant.form.passphrase': 'Passphrase',
-'trading-assistant.form.testConnection': '测试连接',
-'trading-assistant.form.strategyName': '策略名称',
-'trading-assistant.form.symbol': '交易对',
-'trading-assistant.form.symbols': '交易对(多选)',
-'trading-assistant.form.symbolHint': '目前仅支持加密货币交易对',
-'trading-assistant.form.symbolHintCrypto': '加密货币:使用BTC/USDT等交易对格式',
-'trading-assistant.form.symbolsHint': '选择多个交易对,将自动创建多个策略',
-'trading-assistant.form.initialCapital': '投入金额',
-'trading-assistant.form.marketType': '市场类型',
-'trading-assistant.form.marketTypeFutures': '合约',
-'trading-assistant.form.marketTypeSpot': '现货',
-'trading-assistant.form.marketTypeHint': '合约支持双向交易和杠杆,现货仅支持做多且杠杆固定为1倍',
-'trading-assistant.form.leverage': '杠杆倍数',
-'trading-assistant.form.leverageHint': '合约:1-125倍,现货:固定1倍',
-'trading-assistant.form.spotLeverageFixed': '现货交易杠杆固定为1倍',
-'trading-assistant.form.spotOnlyLongHint': '现货交易仅支持做多',
-'trading-assistant.form.tradeDirection': '交易方向',
-'trading-assistant.form.tradeDirectionLong': '仅做多',
-'trading-assistant.form.tradeDirectionShort': '仅做空',
-'trading-assistant.form.tradeDirectionBoth': '双向交易',
-'trading-assistant.form.timeframe': '时间周期',
-'trading-assistant.form.klinePeriod': 'K线周期',
-'trading-assistant.form.timeframe1m': '1分钟',
-'trading-assistant.form.timeframe5m': '5分钟',
-'trading-assistant.form.timeframe15m': '15分钟',
-'trading-assistant.form.timeframe30m': '30分钟',
-'trading-assistant.form.timeframe1H': '1小时',
-'trading-assistant.form.timeframe4H': '4小时',
-'trading-assistant.form.timeframe1D': '1天',
-'trading-assistant.form.selectStrategyType': '选择策略类型',
-'trading-assistant.form.indicatorStrategy': '指标策略',
-'trading-assistant.form.indicatorStrategyDesc': '基于技术指标的自动化交易策略',
-'trading-assistant.form.aiStrategy': 'AI策略',
-'trading-assistant.form.aiStrategyDesc': '基于AI智能决策的自动化交易策略',
-'trading-assistant.form.enableAiFilter': '启用AI智能决策过滤',
-'trading-assistant.form.enableAiFilterHint': '启用后,指标信号将经过AI智能过滤,提高交易质量',
-'trading-assistant.form.aiFilterPrompt': '自定义提示词',
-'trading-assistant.form.aiFilterPromptHint': '为AI过滤提供自定义指令,留空则使用系统默认',
-'trading-assistant.form.executionMode': '执行模式',
-'trading-assistant.form.executionModeSignal': '仅信号通知',
-'trading-assistant.form.executionModeLive': '实盘自动交易',
-'trading-assistant.form.liveTradingCryptoOnlyHint': '实盘交易功能仅支持加密货币市场',
-'trading-assistant.form.liveTradingNotSupportedHint': '当前市场不支持实盘交易',
-'trading-assistant.form.broker': '券商',
-'trading-assistant.form.ibkrConnectionTitle': '盈透证券连接配置',
-'trading-assistant.form.ibkrConnectionHint': '请确保 TWS 或 IB Gateway 已启动并启用 API 连接',
-'trading-assistant.validation.brokerRequired': '请选择券商',
-'trading-assistant.placeholders.selectBroker': '选择券商',
-'trading-assistant.brokerNames': {
- 'ibkr': '盈透证券 (Interactive Brokers)',
- 'mt5': 'MetaTrader 5 (MT5)',
- 'mt4': 'MetaTrader 4 (MT4)',
- 'futu': '富途证券 (Futu)',
- 'tiger': '老虎证券 (Tiger Brokers)',
- 'td': 'TD Ameritrade',
- 'schwab': 'Charles Schwab'
-},
-'trading-assistant.form.ibkrHost': '主机地址',
-'trading-assistant.form.ibkrPort': '端口',
-'trading-assistant.form.ibkrPortHint': 'TWS实盘:7497, TWS模拟:7496, Gateway实盘:4001, Gateway模拟:4002',
-'trading-assistant.form.ibkrClientId': '客户端ID',
-'trading-assistant.form.ibkrAccount': '账户号',
-'trading-assistant.form.ibkrAccountHint': '留空自动选择第一个账户,多账户用户可指定账户号',
-'trading-assistant.placeholders.ibkrAccount': '可选,如 U1234567',
-'trading-assistant.exchange.ibkrConnectionSuccess': '盈透证券连接成功',
-'trading-assistant.exchange.ibkrConnectionFailed': '盈透证券连接失败,请检查 TWS/Gateway 是否运行',
-// MT5/Forex 配置
-'trading-assistant.form.forexBroker': '外汇券商',
-'trading-assistant.form.mt5ConnectionTitle': 'MetaTrader 5 连接配置',
-'trading-assistant.form.mt5ConnectionHint': '请确保 MT5 终端已启动并登录(仅支持 Windows)',
-'trading-assistant.form.mt5Server': '服务器',
-'trading-assistant.form.mt5ServerHint': '券商服务器名称(如:ICMarkets-Demo)',
-'trading-assistant.form.mt5Login': '账户号',
-'trading-assistant.form.mt5Password': '密码',
-'trading-assistant.form.mt5TerminalPath': 'MT5 终端路径(可选)',
-'trading-assistant.form.mt5TerminalPathHint': '如果 MT5 终端未安装在默认位置,请指定 terminal64.exe 的完整路径(例如:C:\\Program Files\\MetaTrader 5\\terminal64.exe)',
-'trading-assistant.placeholders.mt5Server': '例如:ICMarkets-Demo',
-'trading-assistant.placeholders.mt5Login': '例如:12345678',
-'trading-assistant.placeholders.mt5Password': '您的 MT5 密码',
-'trading-assistant.placeholders.mt5TerminalPath': '例如:C:\\Program Files\\MetaTrader 5\\terminal64.exe',
-'trading-assistant.validation.mt5ServerRequired': '请输入 MT5 服务器',
-'trading-assistant.validation.mt5LoginRequired': '请输入 MT5 账户号',
-'trading-assistant.validation.mt5PasswordRequired': '请输入 MT5 密码',
-'trading-assistant.exchange.mt5ConnectionSuccess': 'MT5 连接成功',
-'trading-assistant.exchange.mt5ConnectionFailed': 'MT5 连接失败,请检查终端是否运行',
-'trading-assistant.form.notifyChannels': '通知渠道',
-'trading-assistant.form.notifyChannelsHint': '选择信号触发时的通知方式',
-'trading-assistant.form.notifyEmail': '邮箱地址',
-'trading-assistant.form.notifyPhone': '手机号码',
-'trading-assistant.form.notifyTelegram': 'Telegram ID',
-'trading-assistant.form.notifyDiscord': 'Discord Webhook',
-'trading-assistant.form.notifyWebhook': 'Webhook 地址',
-'trading-assistant.form.liveTradingConfigTitle': '实盘交易配置',
-'trading-assistant.form.liveTradingConfigHint': '请填写交易所API信息,实盘交易将使用您的API进行真实交易',
-'trading-assistant.form.savedCredential': '已保存的凭证',
-'trading-assistant.form.savedCredentialHint': '选择已保存的交易所凭证,自动填充API配置',
-'trading-assistant.form.saveCredential': '保存此凭证以便下次使用',
-'trading-assistant.form.credentialName': '凭证名称',
-'trading-assistant.validation.strategyTypeRequired': '请选择策略类型',
-'trading-assistant.form.advancedSettings': '高级设置',
-'trading-assistant.form.orderMode': '下单模式',
-'trading-assistant.form.orderModeMaker': '挂单(Maker)',
-'trading-assistant.form.orderModeTaker': '市价(Taker)',
-'trading-assistant.form.orderModeHint': '挂单模式使用限价单,手续费更低;市价模式立即成交,手续费较高',
-'trading-assistant.form.makerWaitSec': '挂单等待时间(秒)',
-'trading-assistant.form.makerWaitSecHint': '挂单后等待成交的时间,超时后取消并重试',
-'trading-assistant.form.makerRetries': '挂单重试次数',
-'trading-assistant.form.makerRetriesHint': '挂单未成交时的最大重试次数',
-'trading-assistant.form.fallbackToMarket': '挂单失败降级市价',
-'trading-assistant.form.fallbackToMarketHint': '开/平仓挂单未成交时,是否降级为市价单以确保成交',
-'trading-assistant.form.marginMode': '保证金模式',
-'trading-assistant.form.marginModeCross': '全仓',
-'trading-assistant.form.marginModeIsolated': '逐仓',
-'trading-assistant.form.stopLossPct': '止损比例(%)',
-'trading-assistant.form.stopLossPctHint': '设置止损百分比,0表示不启用止损',
-'trading-assistant.form.takeProfitPct': '止盈比例(%)',
-'trading-assistant.form.takeProfitPctHint': '设置止盈百分比,0表示不启用止盈',
-'trading-assistant.form.signalMode': '信号模式',
-'trading-assistant.form.signalModeConfirmed': '确认模式',
-'trading-assistant.form.signalModeAggressive': '激进模式',
-'trading-assistant.form.signalModeHint': '确认模式:仅检查已完成的K线;激进模式:也检查正在形成的K线',
-'trading-assistant.form.cancel': '取消',
-'trading-assistant.form.prev': '上一步',
-'trading-assistant.form.next': '下一步',
-'trading-assistant.form.confirmCreate': '确认创建',
-'trading-assistant.form.confirmEdit': '确认修改',
-'trading-assistant.messages.createSuccess': '策略创建成功',
-'trading-assistant.messages.createFailed': '创建策略失败',
-'trading-assistant.messages.updateSuccess': '策略更新成功',
-'trading-assistant.messages.updateFailed': '更新策略失败',
-'trading-assistant.messages.deleteSuccess': '策略删除成功',
-'trading-assistant.messages.deleteFailed': '删除策略失败',
-'trading-assistant.messages.startSuccess': '策略启动成功',
-'trading-assistant.messages.startFailed': '启动策略失败',
-'trading-assistant.messages.stopSuccess': '策略停止成功',
-'trading-assistant.messages.stopFailed': '停止策略失败',
-'trading-assistant.messages.loadFailed': '获取策略列表失败',
-'trading-assistant.messages.runningWarning': '策略运行中,请先停止策略后再修改',
-'trading-assistant.messages.deleteConfirmWithName': '确定要删除策略“{name}”吗?此操作不可恢复。',
-'trading-assistant.messages.deleteConfirm': '确定要删除该策略吗?此操作不可恢复。',
-'trading-assistant.messages.loadTradesFailed': '获取交易记录失败',
-'trading-assistant.messages.loadPositionsFailed': '获取持仓记录失败',
-'trading-assistant.messages.loadEquityFailed': '获取净值曲线失败',
-'trading-assistant.messages.loadIndicatorsFailed': '加载指标列表失败,请稍后重试',
-'trading-assistant.messages.spotLimitations': '现货交易已自动设置为仅做多、1倍杠杆',
-'trading-assistant.messages.autoFillApiConfig': '已自动填充该交易所的历史API配置',
-'trading-assistant.messages.batchCreateSuccess': '成功创建 {count} 个策略',
-'trading-assistant.messages.batchStartSuccess': '成功启动 {count} 个策略',
-'trading-assistant.messages.batchStartFailed': '批量启动策略失败',
-'trading-assistant.messages.batchStopSuccess': '成功停止 {count} 个策略',
-'trading-assistant.messages.batchStopFailed': '批量停止策略失败',
-'trading-assistant.messages.batchDeleteSuccess': '成功删除 {count} 个策略',
-'trading-assistant.messages.batchDeleteFailed': '批量删除策略失败',
-'trading-assistant.messages.batchDeleteConfirm': '确定要删除策略组"{name}"下的 {count} 个策略吗?此操作不可恢复。',
-'trading-assistant.notify.browser': '浏览器通知',
-'trading-assistant.notify.email': '邮箱',
-'trading-assistant.notify.phone': '短信',
-'trading-assistant.notify.telegram': 'Telegram',
-'trading-assistant.notify.discord': 'Discord',
-'trading-assistant.notify.webhook': 'Webhook',
-'trading-assistant.placeholders.selectIndicator': '请选择指标',
-'trading-assistant.placeholders.selectExchange': '请选择交易所',
-'trading-assistant.placeholders.inputApiKey': '请输入API Key',
-'trading-assistant.placeholders.inputSecretKey': '请输入Secret Key',
-'trading-assistant.placeholders.inputPassphrase': '请输入Passphrase',
-'trading-assistant.placeholders.inputStrategyName': '请输入策略名称',
-'trading-assistant.placeholders.selectSymbol': '请选择交易对',
-'trading-assistant.placeholders.selectSymbols': '请选择交易对(支持多选)',
-'trading-assistant.placeholders.selectTimeframe': '请选择时间周期',
-'trading-assistant.placeholders.selectKlinePeriod': '请选择K线周期',
-'trading-assistant.placeholders.inputAiFilterPrompt': '请输入自定义提示词(可选)',
-'trading-assistant.placeholders.selectSavedCredential': '请选择已保存的凭证',
-'trading-assistant.placeholders.inputEmail': '请输入邮箱地址',
-'trading-assistant.placeholders.inputPhone': '请输入手机号码',
-'trading-assistant.placeholders.inputTelegram': '请输入Telegram ID或Chat ID',
-'trading-assistant.placeholders.inputDiscord': '请输入Discord Webhook地址',
-'trading-assistant.placeholders.inputWebhook': '请输入Webhook地址',
-'trading-assistant.placeholders.inputCredentialName': '请输入凭证名称(如:我的OKX账户)',
-'trading-assistant.validation.indicatorRequired': '请选择指标',
-'trading-assistant.validation.exchangeRequired': '请选择交易所',
-'trading-assistant.validation.apiKeyRequired': '请输入API Key',
-'trading-assistant.validation.secretKeyRequired': '请输入Secret Key',
-'trading-assistant.validation.passphraseRequired': '请输入Passphrase',
-'trading-assistant.validation.exchangeConfigIncomplete': '请填写完整的交易所配置信息',
-'trading-assistant.validation.testConnectionRequired': '请先点击"测试连接"按钮并确保连接成功',
-'trading-assistant.validation.testConnectionFailed': '连接测试失败,请检查配置后重新测试',
-'trading-assistant.validation.strategyNameRequired': '请输入策略名称',
-'trading-assistant.validation.symbolRequired': '请选择交易对',
-'trading-assistant.validation.symbolsRequired': '请至少选择一个交易对',
-'trading-assistant.validation.emailInvalid': '请输入有效的邮箱地址',
-'trading-assistant.validation.notifyChannelRequired': '请至少选择一个通知渠道',
-'trading-assistant.validation.initialCapitalRequired': '请输入投入金额',
-'trading-assistant.validation.leverageRequired': '请输入杠杆倍数',
-'trading-assistant.table.time': '时间',
-'trading-assistant.table.type': '类型',
-'trading-assistant.table.price': '价格',
-'trading-assistant.table.amount': '数量',
-'trading-assistant.table.value': '金额',
-'trading-assistant.table.commission': '手续费',
-'trading-assistant.table.symbol': '交易对',
-'trading-assistant.table.side': '方向',
-'trading-assistant.table.size': '持仓数量',
-'trading-assistant.table.entryPrice': '开仓价格',
-'trading-assistant.table.currentPrice': '当前价格',
-'trading-assistant.table.unrealizedPnl': '未实现盈亏',
-'trading-assistant.table.pnlPercent': '盈亏比例',
-'trading-assistant.table.buy': '买入',
-'trading-assistant.table.sell': '卖出',
-'trading-assistant.table.long': '做多',
-'trading-assistant.table.short': '做空',
-'trading-assistant.table.noPositions': '暂无持仓',
-'trading-assistant.detail.title': '策略详情',
-'trading-assistant.detail.strategyName': '策略名称',
-'trading-assistant.detail.strategyType': '策略类型',
-'trading-assistant.detail.status': '状态',
-'trading-assistant.detail.tradingMode': '交易模式',
-'trading-assistant.detail.exchange': '交易所',
-'trading-assistant.detail.initialCapital': '初始资金',
-'trading-assistant.detail.totalInvestment': '总投入金额',
-'trading-assistant.detail.currentEquity': '当前净值',
-'trading-assistant.detail.totalPnl': '总盈亏',
-'trading-assistant.detail.indicatorName': '指标名称',
-'trading-assistant.detail.maxLeverage': '最大杠杆',
-'trading-assistant.detail.decideInterval': '决策间隔',
-'trading-assistant.detail.symbols': '交易标的',
-'trading-assistant.detail.createdAt': '创建时间',
-'trading-assistant.detail.updatedAt': '更新时间',
-'trading-assistant.detail.llmConfig': 'AI模型配置',
-'trading-assistant.detail.exchangeConfig': '交易所配置',
-'trading-assistant.detail.provider': '提供商',
-'trading-assistant.detail.modelId': '模型ID',
-'trading-assistant.detail.close': '关闭',
-'trading-assistant.detail.loadFailed': '获取策略详情失败',
-'trading-assistant.equity.noData': '暂无净值数据',
-'trading-assistant.equity.equity': '净值',
-'trading-assistant.exchange.tradingMode': '交易模式',
-'trading-assistant.exchange.virtual': '模拟交易',
-'trading-assistant.exchange.live': '实盘交易',
-'trading-assistant.exchange.selectExchange': '选择交易所',
-'trading-assistant.exchange.walletAddress': '钱包地址',
-'trading-assistant.exchange.walletAddressPlaceholder': '请输入钱包地址(以0x开头)',
-'trading-assistant.exchange.privateKey': '私钥',
-'trading-assistant.exchange.privateKeyPlaceholder': '请输入私钥(64字符)',
-'trading-assistant.exchange.testConnection': '测试连接',
-'trading-assistant.exchange.connectionSuccess': '连接成功',
-'trading-assistant.exchange.connectionFailed': '连接失败',
-'trading-assistant.exchange.testFailed': '连接测试失败',
-'trading-assistant.exchange.fillComplete': '请填写完整的交易所配置信息',
-'trading-assistant.exchange.ipWhitelistTip': '请在交易所API设置中将以下IP添加到白名单:',
-'trading-assistant.strategyTypeOptions.ai': 'AI驱动策略',
-'trading-assistant.strategyTypeOptions.indicator': '技术指标策略',
-'trading-assistant.strategyTypeOptions.aiDeveloping': 'AI驱动策略功能开发中,敬请期待',
-'trading-assistant.strategyTypeOptions.aiDevelopingWarning': 'AI驱动策略功能正在开发中',
-'trading-assistant.indicatorType.trend': '趋势',
-'trading-assistant.indicatorType.momentum': '动量',
-'trading-assistant.indicatorType.volatility': '波动',
-'trading-assistant.indicatorType.volume': '成交量',
-'trading-assistant.indicatorType.custom': '自定义',
-'trading-assistant.exchangeNames': {
-'okx': 'OKX',
-'binance': '币安',
-'hyperliquid': 'Hyperliquid',
-'blockchaincom': 'Blockchain.com',
-'coinbaseexchange': 'Coinbase',
-'gate': 'Gate.io',
-'mexc': 'MEXC',
-'kraken': 'Kraken',
-'bitfinex': 'Bitfinex',
-'bybit': 'Bybit',
-'kucoin': 'KuCoin',
-'huobi': '火币',
-'bitget': 'Bitget',
-'bitmex': 'BitMEX',
-'deribit': 'Deribit',
-'phemex': 'Phemex',
-'bitmart': 'BitMart',
-'bitstamp': 'Bitstamp',
-'bittrex': 'Bittrex',
-'poloniex': 'Poloniex',
-'gemini': 'Gemini',
-'cryptocom': 'Crypto.com',
-'bitflyer': 'bitFlyer',
-'upbit': 'Upbit',
-'bithumb': 'Bithumb',
-'coinone': 'Coinone',
-'zb': 'ZB',
-'lbank': 'LBank',
-'bibox': 'Bibox',
-'bigone': 'BigONE',
-'bitrue': 'Bitrue',
-'coinex': 'CoinEx',
-'digifinex': 'DigiFinex',
-'ftx': 'FTX',
-'ftxus': 'FTX US',
-'binanceus': 'Binance US',
-'binancecoinm': 'Binance COIN-M',
-'binanceusdm': 'Binance USDⓈ-M',
-'ibkr': '盈透证券 (IBKR)',
-'deepcoin': 'Deepcoin'
-},
-'ai-trading-assistant.title': 'AI交易助手',
-'ai-trading-assistant.strategyList': '策略列表',
-'ai-trading-assistant.createStrategy': '创建策略',
-'ai-trading-assistant.noStrategy': '暂无策略',
-'ai-trading-assistant.selectStrategy': '请从左侧选择一个策略查看详情',
-'ai-trading-assistant.startStrategy': '启动策略',
-'ai-trading-assistant.stopStrategy': '停止策略',
-'ai-trading-assistant.editStrategy': '编辑策略',
-'ai-trading-assistant.deleteStrategy': '删除策略',
-'ai-trading-assistant.status.running': '运行中',
-'ai-trading-assistant.status.stopped': '已停止',
-'ai-trading-assistant.status.error': '错误',
-'ai-trading-assistant.tabs.tradingRecords': '交易记录',
-'ai-trading-assistant.tabs.positions': '持仓记录',
-'ai-trading-assistant.tabs.aiDecisions': 'AI决策记录',
-'ai-trading-assistant.tabs.equityCurve': '净值曲线',
-'ai-trading-assistant.form.createTitle': '创建AI交易策略',
-'ai-trading-assistant.form.editTitle': '编辑AI交易策略',
-'ai-trading-assistant.form.strategyName': '策略名称',
-'ai-trading-assistant.form.modelId': 'AI模型',
-'ai-trading-assistant.form.modelIdHint': '使用系统OpenRouter服务,无需配置API Key',
-'ai-trading-assistant.form.decideInterval': '决策间隔',
-'ai-trading-assistant.form.decideInterval5m': '5分钟',
-'ai-trading-assistant.form.decideInterval10m': '10分钟',
-'ai-trading-assistant.form.decideInterval30m': '30分钟',
-'ai-trading-assistant.form.decideInterval1h': '1小时',
-'ai-trading-assistant.form.decideInterval4h': '4小时',
-'ai-trading-assistant.form.decideInterval1d': '1天',
-'ai-trading-assistant.form.decideInterval1w': '1周',
-'ai-trading-assistant.form.decideIntervalHint': 'AI做决策的时间间隔',
-'ai-trading-assistant.form.runPeriod': '运行周期',
-'ai-trading-assistant.form.runPeriodHint': '策略运行的开始时间和结束时间',
-'ai-trading-assistant.form.startDate': '开始日期',
-'ai-trading-assistant.form.endDate': '结束日期',
-'ai-trading-assistant.form.qdtCostTitle': 'QDT扣费说明',
-'ai-trading-assistant.form.qdtCostHint': '每次AI决策将扣费 {cost} 个QDT,请确保账户有足够的QDT余额。策略运行期间,每次决策都会实时扣费。',
-'ai-trading-assistant.form.apiKey': 'API Key',
-'ai-trading-assistant.form.exchange': '选择交易所',
-'ai-trading-assistant.form.secretKey': 'Secret Key',
-'ai-trading-assistant.form.passphrase': 'Passphrase',
-'ai-trading-assistant.form.testConnection': '测试连接',
-'ai-trading-assistant.form.symbol': '交易对',
-'ai-trading-assistant.form.symbolHint': '选择要交易的交易对',
-'ai-trading-assistant.form.initialCapital': '投入金额(保证金)',
-'ai-trading-assistant.form.leverage': '杠杆倍数',
-'ai-trading-assistant.form.timeframe': '时间周期',
-'ai-trading-assistant.form.timeframe1m': '1分钟',
-'ai-trading-assistant.form.timeframe5m': '5分钟',
-'ai-trading-assistant.form.timeframe15m': '15分钟',
-'ai-trading-assistant.form.timeframe30m': '30分钟',
-'ai-trading-assistant.form.timeframe1H': '1小时',
-'ai-trading-assistant.form.timeframe4H': '4小时',
-'ai-trading-assistant.form.timeframe1D': '1天',
-'ai-trading-assistant.form.marketType': '市场类型',
-'ai-trading-assistant.form.marketTypeFutures': '合约',
-'ai-trading-assistant.form.marketTypeSpot': '现货',
-'ai-trading-assistant.form.totalPnl': '总盈亏',
-'ai-trading-assistant.form.customPrompt': '自定义提示词',
-'ai-trading-assistant.form.customPromptHint': '可选,用于自定义AI的交易策略和决策逻辑',
-'ai-trading-assistant.form.cancel': '取消',
-'ai-trading-assistant.form.prev': '上一步',
-'ai-trading-assistant.form.next': '下一步',
-'ai-trading-assistant.form.confirmCreate': '确认创建',
-'ai-trading-assistant.form.confirmEdit': '确认修改',
-'ai-trading-assistant.messages.createSuccess': '策略创建成功',
-'ai-trading-assistant.messages.createFailed': '创建策略失败',
-'ai-trading-assistant.messages.updateSuccess': '策略更新成功',
-'ai-trading-assistant.messages.updateFailed': '更新策略失败',
-'ai-trading-assistant.messages.deleteSuccess': '策略删除成功',
-'ai-trading-assistant.messages.deleteFailed': '删除策略失败',
-'ai-trading-assistant.messages.startSuccess': '策略启动成功',
-'ai-trading-assistant.messages.startFailed': '启动策略失败',
-'ai-trading-assistant.messages.stopSuccess': '策略停止成功',
-'ai-trading-assistant.messages.stopFailed': '停止策略失败',
-'ai-trading-assistant.messages.loadFailed': '获取策略列表失败',
-'ai-trading-assistant.messages.loadDecisionsFailed': '获取AI决策记录失败',
-'ai-trading-assistant.messages.deleteConfirm': '确定要删除该策略吗?此操作不可恢复。',
-'ai-trading-assistant.placeholders.inputStrategyName': '请输入策略名称',
-'ai-trading-assistant.placeholders.selectModelId': '请选择AI模型',
-'ai-trading-assistant.placeholders.selectDecideInterval': '请选择决策间隔',
-'ai-trading-assistant.placeholders.startTime': '开始时间',
-'ai-trading-assistant.placeholders.endTime': '结束时间',
-'ai-trading-assistant.placeholders.inputApiKey': '请输入API Key',
-'ai-trading-assistant.placeholders.selectExchange': '请选择交易所',
-'ai-trading-assistant.placeholders.inputSecretKey': '请输入Secret Key',
-'ai-trading-assistant.placeholders.inputPassphrase': '请输入Passphrase',
-'ai-trading-assistant.placeholders.selectSymbol': '请选择交易对,如:BTC/USDT',
-'ai-trading-assistant.placeholders.selectTimeframe': '请选择时间周期',
-'ai-trading-assistant.placeholders.inputCustomPrompt': '请输入自定义提示词(可选)',
-'ai-trading-assistant.validation.strategyNameRequired': '请输入策略名称',
-'ai-trading-assistant.validation.modelIdRequired': '请选择AI模型',
-'ai-trading-assistant.validation.runPeriodRequired': '请选择运行周期',
-'ai-trading-assistant.validation.apiKeyRequired': '请输入API Key',
-'ai-trading-assistant.validation.exchangeRequired': '请选择交易所',
-'ai-trading-assistant.validation.secretKeyRequired': '请输入Secret Key',
-'ai-trading-assistant.validation.symbolRequired': '请选择交易对',
-'ai-trading-assistant.validation.initialCapitalRequired': '请输入投入金额',
-'ai-trading-assistant.table.time': '时间',
-'ai-trading-assistant.table.type': '类型',
-'ai-trading-assistant.table.price': '价格',
-'ai-trading-assistant.table.amount': '数量',
-'ai-trading-assistant.table.value': '金额',
-'ai-trading-assistant.table.symbol': '交易对',
-'ai-trading-assistant.table.side': '方向',
-'ai-trading-assistant.table.size': '持仓数量',
-'ai-trading-assistant.table.entryPrice': '开仓价格',
-'ai-trading-assistant.table.currentPrice': '当前价格',
-'ai-trading-assistant.table.unrealizedPnl': '未实现盈亏',
-'ai-trading-assistant.table.profit': '盈亏',
-'ai-trading-assistant.table.openLong': '开多',
-'ai-trading-assistant.table.closeLong': '平多',
-'ai-trading-assistant.table.openShort': '开空',
-'ai-trading-assistant.table.closeShort': '平空',
-'ai-trading-assistant.table.addLong': '加多',
-'ai-trading-assistant.table.addShort': '加空',
-'ai-trading-assistant.table.closeShortProfit': '平空止盈',
-'ai-trading-assistant.table.closeShortStop': '平空止损',
-'ai-trading-assistant.table.closeLongProfit': '平多止盈',
-'ai-trading-assistant.table.closeLongStop': '平多止损',
-'ai-trading-assistant.table.buy': '买入',
-'ai-trading-assistant.table.sell': '卖出',
-'ai-trading-assistant.table.long': '做多',
-'ai-trading-assistant.table.short': '做空',
-'ai-trading-assistant.table.hold': '持有',
-'ai-trading-assistant.table.reasoning': '分析理由',
-'ai-trading-assistant.table.decisions': '决策',
-'ai-trading-assistant.table.riskAssessment': '风险评估',
-'ai-trading-assistant.table.confidence': '置信度',
-'ai-trading-assistant.table.totalRecords': '共 {total} 条记录',
-'ai-trading-assistant.table.noPositions': '暂无持仓',
-'ai-trading-assistant.detail.title': '策略详情',
-'ai-trading-assistant.equity.noData': '暂无净值数据',
-'ai-trading-assistant.equity.equity': '净值',
-'ai-trading-assistant.exchange.testFailed': '连接测试失败',
-'ai-trading-assistant.exchange.connectionSuccess': '连接成功',
-'ai-trading-assistant.exchange.connectionFailed': '连接失败',
-'ai-trading-assistant.form.advancedSettings': '高级设置',
-'ai-trading-assistant.form.orderMode': '下单模式',
-'ai-trading-assistant.form.orderModeMaker': '挂单(Maker)',
-'ai-trading-assistant.form.orderModeTaker': '市价(Taker)',
-'ai-trading-assistant.form.orderModeHint': '挂单模式使用限价单,手续费更低;市价模式立即成交,手续费较高',
-'ai-trading-assistant.form.makerWaitSec': '挂单等待时间(秒)',
-'ai-trading-assistant.form.makerWaitSecHint': '挂单后等待成交的时间,超时后取消并重试',
-'ai-trading-assistant.form.makerRetries': '挂单重试次数',
-'ai-trading-assistant.form.makerRetriesHint': '挂单未成交时的最大重试次数',
-'ai-trading-assistant.form.fallbackToMarket': '挂单失败降级市价',
-'ai-trading-assistant.form.fallbackToMarketHint': '开/平仓挂单未成交时,是否降级为市价单以确保成交',
-'ai-trading-assistant.form.marginMode': '保证金模式',
-'ai-trading-assistant.form.marginModeCross': '全仓',
-'ai-trading-assistant.form.marginModeIsolated': '逐仓',
-'ai-analysis.title': '量子交易引擎',
-'ai-analysis.system.online': '在线',
-'ai-analysis.system.agents': '智能体',
-'ai-analysis.system.active': '活跃',
-'ai-analysis.system.stage': '阶段',
-'ai-analysis.panel.roster': '智能体阵容',
-'ai-analysis.panel.thinking': '思考中...',
-'ai-analysis.panel.done': '完成',
-'ai-analysis.panel.standby': '待机',
-'ai-analysis.input.title': '量子交易引擎',
-'ai-analysis.input.placeholder': '选择目标资产 (如 BTC/USDT)',
-'ai-analysis.input.watchlist': '自选股',
-'ai-analysis.input.start': '开始分析',
-'ai-analysis.input.recent': '最近任务:',
-'ai-analysis.vis.stage': '阶段',
-'ai-analysis.vis.processing': '处理中',
-'ai-analysis.result.complete': '分析完成',
-'ai-analysis.result.signal': '最终信号',
-'ai-analysis.result.confidence': '置信度:',
-'ai-analysis.result.new': '新分析',
-'ai-analysis.result.full': '查看完整报告',
-'ai-analysis.logs.title': '系统日志',
-'ai-analysis.modal.title': '机密报告',
-'ai-analysis.modal.fundamental': '基本面分析',
-'ai-analysis.modal.technical': '技术面分析',
-'ai-analysis.modal.sentiment': '情绪面分析',
-'ai-analysis.modal.risk': '风险评估',
-'ai-analysis.stage.idle': '待机',
-'ai-analysis.stage.1': '第一阶段:多维分析',
-'ai-analysis.stage.2': '第二阶段:多空辩论',
-'ai-analysis.stage.3': '第三阶段:战略规划',
-'ai-analysis.stage.4': '第四阶段:风控审查',
-'ai-analysis.stage.complete': '完成',
-'ai-analysis.agent.investment_director': '投资总监',
-'ai-analysis.agent.role.investment_director': '综合分析 & 最终结论',
-'ai-analysis.agent.market': '市场分析师',
-'ai-analysis.agent.role.market': '技术 & 市场数据',
-'ai-analysis.agent.fundamental': '基本面分析师',
-'ai-analysis.agent.role.fundamental': '财务 & 估值',
-'ai-analysis.agent.technical': '技术分析师',
-'ai-analysis.agent.role.technical': '技术指标 & 图表',
-'ai-analysis.agent.news': '新闻分析师',
-'ai-analysis.agent.role.news': '全球新闻过滤',
-'ai-analysis.agent.sentiment': '情绪分析师',
-'ai-analysis.agent.role.sentiment': '社交 & 情绪',
-'ai-analysis.agent.risk': '风险分析师',
-'ai-analysis.agent.role.risk': '基础风险检查',
-'ai-analysis.agent.bull': '看涨研究员',
-'ai-analysis.agent.role.bull': '增长催化剂挖掘',
-'ai-analysis.agent.bear': '看跌研究员',
-'ai-analysis.agent.role.bear': '风险 & 缺陷挖掘',
-'ai-analysis.agent.manager': '研究经理',
-'ai-analysis.agent.role.manager': '辩论主持人',
-'ai-analysis.agent.trader': '交易员',
-'ai-analysis.agent.role.trader': '执行策略师',
-'ai-analysis.agent.risky': '激进分析师',
-'ai-analysis.agent.role.risky': '激进策略',
-'ai-analysis.agent.neutral': '平衡分析师',
-'ai-analysis.agent.role.neutral': '平衡策略',
-'ai-analysis.agent.safe': '保守分析师',
-'ai-analysis.agent.role.safe': '保守策略',
-'ai-analysis.agent.cro': '风控经理 (CRO)',
-'ai-analysis.agent.role.cro': '最终决策权威',
-'ai-analysis.script.market': '正在从主要交易所获取 OHLCV 数据...',
-'ai-analysis.script.fundamental': '正在检索季度财务报告...',
-'ai-analysis.script.technical': '正在分析技术指标和图表形态...',
-'ai-analysis.script.news': '正在扫描全球财经新闻...',
-'ai-analysis.script.sentiment': '正在分析社交媒体趋势...',
-'ai-analysis.script.risk': '正在计算历史波动率...',
-'invite.inviteLink': '邀请链接',
-'invite.copy': '复制链接',
-'invite.copySuccess': '复制成功!',
-'invite.copyFailed': '复制失败,请手动复制',
-'invite.noInviteLink': '邀请链接未生成',
-'invite.totalInvites': '累计邀请',
-'invite.totalReward': '累计奖励',
-'invite.rules': '邀请规则',
-'invite.rule1': '每成功邀请一位好友注册,您将获得奖励',
-'invite.rule2': '被邀请的好友完成首次交易,您将获得额外奖励',
-'invite.rule3': '邀请奖励将直接发放到您的账户',
-'invite.inviteList': '邀请列表',
-'invite.tasks': '任务中心',
-'invite.inviteeName': '被邀请人',
-'invite.inviteTime': '邀请时间',
-'invite.status': '状态',
-'invite.reward': '奖励',
-'invite.active': '活跃',
-'invite.inactive': '未激活',
-'invite.completed': '已完成',
-'invite.claimed': '已领取',
-'invite.pending': '待完成',
-'invite.goToTask': '去完成',
-'invite.claimReward': '领取奖励',
-'invite.verify': '验证完成',
-'invite.verifySuccess': '验证成功!任务已完成',
-'invite.verifyNotCompleted': '任务尚未完成,请先完成任务',
-'invite.verifyFailed': '验证失败,请稍后重试',
-'invite.claimSuccess': '成功领取 {reward} QDT!',
-'invite.claimFailed': '领取失败,请稍后重试',
-'invite.totalRecords': '共 {total} 条记录',
-'invite.task.twitter.title': '转发推文到 X (Twitter)',
-'invite.task.twitter.desc': '分享我们的官方推文到您的 X (Twitter) 账号',
-'invite.task.youtube.title': '关注我们的 YouTube 频道',
-'invite.task.youtube.desc': '订阅并关注我们的 YouTube 官方频道',
-'invite.task.telegram.title': '加入 Telegram 群组',
-'invite.task.telegram.desc': '加入我们的官方 Telegram 社区群组',
-'invite.task.discord.title': '加入 Discord 服务器',
-'invite.task.discord.desc': '加入我们的 Discord 社区服务器',
-'message': '-',
-'layouts.usermenu.dialog.title': '信息',
-'layouts.usermenu.dialog.content': '您确定要注销吗?',
-'layouts.userLayout.title': '于不确定中,寻见真理',
+ 'account.basicInfo': '基础信息',
+ 'account.id': '用户ID',
+ 'account.username': '用户名',
+ 'account.nickname': '昵称',
+ 'account.email': '邮箱',
+ 'account.mobile': '手机号',
+ 'account.web3address': '钱包地址',
+ 'account.pid': '推荐人ID',
+ 'account.level': '用户等级',
+ 'account.money': '余额',
+ 'account.qdtBalance': 'QDT 余额',
+ 'account.score': '积分',
+ 'account.createtime': '注册时间',
+ 'account.inviteLink': '邀请链接',
+ 'account.recharge': '充值',
+ 'account.rechargeTip': '请使用微信或支付宝扫描下方二维码进行充值',
+ 'account.qrCodePlaceholder': '二维码占位符(模拟)',
+ 'account.rechargeAmount': '充值金额',
+ 'account.enterAmount': '请输入充值金额',
+ 'account.rechargeHint': '最小充值金额:1 QDT',
+ 'account.confirmRecharge': '确认充值',
+ 'account.enterValidAmount': '请输入有效的充值金额',
+ 'account.rechargeSuccess': '充值成功!已充值 {amount} QDT',
+ 'account.settings.menuMap.basic': '基本设置',
+ 'account.settings.menuMap.security': '安全设置',
+ 'account.settings.menuMap.notification': '新消息通知',
+ 'account.settings.menuMap.moneyLog': '资金明细',
+ 'account.moneyLog.empty': '暂无资金明细',
+ 'account.moneyLog.total': '共 {total} 条记录',
+ 'account.moneyLog.type.purchase': '购买指标',
+ 'account.moneyLog.type.recharge': '充值',
+ 'account.moneyLog.type.refund': '退款',
+ 'account.moneyLog.type.reward': '奖励',
+ 'account.moneyLog.type.income': '指标收入',
+ 'account.moneyLog.type.commission': '平台手续费',
+ 'wallet.balance': 'QDT 余额',
+ 'wallet.recharge': '充值',
+ 'wallet.withdraw': '提现',
+ 'wallet.filter': '筛选',
+ 'wallet.reset': '重置',
+ 'wallet.totalRecharge': '累计充值',
+ 'wallet.totalWithdraw': '累计提现',
+ 'wallet.totalIncome': '累计收入',
+ 'wallet.records': '交易记录与资金明细',
+ 'wallet.tradingRecords': '交易记录',
+ 'wallet.moneyLog': '资金明细',
+ 'wallet.rechargeTip': '请使用微信或支付宝扫描下方二维码进行充值',
+ 'wallet.qrCodePlaceholder': '二维码占位符(模拟)',
+ 'wallet.rechargeAmount': '充值金额',
+ 'wallet.enterAmount': '请输入充值金额',
+ 'wallet.rechargeHint': '最小充值金额:1 QDT',
+ 'wallet.confirmRecharge': '确认充值',
+ 'wallet.enterValidAmount': '请输入有效的充值金额',
+ 'wallet.rechargeSuccess': '充值成功!已充值 {amount} QDT',
+ 'wallet.rechargeFailed': '充值失败',
+ 'wallet.withdrawTip': '请输入提现金额和提现地址',
+ 'wallet.withdrawAmount': '提现金额',
+ 'wallet.enterWithdrawAmount': '请输入提现金额',
+ 'wallet.withdrawHint': '最小提现金额:1 QDT',
+ 'wallet.withdrawAddress': '提现地址(可选)',
+ 'wallet.enterWithdrawAddress': '请输入提现地址',
+ 'wallet.confirmWithdraw': '确认提现',
+ 'wallet.enterValidWithdrawAmount': '请输入有效的提现金额',
+ 'wallet.insufficientBalance': '余额不足',
+ 'wallet.withdrawSuccess': '提现成功!已提现 {amount} QDT',
+ 'wallet.withdrawFailed': '提现失败',
+ 'wallet.noTradingRecords': '暂无交易记录',
+ 'wallet.noMoneyLog': '暂无资金明细',
+ 'wallet.loadTradingRecordsFailed': '加载交易记录失败',
+ 'wallet.loadMoneyLogFailed': '加载资金明细失败',
+ 'wallet.moneyLogTotal': '共 {total} 条记录',
+ 'wallet.moneyLogTypeTitle': '类型',
+ 'wallet.moneyLogType.all': '全部类型',
+ 'wallet.table.time': '时间',
+ 'wallet.table.type': '类型',
+ 'wallet.table.price': '价格',
+ 'wallet.table.amount': '数量',
+ 'wallet.table.money': '金额',
+ 'wallet.table.balance': '余额',
+ 'wallet.table.memo': '备注',
+ 'wallet.table.value': '价值',
+ 'wallet.table.profit': '盈亏',
+ 'wallet.table.commission': '手续费',
+ 'wallet.table.total': '共 {total} 条记录',
+ 'wallet.tradeType.buy': '买入',
+ 'wallet.tradeType.sell': '卖出',
+ 'wallet.tradeType.liquidation': '强平',
+ 'wallet.tradeType.openLong': '开多',
+ 'wallet.tradeType.addLong': '加多',
+ 'wallet.tradeType.closeLong': '平多',
+ 'wallet.tradeType.closeLongStop': '止损平多',
+ 'wallet.tradeType.closeLongProfit': '止盈平多',
+ 'wallet.tradeType.openShort': '开空',
+ 'wallet.tradeType.addShort': '加空',
+ 'wallet.tradeType.closeShort': '平空',
+ 'wallet.tradeType.closeShortStop': '止损平空',
+ 'wallet.tradeType.closeShortProfit': '止盈平空',
+ 'wallet.moneyLogType.purchase': '购买指标',
+ 'wallet.moneyLogType.recharge': '充值',
+ 'wallet.moneyLogType.withdraw': '提现',
+ 'wallet.moneyLogType.refund': '退款',
+ 'wallet.moneyLogType.reward': '奖励',
+ 'wallet.moneyLogType.income': '收入',
+ 'wallet.moneyLogType.commission': '手续费',
+ 'wallet.web3Address.required': '请先填写Web3钱包地址',
+ 'wallet.web3Address.requiredDescription': '充值前需要先绑定您的Web3钱包地址,用于接收充值',
+ 'wallet.web3Address.placeholder': '请输入您的Web3钱包地址(0x开头)',
+ 'wallet.web3Address.save': '保存钱包地址',
+ 'wallet.web3Address.saveSuccess': '钱包地址保存成功',
+ 'wallet.web3Address.saveFailed': '保存钱包地址失败',
+ 'wallet.web3Address.invalidFormat': '请输入有效的Web3钱包地址(以太坊格式:0x开头42位字符,或TRC20格式:T开头34位字符)',
+ 'wallet.selectCoin': '选择币种',
+ 'wallet.selectChain': '选择链',
+ 'wallet.chain.eth': 'ETH(ERC20)',
+ 'wallet.chain.trc20': 'TRC20',
+ 'wallet.chain.bsc': 'BSC',
+ 'wallet.targetQdtAmount': '想要兑换的QDT数量(可选)',
+ 'wallet.targetQdtAmount.placeholder': '请输入想要兑换的QDT数量,当前QDT价格:{price} USDT',
+ 'wallet.targetQdtAmount.requiredUsdt': '需要充值:{amount} USDT',
+ 'wallet.rechargeAddress': '充值地址',
+ 'wallet.copyAddress': '复制',
+ 'wallet.copySuccess': '复制成功!',
+ 'wallet.copyFailed': '复制失败,请手动复制',
+ 'wallet.rechargeAddressHint': '请确保使用{chain}链向此地址充值{coin}',
+ 'wallet.qdtPrice.loading': '加载中...',
+ 'wallet.rechargeTip.new': '请选择币种和链,然后扫描下方二维码进行充值',
+ 'wallet.exchangeRate': '1 QDT ≈ {rate} USDT',
+ 'wallet.withdrawableAmount': '可提现金额',
+ 'wallet.totalBalance': '总余额',
+ 'wallet.insufficientWithdrawable': '可提现金额不足,当前可提现:{amount} QDT',
+ 'wallet.withdrawAddressRequired': '请输入提现地址',
+ 'wallet.withdrawAddressHint': '请确保地址正确,提现后无法撤销',
+ 'wallet.withdrawSubmitSuccess': '提现申请提交成功,请等待审核',
+ 'menu.footer.contactUs': '联系我们',
+ 'menu.footer.getSupport': '获取支持',
+ 'menu.footer.socialAccounts': '社交账户',
+ 'menu.footer.userAgreement': '用户协议',
+ 'menu.footer.privacyPolicy': '隐私条例',
+ 'menu.footer.support': 'Support',
+ 'menu.footer.featureRequest': 'Feature request',
+ 'menu.footer.email': 'Email',
+ 'menu.footer.liveChat': '24/7 live chat',
+ 'dashboard.analysis.title': 'Multi-Dimensional Analysis',
+ 'dashboard.analysis.subtitle': 'AI驱动的综合金融分析平台',
+ 'dashboard.analysis.selectSymbol': '选择或输入标的代码',
+ 'dashboard.analysis.selectModel': '选择模型',
+ 'dashboard.analysis.startAnalysis': '开始分析',
+ 'dashboard.analysis.history': '历史记录',
+ 'dashboard.analysis.tab.overview': '综合分析',
+ 'dashboard.analysis.tab.fundamental': '基本面',
+ 'dashboard.analysis.tab.technical': '技术',
+ 'dashboard.analysis.tab.news': '新闻',
+ 'dashboard.analysis.tab.sentiment': '情绪',
+ 'dashboard.analysis.tab.risk': '风险',
+ 'dashboard.analysis.tab.debate': '多空辩论',
+ 'dashboard.analysis.tab.decision': '最终决策',
+ 'dashboard.analysis.empty.selectSymbol': '选择标的开始分析',
+ 'dashboard.analysis.empty.selectSymbolDesc': '从自选股列表中选择或输入标的代码,获取多维度AI分析报告',
+ 'dashboard.analysis.empty.startAnalysis': '点击"开始分析"按钮进行多维度分析',
+ 'dashboard.analysis.empty.startAnalysisDesc': '我们将从基本面、技术、新闻、情绪和风险等多个维度为您提供全面的分析',
+ 'dashboard.analysis.empty.noData': '暂无{type}分析数据,请先进行综合分析',
+ 'dashboard.analysis.empty.noWatchlist': '暂无自选股',
+ 'dashboard.analysis.empty.noHistory': '暂无历史记录',
+ 'dashboard.analysis.empty.watchlistHint': '暂无自选股,请先',
+ 'dashboard.analysis.empty.noDebateData': '暂无辩论数据',
+ 'dashboard.analysis.empty.noDecisionData': '暂无决策数据',
+ 'dashboard.analysis.empty.selectAgent': '请选择一个 Agent 查看分析结果',
+ 'dashboard.analysis.loading.analyzing': '正在分析中,请稍候...',
+ 'dashboard.analysis.loading.fundamental': '正在分析基本面数据...',
+ 'dashboard.analysis.loading.technical': '正在分析技术指标...',
+ 'dashboard.analysis.loading.news': '正在分析新闻数据...',
+ 'dashboard.analysis.loading.sentiment': '正在分析市场情绪...',
+ 'dashboard.analysis.loading.risk': '正在评估风险...',
+ 'dashboard.analysis.loading.debate': '正在进行多空辩论...',
+ 'dashboard.analysis.loading.decision': '正在生成最终决策...',
+ 'dashboard.analysis.score.overall': '综合评分',
+ 'dashboard.analysis.score.recommendation': '投资建议',
+ 'dashboard.analysis.score.confidence': '置信度',
+ 'dashboard.analysis.dimension.fundamental': '基本面',
+ 'dashboard.analysis.dimension.technical': '技术',
+ 'dashboard.analysis.dimension.news': '新闻',
+ 'dashboard.analysis.dimension.sentiment': '情绪',
+ 'dashboard.analysis.dimension.risk': '风险',
+ 'dashboard.analysis.card.dimensionScores': '各维度评分',
+ 'dashboard.analysis.card.overviewReport': '综合分析报告',
+ 'dashboard.analysis.card.financialMetrics': '财务指标',
+ 'dashboard.analysis.card.fundamentalReport': '基本面分析报告',
+ 'dashboard.analysis.card.technicalIndicators': '技术指标',
+ 'dashboard.analysis.card.technicalReport': '技术分析报告',
+ 'dashboard.analysis.card.newsList': '相关新闻',
+ 'dashboard.analysis.card.newsReport': '新闻分析报告',
+ 'dashboard.analysis.card.sentimentIndicators': '情绪指标',
+ 'dashboard.analysis.card.sentimentReport': '情绪分析报告',
+ 'dashboard.analysis.card.riskMetrics': '风险指标',
+ 'dashboard.analysis.card.riskReport': '风险评估报告',
+ 'dashboard.analysis.card.bullView': '看涨观点 (Bull)',
+ 'dashboard.analysis.card.bearView': '看跌观点 (Bear)',
+ 'dashboard.analysis.card.researchConclusion': '研究员结论',
+ 'dashboard.analysis.card.traderPlan': '交易员计划',
+ 'dashboard.analysis.card.riskDebate': '风险委员会辩论',
+ 'dashboard.analysis.card.finalDecision': '最终决策 (Final Decision)',
+ 'dashboard.analysis.card.tradePlanDetail': '交易计划详情',
+ 'dashboard.analysis.tradingPlan.entry_price': '入场价格',
+ 'dashboard.analysis.tradingPlan.position_size': '仓位大小',
+ 'dashboard.analysis.tradingPlan.stop_loss': '止损',
+ 'dashboard.analysis.tradingPlan.take_profit': '止盈',
+ 'dashboard.analysis.label.confidence': '置信度',
+ 'dashboard.analysis.label.keyPoints': '核心要点',
+ 'dashboard.analysis.label.riskWarning': '风险提示',
+ 'dashboard.analysis.risk.risky': '激进派观点 (Risky)',
+ 'dashboard.analysis.risk.neutral': '中立派观点 (Neutral)',
+ 'dashboard.analysis.risk.safe': '保守派观点 (Safe)',
+ 'dashboard.analysis.risk.conclusion': '结论',
+ 'dashboard.analysis.feature.fundamental': '基本面分析',
+ 'dashboard.analysis.feature.technical': '技术分析',
+ 'dashboard.analysis.feature.news': '新闻分析',
+ 'dashboard.analysis.feature.sentiment': '情绪分析',
+ 'dashboard.analysis.feature.risk': '风险评估',
+ 'dashboard.analysis.watchlist.title': '我的自选股',
+ 'dashboard.analysis.watchlist.add': '添加',
+ 'dashboard.analysis.watchlist.addStock': '添加股票',
+ 'dashboard.analysis.modal.addStock.title': '添加自选股',
+ 'dashboard.analysis.modal.addStock.confirm': '确定',
+ 'dashboard.analysis.modal.addStock.cancel': '取消',
+ 'dashboard.analysis.modal.addStock.market': '市场类型',
+ 'dashboard.analysis.modal.addStock.marketPlaceholder': '请选择市场',
+ 'dashboard.analysis.modal.addStock.marketRequired': '请选择市场类型',
+ 'dashboard.analysis.modal.addStock.symbol': '股票代码',
+ 'dashboard.analysis.modal.addStock.symbolPlaceholder': '例如: AAPL, TSLA, GOOGL, 000001, BTC',
+ 'dashboard.analysis.modal.addStock.symbolRequired': '请输入股票代码',
+ 'dashboard.analysis.modal.addStock.searchPlaceholder': '搜索标的代码或名称',
+ 'dashboard.analysis.modal.addStock.searchOrInputPlaceholder': '搜索或输入标的代码(如:AAPL、BTC/USDT、EUR/USD)',
+ 'dashboard.analysis.modal.addStock.searchOrInputHint': '支持搜索数据库中的标的,或直接输入代码(系统将自动获取名称)',
+ 'dashboard.analysis.modal.addStock.search': '搜索',
+ 'dashboard.analysis.modal.addStock.searchResults': '搜索结果',
+ 'dashboard.analysis.modal.addStock.hotSymbols': '热门标的',
+ 'dashboard.analysis.modal.addStock.noHotSymbols': '暂无热门标的',
+ 'dashboard.analysis.modal.addStock.selectedSymbol': '已选标的',
+ 'dashboard.analysis.modal.addStock.pleaseSelectSymbol': '请先选择一个标的',
+ 'dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol': '请先选择一个标的或输入标的代码',
+ 'dashboard.analysis.modal.addStock.pleaseEnterSymbol': '请输入标的代码',
+ 'dashboard.analysis.modal.addStock.pleaseSelectMarket': '请先选择市场类型',
+ 'dashboard.analysis.modal.addStock.searchFailed': '搜索失败,请稍后重试',
+ 'dashboard.analysis.modal.addStock.noSearchResults': '未找到匹配的标的',
+ 'dashboard.analysis.modal.addStock.willAutoFetchName': '系统将自动获取名称',
+ 'dashboard.analysis.modal.addStock.addDirectly': '直接添加',
+ 'dashboard.analysis.modal.addStock.nameWillBeFetched': '名称将在添加时自动获取',
+ 'dashboard.analysis.market.AShare': 'A股',
+ 'dashboard.analysis.market.USStock': '美股',
+ 'dashboard.analysis.market.HShare': '港股',
+ 'dashboard.analysis.market.Crypto': '加密货币',
+ 'dashboard.analysis.market.Forex': '外汇',
+ 'dashboard.analysis.market.Futures': '期货',
+ 'dashboard.analysis.modal.history.title': '历史分析记录',
+ 'dashboard.analysis.modal.history.viewResult': '查看结果',
+ 'dashboard.analysis.modal.history.completeTime': '完成时间',
+ 'dashboard.analysis.modal.history.error': '错误',
+ 'dashboard.analysis.status.pending': '待处理',
+ 'dashboard.analysis.status.processing': '处理中',
+ 'dashboard.analysis.status.completed': '已完成',
+ 'dashboard.analysis.status.failed': '失败',
+ 'dashboard.analysis.message.selectSymbol': '请先选择标的',
+ 'dashboard.analysis.message.taskCreated': '分析任务已创建,正在后台执行...',
+ 'dashboard.analysis.message.analysisComplete': '分析完成',
+ 'dashboard.analysis.message.analysisCompleteCache': '分析完成(使用缓存数据)',
+ 'dashboard.analysis.message.analysisFailed': '分析失败,请稍后重试',
+ 'dashboard.analysis.message.addStockSuccess': '添加成功',
+ 'dashboard.analysis.message.addStockFailed': '添加失败',
+ 'dashboard.analysis.message.removeStockSuccess': '移除成功',
+ 'dashboard.analysis.message.removeStockFailed': '移除失败',
+ 'dashboard.analysis.message.resumingAnalysis': '正在恢复分析任务...',
+ 'dashboard.analysis.message.deleteSuccess': '删除成功',
+ 'dashboard.analysis.message.deleteFailed': '删除失败',
+ 'dashboard.analysis.modal.history.delete': '删除',
+ 'dashboard.analysis.modal.history.deleteConfirm': '确定要删除这条分析记录吗?',
+ 'dashboard.analysis.test': '工专路 {no} 号店',
+ 'dashboard.analysis.introduce': '指标说明',
+ 'dashboard.analysis.total-sales': '总销售额',
+ 'dashboard.analysis.day-sales': '日均销售额¥',
+ 'dashboard.analysis.visits': '访问量',
+ 'dashboard.analysis.visits-trend': '访问量趋势',
+ 'dashboard.analysis.visits-ranking': '门店访问量排名',
+ 'dashboard.analysis.day-visits': '日访问量',
+ 'dashboard.analysis.week': '周同比',
+ 'dashboard.analysis.day': '日同比',
+ 'dashboard.analysis.payments': '支付笔数',
+ 'dashboard.analysis.conversion-rate': '转化率',
+ 'dashboard.analysis.operational-effect': '运营活动效果',
+ 'dashboard.analysis.sales-trend': '销售趋势',
+ 'dashboard.analysis.sales-ranking': '门店销售额排名',
+ 'dashboard.analysis.all-year': '全年',
+ 'dashboard.analysis.all-month': '本月',
+ 'dashboard.analysis.all-week': '本周',
+ 'dashboard.analysis.all-day': '今日',
+ 'dashboard.analysis.search-users': '搜索用户数',
+ 'dashboard.analysis.per-capita-search': '人均搜索次数',
+ 'dashboard.analysis.online-top-search': '线上热门搜索',
+ 'dashboard.analysis.the-proportion-of-sales': '销售额类别占比',
+ 'dashboard.analysis.dropdown-option-one': '操作一',
+ 'dashboard.analysis.dropdown-option-two': '操作二',
+ 'dashboard.analysis.channel.all': '全部渠道',
+ 'dashboard.analysis.channel.online': '线上',
+ 'dashboard.analysis.channel.stores': '门店',
+ 'dashboard.analysis.sales': '销售额',
+ 'dashboard.analysis.traffic': '客流量',
+ 'dashboard.analysis.table.rank': '排名',
+ 'dashboard.analysis.table.search-keyword': '搜索关键词',
+ 'dashboard.analysis.table.users': '用户数',
+ 'dashboard.analysis.table.weekly-range': '周涨幅',
+ 'dashboard.indicator.selectSymbol': '选择或输入标的代码',
+ 'dashboard.indicator.emptyWatchlistHint': '暂无自选股,请先添加',
+ 'dashboard.indicator.hint.selectSymbol': '请选择标的开始分析',
+ 'dashboard.indicator.hint.selectSymbolDesc': '在上方搜索框中选择或输入股票代码,查看K线图表和技术指标',
+ 'dashboard.indicator.retry': '重试',
+ 'dashboard.indicator.panel.title': '技术指标',
+ 'dashboard.indicator.panel.realtimeOn': '关闭实时更新',
+ 'dashboard.indicator.panel.realtimeOff': '开启实时更新',
+ 'dashboard.indicator.panel.themeLight': '切换到深色主题',
+ 'dashboard.indicator.panel.themeDark': '切换到浅色主题',
+ 'dashboard.indicator.section.enabled': '已启用',
+ 'dashboard.indicator.section.added': '我添加的指标',
+ 'dashboard.indicator.section.custom': '自己创建的指标',
+ 'dashboard.indicator.section.bought': '我选购的指标',
+ 'dashboard.indicator.section.myCreated': '我创建的指标',
+ 'dashboard.indicator.empty': '暂无指标,请先添加或创建指标',
+ 'dashboard.indicator.buy': '购买指标',
+ 'dashboard.indicator.action.start': '启动',
+ 'dashboard.indicator.action.stop': '关闭',
+ 'dashboard.indicator.action.edit': '编辑',
+ 'dashboard.indicator.action.delete': '删除',
+ 'dashboard.indicator.action.backtest': '回测',
+ 'dashboard.indicator.status.normal': '正常',
+ 'dashboard.indicator.status.normalPermanent': '正常(永久有效)',
+ 'dashboard.indicator.status.expired': '已过期',
+ 'dashboard.indicator.expiry.permanent': '永久有效',
+ 'dashboard.indicator.expiry.noExpiry': '无到期时间',
+ 'dashboard.indicator.expiry.expired': '已过期:{date}',
+ 'dashboard.indicator.expiry.expiresOn': '到期时间:{date}',
+ 'dashboard.indicator.delete.confirmTitle': '确认删除',
+ 'dashboard.indicator.delete.confirmContent': '确定要删除指标"{name}"吗?此操作不可恢复。',
+ 'dashboard.indicator.delete.confirmOk': '删除',
+ 'dashboard.indicator.delete.confirmCancel': '取消',
+ 'dashboard.indicator.delete.success': '删除成功',
+ 'dashboard.indicator.delete.failed': '删除失败',
+ 'dashboard.indicator.save.success': '保存成功',
+ 'dashboard.indicator.save.failed': '保存失败',
+ 'dashboard.indicator.error.loadWatchlistFailed': '加载自选股失败',
+ 'dashboard.indicator.error.chartNotReady': '图表组件未初始化,请先选择标的并等待图表加载完成',
+ 'dashboard.indicator.error.chartMethodNotReady': '图表组件方法未就绪,请稍后重试',
+ 'dashboard.indicator.error.chartExecuteNotReady': '图表组件执行方法未就绪,请稍后重试',
+ 'dashboard.indicator.error.parseFailed': '无法解析Python代码',
+ 'dashboard.indicator.error.parseFailedCheck': '无法解析Python代码,请检查代码格式',
+ 'dashboard.indicator.error.addIndicatorFailed': '添加指标失败',
+ 'dashboard.indicator.error.runIndicatorFailed': '运行指标失败',
+ 'dashboard.indicator.error.pleaseLogin': '请先登录',
+ 'dashboard.indicator.error.loadDataFailed': '数据加载失败',
+ 'dashboard.indicator.error.loadDataFailedDesc': '请检查网络连接',
+ 'dashboard.indicator.error.tiingoSubscription': '外汇1分钟数据需要 Tiingo 付费订阅,请使用其他时间周期或升级订阅',
+ 'dashboard.indicator.error.pythonEngineFailed': 'Python 引擎加载失败,指标功能可能无法使用',
+ 'dashboard.indicator.error.chartInitFailed': '图表初始化失败',
+ 'dashboard.indicator.warning.enterCode': '请先输入指标代码',
+ 'dashboard.indicator.warning.pyodideLoadFailed': 'Python 引擎加载失败',
+ 'dashboard.indicator.warning.pyodideLoadFailedDesc': '您当前所在区域或网络环境无法使用该功能',
+ 'dashboard.indicator.warning.chartNotInitialized': '图表未初始化,无法使用画线工具',
+ 'dashboard.indicator.success.runIndicator': '指标运行成功',
+ 'dashboard.indicator.success.clearDrawings': '已清除所有画线',
+ 'dashboard.indicator.sma': 'SMA (均线组合)',
+ 'dashboard.indicator.ema': 'EMA (指数均线组合)',
+ 'dashboard.indicator.rsi': 'RSI (相对强弱)',
+ 'dashboard.indicator.macd': 'MACD',
+ 'dashboard.indicator.bb': '布林带 (Bollinger Bands)',
+ 'dashboard.indicator.atr': 'ATR (平均真实波幅)',
+ 'dashboard.indicator.cci': 'CCI (商品通道指数)',
+ 'dashboard.indicator.williams': 'Williams %R (威廉指标)',
+ 'dashboard.indicator.mfi': 'MFI (资金流量指标)',
+ 'dashboard.indicator.adx': 'ADX (平均趋向指数)',
+ 'dashboard.indicator.obv': 'OBV (能量潮)',
+ 'dashboard.indicator.adosc': 'ADOSC (积累/派发振荡器)',
+ 'dashboard.indicator.ad': 'AD (积累/派发线)',
+ 'dashboard.indicator.kdj': 'KDJ (随机指标)',
+ 'dashboard.indicator.signal.buy': 'BUY',
+ 'dashboard.indicator.signal.sell': 'SELL',
+ 'dashboard.indicator.signal.supertrendBuy': 'SuperTrend Buy',
+ 'dashboard.indicator.signal.supertrendSell': 'SuperTrend Sell',
+ 'dashboard.indicator.chart.kline': 'K线',
+ 'dashboard.indicator.chart.volume': '成交量',
+ 'dashboard.indicator.chart.uptrend': 'Up Trend',
+ 'dashboard.indicator.chart.downtrend': 'Down Trend',
+ 'dashboard.indicator.tooltip.time': '时间',
+ 'dashboard.indicator.tooltip.open': '开',
+ 'dashboard.indicator.tooltip.close': '收',
+ 'dashboard.indicator.tooltip.high': '高',
+ 'dashboard.indicator.tooltip.low': '低',
+ 'dashboard.indicator.tooltip.volume': '成交量',
+ 'dashboard.indicator.drawing.line': '线段',
+ 'dashboard.indicator.drawing.horizontalLine': '水平线',
+ 'dashboard.indicator.drawing.verticalLine': '垂直线',
+ 'dashboard.indicator.drawing.ray': '射线',
+ 'dashboard.indicator.drawing.straightLine': '直线',
+ 'dashboard.indicator.drawing.parallelLine': '平行线',
+ 'dashboard.indicator.drawing.priceLine': '价格线',
+ 'dashboard.indicator.drawing.priceChannel': '价格通道',
+ 'dashboard.indicator.drawing.fibonacciLine': '斐波那契线',
+ 'dashboard.indicator.drawing.clearAll': '清除所有画线',
+ 'dashboard.indicator.market.AShare': 'A股',
+ 'dashboard.indicator.market.USStock': '美股',
+ 'dashboard.indicator.market.HShare': '港股',
+ 'dashboard.indicator.market.Crypto': '加密货币',
+ 'dashboard.indicator.market.Forex': '外汇',
+ 'dashboard.indicator.market.Futures': '期货',
+ 'dashboard.indicator.create': '创建指标',
+ 'dashboard.indicator.editor.title': '创建/编辑指标',
+ 'dashboard.indicator.editor.name': '指标名称',
+ 'dashboard.indicator.editor.nameRequired': '请输入指标名称',
+ 'dashboard.indicator.editor.namePlaceholder': '请输入指标名称',
+ 'dashboard.indicator.editor.description': '指标描述',
+ 'dashboard.indicator.editor.descriptionPlaceholder': '请输入指标描述(可选)',
+ 'dashboard.indicator.editor.code': '指标脚本(Python)',
+ 'dashboard.indicator.editor.codeRequired': '请输入指标代码',
+ 'dashboard.indicator.editor.codePlaceholder': '请输入Python代码',
+ 'dashboard.indicator.editor.run': '运行',
+ 'dashboard.indicator.editor.runHint': '点击运行按钮可以在K线图上预览指标效果',
+ 'dashboard.indicator.editor.guide': '开发指南',
+ 'dashboard.indicator.editor.guideTitle': 'Python 指标开发指南',
+ 'dashboard.indicator.editor.save': '保存',
+ 'dashboard.indicator.editor.cancel': '取消',
+ 'dashboard.indicator.editor.unnamed': '未命名指标',
+ 'dashboard.indicator.editor.publishToCommunity': '发布到社区',
+ 'dashboard.indicator.editor.publishToCommunityHint': '发布后,其他用户可以在社区中查看和使用您的指标',
+ 'dashboard.indicator.editor.indicatorType': '指标类型',
+ 'dashboard.indicator.editor.indicatorTypeRequired': '请选择指标类型',
+ 'dashboard.indicator.editor.indicatorTypePlaceholder': '请选择指标类型',
+ 'dashboard.indicator.editor.previewImage': '预览图',
+ 'dashboard.indicator.editor.uploadImage': '上传图片',
+ 'dashboard.indicator.editor.previewImageHint': '建议尺寸:800x400,大小不超过2MB',
+ 'dashboard.indicator.editor.pricing': '售价(QDT)',
+ 'dashboard.indicator.editor.pricingType.free': '免费',
+ 'dashboard.indicator.editor.pricingType.permanent': '永久',
+ 'dashboard.indicator.editor.pricingType.monthly': '月付',
+ 'dashboard.indicator.editor.price': '价格',
+ 'dashboard.indicator.editor.priceRequired': '请输入价格',
+ 'dashboard.indicator.editor.pricePlaceholder': '请输入价格',
+ 'dashboard.indicator.editor.pricingHint': '免费指标虽然价格为0,但平台会根据您的指标使用量和好评率给予奖励(QDT)',
+ 'dashboard.indicator.editor.aiGenerate': '智能生成',
+ 'dashboard.indicator.editor.aiPromptPlaceholder': '请描述你的信号逻辑(只输出 buy/sell)与绘图(plots)。仓位/风控/加减仓请在回测配置中设定。',
+ 'dashboard.indicator.editor.aiGenerateBtn': 'AI生成代码',
+ 'dashboard.indicator.editor.aiPromptRequired': '请输入您的想法',
+ 'dashboard.indicator.editor.aiGenerateSuccess': '代码生成成功',
+ 'dashboard.indicator.editor.aiGenerateError': '代码生成失败,请稍后重试',
+ 'dashboard.indicator.editor.verifyCode': '代码检查',
+ 'dashboard.indicator.editor.verifyCodeSuccess': '代码检查通过',
+ 'dashboard.indicator.editor.verifyCodeFailed': '代码检查未通过',
+ 'dashboard.indicator.editor.verifyCodeEmpty': '代码不能为空',
+ 'dashboard.indicator.boundary.message': '提示:指标脚本只负责“计算 + 绘图 + buy/sell 信号”;仓位、风控、加减仓、手续费/滑点属于策略执行配置。',
+ 'dashboard.indicator.boundary.indicatorRule': "指标脚本请只输出 buy/sell(并设定 df['buy']/df['sell'])。不要在脚本内撰写仓位管理、止盈止损、加减仓。",
+ 'dashboard.indicator.boundary.backtestRule': '规则:同一根K线若出现主信号(buy/sell→开/平仓/反手),本K线将跳过所有加仓与减仓。',
+ 'dashboard.indicator.backtest.title': '指标回测',
+ 'dashboard.indicator.backtest.config': '回测参数',
+ 'dashboard.indicator.backtest.startDate': '开始日期',
+ 'dashboard.indicator.backtest.endDate': '结束日期',
+ 'dashboard.indicator.backtest.selectStartDate': '选择开始日期',
+ 'dashboard.indicator.backtest.selectEndDate': '选择结束日期',
+ 'dashboard.indicator.backtest.startDateRequired': '请选择开始日期',
+ 'dashboard.indicator.backtest.endDateRequired': '请选择结束日期',
+ 'dashboard.indicator.backtest.initialCapital': '初始资金',
+ 'dashboard.indicator.backtest.initialCapitalRequired': '请输入初始资金',
+ 'dashboard.indicator.backtest.commission': '手续费率(%)',
+ 'dashboard.indicator.backtest.commissionHint': '按名义价值(含杠杆)收取;每笔成交(开/平仓)都会从余额扣除。',
+ 'dashboard.indicator.backtest.leverage': '杠杆倍率',
+ 'dashboard.indicator.backtest.timeframe': 'K线周期',
+ 'dashboard.indicator.backtest.tradeDirection': '交易方向',
+ 'dashboard.indicator.backtest.longOnly': '做多',
+ 'dashboard.indicator.backtest.shortOnly': '做空',
+ 'dashboard.indicator.backtest.both': '双向',
+ 'dashboard.indicator.backtest.run': '开始回测',
+ 'dashboard.indicator.backtest.rerun': '重新回测',
+ 'dashboard.indicator.backtest.close': '关闭',
+ 'dashboard.indicator.backtest.running': '正在进行指标回测...',
+ 'dashboard.indicator.backtest.loadingTip1': '正在获取历史K线数据...',
+ 'dashboard.indicator.backtest.loadingTip2': '正在执行策略信号计算...',
+ 'dashboard.indicator.backtest.loadingTip3': '正在模拟交易执行...',
+ 'dashboard.indicator.backtest.loadingTip4': '正在计算回测指标...',
+ 'dashboard.indicator.backtest.loadingTip5': '即将完成,请稍候...',
+ 'dashboard.indicator.backtest.results': '回测结果',
+ 'dashboard.indicator.backtest.totalReturn': '总收益率',
+ 'dashboard.indicator.backtest.annualReturn': '年化收益',
+ 'dashboard.indicator.backtest.maxDrawdown': '最大回撤',
+ 'dashboard.indicator.backtest.sharpeRatio': '夏普比率',
+ 'dashboard.indicator.backtest.winRate': '胜率',
+ 'dashboard.indicator.backtest.profitFactor': '盈亏比',
+ 'dashboard.indicator.backtest.totalTrades': '交易次数',
+ 'dashboard.indicator.totalReturn': '总收益率',
+ 'dashboard.indicator.annualReturn': '年化收益率',
+ 'dashboard.indicator.maxDrawdown': '最大回撤',
+ 'dashboard.indicator.sharpeRatio': '夏普比率',
+ 'dashboard.indicator.winRate': '胜率',
+ 'dashboard.indicator.profitFactor': '盈亏比',
+ 'dashboard.indicator.totalTrades': '总交易次数',
+ 'dashboard.indicator.backtest.totalCommission': '总手续费',
+ 'dashboard.indicator.backtest.equityCurve': '收益曲线',
+ 'dashboard.indicator.backtest.strategy': '指标收益',
+ 'dashboard.indicator.backtest.benchmark': '基准收益',
+ 'dashboard.indicator.backtest.tradeHistory': '交易记录',
+ 'dashboard.indicator.backtest.tradeTime': '时间',
+ 'dashboard.indicator.backtest.tradeType': '类型',
+ 'dashboard.indicator.backtest.buy': '买入',
+ 'dashboard.indicator.backtest.sell': '卖出',
+ 'dashboard.indicator.backtest.liquidation': '爆仓',
+ 'dashboard.indicator.backtest.openLong': '开多',
+ 'dashboard.indicator.backtest.closeLong': '平多',
+ 'dashboard.indicator.backtest.closeLongStop': '平多(止损)',
+ 'dashboard.indicator.backtest.closeLongProfit': '平多(止盈)',
+ 'dashboard.indicator.backtest.addLong': '加多仓',
+ 'dashboard.indicator.backtest.openShort': '开空',
+ 'dashboard.indicator.backtest.closeShort': '平空',
+ 'dashboard.indicator.backtest.closeShortStop': '平空(止损)',
+ 'dashboard.indicator.backtest.closeShortProfit': '平空(止盈)',
+ 'dashboard.indicator.backtest.addShort': '加空仓',
+ 'dashboard.indicator.backtest.price': '价格',
+ 'dashboard.indicator.backtest.amount': '数量',
+ 'dashboard.indicator.backtest.balance': '账户余额',
+ 'dashboard.indicator.backtest.profit': '盈亏',
+ 'dashboard.indicator.backtest.success': '回测完成',
+ 'dashboard.indicator.backtest.failed': '回测失败,请稍后重试',
+ 'dashboard.indicator.backtest.quickSelect': '快速选择',
+ // 多时间框架回测精度提示
+ 'dashboard.indicator.backtest.precisionMode': '回测精度模式',
+ 'dashboard.indicator.backtest.estimatedCandles': '预计处理约 {count} 根K线',
+ 'dashboard.indicator.backtest.highPrecisionDesc': '使用1分钟级别K线进行高精度回测,止损止盈触发更精确',
+ 'dashboard.indicator.backtest.mediumPrecisionDesc': '回测区间超过30天,使用5分钟级别K线以平衡精度与性能',
+ 'dashboard.indicator.backtest.standardModeWarning': '使用标准回测模式',
+ 'dashboard.indicator.backtest.standardModeDesc': '当前配置不支持高精度回测,将使用策略K线进行回测',
+ 'dashboard.indicator.backtest.onlyCryptoSupported': '高精度回测仅支持加密货币市场',
+ 'dashboard.indicator.backtest.noIndicatorCode': '该指标没有可回测的代码',
+ 'dashboard.indicator.backtest.noSymbol': '请先选择交易标的',
+ 'dashboard.indicator.backtest.dateRangeExceeded': '回测时间范围超出限制:{timeframe}周期最多可回测{maxRange}',
+ 'dashboard.indicator.backtest.dateRangeExceededDays': '回测时间范围超出限制:{timeframe}周期最多可回测{maxRange}({maxDays}天)',
+ 'dashboard.indicator.backtest.metaLine': '标的:{symbol} | 市场:{market} | 周期:{timeframe}',
+ 'dashboard.indicator.backtest.savedRunId': '回测已保存,记录ID:{id}',
+ 'dashboard.indicator.backtest.historyTitle': '回测记录',
+ 'dashboard.indicator.backtest.historyRefresh': '刷新',
+ 'dashboard.indicator.backtest.historyView': '查看',
+ 'dashboard.indicator.backtest.historyNoData': '暂无回测记录',
+ 'dashboard.indicator.backtest.historyUseCurrent': '仅目前币种/周期',
+ 'dashboard.indicator.backtest.historyFilterSymbol': '币种(Symbol)',
+ 'dashboard.indicator.backtest.historyFilterTimeframe': '周期(Timeframe)',
+ 'dashboard.indicator.backtest.historyApply': '应用筛选',
+ 'dashboard.indicator.backtest.historyAIAnalyze': 'AI分析',
+ 'dashboard.indicator.backtest.historyAIAnalyzeTitle': 'AI 分析建议',
+ 'dashboard.indicator.backtest.historyNoAIResult': '暂无 AI 分析结果',
+ 'dashboard.indicator.backtest.historyRunId': '记录ID',
+ 'dashboard.indicator.backtest.historyCreatedAt': '时间',
+ 'dashboard.indicator.backtest.historyRange': '区间',
+ 'dashboard.indicator.backtest.historyStatus': '状态',
+ 'dashboard.indicator.backtest.historyStatusSuccess': '成功',
+ 'dashboard.indicator.backtest.historyStatusFailed': '失败',
+ 'dashboard.indicator.backtest.historyActions': '操作',
+ 'dashboard.indicator.backtest.prev': '上一步',
+ 'dashboard.indicator.backtest.next': '下一步',
+ 'dashboard.indicator.backtest.steps.strategy.title': '执行配置',
+ 'dashboard.indicator.backtest.steps.strategy.desc': '仓位/风控/加减仓(策略层)',
+ 'dashboard.indicator.backtest.steps.trading.title': '回测环境',
+ 'dashboard.indicator.backtest.steps.trading.desc': '时间/资金/费率/杠杆/滑点',
+ 'dashboard.indicator.backtest.steps.results.title': '结果',
+ 'dashboard.indicator.backtest.steps.results.desc': '统计与交易明细',
+ 'dashboard.indicator.backtest.panel.risk': '执行配置:风控(止损/移动止盈)',
+ 'dashboard.indicator.backtest.panel.scale': '执行配置:加仓(顺势/逆势)',
+ 'dashboard.indicator.backtest.panel.reduce': '执行配置:减仓(顺势/逆势)',
+ 'dashboard.indicator.backtest.panel.position': '执行配置:开仓仓位',
+ 'dashboard.indicator.backtest.field.stopLossPct': '止损(%)',
+ 'dashboard.indicator.backtest.field.takeProfitPct': '止盈(%)',
+ 'dashboard.indicator.backtest.field.trailingEnabled': '移动止盈',
+ 'dashboard.indicator.backtest.field.trailingStopPct': '移动回撤(%)',
+ 'dashboard.indicator.backtest.field.trailingActivationPct': '移动止盈激活(%)',
+ 'dashboard.indicator.backtest.field.slippage': '滑点(%)',
+ 'dashboard.indicator.backtest.field.trendAddEnabled': '顺势加仓',
+ 'dashboard.indicator.backtest.field.dcaAddEnabled': '逆势加仓',
+ 'dashboard.indicator.backtest.field.trendAddStepPct': '加仓触发(%)',
+ 'dashboard.indicator.backtest.field.dcaAddStepPct': '加仓触发(%)',
+ 'dashboard.indicator.backtest.field.trendAddSizePct': '每次加仓资金占比(%)',
+ 'dashboard.indicator.backtest.field.dcaAddSizePct': '每次加仓资金占比(%)',
+ 'dashboard.indicator.backtest.field.trendAddMaxTimes': '最多加仓次数',
+ 'dashboard.indicator.backtest.field.dcaAddMaxTimes': '最多加仓次数',
+ 'dashboard.indicator.backtest.field.trendReduceEnabled': '顺势减仓',
+ 'dashboard.indicator.backtest.field.adverseReduceEnabled': '逆势减仓',
+ 'dashboard.indicator.backtest.field.trendReduceStepPct': '顺势触发(%)',
+ 'dashboard.indicator.backtest.field.adverseReduceStepPct': '逆势触发(%)',
+ 'dashboard.indicator.backtest.field.trendReduceSizePct': '每次减仓比例(%)',
+ 'dashboard.indicator.backtest.field.adverseReduceSizePct': '每次逆势减仓比例(%)',
+ 'dashboard.indicator.backtest.field.trendReduceMaxTimes': '最多顺势减仓次数',
+ 'dashboard.indicator.backtest.field.adverseReduceMaxTimes': '最多逆势减仓次数',
+ 'dashboard.indicator.backtest.field.entryPct': '开仓资金占比(%)',
+ 'dashboard.indicator.backtest.field.minOrderPct': '单次最小资金占比(%)(可选)',
+ 'dashboard.indicator.backtest.hint.entryPctMax': '最大可开仓:{maxPct}%(为后续加仓预留资金)',
+ 'dashboard.indicator.backtest.closeLongTrailing': '平多(移动止损/止盈)',
+ 'dashboard.indicator.backtest.reduceLong': '多头减仓',
+ 'dashboard.indicator.backtest.closeShortTrailing': '平空(移动止损/止盈)',
+ 'dashboard.indicator.backtest.reduceShort': '空头减仓',
+ 'dashboard.docs.title': '文档中心',
+ 'dashboard.docs.search.placeholder': '搜索文档...',
+ 'dashboard.docs.category.all': '全部',
+ 'dashboard.docs.category.guide': '开发指南',
+ 'dashboard.docs.category.api': 'API文档',
+ 'dashboard.docs.category.tutorial': '教程',
+ 'dashboard.docs.category.faq': '常见问题',
+ 'dashboard.docs.featured.title': '推荐文档',
+ 'dashboard.docs.featured.tag': '推荐',
+ 'dashboard.docs.list.views': '浏览',
+ 'dashboard.docs.list.author': '作者',
+ 'dashboard.docs.list.empty': '暂无文档',
+ 'dashboard.docs.list.backToAll': '返回全部文档',
+ 'dashboard.docs.list.total': '共 {count} 篇文档',
+ 'dashboard.docs.detail.back': '返回文档列表',
+ 'dashboard.docs.detail.updatedAt': '更新于',
+ 'dashboard.docs.detail.related': '相关文档',
+ 'dashboard.docs.detail.notFound': '文档不存在',
+ 'dashboard.docs.detail.error': '文档不存在或已被删除',
+ 'dashboard.docs.search.result': '搜索结果',
+ 'dashboard.docs.search.keyword': '关键词',
+ 'community.filter.indicatorType': '指标类型',
+ 'community.filter.all': '全部',
+ 'community.filter.other': '其他选项',
+ 'community.filter.pricing': '定价类型',
+ 'community.filter.allPricing': '全部定价',
+ 'community.filter.sortBy': '排序方式',
+ 'community.filter.search': '搜索',
+ 'community.filter.searchPlaceholder': '搜索指标名称',
+ 'community.indicatorType.trend': '趋势型',
+ 'community.indicatorType.momentum': '动量型',
+ 'community.indicatorType.volatility': '波动率',
+ 'community.indicatorType.volume': '成交量',
+ 'community.indicatorType.custom': '自定义',
+ 'community.pricing.free': '免费',
+ 'community.pricing.paid': '付费',
+ 'community.sort.downloads': '下载量',
+ 'community.sort.rating': '评分',
+ 'community.sort.newest': '最新发布',
+ 'community.pagination.total': '共 {total} 个指标',
+ 'community.noDescription': '暂无描述',
+ 'community.detail.type': '类型',
+ 'community.detail.pricing': '定价',
+ 'community.detail.rating': '评分',
+ 'community.detail.downloads': '下载量',
+ 'community.detail.author': '作者',
+ 'community.detail.description': '简介',
+ 'community.detail.detailContent': '详细说明',
+ 'community.detail.backtestStats': '回测统计',
+ 'community.action.purchase': '购买指标',
+ 'community.action.addToMyIndicators': '添加到我的指标',
+ 'community.action.favorite': '收藏',
+ 'community.action.unfavorite': '取消收藏',
+ 'community.action.buyNow': '立即购买',
+ 'community.action.renew': '续费',
+ 'community.purchase.price': '价格',
+ 'community.purchase.permanent': '永久',
+ 'community.purchase.monthly': '月',
+ 'community.purchase.confirmBuy': '确认购买该指标({price} QDT)?',
+ 'community.purchase.confirmRenew': '确认续费该指标({price} QDT/月)?',
+ 'community.purchase.confirmFree': '确认添加该免费指标?',
+ 'community.purchase.confirmTitle': '确认操作',
+ 'community.purchase.owned': '您已购买该指标(永久有效)',
+ 'community.purchase.ownIndicator': '这是您发布的指标',
+ 'community.purchase.expired': '您的订阅已过期',
+ 'community.purchase.expiresOn': '到期时间:{date}',
+ 'community.tabs.detail': '指标详情',
+ 'community.tabs.backtest': '回测数据',
+ 'community.tabs.ratings': '用户评价',
+ 'community.rating.myRating': '我的评分',
+ 'community.rating.stars': '{count} 星',
+ 'community.rating.commentPlaceholder': '分享您的使用体验...',
+ 'community.rating.submit': '提交评分',
+ 'community.rating.modify': '修改',
+ 'community.rating.saveModify': '保存修改',
+ 'community.rating.cancel': '取消',
+ 'community.rating.selectRating': '请选择评分',
+ 'community.rating.success': '评分成功',
+ 'community.rating.modifySuccess': '修改评价成功',
+ 'community.rating.failed': '评分失败',
+ 'community.rating.noRatings': '暂无评价',
+ 'community.backtest.note': '以上数据为历史回测结果,仅供参考,不代表未来收益',
+ 'community.backtest.noData': '暂无回测数据',
+ 'community.backtest.uploadHint': '作者尚未上传回测数据',
+ 'community.message.loadFailed': '加载指标列表失败',
+ 'community.message.purchaseProcessing': '正在处理购买请求...',
+ 'community.message.downloadSuccess': '指标已添加到我的指标列表',
+ 'community.message.favoriteSuccess': '收藏成功',
+ 'community.message.unfavoriteSuccess': '取消收藏成功',
+ 'community.message.operationSuccess': '操作成功',
+ 'community.message.operationFailed': '操作失败',
+ 'community.banner.readOnly': '仅供浏览',
+ 'community.banner.loginHint': '如需登录注册请点击按钮跳转到独立页面,从而避免CSRF问题',
+ 'community.banner.jumpButton': '跳转到登录/注册',
+ 'dashboard.totalEquity': '总权益',
+ 'dashboard.totalPnL': '总盈亏',
+ 'dashboard.aiStrategies': 'AI 策略',
+ 'dashboard.indicatorStrategies': '指标策略',
+ 'dashboard.running': '运行中',
+ 'dashboard.enabled': '已启用',
+ 'dashboard.pnlHistory': '历史盈亏',
+ 'dashboard.strategyPerformance': '策略盈亏占比',
+ 'dashboard.drawdown': '回撤曲线',
+ 'dashboard.strategyRanking': '策略排行榜',
+ // New KPI labels
+ 'dashboard.winRate': '胜率',
+ 'dashboard.profitFactor': '盈亏比',
+ 'dashboard.maxDrawdown': '最大回撤',
+ 'dashboard.totalTrades': '总交易',
+ 'dashboard.runningStrategies': '运行中策略',
+ 'dashboard.equityCurve': '权益曲线',
+ 'dashboard.strategyAllocation': '策略分布',
+ 'dashboard.drawdownCurve': '回撤曲线',
+ 'dashboard.hourlyDistribution': '交易时段',
+ // Chart labels
+ 'dashboard.dailyPnl': '日盈亏',
+ 'dashboard.cumulativePnl': '累计盈亏',
+ 'dashboard.tradeCount': '交易次数',
+ 'dashboard.profit': '盈亏',
+ 'dashboard.noData': '暂无数据',
+ 'dashboard.noStrategyData': '暂无策略数据',
+ // Ranking labels
+ 'dashboard.ranking.totalProfit': '总收益',
+ 'dashboard.ranking.roi': '收益率',
+ 'dashboard.ranking.trades': '交易数',
+ // Units and labels
+ 'dashboard.unit.trades': '笔',
+ 'dashboard.unit.strategies': '个',
+ 'dashboard.label.avgDaily': '日均',
+ 'dashboard.label.avgProfit': '平均盈利',
+ 'dashboard.label.win': '胜',
+ 'dashboard.label.lose': '负',
+ 'dashboard.label.trade': '交易',
+ 'dashboard.label.indicator': '指标',
+ 'dashboard.label.totalPnl': '总盈亏',
+ 'dashboard.label.maxDrawdownPoint': '最大回撤',
+ 'dashboard.profitCalendar': '收益日历',
+ 'dashboard.recentTrades': '最近交易',
+ 'dashboard.currentPositions': '当前持仓',
+ 'dashboard.table.time': '时间',
+ 'dashboard.table.strategy': '策略名称',
+ 'dashboard.table.symbol': '标的',
+ 'dashboard.table.type': '类型',
+ 'dashboard.table.side': '方向',
+ 'dashboard.table.size': '持仓量',
+ 'dashboard.table.entryPrice': '开仓均价',
+ 'dashboard.table.price': '价格',
+ 'dashboard.table.amount': '数量',
+ 'dashboard.table.profit': '盈亏',
+ 'dashboard.pendingOrders': '订单执行记录',
+ 'dashboard.totalOrders': '共 {total} 条',
+ 'dashboard.viewError': '查看错误',
+ 'dashboard.filled': '已成交',
+ 'dashboard.orderTable.time': '创建时间',
+ 'dashboard.orderTable.strategy': '策略',
+ 'dashboard.orderTable.symbol': '交易对',
+ 'dashboard.orderTable.signalType': '信号类型',
+ 'dashboard.orderTable.amount': '数量',
+ 'dashboard.orderTable.price': '成交价',
+ 'dashboard.orderTable.status': '状态',
+ 'dashboard.orderTable.timeInfo': '时间',
+ 'dashboard.orderTable.executedAt': '执行时间',
+ 'dashboard.orderTable.exchange': '交易所',
+ 'dashboard.orderTable.notify': '通知方式',
+ 'dashboard.orderTable.actions': '操作',
+ 'dashboard.orderTable.delete': '删除',
+ 'dashboard.orderTable.deleteConfirm': '确认删除这条记录?',
+ 'dashboard.orderTable.deleteSuccess': '删除成功',
+ 'dashboard.orderTable.deleteFailed': '删除失败',
+ 'dashboard.newOrderNotify': '新订单提醒',
+ 'dashboard.newOrderDesc': '有新的订单执行记录',
+ 'dashboard.soundEnabled': '声音提醒已开启',
+ 'dashboard.soundDisabled': '声音提醒已关闭',
+ 'dashboard.clickToMute': '点击关闭声音提醒',
+ 'dashboard.clickToUnmute': '点击开启声音提醒',
+ 'dashboard.signalType.openLong': '开多',
+ 'dashboard.signalType.openShort': '开空',
+ 'dashboard.signalType.closeLong': '平多',
+ 'dashboard.signalType.closeShort': '平空',
+ 'dashboard.signalType.addLong': '加多',
+ 'dashboard.signalType.addShort': '加空',
+ 'dashboard.status.pending': '待处理',
+ 'dashboard.status.processing': '处理中',
+ 'dashboard.status.completed': '已完成',
+ 'dashboard.status.failed': '失败',
+ 'dashboard.status.cancelled': '已取消',
+ 'dashboard.table.pnl': '未实现盈亏',
+ 'form.basic-form.basic.title': '基础表单',
+ 'form.basic-form.basic.description': '表单页用于向用户收集或验证信息,基础表单常见于数据项较少的表单场景。',
+ 'form.basic-form.title.label': '标题',
+ 'form.basic-form.title.placeholder': '给目标起个名字',
+ 'form.basic-form.title.required': '请输入标题',
+ 'form.basic-form.date.label': '起止日期',
+ 'form.basic-form.placeholder.start': '开始日期',
+ 'form.basic-form.placeholder.end': '结束日期',
+ 'form.basic-form.date.required': '请选择起止日期',
+ 'form.basic-form.goal.label': '目标描述',
+ 'form.basic-form.goal.placeholder': '请输入你的阶段性工作目标',
+ 'form.basic-form.goal.required': '请输入目标描述',
+ 'form.basic-form.standard.label': '衡量标准',
+ 'form.basic-form.standard.placeholder': '请输入衡量标准',
+ 'form.basic-form.standard.required': '请输入衡量标准',
+ 'form.basic-form.client.label': '客户',
+ 'form.basic-form.client.required': '请描述你服务的客户',
+ 'form.basic-form.label.tooltip': '目标的服务对象',
+ 'form.basic-form.client.placeholder': '请描述你服务的客户,内部客户直接 @姓名/工号',
+ 'form.basic-form.invites.label': '邀评人',
+ 'form.basic-form.invites.placeholder': '请直接 @姓名/工号,最多可邀请 5 人',
+ 'form.basic-form.weight.label': '权重',
+ 'form.basic-form.weight.placeholder': '请输入',
+ 'form.basic-form.public.label': '目标公开',
+ 'form.basic-form.label.help': '客户、邀评人默认被分享',
+ 'form.basic-form.radio.public': '公开',
+ 'form.basic-form.radio.partially-public': '部分公开',
+ 'form.basic-form.radio.private': '不公开',
+ 'form.basic-form.publicUsers.placeholder': '公开给',
+ 'form.basic-form.option.A': '同事一',
+ 'form.basic-form.option.B': '同事二',
+ 'form.basic-form.option.C': '同事三',
+ 'form.basic-form.email.required': '请输入邮箱地址!',
+ 'form.basic-form.email.wrong-format': '邮箱地址格式错误!',
+ 'form.basic-form.userName.required': '请输入用户名!',
+ 'form.basic-form.password.required': '请输入密码!',
+ 'form.basic-form.password.twice': '两次输入的密码不匹配!',
+ 'form.basic-form.strength.msg': '请至少输入 6 个字符。请不要使用容易被猜到的密码。',
+ 'form.basic-form.strength.strong': '强度:强',
+ 'form.basic-form.strength.medium': '强度:中',
+ 'form.basic-form.strength.short': '强度:太短',
+ 'form.basic-form.confirm-password.required': '请确认密码!',
+ 'form.basic-form.phone-number.required': '请输入手机号!',
+ 'form.basic-form.phone-number.wrong-format': '手机号格式错误!',
+ 'form.basic-form.verification-code.required': '请输入验证码!',
+ 'form.basic-form.form.get-captcha': '获取验证码',
+ 'form.basic-form.captcha.second': '秒',
+ 'form.basic-form.form.optional': '(选填)',
+ 'form.basic-form.form.submit': '提交',
+ 'form.basic-form.form.save': '保存',
+ 'form.basic-form.email.placeholder': '邮箱',
+ 'form.basic-form.password.placeholder': '至少6位密码,区分大小写',
+ 'form.basic-form.confirm-password.placeholder': '确认密码',
+ 'form.basic-form.phone-number.placeholder': '手机号',
+ 'form.basic-form.verification-code.placeholder': '验证码',
+ 'result.success.title': '提交成功',
+ 'result.success.description': '提交结果页用于反馈一系列操作任务的处理结果, 如果仅是简单操作,使用 Message 全局提示反馈即可。 本文字区域可以展示简单的补充说明,如果有类似展示 “单据”的需求,下面这个灰色区域可以呈现比较复杂的内容。',
+ 'result.success.operate-title': '项目名称',
+ 'result.success.operate-id': '项目 ID',
+ 'result.success.principal': '负责人',
+ 'result.success.operate-time': '生效时间',
+ 'result.success.step1-title': '创建项目',
+ 'result.success.step1-operator': '曲丽丽',
+ 'result.success.step2-title': '部门初审',
+ 'result.success.step2-operator': '周毛毛',
+ 'result.success.step2-extra': '催一下',
+ 'result.success.step3-title': '财务复核',
+ 'result.success.step4-title': '完成',
+ 'result.success.btn-return': '返回列表',
+ 'result.success.btn-project': '查看项目',
+ 'result.success.btn-print': '打印',
+ 'result.fail.error.title': '提交失败',
+ 'result.fail.error.description': '请核对并修改以下信息后,再重新提交。',
+ 'result.fail.error.hint-title': '您提交的内容有如下错误:',
+ 'result.fail.error.hint-text1': '您的账户已被冻结',
+ 'result.fail.error.hint-btn1': '立即解冻',
+ 'result.fail.error.hint-text2': '您的账户还不具备申请资格',
+ 'result.fail.error.hint-btn2': '立即升级',
+ 'result.fail.error.btn-text': '返回修改',
+ 'account.settings.menuMap.custom': '个性化',
+ 'account.settings.menuMap.binding': '账号绑定',
+ 'account.settings.basic.avatar': '头像',
+ 'account.settings.basic.change-avatar': '更换头像',
+ 'account.settings.basic.email': '邮箱',
+ 'account.settings.basic.email-message': '请输入您的邮箱!',
+ 'account.settings.basic.nickname': '昵称',
+ 'account.settings.basic.nickname-message': '请输入您的昵称!',
+ 'account.settings.basic.profile': '个人简介',
+ 'account.settings.basic.profile-message': '请输入个人简介!',
+ 'account.settings.basic.profile-placeholder': '个人简介',
+ 'account.settings.basic.country': '国家/地区',
+ 'account.settings.basic.country-message': '请输入您的国家或地区!',
+ 'account.settings.basic.geographic': '所在省市',
+ 'account.settings.basic.geographic-message': '请输入您的所在省市!',
+ 'account.settings.basic.address': '街道地址',
+ 'account.settings.basic.address-message': '请输入您的街道地址!',
+ 'account.settings.basic.phone': '联系电话',
+ 'account.settings.basic.phone-message': '请输入您的联系电话!',
+ 'account.settings.basic.update': '更新基本信息',
+ 'account.settings.basic.update.success': '更新基本信息成功',
+ 'account.settings.security.strong': '强',
+ 'account.settings.security.medium': '中',
+ 'account.settings.security.weak': '弱',
+ 'account.settings.security.password': '账户密码',
+ 'account.settings.security.password-description': '当前密码强度:',
+ 'account.settings.security.phone': '密保手机',
+ 'account.settings.security.phone-description': '已绑定手机:',
+ 'account.settings.security.question': '密保问题',
+ 'account.settings.security.question-description': '未设置密保问题,密保问题可有效保护账户安全',
+ 'account.settings.security.email': '绑定邮箱',
+ 'account.settings.security.email-description': '已绑定邮箱:',
+ 'account.settings.security.mfa': 'MFA 设备',
+ 'account.settings.security.mfa-description': '未绑定 MFA 设备,绑定后,可以进行二次确认',
+ 'account.settings.security.modify': '修改',
+ 'account.settings.security.set': '设置',
+ 'account.settings.security.bind': '绑定',
+ 'account.settings.binding.taobao': '绑定淘宝',
+ 'account.settings.binding.taobao-description': '当前未绑定淘宝账号',
+ 'account.settings.binding.alipay': '绑定支付宝',
+ 'account.settings.binding.alipay-description': '当前未绑定支付宝账号',
+ 'account.settings.binding.dingding': '绑定钉钉',
+ 'account.settings.binding.dingding-description': '当前未绑定钉钉账号',
+ 'account.settings.binding.bind': '绑定',
+ 'account.settings.notification.password': '账户密码',
+ 'account.settings.notification.password-description': '其他用户的消息将以站内信的形式通知',
+ 'account.settings.notification.messages': '系统消息',
+ 'account.settings.notification.messages-description': '系统消息将以站内信的形式通知',
+ 'account.settings.notification.todo': '待办任务',
+ 'account.settings.notification.todo-description': '待办任务将以站内信的形式通知',
+ 'account.settings.settings.open': '开',
+ 'account.settings.settings.close': '关',
+ 'trading-assistant.title': '交易助手',
+ 'trading-assistant.strategyList': '策略列表',
+ 'trading-assistant.createStrategy': '创建策略',
+ 'trading-assistant.noStrategy': '暂无策略',
+ 'trading-assistant.selectStrategy': '请从左侧选择一个策略查看详情',
+ 'trading-assistant.startStrategy': '启动策略',
+ 'trading-assistant.stopStrategy': '停止策略',
+ 'trading-assistant.editStrategy': '编辑策略',
+ 'trading-assistant.deleteStrategy': '删除策略',
+ 'trading-assistant.startAll': '全部启动',
+ 'trading-assistant.stopAll': '全部停止',
+ 'trading-assistant.deleteAll': '全部删除',
+ 'trading-assistant.symbolCount': '个币种',
+ 'trading-assistant.status.running': '运行中',
+ 'trading-assistant.status.stopped': '已停止',
+ 'trading-assistant.status.error': '错误',
+ 'trading-assistant.strategyType.IndicatorStrategy': '技术指标策略',
+ 'trading-assistant.strategyType.PromptBasedStrategy': '提示词策略',
+ 'trading-assistant.strategyType.GridStrategy': '网格策略',
+ 'trading-assistant.tabs.tradingRecords': '交易记录',
+ 'trading-assistant.tabs.positions': '持仓记录',
+ 'trading-assistant.tabs.equityCurve': '净值曲线',
+ 'trading-assistant.form.step1': '选择指标',
+ 'trading-assistant.form.step2': '交易所配置',
+ 'trading-assistant.form.step3': '策略参数',
+ 'trading-assistant.form.step2Params': '策略参数',
+ 'trading-assistant.form.step3Signal': '信号通知',
+ 'trading-assistant.form.indicator': '选择指标',
+ 'trading-assistant.form.indicatorHint': '只能选择您已购买或创建的技术指标',
+ 'trading-assistant.form.qdtCostHints': '使用策略将消耗QDT,请确保账户有足够的QDT余额',
+ 'trading-assistant.form.indicatorDescription': '指标描述',
+ 'trading-assistant.form.noDescription': '暂无描述',
+ 'trading-assistant.form.exchange': '选择交易所',
+ 'trading-assistant.form.apiKey': 'API Key',
+ 'trading-assistant.form.secretKey': 'Secret Key',
+ 'trading-assistant.form.passphrase': 'Passphrase',
+ 'trading-assistant.form.testConnection': '测试连接',
+ 'trading-assistant.form.strategyName': '策略名称',
+ 'trading-assistant.form.symbol': '交易对',
+ 'trading-assistant.form.symbols': '交易对(多选)',
+ 'trading-assistant.form.symbolHint': '目前仅支持加密货币交易对',
+ 'trading-assistant.form.symbolHintCrypto': '加密货币:使用BTC/USDT等交易对格式',
+ 'trading-assistant.form.symbolsHint': '选择多个交易对,将自动创建多个策略',
+ 'trading-assistant.form.initialCapital': '投入金额',
+ 'trading-assistant.form.marketType': '市场类型',
+ 'trading-assistant.form.marketTypeFutures': '合约',
+ 'trading-assistant.form.marketTypeSpot': '现货',
+ 'trading-assistant.form.marketTypeHint': '合约支持双向交易和杠杆,现货仅支持做多且杠杆固定为1倍',
+ 'trading-assistant.form.leverage': '杠杆倍数',
+ 'trading-assistant.form.leverageHint': '合约:1-125倍,现货:固定1倍',
+ 'trading-assistant.form.spotLeverageFixed': '现货交易杠杆固定为1倍',
+ 'trading-assistant.form.spotOnlyLongHint': '现货交易仅支持做多',
+ 'trading-assistant.form.tradeDirection': '交易方向',
+ 'trading-assistant.form.tradeDirectionLong': '仅做多',
+ 'trading-assistant.form.tradeDirectionShort': '仅做空',
+ 'trading-assistant.form.tradeDirectionBoth': '双向交易',
+ 'trading-assistant.form.timeframe': '时间周期',
+ 'trading-assistant.form.klinePeriod': 'K线周期',
+ 'trading-assistant.form.timeframe1m': '1分钟',
+ 'trading-assistant.form.timeframe5m': '5分钟',
+ 'trading-assistant.form.timeframe15m': '15分钟',
+ 'trading-assistant.form.timeframe30m': '30分钟',
+ 'trading-assistant.form.timeframe1H': '1小时',
+ 'trading-assistant.form.timeframe4H': '4小时',
+ 'trading-assistant.form.timeframe1D': '1天',
+ 'trading-assistant.form.selectStrategyType': '选择策略类型',
+ 'trading-assistant.form.indicatorStrategy': '指标策略',
+ 'trading-assistant.form.indicatorStrategyDesc': '基于技术指标的自动化交易策略',
+ 'trading-assistant.form.aiStrategy': 'AI策略',
+ 'trading-assistant.form.aiStrategyDesc': '基于AI智能决策的自动化交易策略',
+ 'trading-assistant.form.enableAiFilter': '启用AI智能决策过滤',
+ 'trading-assistant.form.enableAiFilterHint': '启用后,指标信号将经过AI智能过滤,提高交易质量',
+ 'trading-assistant.form.aiFilterPrompt': '自定义提示词',
+ 'trading-assistant.form.aiFilterPromptHint': '为AI过滤提供自定义指令,留空则使用系统默认',
+ 'trading-assistant.form.executionMode': '执行模式',
+ 'trading-assistant.form.executionModeSignal': '仅信号通知',
+ 'trading-assistant.form.executionModeLive': '实盘自动交易',
+ 'trading-assistant.form.liveTradingCryptoOnlyHint': '实盘交易功能仅支持加密货币市场',
+ 'trading-assistant.form.liveTradingNotSupportedHint': '当前市场不支持实盘交易',
+ 'trading-assistant.form.broker': '券商',
+ 'trading-assistant.form.ibkrConnectionTitle': '盈透证券连接配置',
+ 'trading-assistant.form.ibkrConnectionHint': '请确保 TWS 或 IB Gateway 已启动并启用 API 连接',
+ 'trading-assistant.validation.brokerRequired': '请选择券商',
+ 'trading-assistant.placeholders.selectBroker': '选择券商',
+ 'trading-assistant.brokerNames': {
+ 'ibkr': '盈透证券 (Interactive Brokers)',
+ 'mt5': 'MetaTrader 5 (MT5)',
+ 'mt4': 'MetaTrader 4 (MT4)',
+ 'futu': '富途证券 (Futu)',
+ 'tiger': '老虎证券 (Tiger Brokers)',
+ 'td': 'TD Ameritrade',
+ 'schwab': 'Charles Schwab'
+ },
+ 'trading-assistant.form.ibkrHost': '主机地址',
+ 'trading-assistant.form.ibkrPort': '端口',
+ 'trading-assistant.form.ibkrPortHint': 'TWS实盘:7497, TWS模拟:7496, Gateway实盘:4001, Gateway模拟:4002',
+ 'trading-assistant.form.ibkrClientId': '客户端ID',
+ 'trading-assistant.form.ibkrAccount': '账户号',
+ 'trading-assistant.form.ibkrAccountHint': '留空自动选择第一个账户,多账户用户可指定账户号',
+ 'trading-assistant.placeholders.ibkrAccount': '可选,如 U1234567',
+ 'trading-assistant.exchange.ibkrConnectionSuccess': '盈透证券连接成功',
+ 'trading-assistant.exchange.ibkrConnectionFailed': '盈透证券连接失败,请检查 TWS/Gateway 是否运行',
+ // MT5/Forex 配置
+ 'trading-assistant.form.forexBroker': '外汇券商',
+ 'trading-assistant.form.mt5ConnectionTitle': 'MetaTrader 5 连接配置',
+ 'trading-assistant.form.mt5ConnectionHint': '请确保 MT5 终端已启动并登录(仅支持 Windows)',
+ 'trading-assistant.form.mt5Server': '服务器',
+ 'trading-assistant.form.mt5ServerHint': '券商服务器名称(如:ICMarkets-Demo)',
+ 'trading-assistant.form.mt5Login': '账户号',
+ 'trading-assistant.form.mt5Password': '密码',
+ 'trading-assistant.form.mt5TerminalPath': 'MT5 终端路径(可选)',
+ 'trading-assistant.form.mt5TerminalPathHint': '如果 MT5 终端未安装在默认位置,请指定 terminal64.exe 的完整路径(例如:C:\\Program Files\\MetaTrader 5\\terminal64.exe)',
+ 'trading-assistant.placeholders.mt5Server': '例如:ICMarkets-Demo',
+ 'trading-assistant.placeholders.mt5Login': '例如:12345678',
+ 'trading-assistant.placeholders.mt5Password': '您的 MT5 密码',
+ 'trading-assistant.placeholders.mt5TerminalPath': '例如:C:\\Program Files\\MetaTrader 5\\terminal64.exe',
+ 'trading-assistant.validation.mt5ServerRequired': '请输入 MT5 服务器',
+ 'trading-assistant.validation.mt5LoginRequired': '请输入 MT5 账户号',
+ 'trading-assistant.validation.mt5PasswordRequired': '请输入 MT5 密码',
+ 'trading-assistant.exchange.mt5ConnectionSuccess': 'MT5 连接成功',
+ 'trading-assistant.exchange.mt5ConnectionFailed': 'MT5 连接失败,请检查终端是否运行',
+ 'trading-assistant.form.notifyChannels': '通知渠道',
+ 'trading-assistant.form.notifyChannelsHint': '选择信号触发时的通知方式',
+ 'trading-assistant.form.notifyEmail': '邮箱地址',
+ 'trading-assistant.form.notifyPhone': '手机号码',
+ 'trading-assistant.form.notifyTelegram': 'Telegram ID',
+ 'trading-assistant.form.notifyDiscord': 'Discord Webhook',
+ 'trading-assistant.form.notifyWebhook': 'Webhook 地址',
+ 'trading-assistant.form.liveTradingConfigTitle': '实盘交易配置',
+ 'trading-assistant.form.liveTradingConfigHint': '请填写交易所API信息,实盘交易将使用您的API进行真实交易',
+ 'trading-assistant.form.savedCredential': '已保存的凭证',
+ 'trading-assistant.form.savedCredentialHint': '选择已保存的交易所凭证,自动填充API配置',
+ 'trading-assistant.form.saveCredential': '保存此凭证以便下次使用',
+ 'trading-assistant.form.credentialName': '凭证名称',
+ 'trading-assistant.validation.strategyTypeRequired': '请选择策略类型',
+ 'trading-assistant.form.advancedSettings': '高级设置',
+ 'trading-assistant.form.orderMode': '下单模式',
+ 'trading-assistant.form.orderModeMaker': '挂单(Maker)',
+ 'trading-assistant.form.orderModeTaker': '市价(Taker)',
+ 'trading-assistant.form.orderModeHint': '挂单模式使用限价单,手续费更低;市价模式立即成交,手续费较高',
+ 'trading-assistant.form.makerWaitSec': '挂单等待时间(秒)',
+ 'trading-assistant.form.makerWaitSecHint': '挂单后等待成交的时间,超时后取消并重试',
+ 'trading-assistant.form.makerRetries': '挂单重试次数',
+ 'trading-assistant.form.makerRetriesHint': '挂单未成交时的最大重试次数',
+ 'trading-assistant.form.fallbackToMarket': '挂单失败降级市价',
+ 'trading-assistant.form.fallbackToMarketHint': '开/平仓挂单未成交时,是否降级为市价单以确保成交',
+ 'trading-assistant.form.marginMode': '保证金模式',
+ 'trading-assistant.form.marginModeCross': '全仓',
+ 'trading-assistant.form.marginModeIsolated': '逐仓',
+ 'trading-assistant.form.stopLossPct': '止损比例(%)',
+ 'trading-assistant.form.stopLossPctHint': '设置止损百分比,0表示不启用止损',
+ 'trading-assistant.form.takeProfitPct': '止盈比例(%)',
+ 'trading-assistant.form.takeProfitPctHint': '设置止盈百分比,0表示不启用止盈',
+ 'trading-assistant.form.signalMode': '信号模式',
+ 'trading-assistant.form.signalModeConfirmed': '确认模式',
+ 'trading-assistant.form.signalModeAggressive': '激进模式',
+ 'trading-assistant.form.signalModeHint': '确认模式:仅检查已完成的K线;激进模式:也检查正在形成的K线',
+ 'trading-assistant.form.cancel': '取消',
+ 'trading-assistant.form.prev': '上一步',
+ 'trading-assistant.form.next': '下一步',
+ 'trading-assistant.form.confirmCreate': '确认创建',
+ 'trading-assistant.form.confirmEdit': '确认修改',
+ 'trading-assistant.messages.createSuccess': '策略创建成功',
+ 'trading-assistant.messages.createFailed': '创建策略失败',
+ 'trading-assistant.messages.updateSuccess': '策略更新成功',
+ 'trading-assistant.messages.updateFailed': '更新策略失败',
+ 'trading-assistant.messages.deleteSuccess': '策略删除成功',
+ 'trading-assistant.messages.deleteFailed': '删除策略失败',
+ 'trading-assistant.messages.startSuccess': '策略启动成功',
+ 'trading-assistant.messages.startFailed': '启动策略失败',
+ 'trading-assistant.messages.stopSuccess': '策略停止成功',
+ 'trading-assistant.messages.stopFailed': '停止策略失败',
+ 'trading-assistant.messages.loadFailed': '获取策略列表失败',
+ 'trading-assistant.messages.runningWarning': '策略运行中,请先停止策略后再修改',
+ 'trading-assistant.messages.deleteConfirmWithName': '确定要删除策略“{name}”吗?此操作不可恢复。',
+ 'trading-assistant.messages.deleteConfirm': '确定要删除该策略吗?此操作不可恢复。',
+ 'trading-assistant.messages.loadTradesFailed': '获取交易记录失败',
+ 'trading-assistant.messages.loadPositionsFailed': '获取持仓记录失败',
+ 'trading-assistant.messages.loadEquityFailed': '获取净值曲线失败',
+ 'trading-assistant.messages.loadIndicatorsFailed': '加载指标列表失败,请稍后重试',
+ 'trading-assistant.messages.spotLimitations': '现货交易已自动设置为仅做多、1倍杠杆',
+ 'trading-assistant.messages.autoFillApiConfig': '已自动填充该交易所的历史API配置',
+ 'trading-assistant.messages.batchCreateSuccess': '成功创建 {count} 个策略',
+ 'trading-assistant.messages.batchStartSuccess': '成功启动 {count} 个策略',
+ 'trading-assistant.messages.batchStartFailed': '批量启动策略失败',
+ 'trading-assistant.messages.batchStopSuccess': '成功停止 {count} 个策略',
+ 'trading-assistant.messages.batchStopFailed': '批量停止策略失败',
+ 'trading-assistant.messages.batchDeleteSuccess': '成功删除 {count} 个策略',
+ 'trading-assistant.messages.batchDeleteFailed': '批量删除策略失败',
+ 'trading-assistant.messages.batchDeleteConfirm': '确定要删除策略组"{name}"下的 {count} 个策略吗?此操作不可恢复。',
+ 'trading-assistant.notify.browser': '浏览器通知',
+ 'trading-assistant.notify.email': '邮箱',
+ 'trading-assistant.notify.phone': '短信',
+ 'trading-assistant.notify.telegram': 'Telegram',
+ 'trading-assistant.notify.discord': 'Discord',
+ 'trading-assistant.notify.webhook': 'Webhook',
+ 'trading-assistant.placeholders.selectIndicator': '请选择指标',
+ 'trading-assistant.placeholders.selectExchange': '请选择交易所',
+ 'trading-assistant.placeholders.inputApiKey': '请输入API Key',
+ 'trading-assistant.placeholders.inputSecretKey': '请输入Secret Key',
+ 'trading-assistant.placeholders.inputPassphrase': '请输入Passphrase',
+ 'trading-assistant.placeholders.inputStrategyName': '请输入策略名称',
+ 'trading-assistant.placeholders.selectSymbol': '请选择交易对',
+ 'trading-assistant.placeholders.selectSymbols': '请选择交易对(支持多选)',
+ 'trading-assistant.placeholders.selectTimeframe': '请选择时间周期',
+ 'trading-assistant.placeholders.selectKlinePeriod': '请选择K线周期',
+ 'trading-assistant.placeholders.inputAiFilterPrompt': '请输入自定义提示词(可选)',
+ 'trading-assistant.placeholders.selectSavedCredential': '请选择已保存的凭证',
+ 'trading-assistant.placeholders.inputEmail': '请输入邮箱地址',
+ 'trading-assistant.placeholders.inputPhone': '请输入手机号码',
+ 'trading-assistant.placeholders.inputTelegram': '请输入Telegram ID或Chat ID',
+ 'trading-assistant.placeholders.inputDiscord': '请输入Discord Webhook地址',
+ 'trading-assistant.placeholders.inputWebhook': '请输入Webhook地址',
+ 'trading-assistant.placeholders.inputCredentialName': '请输入凭证名称(如:我的OKX账户)',
+ 'trading-assistant.validation.indicatorRequired': '请选择指标',
+ 'trading-assistant.validation.exchangeRequired': '请选择交易所',
+ 'trading-assistant.validation.apiKeyRequired': '请输入API Key',
+ 'trading-assistant.validation.secretKeyRequired': '请输入Secret Key',
+ 'trading-assistant.validation.passphraseRequired': '请输入Passphrase',
+ 'trading-assistant.validation.exchangeConfigIncomplete': '请填写完整的交易所配置信息',
+ 'trading-assistant.validation.testConnectionRequired': '请先点击"测试连接"按钮并确保连接成功',
+ 'trading-assistant.validation.testConnectionFailed': '连接测试失败,请检查配置后重新测试',
+ 'trading-assistant.validation.strategyNameRequired': '请输入策略名称',
+ 'trading-assistant.validation.symbolRequired': '请选择交易对',
+ 'trading-assistant.validation.symbolsRequired': '请至少选择一个交易对',
+ 'trading-assistant.validation.emailInvalid': '请输入有效的邮箱地址',
+ 'trading-assistant.validation.notifyChannelRequired': '请至少选择一个通知渠道',
+ 'trading-assistant.validation.initialCapitalRequired': '请输入投入金额',
+ 'trading-assistant.validation.leverageRequired': '请输入杠杆倍数',
+ 'trading-assistant.table.time': '时间',
+ 'trading-assistant.table.type': '类型',
+ 'trading-assistant.table.price': '价格',
+ 'trading-assistant.table.amount': '数量',
+ 'trading-assistant.table.value': '金额',
+ 'trading-assistant.table.commission': '手续费',
+ 'trading-assistant.table.symbol': '交易对',
+ 'trading-assistant.table.side': '方向',
+ 'trading-assistant.table.size': '持仓数量',
+ 'trading-assistant.table.entryPrice': '开仓价格',
+ 'trading-assistant.table.currentPrice': '当前价格',
+ 'trading-assistant.table.unrealizedPnl': '未实现盈亏',
+ 'trading-assistant.table.pnlPercent': '盈亏比例',
+ 'trading-assistant.table.buy': '买入',
+ 'trading-assistant.table.sell': '卖出',
+ 'trading-assistant.table.long': '做多',
+ 'trading-assistant.table.short': '做空',
+ 'trading-assistant.table.noPositions': '暂无持仓',
+ 'trading-assistant.detail.title': '策略详情',
+ 'trading-assistant.detail.strategyName': '策略名称',
+ 'trading-assistant.detail.strategyType': '策略类型',
+ 'trading-assistant.detail.status': '状态',
+ 'trading-assistant.detail.tradingMode': '交易模式',
+ 'trading-assistant.detail.exchange': '交易所',
+ 'trading-assistant.detail.initialCapital': '初始资金',
+ 'trading-assistant.detail.totalInvestment': '总投入金额',
+ 'trading-assistant.detail.currentEquity': '当前净值',
+ 'trading-assistant.detail.totalPnl': '总盈亏',
+ 'trading-assistant.detail.indicatorName': '指标名称',
+ 'trading-assistant.detail.maxLeverage': '最大杠杆',
+ 'trading-assistant.detail.decideInterval': '决策间隔',
+ 'trading-assistant.detail.symbols': '交易标的',
+ 'trading-assistant.detail.createdAt': '创建时间',
+ 'trading-assistant.detail.updatedAt': '更新时间',
+ 'trading-assistant.detail.llmConfig': 'AI模型配置',
+ 'trading-assistant.detail.exchangeConfig': '交易所配置',
+ 'trading-assistant.detail.provider': '提供商',
+ 'trading-assistant.detail.modelId': '模型ID',
+ 'trading-assistant.detail.close': '关闭',
+ 'trading-assistant.detail.loadFailed': '获取策略详情失败',
+ 'trading-assistant.equity.noData': '暂无净值数据',
+ 'trading-assistant.equity.equity': '净值',
+ 'trading-assistant.exchange.tradingMode': '交易模式',
+ 'trading-assistant.exchange.virtual': '模拟交易',
+ 'trading-assistant.exchange.live': '实盘交易',
+ 'trading-assistant.exchange.selectExchange': '选择交易所',
+ 'trading-assistant.exchange.walletAddress': '钱包地址',
+ 'trading-assistant.exchange.walletAddressPlaceholder': '请输入钱包地址(以0x开头)',
+ 'trading-assistant.exchange.privateKey': '私钥',
+ 'trading-assistant.exchange.privateKeyPlaceholder': '请输入私钥(64字符)',
+ 'trading-assistant.exchange.testConnection': '测试连接',
+ 'trading-assistant.exchange.connectionSuccess': '连接成功',
+ 'trading-assistant.exchange.connectionFailed': '连接失败',
+ 'trading-assistant.exchange.testFailed': '连接测试失败',
+ 'trading-assistant.exchange.fillComplete': '请填写完整的交易所配置信息',
+ 'trading-assistant.exchange.ipWhitelistTip': '请在交易所API设置中将以下IP添加到白名单:',
+ 'trading-assistant.strategyTypeOptions.ai': 'AI驱动策略',
+ 'trading-assistant.strategyTypeOptions.indicator': '技术指标策略',
+ 'trading-assistant.strategyTypeOptions.aiDeveloping': 'AI驱动策略功能开发中,敬请期待',
+ 'trading-assistant.strategyTypeOptions.aiDevelopingWarning': 'AI驱动策略功能正在开发中',
+ 'trading-assistant.indicatorType.trend': '趋势',
+ 'trading-assistant.indicatorType.momentum': '动量',
+ 'trading-assistant.indicatorType.volatility': '波动',
+ 'trading-assistant.indicatorType.volume': '成交量',
+ 'trading-assistant.indicatorType.custom': '自定义',
+ 'trading-assistant.exchangeNames': {
+ 'okx': 'OKX',
+ 'binance': '币安',
+ 'hyperliquid': 'Hyperliquid',
+ 'blockchaincom': 'Blockchain.com',
+ 'coinbaseexchange': 'Coinbase',
+ 'gate': 'Gate.io',
+ 'mexc': 'MEXC',
+ 'kraken': 'Kraken',
+ 'bitfinex': 'Bitfinex',
+ 'bybit': 'Bybit',
+ 'kucoin': 'KuCoin',
+ 'huobi': '火币',
+ 'bitget': 'Bitget',
+ 'bitmex': 'BitMEX',
+ 'deribit': 'Deribit',
+ 'phemex': 'Phemex',
+ 'bitmart': 'BitMart',
+ 'bitstamp': 'Bitstamp',
+ 'bittrex': 'Bittrex',
+ 'poloniex': 'Poloniex',
+ 'gemini': 'Gemini',
+ 'cryptocom': 'Crypto.com',
+ 'bitflyer': 'bitFlyer',
+ 'upbit': 'Upbit',
+ 'bithumb': 'Bithumb',
+ 'coinone': 'Coinone',
+ 'zb': 'ZB',
+ 'lbank': 'LBank',
+ 'bibox': 'Bibox',
+ 'bigone': 'BigONE',
+ 'bitrue': 'Bitrue',
+ 'coinex': 'CoinEx',
+ 'digifinex': 'DigiFinex',
+ 'ftx': 'FTX',
+ 'ftxus': 'FTX US',
+ 'binanceus': 'Binance US',
+ 'binancecoinm': 'Binance COIN-M',
+ 'binanceusdm': 'Binance USDⓈ-M',
+ 'ibkr': '盈透证券 (IBKR)',
+ 'deepcoin': 'Deepcoin'
+ },
+ 'ai-trading-assistant.title': 'AI交易助手',
+ 'ai-trading-assistant.strategyList': '策略列表',
+ 'ai-trading-assistant.createStrategy': '创建策略',
+ 'ai-trading-assistant.noStrategy': '暂无策略',
+ 'ai-trading-assistant.selectStrategy': '请从左侧选择一个策略查看详情',
+ 'ai-trading-assistant.startStrategy': '启动策略',
+ 'ai-trading-assistant.stopStrategy': '停止策略',
+ 'ai-trading-assistant.editStrategy': '编辑策略',
+ 'ai-trading-assistant.deleteStrategy': '删除策略',
+ 'ai-trading-assistant.status.running': '运行中',
+ 'ai-trading-assistant.status.stopped': '已停止',
+ 'ai-trading-assistant.status.error': '错误',
+ 'ai-trading-assistant.tabs.tradingRecords': '交易记录',
+ 'ai-trading-assistant.tabs.positions': '持仓记录',
+ 'ai-trading-assistant.tabs.aiDecisions': 'AI决策记录',
+ 'ai-trading-assistant.tabs.equityCurve': '净值曲线',
+ 'ai-trading-assistant.form.createTitle': '创建AI交易策略',
+ 'ai-trading-assistant.form.editTitle': '编辑AI交易策略',
+ 'ai-trading-assistant.form.strategyName': '策略名称',
+ 'ai-trading-assistant.form.modelId': 'AI模型',
+ 'ai-trading-assistant.form.modelIdHint': '使用系统OpenRouter服务,无需配置API Key',
+ 'ai-trading-assistant.form.decideInterval': '决策间隔',
+ 'ai-trading-assistant.form.decideInterval5m': '5分钟',
+ 'ai-trading-assistant.form.decideInterval10m': '10分钟',
+ 'ai-trading-assistant.form.decideInterval30m': '30分钟',
+ 'ai-trading-assistant.form.decideInterval1h': '1小时',
+ 'ai-trading-assistant.form.decideInterval4h': '4小时',
+ 'ai-trading-assistant.form.decideInterval1d': '1天',
+ 'ai-trading-assistant.form.decideInterval1w': '1周',
+ 'ai-trading-assistant.form.decideIntervalHint': 'AI做决策的时间间隔',
+ 'ai-trading-assistant.form.runPeriod': '运行周期',
+ 'ai-trading-assistant.form.runPeriodHint': '策略运行的开始时间和结束时间',
+ 'ai-trading-assistant.form.startDate': '开始日期',
+ 'ai-trading-assistant.form.endDate': '结束日期',
+ 'ai-trading-assistant.form.qdtCostTitle': 'QDT扣费说明',
+ 'ai-trading-assistant.form.qdtCostHint': '每次AI决策将扣费 {cost} 个QDT,请确保账户有足够的QDT余额。策略运行期间,每次决策都会实时扣费。',
+ 'ai-trading-assistant.form.apiKey': 'API Key',
+ 'ai-trading-assistant.form.exchange': '选择交易所',
+ 'ai-trading-assistant.form.secretKey': 'Secret Key',
+ 'ai-trading-assistant.form.passphrase': 'Passphrase',
+ 'ai-trading-assistant.form.testConnection': '测试连接',
+ 'ai-trading-assistant.form.symbol': '交易对',
+ 'ai-trading-assistant.form.symbolHint': '选择要交易的交易对',
+ 'ai-trading-assistant.form.initialCapital': '投入金额(保证金)',
+ 'ai-trading-assistant.form.leverage': '杠杆倍数',
+ 'ai-trading-assistant.form.timeframe': '时间周期',
+ 'ai-trading-assistant.form.timeframe1m': '1分钟',
+ 'ai-trading-assistant.form.timeframe5m': '5分钟',
+ 'ai-trading-assistant.form.timeframe15m': '15分钟',
+ 'ai-trading-assistant.form.timeframe30m': '30分钟',
+ 'ai-trading-assistant.form.timeframe1H': '1小时',
+ 'ai-trading-assistant.form.timeframe4H': '4小时',
+ 'ai-trading-assistant.form.timeframe1D': '1天',
+ 'ai-trading-assistant.form.marketType': '市场类型',
+ 'ai-trading-assistant.form.marketTypeFutures': '合约',
+ 'ai-trading-assistant.form.marketTypeSpot': '现货',
+ 'ai-trading-assistant.form.totalPnl': '总盈亏',
+ 'ai-trading-assistant.form.customPrompt': '自定义提示词',
+ 'ai-trading-assistant.form.customPromptHint': '可选,用于自定义AI的交易策略和决策逻辑',
+ 'ai-trading-assistant.form.cancel': '取消',
+ 'ai-trading-assistant.form.prev': '上一步',
+ 'ai-trading-assistant.form.next': '下一步',
+ 'ai-trading-assistant.form.confirmCreate': '确认创建',
+ 'ai-trading-assistant.form.confirmEdit': '确认修改',
+ 'ai-trading-assistant.messages.createSuccess': '策略创建成功',
+ 'ai-trading-assistant.messages.createFailed': '创建策略失败',
+ 'ai-trading-assistant.messages.updateSuccess': '策略更新成功',
+ 'ai-trading-assistant.messages.updateFailed': '更新策略失败',
+ 'ai-trading-assistant.messages.deleteSuccess': '策略删除成功',
+ 'ai-trading-assistant.messages.deleteFailed': '删除策略失败',
+ 'ai-trading-assistant.messages.startSuccess': '策略启动成功',
+ 'ai-trading-assistant.messages.startFailed': '启动策略失败',
+ 'ai-trading-assistant.messages.stopSuccess': '策略停止成功',
+ 'ai-trading-assistant.messages.stopFailed': '停止策略失败',
+ 'ai-trading-assistant.messages.loadFailed': '获取策略列表失败',
+ 'ai-trading-assistant.messages.loadDecisionsFailed': '获取AI决策记录失败',
+ 'ai-trading-assistant.messages.deleteConfirm': '确定要删除该策略吗?此操作不可恢复。',
+ 'ai-trading-assistant.placeholders.inputStrategyName': '请输入策略名称',
+ 'ai-trading-assistant.placeholders.selectModelId': '请选择AI模型',
+ 'ai-trading-assistant.placeholders.selectDecideInterval': '请选择决策间隔',
+ 'ai-trading-assistant.placeholders.startTime': '开始时间',
+ 'ai-trading-assistant.placeholders.endTime': '结束时间',
+ 'ai-trading-assistant.placeholders.inputApiKey': '请输入API Key',
+ 'ai-trading-assistant.placeholders.selectExchange': '请选择交易所',
+ 'ai-trading-assistant.placeholders.inputSecretKey': '请输入Secret Key',
+ 'ai-trading-assistant.placeholders.inputPassphrase': '请输入Passphrase',
+ 'ai-trading-assistant.placeholders.selectSymbol': '请选择交易对,如:BTC/USDT',
+ 'ai-trading-assistant.placeholders.selectTimeframe': '请选择时间周期',
+ 'ai-trading-assistant.placeholders.inputCustomPrompt': '请输入自定义提示词(可选)',
+ 'ai-trading-assistant.validation.strategyNameRequired': '请输入策略名称',
+ 'ai-trading-assistant.validation.modelIdRequired': '请选择AI模型',
+ 'ai-trading-assistant.validation.runPeriodRequired': '请选择运行周期',
+ 'ai-trading-assistant.validation.apiKeyRequired': '请输入API Key',
+ 'ai-trading-assistant.validation.exchangeRequired': '请选择交易所',
+ 'ai-trading-assistant.validation.secretKeyRequired': '请输入Secret Key',
+ 'ai-trading-assistant.validation.symbolRequired': '请选择交易对',
+ 'ai-trading-assistant.validation.initialCapitalRequired': '请输入投入金额',
+ 'ai-trading-assistant.table.time': '时间',
+ 'ai-trading-assistant.table.type': '类型',
+ 'ai-trading-assistant.table.price': '价格',
+ 'ai-trading-assistant.table.amount': '数量',
+ 'ai-trading-assistant.table.value': '金额',
+ 'ai-trading-assistant.table.symbol': '交易对',
+ 'ai-trading-assistant.table.side': '方向',
+ 'ai-trading-assistant.table.size': '持仓数量',
+ 'ai-trading-assistant.table.entryPrice': '开仓价格',
+ 'ai-trading-assistant.table.currentPrice': '当前价格',
+ 'ai-trading-assistant.table.unrealizedPnl': '未实现盈亏',
+ 'ai-trading-assistant.table.profit': '盈亏',
+ 'ai-trading-assistant.table.openLong': '开多',
+ 'ai-trading-assistant.table.closeLong': '平多',
+ 'ai-trading-assistant.table.openShort': '开空',
+ 'ai-trading-assistant.table.closeShort': '平空',
+ 'ai-trading-assistant.table.addLong': '加多',
+ 'ai-trading-assistant.table.addShort': '加空',
+ 'ai-trading-assistant.table.closeShortProfit': '平空止盈',
+ 'ai-trading-assistant.table.closeShortStop': '平空止损',
+ 'ai-trading-assistant.table.closeLongProfit': '平多止盈',
+ 'ai-trading-assistant.table.closeLongStop': '平多止损',
+ 'ai-trading-assistant.table.buy': '买入',
+ 'ai-trading-assistant.table.sell': '卖出',
+ 'ai-trading-assistant.table.long': '做多',
+ 'ai-trading-assistant.table.short': '做空',
+ 'ai-trading-assistant.table.hold': '持有',
+ 'ai-trading-assistant.table.reasoning': '分析理由',
+ 'ai-trading-assistant.table.decisions': '决策',
+ 'ai-trading-assistant.table.riskAssessment': '风险评估',
+ 'ai-trading-assistant.table.confidence': '置信度',
+ 'ai-trading-assistant.table.totalRecords': '共 {total} 条记录',
+ 'ai-trading-assistant.table.noPositions': '暂无持仓',
+ 'ai-trading-assistant.detail.title': '策略详情',
+ 'ai-trading-assistant.equity.noData': '暂无净值数据',
+ 'ai-trading-assistant.equity.equity': '净值',
+ 'ai-trading-assistant.exchange.testFailed': '连接测试失败',
+ 'ai-trading-assistant.exchange.connectionSuccess': '连接成功',
+ 'ai-trading-assistant.exchange.connectionFailed': '连接失败',
+ 'ai-trading-assistant.form.advancedSettings': '高级设置',
+ 'ai-trading-assistant.form.orderMode': '下单模式',
+ 'ai-trading-assistant.form.orderModeMaker': '挂单(Maker)',
+ 'ai-trading-assistant.form.orderModeTaker': '市价(Taker)',
+ 'ai-trading-assistant.form.orderModeHint': '挂单模式使用限价单,手续费更低;市价模式立即成交,手续费较高',
+ 'ai-trading-assistant.form.makerWaitSec': '挂单等待时间(秒)',
+ 'ai-trading-assistant.form.makerWaitSecHint': '挂单后等待成交的时间,超时后取消并重试',
+ 'ai-trading-assistant.form.makerRetries': '挂单重试次数',
+ 'ai-trading-assistant.form.makerRetriesHint': '挂单未成交时的最大重试次数',
+ 'ai-trading-assistant.form.fallbackToMarket': '挂单失败降级市价',
+ 'ai-trading-assistant.form.fallbackToMarketHint': '开/平仓挂单未成交时,是否降级为市价单以确保成交',
+ 'ai-trading-assistant.form.marginMode': '保证金模式',
+ 'ai-trading-assistant.form.marginModeCross': '全仓',
+ 'ai-trading-assistant.form.marginModeIsolated': '逐仓',
+ 'ai-analysis.title': '量子交易引擎',
+ 'ai-analysis.system.online': '在线',
+ 'ai-analysis.system.agents': '智能体',
+ 'ai-analysis.system.active': '活跃',
+ 'ai-analysis.system.stage': '阶段',
+ 'ai-analysis.panel.roster': '智能体阵容',
+ 'ai-analysis.panel.thinking': '思考中...',
+ 'ai-analysis.panel.done': '完成',
+ 'ai-analysis.panel.standby': '待机',
+ 'ai-analysis.input.title': '量子交易引擎',
+ 'ai-analysis.input.placeholder': '选择目标资产 (如 BTC/USDT)',
+ 'ai-analysis.input.watchlist': '自选股',
+ 'ai-analysis.input.start': '开始分析',
+ 'ai-analysis.input.recent': '最近任务:',
+ 'ai-analysis.vis.stage': '阶段',
+ 'ai-analysis.vis.processing': '处理中',
+ 'ai-analysis.result.complete': '分析完成',
+ 'ai-analysis.result.signal': '最终信号',
+ 'ai-analysis.result.confidence': '置信度:',
+ 'ai-analysis.result.new': '新分析',
+ 'ai-analysis.result.full': '查看完整报告',
+ 'ai-analysis.logs.title': '系统日志',
+ 'ai-analysis.modal.title': '机密报告',
+ 'ai-analysis.modal.fundamental': '基本面分析',
+ 'ai-analysis.modal.technical': '技术面分析',
+ 'ai-analysis.modal.sentiment': '情绪面分析',
+ 'ai-analysis.modal.risk': '风险评估',
+ 'ai-analysis.stage.idle': '待机',
+ 'ai-analysis.stage.1': '第一阶段:多维分析',
+ 'ai-analysis.stage.2': '第二阶段:多空辩论',
+ 'ai-analysis.stage.3': '第三阶段:战略规划',
+ 'ai-analysis.stage.4': '第四阶段:风控审查',
+ 'ai-analysis.stage.complete': '完成',
+ 'ai-analysis.agent.investment_director': '投资总监',
+ 'ai-analysis.agent.role.investment_director': '综合分析 & 最终结论',
+ 'ai-analysis.agent.market': '市场分析师',
+ 'ai-analysis.agent.role.market': '技术 & 市场数据',
+ 'ai-analysis.agent.fundamental': '基本面分析师',
+ 'ai-analysis.agent.role.fundamental': '财务 & 估值',
+ 'ai-analysis.agent.technical': '技术分析师',
+ 'ai-analysis.agent.role.technical': '技术指标 & 图表',
+ 'ai-analysis.agent.news': '新闻分析师',
+ 'ai-analysis.agent.role.news': '全球新闻过滤',
+ 'ai-analysis.agent.sentiment': '情绪分析师',
+ 'ai-analysis.agent.role.sentiment': '社交 & 情绪',
+ 'ai-analysis.agent.risk': '风险分析师',
+ 'ai-analysis.agent.role.risk': '基础风险检查',
+ 'ai-analysis.agent.bull': '看涨研究员',
+ 'ai-analysis.agent.role.bull': '增长催化剂挖掘',
+ 'ai-analysis.agent.bear': '看跌研究员',
+ 'ai-analysis.agent.role.bear': '风险 & 缺陷挖掘',
+ 'ai-analysis.agent.manager': '研究经理',
+ 'ai-analysis.agent.role.manager': '辩论主持人',
+ 'ai-analysis.agent.trader': '交易员',
+ 'ai-analysis.agent.role.trader': '执行策略师',
+ 'ai-analysis.agent.risky': '激进分析师',
+ 'ai-analysis.agent.role.risky': '激进策略',
+ 'ai-analysis.agent.neutral': '平衡分析师',
+ 'ai-analysis.agent.role.neutral': '平衡策略',
+ 'ai-analysis.agent.safe': '保守分析师',
+ 'ai-analysis.agent.role.safe': '保守策略',
+ 'ai-analysis.agent.cro': '风控经理 (CRO)',
+ 'ai-analysis.agent.role.cro': '最终决策权威',
+ 'ai-analysis.script.market': '正在从主要交易所获取 OHLCV 数据...',
+ 'ai-analysis.script.fundamental': '正在检索季度财务报告...',
+ 'ai-analysis.script.technical': '正在分析技术指标和图表形态...',
+ 'ai-analysis.script.news': '正在扫描全球财经新闻...',
+ 'ai-analysis.script.sentiment': '正在分析社交媒体趋势...',
+ 'ai-analysis.script.risk': '正在计算历史波动率...',
+ 'invite.inviteLink': '邀请链接',
+ 'invite.copy': '复制链接',
+ 'invite.copySuccess': '复制成功!',
+ 'invite.copyFailed': '复制失败,请手动复制',
+ 'invite.noInviteLink': '邀请链接未生成',
+ 'invite.totalInvites': '累计邀请',
+ 'invite.totalReward': '累计奖励',
+ 'invite.rules': '邀请规则',
+ 'invite.rule1': '每成功邀请一位好友注册,您将获得奖励',
+ 'invite.rule2': '被邀请的好友完成首次交易,您将获得额外奖励',
+ 'invite.rule3': '邀请奖励将直接发放到您的账户',
+ 'invite.inviteList': '邀请列表',
+ 'invite.tasks': '任务中心',
+ 'invite.inviteeName': '被邀请人',
+ 'invite.inviteTime': '邀请时间',
+ 'invite.status': '状态',
+ 'invite.reward': '奖励',
+ 'invite.active': '活跃',
+ 'invite.inactive': '未激活',
+ 'invite.completed': '已完成',
+ 'invite.claimed': '已领取',
+ 'invite.pending': '待完成',
+ 'invite.goToTask': '去完成',
+ 'invite.claimReward': '领取奖励',
+ 'invite.verify': '验证完成',
+ 'invite.verifySuccess': '验证成功!任务已完成',
+ 'invite.verifyNotCompleted': '任务尚未完成,请先完成任务',
+ 'invite.verifyFailed': '验证失败,请稍后重试',
+ 'invite.claimSuccess': '成功领取 {reward} QDT!',
+ 'invite.claimFailed': '领取失败,请稍后重试',
+ 'invite.totalRecords': '共 {total} 条记录',
+ 'invite.task.twitter.title': '转发推文到 X (Twitter)',
+ 'invite.task.twitter.desc': '分享我们的官方推文到您的 X (Twitter) 账号',
+ 'invite.task.youtube.title': '关注我们的 YouTube 频道',
+ 'invite.task.youtube.desc': '订阅并关注我们的 YouTube 官方频道',
+ 'invite.task.telegram.title': '加入 Telegram 群组',
+ 'invite.task.telegram.desc': '加入我们的官方 Telegram 社区群组',
+ 'invite.task.discord.title': '加入 Discord 服务器',
+ 'invite.task.discord.desc': '加入我们的 Discord 社区服务器',
+ 'message': '-',
+ 'layouts.usermenu.dialog.title': '信息',
+ 'layouts.usermenu.dialog.content': '您确定要注销吗?',
+ 'layouts.userLayout.title': '于不确定中,寻见真理',
-// Settings
-'settings.title': '系统设置',
-'settings.description': '配置应用设置、API密钥和系统偏好',
-'settings.save': '保存设置',
-'settings.reset': '重置',
-'settings.saveSuccess': '设置保存成功',
-'settings.saveFailed': '保存设置失败',
-'settings.loadFailed': '加载配置失败',
-'settings.openrouterBalance': 'OpenRouter 账户余额',
-'settings.queryBalance': '查询余额',
-'settings.balanceUsage': '已使用',
-'settings.balanceRemaining': '剩余额度',
-'settings.balanceLimit': '总限额',
-'settings.balanceQuerySuccess': '余额查询成功',
-'settings.balanceQueryFailed': '余额查询失败',
-'settings.balanceNotQueried': '点击"查询余额"获取账户信息',
-'settings.default': '默认',
-'settings.pleaseSelect': '请选择',
-'settings.inputApiKey': '请输入密钥',
-'settings.getApi': '获取API',
-// Settings link texts
-'settings.link.getApi': '获取API',
-'settings.link.getApiKey': '获取API Key',
-'settings.link.getToken': '获取Token',
-'settings.link.createBot': '创建Bot',
-'settings.link.viewModels': '查看模型列表',
-'settings.link.freeRegister': '免费注册',
-'settings.link.supportedExchanges': '支持的交易所',
-'settings.link.applyApi': '申请API',
-'settings.link.createSearchEngine': '创建搜索引擎',
-'settings.link.getTurnstileKey': '获取Turnstile密钥',
-'settings.link.getGoogleCredentials': '获取Google凭据',
-'settings.link.getGithubCredentials': '获取GitHub凭据',
-'settings.restartRequired': '配置已保存,部分配置需要重启Python服务才能生效',
-'settings.copyRestartCmd': '复制重启命令',
-'settings.copySuccess': '复制成功',
-'settings.copyFailed': '复制失败',
-// Settings groups (按后端 order 排序)
-'settings.group.server': '服务配置',
-'settings.group.auth': '安全认证',
-'settings.group.ai': 'AI/LLM配置',
-'settings.group.trading': '实盘交易',
-'settings.group.strategy': '策略执行',
-'settings.group.data_source': '数据源',
-'settings.group.notification': '通知推送',
-'settings.group.email': '邮件配置',
-'settings.group.sms': '短信配置',
-'settings.group.agent': 'AI Agent',
-'settings.group.network': '网络代理',
-'settings.group.search': '搜索配置',
-'settings.group.security': '注册与安全',
-'settings.group.app': '应用配置',
-// Settings fields - Auth
-'settings.field.SECRET_KEY': 'Secret Key',
-'settings.field.ADMIN_USER': '管理员用户名',
-'settings.field.ADMIN_PASSWORD': '管理员密码',
-'settings.field.ADMIN_EMAIL': '管理员邮箱',
-// Settings fields - Security
-'settings.field.ENABLE_REGISTRATION': '允许注册',
-'settings.field.TURNSTILE_SITE_KEY': 'Turnstile Site Key',
-'settings.field.TURNSTILE_SECRET_KEY': 'Turnstile Secret Key',
-'settings.field.FRONTEND_URL': '前端URL',
-'settings.field.GOOGLE_CLIENT_ID': 'Google Client ID',
-'settings.field.GOOGLE_CLIENT_SECRET': 'Google Client Secret',
-'settings.field.GOOGLE_REDIRECT_URI': 'Google回调URL',
-'settings.field.GITHUB_CLIENT_ID': 'GitHub Client ID',
-'settings.field.GITHUB_CLIENT_SECRET': 'GitHub Client Secret',
-'settings.field.GITHUB_REDIRECT_URI': 'GitHub回调URL',
-'settings.field.SECURITY_IP_MAX_ATTEMPTS': 'IP最大失败次数',
-'settings.field.SECURITY_IP_WINDOW_MINUTES': 'IP统计窗口(分钟)',
-'settings.field.SECURITY_IP_BLOCK_MINUTES': 'IP封禁时长(分钟)',
-'settings.field.SECURITY_ACCOUNT_MAX_ATTEMPTS': '账户最大失败次数',
-'settings.field.SECURITY_ACCOUNT_WINDOW_MINUTES': '账户统计窗口(分钟)',
-'settings.field.SECURITY_ACCOUNT_BLOCK_MINUTES': '账户锁定时长(分钟)',
-'settings.field.VERIFICATION_CODE_EXPIRE_MINUTES': '验证码有效期(分钟)',
-'settings.field.VERIFICATION_CODE_RATE_LIMIT': '验证码发送间隔(秒)',
-'settings.field.VERIFICATION_CODE_IP_HOURLY_LIMIT': 'IP每小时验证码上限',
-'settings.field.VERIFICATION_CODE_MAX_ATTEMPTS': '验证码最大尝试次数',
-'settings.field.VERIFICATION_CODE_LOCK_MINUTES': '验证码锁定时长(分钟)',
-// Settings fields - Server
-'settings.field.PYTHON_API_HOST': '监听地址',
-'settings.field.PYTHON_API_PORT': '端口',
-'settings.field.PYTHON_API_DEBUG': '调试模式',
-// Settings fields - Worker
-'settings.field.ENABLE_PENDING_ORDER_WORKER': '启用订单处理Worker',
-'settings.field.PENDING_ORDER_STALE_SEC': '订单超时时间(秒)',
-// Settings fields - Trading
-'settings.field.ORDER_MODE': '下单模式',
-'settings.field.MAKER_WAIT_SEC': '限价单等待时间(秒)',
-'settings.field.MAKER_OFFSET_BPS': '限价单价格偏移(基点)',
-// Settings fields - Notification
-'settings.field.SIGNAL_WEBHOOK_URL': 'Webhook URL',
-'settings.field.SIGNAL_WEBHOOK_TOKEN': 'Webhook Token',
-'settings.field.SIGNAL_NOTIFY_TIMEOUT_SEC': '通知超时(秒)',
-'settings.field.TELEGRAM_BOT_TOKEN': 'Telegram Bot Token',
-// Settings fields - SMTP
-'settings.field.SMTP_HOST': 'SMTP服务器',
-'settings.field.SMTP_PORT': 'SMTP端口',
-'settings.field.SMTP_USER': 'SMTP用户名',
-'settings.field.SMTP_PASSWORD': 'SMTP密码',
-'settings.field.SMTP_FROM': '发件人地址',
-'settings.field.SMTP_USE_TLS': '使用TLS',
-'settings.field.SMTP_USE_SSL': '使用SSL',
-// Settings fields - Twilio
-'settings.field.TWILIO_ACCOUNT_SID': 'Account SID',
-'settings.field.TWILIO_AUTH_TOKEN': 'Auth Token',
-'settings.field.TWILIO_FROM_NUMBER': '发送号码',
-// Settings fields - Strategy
-'settings.field.DISABLE_RESTORE_RUNNING_STRATEGIES': '禁用自动恢复策略',
-'settings.field.STRATEGY_TICK_INTERVAL_SEC': '策略Tick间隔(秒)',
-'settings.field.PRICE_CACHE_TTL_SEC': '价格缓存TTL(秒)',
-// Settings fields - Proxy
-'settings.field.PROXY_PORT': '代理端口',
-'settings.field.PROXY_HOST': '代理主机',
-'settings.field.PROXY_SCHEME': '代理协议',
-'settings.field.PROXY_URL': '完整代理URL',
-// Settings fields - App
-'settings.field.CORS_ORIGINS': 'CORS来源',
-'settings.field.RATE_LIMIT': '速率限制(每分钟)',
-'settings.field.ENABLE_CACHE': '启用缓存',
-'settings.field.ENABLE_REQUEST_LOG': '启用请求日志',
-'settings.field.ENABLE_AI_ANALYSIS': '启用AI分析',
-// Settings fields - 记忆/反思
-'settings.field.ENABLE_AGENT_MEMORY': '启用Agent记忆',
-'settings.field.AGENT_MEMORY_ENABLE_VECTOR': '启用向量检索(本地)',
-'settings.field.AGENT_MEMORY_EMBEDDING_DIM': 'Embedding维度',
-'settings.field.AGENT_MEMORY_TOP_K': '召回数量TopK',
-'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': '候选窗口大小',
-'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': '时间衰减半衰期(天)',
-'settings.field.AGENT_MEMORY_W_SIM': '相似度权重',
-'settings.field.AGENT_MEMORY_W_RECENCY': '时间权重',
-'settings.field.AGENT_MEMORY_W_RETURNS': '收益权重',
-// Settings fields - 自动反思验证Worker
-'settings.field.ENABLE_REFLECTION_WORKER': '启用自动验证',
-'settings.field.REFLECTION_WORKER_INTERVAL_SEC': '验证周期间隔(秒)',
-// Settings fields - AI
-'settings.field.OPENROUTER_API_KEY': 'OpenRouter API Key',
-'settings.field.OPENROUTER_API_URL': 'OpenRouter API URL',
-'settings.field.OPENROUTER_MODEL': '默认模型',
-'settings.field.OPENROUTER_TEMPERATURE': 'Temperature',
-'settings.field.OPENROUTER_MAX_TOKENS': 'Max Tokens',
-'settings.field.OPENROUTER_TIMEOUT': '超时时间(秒)',
-'settings.field.OPENROUTER_CONNECT_TIMEOUT': '连接超时(秒)',
-'settings.field.AI_MODELS_JSON': '模型列表(JSON)',
-// Settings fields - Market
-'settings.field.MARKET_TYPES_JSON': '市场类型(JSON)',
-'settings.field.TRADING_SUPPORTED_SYMBOLS_JSON': '支持的交易对(JSON)',
-// Settings fields - Data Source
-'settings.field.DATA_SOURCE_TIMEOUT': '数据源超时(秒)',
-'settings.field.DATA_SOURCE_RETRY': '重试次数',
-'settings.field.DATA_SOURCE_RETRY_BACKOFF': '重试退避(秒)',
-'settings.field.FINNHUB_API_KEY': 'Finnhub API Key',
-'settings.field.FINNHUB_TIMEOUT': 'Finnhub超时(秒)',
-'settings.field.FINNHUB_RATE_LIMIT': 'Finnhub速率限制',
-'settings.field.CCXT_DEFAULT_EXCHANGE': 'CCXT默认交易所',
-'settings.field.CCXT_TIMEOUT': 'CCXT超时(ms)',
-'settings.field.CCXT_PROXY': 'CCXT代理',
-'settings.field.AKSHARE_TIMEOUT': 'Akshare超时(秒)',
-'settings.field.YFINANCE_TIMEOUT': 'YFinance超时(秒)',
-'settings.field.TIINGO_API_KEY': 'Tiingo API Key',
-'settings.field.TIINGO_TIMEOUT': 'Tiingo超时(秒)',
-// Settings fields - Search
-'settings.field.SEARCH_PROVIDER': '搜索提供商',
-'settings.field.SEARCH_MAX_RESULTS': '最大结果数',
-'settings.field.SEARCH_GOOGLE_API_KEY': 'Google API Key',
-'settings.field.SEARCH_GOOGLE_CX': 'Google CX',
-'settings.field.SEARCH_BING_API_KEY': 'Bing API Key',
-'settings.field.INTERNAL_API_KEY': '内部API Key',
+ // Settings
+ 'settings.title': '系统设置',
+ 'settings.description': '配置应用设置、API密钥和系统偏好',
+ 'settings.save': '保存设置',
+ 'settings.reset': '重置',
+ 'settings.saveSuccess': '设置保存成功',
+ 'settings.saveFailed': '保存设置失败',
+ 'settings.loadFailed': '加载配置失败',
+ 'settings.openrouterBalance': 'OpenRouter 账户余额',
+ 'settings.queryBalance': '查询余额',
+ 'settings.balanceUsage': '已使用',
+ 'settings.balanceRemaining': '剩余额度',
+ 'settings.balanceLimit': '总限额',
+ 'settings.balanceQuerySuccess': '余额查询成功',
+ 'settings.balanceQueryFailed': '余额查询失败',
+ 'settings.balanceNotQueried': '点击"查询余额"获取账户信息',
+ 'settings.default': '默认',
+ 'settings.pleaseSelect': '请选择',
+ 'settings.inputApiKey': '请输入密钥',
+ 'settings.getApi': '获取API',
+ // Settings link texts
+ 'settings.link.getApi': '获取API',
+ 'settings.link.getApiKey': '获取API Key',
+ 'settings.link.getToken': '获取Token',
+ 'settings.link.createBot': '创建Bot',
+ 'settings.link.viewModels': '查看模型列表',
+ 'settings.link.freeRegister': '免费注册',
+ 'settings.link.supportedExchanges': '支持的交易所',
+ 'settings.link.applyApi': '申请API',
+ 'settings.link.createSearchEngine': '创建搜索引擎',
+ 'settings.link.getTurnstileKey': '获取Turnstile密钥',
+ 'settings.link.getGoogleCredentials': '获取Google凭据',
+ 'settings.link.getGithubCredentials': '获取GitHub凭据',
+ 'settings.restartRequired': '配置已保存,部分配置需要重启Python服务才能生效',
+ 'settings.copyRestartCmd': '复制重启命令',
+ 'settings.copySuccess': '复制成功',
+ 'settings.copyFailed': '复制失败',
+ // Settings groups (按后端 order 排序)
+ 'settings.group.server': '服务配置',
+ 'settings.group.auth': '安全认证',
+ 'settings.group.ai': 'AI/LLM配置',
+ 'settings.group.trading': '实盘交易',
+ 'settings.group.strategy': '策略执行',
+ 'settings.group.data_source': '数据源',
+ 'settings.group.notification': '通知推送',
+ 'settings.group.email': '邮件配置',
+ 'settings.group.sms': '短信配置',
+ 'settings.group.agent': 'AI Agent',
+ 'settings.group.network': '网络代理',
+ 'settings.group.search': '搜索配置',
+ 'settings.group.security': '注册与安全',
+ 'settings.group.app': '应用配置',
+ // Settings fields - Auth
+ 'settings.field.SECRET_KEY': 'Secret Key',
+ 'settings.field.ADMIN_USER': '管理员用户名',
+ 'settings.field.ADMIN_PASSWORD': '管理员密码',
+ 'settings.field.ADMIN_EMAIL': '管理员邮箱',
+ // Settings fields - Security
+ 'settings.field.ENABLE_REGISTRATION': '允许注册',
+ 'settings.field.TURNSTILE_SITE_KEY': 'Turnstile Site Key',
+ 'settings.field.TURNSTILE_SECRET_KEY': 'Turnstile Secret Key',
+ 'settings.field.FRONTEND_URL': '前端URL',
+ 'settings.field.GOOGLE_CLIENT_ID': 'Google Client ID',
+ 'settings.field.GOOGLE_CLIENT_SECRET': 'Google Client Secret',
+ 'settings.field.GOOGLE_REDIRECT_URI': 'Google回调URL',
+ 'settings.field.GITHUB_CLIENT_ID': 'GitHub Client ID',
+ 'settings.field.GITHUB_CLIENT_SECRET': 'GitHub Client Secret',
+ 'settings.field.GITHUB_REDIRECT_URI': 'GitHub回调URL',
+ 'settings.field.SECURITY_IP_MAX_ATTEMPTS': 'IP最大失败次数',
+ 'settings.field.SECURITY_IP_WINDOW_MINUTES': 'IP统计窗口(分钟)',
+ 'settings.field.SECURITY_IP_BLOCK_MINUTES': 'IP封禁时长(分钟)',
+ 'settings.field.SECURITY_ACCOUNT_MAX_ATTEMPTS': '账户最大失败次数',
+ 'settings.field.SECURITY_ACCOUNT_WINDOW_MINUTES': '账户统计窗口(分钟)',
+ 'settings.field.SECURITY_ACCOUNT_BLOCK_MINUTES': '账户锁定时长(分钟)',
+ 'settings.field.VERIFICATION_CODE_EXPIRE_MINUTES': '验证码有效期(分钟)',
+ 'settings.field.VERIFICATION_CODE_RATE_LIMIT': '验证码发送间隔(秒)',
+ 'settings.field.VERIFICATION_CODE_IP_HOURLY_LIMIT': 'IP每小时验证码上限',
+ 'settings.field.VERIFICATION_CODE_MAX_ATTEMPTS': '验证码最大尝试次数',
+ 'settings.field.VERIFICATION_CODE_LOCK_MINUTES': '验证码锁定时长(分钟)',
+ // Settings fields - Server
+ 'settings.field.PYTHON_API_HOST': '监听地址',
+ 'settings.field.PYTHON_API_PORT': '端口',
+ 'settings.field.PYTHON_API_DEBUG': '调试模式',
+ // Settings fields - Worker
+ 'settings.field.ENABLE_PENDING_ORDER_WORKER': '启用订单处理Worker',
+ 'settings.field.PENDING_ORDER_STALE_SEC': '订单超时时间(秒)',
+ // Settings fields - Trading
+ 'settings.field.ORDER_MODE': '下单模式',
+ 'settings.field.MAKER_WAIT_SEC': '限价单等待时间(秒)',
+ 'settings.field.MAKER_OFFSET_BPS': '限价单价格偏移(基点)',
+ // Settings fields - Notification
+ 'settings.field.SIGNAL_WEBHOOK_URL': 'Webhook URL',
+ 'settings.field.SIGNAL_WEBHOOK_TOKEN': 'Webhook Token',
+ 'settings.field.SIGNAL_NOTIFY_TIMEOUT_SEC': '通知超时(秒)',
+ 'settings.field.TELEGRAM_BOT_TOKEN': 'Telegram Bot Token',
+ // Settings fields - SMTP
+ 'settings.field.SMTP_HOST': 'SMTP服务器',
+ 'settings.field.SMTP_PORT': 'SMTP端口',
+ 'settings.field.SMTP_USER': 'SMTP用户名',
+ 'settings.field.SMTP_PASSWORD': 'SMTP密码',
+ 'settings.field.SMTP_FROM': '发件人地址',
+ 'settings.field.SMTP_USE_TLS': '使用TLS',
+ 'settings.field.SMTP_USE_SSL': '使用SSL',
+ // Settings fields - Twilio
+ 'settings.field.TWILIO_ACCOUNT_SID': 'Account SID',
+ 'settings.field.TWILIO_AUTH_TOKEN': 'Auth Token',
+ 'settings.field.TWILIO_FROM_NUMBER': '发送号码',
+ // Settings fields - Strategy
+ 'settings.field.DISABLE_RESTORE_RUNNING_STRATEGIES': '禁用自动恢复策略',
+ 'settings.field.STRATEGY_TICK_INTERVAL_SEC': '策略Tick间隔(秒)',
+ 'settings.field.PRICE_CACHE_TTL_SEC': '价格缓存TTL(秒)',
+ // Settings fields - Proxy
+ 'settings.field.PROXY_PORT': '代理端口',
+ 'settings.field.PROXY_HOST': '代理主机',
+ 'settings.field.PROXY_SCHEME': '代理协议',
+ 'settings.field.PROXY_URL': '完整代理URL',
+ // Settings fields - App
+ 'settings.field.CORS_ORIGINS': 'CORS来源',
+ 'settings.field.RATE_LIMIT': '速率限制(每分钟)',
+ 'settings.field.ENABLE_CACHE': '启用缓存',
+ 'settings.field.ENABLE_REQUEST_LOG': '启用请求日志',
+ 'settings.field.ENABLE_AI_ANALYSIS': '启用AI分析',
+ // Settings fields - 记忆/反思
+ 'settings.field.ENABLE_AGENT_MEMORY': '启用Agent记忆',
+ 'settings.field.AGENT_MEMORY_ENABLE_VECTOR': '启用向量检索(本地)',
+ 'settings.field.AGENT_MEMORY_EMBEDDING_DIM': 'Embedding维度',
+ 'settings.field.AGENT_MEMORY_TOP_K': '召回数量TopK',
+ 'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': '候选窗口大小',
+ 'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': '时间衰减半衰期(天)',
+ 'settings.field.AGENT_MEMORY_W_SIM': '相似度权重',
+ 'settings.field.AGENT_MEMORY_W_RECENCY': '时间权重',
+ 'settings.field.AGENT_MEMORY_W_RETURNS': '收益权重',
+ // Settings fields - 自动反思验证Worker
+ 'settings.field.ENABLE_REFLECTION_WORKER': '启用自动验证',
+ 'settings.field.REFLECTION_WORKER_INTERVAL_SEC': '验证周期间隔(秒)',
+ // Settings fields - AI
+ 'settings.field.OPENROUTER_API_KEY': 'OpenRouter API Key',
+ 'settings.field.OPENROUTER_API_URL': 'OpenRouter API URL',
+ 'settings.field.OPENROUTER_MODEL': '默认模型',
+ 'settings.field.OPENROUTER_TEMPERATURE': 'Temperature',
+ 'settings.field.OPENROUTER_MAX_TOKENS': 'Max Tokens',
+ 'settings.field.OPENROUTER_TIMEOUT': '超时时间(秒)',
+ 'settings.field.OPENROUTER_CONNECT_TIMEOUT': '连接超时(秒)',
+ 'settings.field.AI_MODELS_JSON': '模型列表(JSON)',
+ // Settings fields - Market
+ 'settings.field.MARKET_TYPES_JSON': '市场类型(JSON)',
+ 'settings.field.TRADING_SUPPORTED_SYMBOLS_JSON': '支持的交易对(JSON)',
+ // Settings fields - Data Source
+ 'settings.field.DATA_SOURCE_TIMEOUT': '数据源超时(秒)',
+ 'settings.field.DATA_SOURCE_RETRY': '重试次数',
+ 'settings.field.DATA_SOURCE_RETRY_BACKOFF': '重试退避(秒)',
+ 'settings.field.FINNHUB_API_KEY': 'Finnhub API Key',
+ 'settings.field.FINNHUB_TIMEOUT': 'Finnhub超时(秒)',
+ 'settings.field.FINNHUB_RATE_LIMIT': 'Finnhub速率限制',
+ 'settings.field.CCXT_DEFAULT_EXCHANGE': 'CCXT默认交易所',
+ 'settings.field.CCXT_TIMEOUT': 'CCXT超时(ms)',
+ 'settings.field.CCXT_PROXY': 'CCXT代理',
+ 'settings.field.AKSHARE_TIMEOUT': 'Akshare超时(秒)',
+ 'settings.field.YFINANCE_TIMEOUT': 'YFinance超时(秒)',
+ 'settings.field.TIINGO_API_KEY': 'Tiingo API Key',
+ 'settings.field.TIINGO_TIMEOUT': 'Tiingo超时(秒)',
+ // Settings fields - Search
+ 'settings.field.SEARCH_PROVIDER': '搜索提供商',
+ 'settings.field.SEARCH_MAX_RESULTS': '最大结果数',
+ 'settings.field.SEARCH_GOOGLE_API_KEY': 'Google API Key',
+ 'settings.field.SEARCH_GOOGLE_CX': 'Google CX',
+ 'settings.field.SEARCH_BING_API_KEY': 'Bing API Key',
+ 'settings.field.INTERNAL_API_KEY': '内部API Key',
-// Settings descriptions (配置项说明)
-'settings.desc.PYTHON_API_HOST': '服务监听地址。0.0.0.0 允许外部访问,127.0.0.1 仅本地访问',
-'settings.desc.PYTHON_API_PORT': '服务监听端口,默认5000',
-'settings.desc.PYTHON_API_DEBUG': '启用调试模式,开发时使用。生产环境请关闭',
-'settings.desc.SECRET_KEY': 'JWT签名密钥。生产环境必须修改以确保安全',
-'settings.desc.ADMIN_USER': '管理员登录用户名',
-'settings.desc.ADMIN_PASSWORD': '管理员登录密码。生产环境必须修改',
-'settings.desc.OPENROUTER_API_KEY': 'OpenRouter API密钥,用于访问多种AI模型',
-'settings.desc.OPENROUTER_API_URL': 'OpenRouter API端点地址',
-'settings.desc.OPENROUTER_MODEL': '默认使用的AI模型,如 openai/gpt-4o, anthropic/claude-3.5-sonnet',
-'settings.desc.OPENROUTER_TEMPERATURE': '模型创造性(0-1)。越低越确定性,越高越有创意',
-'settings.desc.OPENROUTER_MAX_TOKENS': '每次请求最大输出token数',
-'settings.desc.OPENROUTER_TIMEOUT': 'API请求超时时间(秒)',
-'settings.desc.OPENROUTER_CONNECT_TIMEOUT': '连接建立超时时间(秒)',
-'settings.desc.AI_MODELS_JSON': '自定义模型列表,JSON格式,用于模型选择器',
-'settings.desc.ENABLE_PENDING_ORDER_WORKER': '启用后台订单处理Worker,实盘交易必需',
-'settings.desc.PENDING_ORDER_STALE_SEC': '等待订单超时时间,超时后标记为过期',
-'settings.desc.ORDER_MODE': 'maker: 限价单优先(手续费低),market: 市价单(立即成交)',
-'settings.desc.MAKER_WAIT_SEC': '限价单等待成交时间,超时后自动切换为市价单',
-'settings.desc.MAKER_OFFSET_BPS': '限价单价格偏移(基点)。买入价=市价*(1-偏移),卖出价=市价*(1+偏移)',
-'settings.desc.DISABLE_RESTORE_RUNNING_STRATEGIES': '禁止服务重启时自动恢复运行中的策略',
-'settings.desc.STRATEGY_TICK_INTERVAL_SEC': '策略主循环检查间隔(秒)',
-'settings.desc.PRICE_CACHE_TTL_SEC': '价格数据缓存有效期(秒)',
-'settings.desc.MARKET_TYPES_JSON': '自定义市场类型配置,JSON格式',
-'settings.desc.TRADING_SUPPORTED_SYMBOLS_JSON': '支持的交易对列表,JSON格式',
-'settings.desc.DATA_SOURCE_TIMEOUT': '数据源请求默认超时时间',
-'settings.desc.DATA_SOURCE_RETRY': '数据源请求失败时的重试次数',
-'settings.desc.DATA_SOURCE_RETRY_BACKOFF': '重试间隔时间(秒)',
-'settings.desc.CCXT_DEFAULT_EXCHANGE': 'CCXT默认交易所(binance, coinbase, okx等)',
-'settings.desc.CCXT_TIMEOUT': 'CCXT请求超时时间(毫秒)',
-'settings.desc.CCXT_PROXY': 'CCXT请求代理地址(如 socks5h://127.0.0.1:1080)',
-'settings.desc.FINNHUB_API_KEY': 'Finnhub API密钥,用于美股数据(有免费额度)',
-'settings.desc.FINNHUB_TIMEOUT': 'Finnhub API请求超时时间',
-'settings.desc.FINNHUB_RATE_LIMIT': 'Finnhub API速率限制(每分钟请求数)',
-'settings.desc.TIINGO_API_KEY': 'Tiingo API密钥,用于外汇/贵金属数据(免费版不支持1分钟数据)',
-'settings.desc.TIINGO_TIMEOUT': 'Tiingo API请求超时时间',
-'settings.desc.AKSHARE_TIMEOUT': 'Akshare API超时时间,用于A股数据',
-'settings.desc.YFINANCE_TIMEOUT': 'Yahoo Finance API超时时间',
-'settings.desc.SIGNAL_WEBHOOK_URL': '信号通知Webhook地址(POST JSON)',
-'settings.desc.SIGNAL_WEBHOOK_TOKEN': 'Webhook认证令牌,通过请求头发送',
-'settings.desc.SIGNAL_NOTIFY_TIMEOUT_SEC': '通知请求超时时间',
-'settings.desc.TELEGRAM_BOT_TOKEN': 'Telegram机器人Token,从@BotFather获取',
-'settings.desc.SMTP_HOST': 'SMTP邮件服务器地址(如 smtp.gmail.com)',
-'settings.desc.SMTP_PORT': 'SMTP端口(TLS用587,SSL用465,明文用25)',
-'settings.desc.SMTP_USER': 'SMTP认证用户名(通常是邮箱地址)',
-'settings.desc.SMTP_PASSWORD': 'SMTP认证密码或应用专用密码',
-'settings.desc.SMTP_FROM': '邮件发件人地址',
-'settings.desc.SMTP_USE_TLS': '启用STARTTLS加密(推荐端口587)',
-'settings.desc.SMTP_USE_SSL': '启用SSL加密(端口465)',
-'settings.desc.TWILIO_ACCOUNT_SID': 'Twilio账户SID,从控制台获取',
-'settings.desc.TWILIO_AUTH_TOKEN': 'Twilio认证Token,从控制台获取',
-'settings.desc.TWILIO_FROM_NUMBER': 'Twilio发送短信的号码(如 +1234567890)',
-'settings.desc.ENABLE_AGENT_MEMORY': '启用AI Agent记忆功能,用于学习历史交易',
-'settings.desc.AGENT_MEMORY_ENABLE_VECTOR': '启用本地向量相似度搜索进行记忆检索',
-'settings.desc.AGENT_MEMORY_EMBEDDING_DIM': '记忆向量嵌入维度',
-'settings.desc.AGENT_MEMORY_TOP_K': '检索时返回的相似记忆数量',
-'settings.desc.AGENT_MEMORY_CANDIDATE_LIMIT': '相似度搜索的候选记忆上限',
-'settings.desc.AGENT_MEMORY_HALF_LIFE_DAYS': '记忆时间衰减的半衰期(天)',
-'settings.desc.AGENT_MEMORY_W_SIM': '记忆排序中相似度分数的权重(0-1)',
-'settings.desc.AGENT_MEMORY_W_RECENCY': '记忆排序中时间新近度的权重(0-1)',
-'settings.desc.AGENT_MEMORY_W_RETURNS': '记忆排序中收益表现的权重(0-1)',
-'settings.desc.ENABLE_REFLECTION_WORKER': '启用后台自动交易反思Worker',
-'settings.desc.REFLECTION_WORKER_INTERVAL_SEC': '自动反思运行间隔(默认24小时)',
-'settings.desc.PROXY_HOST': '代理服务器主机名或IP',
-'settings.desc.PROXY_PORT': '代理服务器端口(留空则禁用代理)',
-'settings.desc.PROXY_SCHEME': '代理协议类型。socks5h 表示DNS也走代理',
-'settings.desc.PROXY_URL': '完整代理URL(设置后覆盖上面的配置)',
-'settings.desc.SEARCH_PROVIDER': '网页搜索提供商,用于AI研究功能',
-'settings.desc.SEARCH_MAX_RESULTS': '搜索返回的最大结果数',
-'settings.desc.SEARCH_GOOGLE_API_KEY': 'Google自定义搜索API密钥',
-'settings.desc.SEARCH_GOOGLE_CX': 'Google可编程搜索引擎ID (CX)',
-'settings.desc.SEARCH_BING_API_KEY': 'Microsoft Bing网页搜索API密钥',
-'settings.desc.INTERNAL_API_KEY': '内部API认证密钥,用于服务间调用',
-'settings.desc.CORS_ORIGINS': '允许的CORS来源(* 表示全部,或逗号分隔的列表)',
-'settings.desc.RATE_LIMIT': '每IP每分钟的API请求限制',
-'settings.desc.ENABLE_CACHE': '启用响应缓存以提高性能',
-'settings.desc.ENABLE_REQUEST_LOG': '记录所有API请求日志,用于调试',
-'settings.desc.ENABLE_AI_ANALYSIS': '启用AI驱动的市场分析功能',
+ // Settings descriptions (配置项说明)
+ 'settings.desc.PYTHON_API_HOST': '服务监听地址。0.0.0.0 允许外部访问,127.0.0.1 仅本地访问',
+ 'settings.desc.PYTHON_API_PORT': '服务监听端口,默认5000',
+ 'settings.desc.PYTHON_API_DEBUG': '启用调试模式,开发时使用。生产环境请关闭',
+ 'settings.desc.SECRET_KEY': 'JWT签名密钥。生产环境必须修改以确保安全',
+ 'settings.desc.ADMIN_USER': '管理员登录用户名',
+ 'settings.desc.ADMIN_PASSWORD': '管理员登录密码。生产环境必须修改',
+ 'settings.desc.OPENROUTER_API_KEY': 'OpenRouter API密钥,用于访问多种AI模型',
+ 'settings.desc.OPENROUTER_API_URL': 'OpenRouter API端点地址',
+ 'settings.desc.OPENROUTER_MODEL': '默认使用的AI模型,如 openai/gpt-4o, anthropic/claude-3.5-sonnet',
+ 'settings.desc.OPENROUTER_TEMPERATURE': '模型创造性(0-1)。越低越确定性,越高越有创意',
+ 'settings.desc.OPENROUTER_MAX_TOKENS': '每次请求最大输出token数',
+ 'settings.desc.OPENROUTER_TIMEOUT': 'API请求超时时间(秒)',
+ 'settings.desc.OPENROUTER_CONNECT_TIMEOUT': '连接建立超时时间(秒)',
+ 'settings.desc.AI_MODELS_JSON': '自定义模型列表,JSON格式,用于模型选择器',
+ 'settings.desc.ENABLE_PENDING_ORDER_WORKER': '启用后台订单处理Worker,实盘交易必需',
+ 'settings.desc.PENDING_ORDER_STALE_SEC': '等待订单超时时间,超时后标记为过期',
+ 'settings.desc.ORDER_MODE': 'maker: 限价单优先(手续费低),market: 市价单(立即成交)',
+ 'settings.desc.MAKER_WAIT_SEC': '限价单等待成交时间,超时后自动切换为市价单',
+ 'settings.desc.MAKER_OFFSET_BPS': '限价单价格偏移(基点)。买入价=市价*(1-偏移),卖出价=市价*(1+偏移)',
+ 'settings.desc.DISABLE_RESTORE_RUNNING_STRATEGIES': '禁止服务重启时自动恢复运行中的策略',
+ 'settings.desc.STRATEGY_TICK_INTERVAL_SEC': '策略主循环检查间隔(秒)',
+ 'settings.desc.PRICE_CACHE_TTL_SEC': '价格数据缓存有效期(秒)',
+ 'settings.desc.MARKET_TYPES_JSON': '自定义市场类型配置,JSON格式',
+ 'settings.desc.TRADING_SUPPORTED_SYMBOLS_JSON': '支持的交易对列表,JSON格式',
+ 'settings.desc.DATA_SOURCE_TIMEOUT': '数据源请求默认超时时间',
+ 'settings.desc.DATA_SOURCE_RETRY': '数据源请求失败时的重试次数',
+ 'settings.desc.DATA_SOURCE_RETRY_BACKOFF': '重试间隔时间(秒)',
+ 'settings.desc.CCXT_DEFAULT_EXCHANGE': 'CCXT默认交易所(binance, coinbase, okx等)',
+ 'settings.desc.CCXT_TIMEOUT': 'CCXT请求超时时间(毫秒)',
+ 'settings.desc.CCXT_PROXY': 'CCXT请求代理地址(如 socks5h://127.0.0.1:1080)',
+ 'settings.desc.FINNHUB_API_KEY': 'Finnhub API密钥,用于美股数据(有免费额度)',
+ 'settings.desc.FINNHUB_TIMEOUT': 'Finnhub API请求超时时间',
+ 'settings.desc.FINNHUB_RATE_LIMIT': 'Finnhub API速率限制(每分钟请求数)',
+ 'settings.desc.TIINGO_API_KEY': 'Tiingo API密钥,用于外汇/贵金属数据(免费版不支持1分钟数据)',
+ 'settings.desc.TIINGO_TIMEOUT': 'Tiingo API请求超时时间',
+ 'settings.desc.AKSHARE_TIMEOUT': 'Akshare API超时时间,用于A股数据',
+ 'settings.desc.YFINANCE_TIMEOUT': 'Yahoo Finance API超时时间',
+ 'settings.desc.SIGNAL_WEBHOOK_URL': '信号通知Webhook地址(POST JSON)',
+ 'settings.desc.SIGNAL_WEBHOOK_TOKEN': 'Webhook认证令牌,通过请求头发送',
+ 'settings.desc.SIGNAL_NOTIFY_TIMEOUT_SEC': '通知请求超时时间',
+ 'settings.desc.TELEGRAM_BOT_TOKEN': 'Telegram机器人Token,从@BotFather获取',
+ 'settings.desc.SMTP_HOST': 'SMTP邮件服务器地址(如 smtp.gmail.com)',
+ 'settings.desc.SMTP_PORT': 'SMTP端口(TLS用587,SSL用465,明文用25)',
+ 'settings.desc.SMTP_USER': 'SMTP认证用户名(通常是邮箱地址)',
+ 'settings.desc.SMTP_PASSWORD': 'SMTP认证密码或应用专用密码',
+ 'settings.desc.SMTP_FROM': '邮件发件人地址',
+ 'settings.desc.SMTP_USE_TLS': '启用STARTTLS加密(推荐端口587)',
+ 'settings.desc.SMTP_USE_SSL': '启用SSL加密(端口465)',
+ 'settings.desc.TWILIO_ACCOUNT_SID': 'Twilio账户SID,从控制台获取',
+ 'settings.desc.TWILIO_AUTH_TOKEN': 'Twilio认证Token,从控制台获取',
+ 'settings.desc.TWILIO_FROM_NUMBER': 'Twilio发送短信的号码(如 +1234567890)',
+ 'settings.desc.ENABLE_AGENT_MEMORY': '启用AI Agent记忆功能,用于学习历史交易',
+ 'settings.desc.AGENT_MEMORY_ENABLE_VECTOR': '启用本地向量相似度搜索进行记忆检索',
+ 'settings.desc.AGENT_MEMORY_EMBEDDING_DIM': '记忆向量嵌入维度',
+ 'settings.desc.AGENT_MEMORY_TOP_K': '检索时返回的相似记忆数量',
+ 'settings.desc.AGENT_MEMORY_CANDIDATE_LIMIT': '相似度搜索的候选记忆上限',
+ 'settings.desc.AGENT_MEMORY_HALF_LIFE_DAYS': '记忆时间衰减的半衰期(天)',
+ 'settings.desc.AGENT_MEMORY_W_SIM': '记忆排序中相似度分数的权重(0-1)',
+ 'settings.desc.AGENT_MEMORY_W_RECENCY': '记忆排序中时间新近度的权重(0-1)',
+ 'settings.desc.AGENT_MEMORY_W_RETURNS': '记忆排序中收益表现的权重(0-1)',
+ 'settings.desc.ENABLE_REFLECTION_WORKER': '启用后台自动交易反思Worker',
+ 'settings.desc.REFLECTION_WORKER_INTERVAL_SEC': '自动反思运行间隔(默认24小时)',
+ 'settings.desc.PROXY_HOST': '代理服务器主机名或IP',
+ 'settings.desc.PROXY_PORT': '代理服务器端口(留空则禁用代理)',
+ 'settings.desc.PROXY_SCHEME': '代理协议类型。socks5h 表示DNS也走代理',
+ 'settings.desc.PROXY_URL': '完整代理URL(设置后覆盖上面的配置)',
+ 'settings.desc.SEARCH_PROVIDER': '网页搜索提供商,用于AI研究功能',
+ 'settings.desc.SEARCH_MAX_RESULTS': '搜索返回的最大结果数',
+ 'settings.desc.SEARCH_GOOGLE_API_KEY': 'Google自定义搜索API密钥',
+ 'settings.desc.SEARCH_GOOGLE_CX': 'Google可编程搜索引擎ID (CX)',
+ 'settings.desc.SEARCH_BING_API_KEY': 'Microsoft Bing网页搜索API密钥',
+ 'settings.desc.INTERNAL_API_KEY': '内部API认证密钥,用于服务间调用',
+ 'settings.desc.CORS_ORIGINS': '允许的CORS来源(* 表示全部,或逗号分隔的列表)',
+ 'settings.desc.RATE_LIMIT': '每IP每分钟的API请求限制',
+ 'settings.desc.ENABLE_CACHE': '启用响应缓存以提高性能',
+ 'settings.desc.ENABLE_REQUEST_LOG': '记录所有API请求日志,用于调试',
+ 'settings.desc.ENABLE_AI_ANALYSIS': '启用AI驱动的市场分析功能',
-// Portfolio - 资产监测
-'portfolio.summary.totalValue': '总市值',
-'portfolio.summary.totalCost': '总成本',
-'portfolio.summary.totalPnl': '总盈亏',
-'portfolio.summary.positionCount': '持仓数量',
-'portfolio.summary.profitLossRatio': '盈利/亏损',
-'portfolio.summary.today': '今日',
-'portfolio.summary.todayPnl': '今日盈亏',
-'portfolio.summary.bestPerformer': '最佳表现',
-'portfolio.summary.worstPerformer': '最差表现',
-'portfolio.summary.priceSync': '价格同步',
-'portfolio.summary.syncInterval': '刷新间隔',
-'portfolio.summary.justNow': '刚刚',
-'portfolio.summary.ago': '前',
-'portfolio.positions.title': '我的持仓',
-'portfolio.positions.add': '添加持仓',
-'portfolio.positions.addFirst': '添加第一笔持仓',
-'portfolio.positions.empty': '暂无持仓记录',
-'portfolio.positions.deleteConfirm': '确定删除这笔持仓吗?',
-'portfolio.positions.currentPrice': '现价',
-'portfolio.positions.entryPrice': '买入价',
-'portfolio.positions.quantity': '数量',
-'portfolio.positions.side': '方向',
-'portfolio.positions.long': '做多',
-'portfolio.positions.short': '做空',
-'portfolio.positions.marketValue': '市值',
-'portfolio.positions.pnl': '盈亏',
-'portfolio.positions.items': '个持仓',
-'portfolio.monitors.title': 'AI 监控',
-'portfolio.monitors.add': '添加监控',
-'portfolio.monitors.addFirst': '添加 AI 监控',
-'portfolio.monitors.empty': '暂无监控任务',
-'portfolio.monitors.deleteConfirm': '确定删除这个监控任务吗?',
-'portfolio.monitors.interval': '执行间隔',
-'portfolio.monitors.lastRun': '上次执行',
-'portfolio.monitors.nextRun': '下次执行',
-'portfolio.monitors.channels': '通知渠道',
-'portfolio.monitors.runNow': '立即执行',
-'portfolio.monitors.analysisResult': 'AI 分析结果',
-'portfolio.monitors.runningTitle': 'AI 分析已启动',
-'portfolio.monitors.runningDesc': '分析正在后台运行,完成后会通过通知推送结果。分析多个持仓可能需要几分钟时间。',
-'portfolio.monitors.timeoutTitle': '请求超时',
-'portfolio.monitors.timeoutDesc': '分析可能正在后台运行中,请稍后查看通知获取结果。如果长时间没有收到通知,请重试。',
-'portfolio.modal.addPosition': '添加持仓',
-'portfolio.modal.editPosition': '编辑持仓',
-'portfolio.modal.addMonitor': '添加监控',
-'portfolio.modal.editMonitor': '编辑监控',
-'portfolio.form.market': '市场',
-'portfolio.form.marketRequired': '请选择市场',
-'portfolio.form.selectMarket': '选择市场',
-'portfolio.form.symbol': '标的代码',
-'portfolio.form.symbolRequired': '请输入标的代码',
-'portfolio.form.searchSymbol': '搜索或输入标的代码',
-'portfolio.form.useAsSymbol': '使用',
-'portfolio.form.asSymbolCode': '作为标的代码',
-'portfolio.form.symbolHint': '可搜索标的库,或直接输入任意代码',
-'portfolio.form.side': '方向',
-'portfolio.form.quantity': '数量',
-'portfolio.form.quantityRequired': '请输入数量',
-'portfolio.form.enterQuantity': '输入持仓数量',
-'portfolio.form.entryPrice': '买入价',
-'portfolio.form.entryPriceRequired': '请输入买入价',
-'portfolio.form.enterEntryPrice': '输入买入价格',
-'portfolio.form.notes': '备注',
-'portfolio.form.enterNotes': '可选:添加备注',
-'portfolio.form.monitorName': '监控名称',
-'portfolio.form.monitorNameRequired': '请输入监控名称',
-'portfolio.form.enterMonitorName': '例如:每日组合分析',
-'portfolio.form.interval': '执行间隔',
-'portfolio.form.minutes': '分钟',
-'portfolio.form.hour': '小时',
-'portfolio.form.hours': '小时',
-'portfolio.form.notifyChannels': '通知渠道',
-'portfolio.form.browser': '浏览器通知',
-'portfolio.form.email': '邮件',
-'portfolio.form.telegramChatId': 'Telegram Chat ID',
-'portfolio.form.enterTelegramChatId': '输入 Telegram Chat ID',
-'portfolio.form.telegramRequired': '请输入 Telegram Chat ID',
-'portfolio.form.emailAddress': '邮箱地址',
-'portfolio.form.enterEmail': '输入邮箱地址',
-'portfolio.form.emailRequired': '请输入邮箱地址',
-'portfolio.form.emailInvalid': '请输入有效的邮箱地址',
-'portfolio.form.customPrompt': '自定义提示',
-'portfolio.form.customPromptPlaceholder': '可选:添加特别关注点,例如"重点关注科技股风险"',
-'portfolio.form.monitorScope': '监控范围',
-'portfolio.form.allPositions': '全部持仓',
-'portfolio.form.selectedPositions': '指定持仓',
-'portfolio.form.selectPositions': '选择持仓',
-'portfolio.form.selectAll': '全选',
-'portfolio.form.deselectAll': '全不选',
-'portfolio.form.selectedCount': '已选 {count}/{total}',
-'portfolio.form.pleaseSelectPositions': '请至少选择一个持仓进行监控',
-'portfolio.form.notificationFromProfile': '通知将发送到您在个人中心配置的地址',
-'portfolio.form.goToProfile': '前往配置',
-'portfolio.message.loadFailed': '加载数据失败',
-'portfolio.message.saveSuccess': '保存成功',
-'portfolio.message.saveFailed': '保存失败',
-'portfolio.message.deleteSuccess': '删除成功',
-'portfolio.message.deleteFailed': '删除失败',
-'portfolio.message.updateFailed': '更新失败',
-'portfolio.message.monitorEnabled': '监控已启用',
-'portfolio.message.monitorDisabled': '监控已暂停',
-'portfolio.message.monitorRunSuccess': '分析完成',
-'portfolio.message.monitorRunFailed': '分析失败',
-'portfolio.message.monitorRunning': 'AI 分析已启动,请等待通知',
-// Portfolio - 分组
-'portfolio.groups.all': '全部持仓',
-'portfolio.groups.ungrouped': '未分组',
-'portfolio.form.group': '分组',
-'portfolio.form.enterGroup': '输入或选择分组',
-// Portfolio - 预警
-'portfolio.alerts.title': '价格/盈亏预警',
-'portfolio.alerts.addAlert': '添加预警',
-'portfolio.alerts.editAlert': '编辑预警',
-'portfolio.alerts.alertType': '预警类型',
-'portfolio.alerts.priceAbove': '价格高于',
-'portfolio.alerts.priceBelow': '价格低于',
-'portfolio.alerts.pnlAbove': '盈利高于 (%)',
-'portfolio.alerts.pnlBelow': '亏损低于 (%)',
-'portfolio.alerts.threshold': '阈值',
-'portfolio.alerts.thresholdRequired': '请输入阈值',
-'portfolio.alerts.enterPrice': '输入价格',
-'portfolio.alerts.enterPercent': '输入百分比',
-'portfolio.alerts.currentPrice': '当前价格',
-'portfolio.alerts.currentPriceHint': '当前价格',
-'portfolio.alerts.repeatInterval': '重复提醒',
-'portfolio.alerts.noRepeat': '不重复 (触发一次)',
-'portfolio.alerts.every5min': '每 5 分钟',
-'portfolio.alerts.every15min': '每 15 分钟',
-'portfolio.alerts.every30min': '每 30 分钟',
-'portfolio.alerts.every1hour': '每 1 小时',
-'portfolio.alerts.every4hours': '每 4 小时',
-'portfolio.alerts.onceDaily': '每天一次',
-'portfolio.alerts.enabled': '启用预警',
-'portfolio.alerts.enabledDesc': '开启后将自动监测并触发通知',
-'portfolio.alerts.delete': '删除',
-'portfolio.alerts.deleteConfirm': '确定要删除此预警吗?',
-'portfolio.modal.addAlert': '添加预警',
-'portfolio.modal.editAlert': '编辑预警',
+ // Portfolio - 资产监测
+ 'portfolio.summary.totalValue': '总市值',
+ 'portfolio.summary.totalCost': '总成本',
+ 'portfolio.summary.totalPnl': '总盈亏',
+ 'portfolio.summary.positionCount': '持仓数量',
+ 'portfolio.summary.profitLossRatio': '盈利/亏损',
+ 'portfolio.summary.today': '今日',
+ 'portfolio.summary.todayPnl': '今日盈亏',
+ 'portfolio.summary.bestPerformer': '最佳表现',
+ 'portfolio.summary.worstPerformer': '最差表现',
+ 'portfolio.summary.priceSync': '价格同步',
+ 'portfolio.summary.syncInterval': '刷新间隔',
+ 'portfolio.summary.justNow': '刚刚',
+ 'portfolio.summary.ago': '前',
+ 'portfolio.positions.title': '我的持仓',
+ 'portfolio.positions.add': '添加持仓',
+ 'portfolio.positions.addFirst': '添加第一笔持仓',
+ 'portfolio.positions.empty': '暂无持仓记录',
+ 'portfolio.positions.deleteConfirm': '确定删除这笔持仓吗?',
+ 'portfolio.positions.currentPrice': '现价',
+ 'portfolio.positions.entryPrice': '买入价',
+ 'portfolio.positions.quantity': '数量',
+ 'portfolio.positions.side': '方向',
+ 'portfolio.positions.long': '做多',
+ 'portfolio.positions.short': '做空',
+ 'portfolio.positions.marketValue': '市值',
+ 'portfolio.positions.pnl': '盈亏',
+ 'portfolio.positions.items': '个持仓',
+ 'portfolio.monitors.title': 'AI 监控',
+ 'portfolio.monitors.add': '添加监控',
+ 'portfolio.monitors.addFirst': '添加 AI 监控',
+ 'portfolio.monitors.empty': '暂无监控任务',
+ 'portfolio.monitors.deleteConfirm': '确定删除这个监控任务吗?',
+ 'portfolio.monitors.interval': '执行间隔',
+ 'portfolio.monitors.lastRun': '上次执行',
+ 'portfolio.monitors.nextRun': '下次执行',
+ 'portfolio.monitors.channels': '通知渠道',
+ 'portfolio.monitors.runNow': '立即执行',
+ 'portfolio.monitors.analysisResult': 'AI 分析结果',
+ 'portfolio.monitors.runningTitle': 'AI 分析已启动',
+ 'portfolio.monitors.runningDesc': '分析正在后台运行,完成后会通过通知推送结果。分析多个持仓可能需要几分钟时间。',
+ 'portfolio.monitors.timeoutTitle': '请求超时',
+ 'portfolio.monitors.timeoutDesc': '分析可能正在后台运行中,请稍后查看通知获取结果。如果长时间没有收到通知,请重试。',
+ 'portfolio.modal.addPosition': '添加持仓',
+ 'portfolio.modal.editPosition': '编辑持仓',
+ 'portfolio.modal.addMonitor': '添加监控',
+ 'portfolio.modal.editMonitor': '编辑监控',
+ 'portfolio.form.market': '市场',
+ 'portfolio.form.marketRequired': '请选择市场',
+ 'portfolio.form.selectMarket': '选择市场',
+ 'portfolio.form.symbol': '标的代码',
+ 'portfolio.form.symbolRequired': '请输入标的代码',
+ 'portfolio.form.searchSymbol': '搜索或输入标的代码',
+ 'portfolio.form.useAsSymbol': '使用',
+ 'portfolio.form.asSymbolCode': '作为标的代码',
+ 'portfolio.form.symbolHint': '可搜索标的库,或直接输入任意代码',
+ 'portfolio.form.side': '方向',
+ 'portfolio.form.quantity': '数量',
+ 'portfolio.form.quantityRequired': '请输入数量',
+ 'portfolio.form.enterQuantity': '输入持仓数量',
+ 'portfolio.form.entryPrice': '买入价',
+ 'portfolio.form.entryPriceRequired': '请输入买入价',
+ 'portfolio.form.enterEntryPrice': '输入买入价格',
+ 'portfolio.form.notes': '备注',
+ 'portfolio.form.enterNotes': '可选:添加备注',
+ 'portfolio.form.monitorName': '监控名称',
+ 'portfolio.form.monitorNameRequired': '请输入监控名称',
+ 'portfolio.form.enterMonitorName': '例如:每日组合分析',
+ 'portfolio.form.interval': '执行间隔',
+ 'portfolio.form.minutes': '分钟',
+ 'portfolio.form.hour': '小时',
+ 'portfolio.form.hours': '小时',
+ 'portfolio.form.notifyChannels': '通知渠道',
+ 'portfolio.form.browser': '浏览器通知',
+ 'portfolio.form.email': '邮件',
+ 'portfolio.form.telegramChatId': 'Telegram Chat ID',
+ 'portfolio.form.enterTelegramChatId': '输入 Telegram Chat ID',
+ 'portfolio.form.telegramRequired': '请输入 Telegram Chat ID',
+ 'portfolio.form.emailAddress': '邮箱地址',
+ 'portfolio.form.enterEmail': '输入邮箱地址',
+ 'portfolio.form.emailRequired': '请输入邮箱地址',
+ 'portfolio.form.emailInvalid': '请输入有效的邮箱地址',
+ 'portfolio.form.customPrompt': '自定义提示',
+ 'portfolio.form.customPromptPlaceholder': '可选:添加特别关注点,例如"重点关注科技股风险"',
+ 'portfolio.form.monitorScope': '监控范围',
+ 'portfolio.form.allPositions': '全部持仓',
+ 'portfolio.form.selectedPositions': '指定持仓',
+ 'portfolio.form.selectPositions': '选择持仓',
+ 'portfolio.form.selectAll': '全选',
+ 'portfolio.form.deselectAll': '全不选',
+ 'portfolio.form.selectedCount': '已选 {count}/{total}',
+ 'portfolio.form.pleaseSelectPositions': '请至少选择一个持仓进行监控',
+ 'portfolio.form.notificationFromProfile': '通知将发送到您在个人中心配置的地址',
+ 'portfolio.form.goToProfile': '前往配置',
+ 'portfolio.message.loadFailed': '加载数据失败',
+ 'portfolio.message.saveSuccess': '保存成功',
+ 'portfolio.message.saveFailed': '保存失败',
+ 'portfolio.message.deleteSuccess': '删除成功',
+ 'portfolio.message.deleteFailed': '删除失败',
+ 'portfolio.message.updateFailed': '更新失败',
+ 'portfolio.message.monitorEnabled': '监控已启用',
+ 'portfolio.message.monitorDisabled': '监控已暂停',
+ 'portfolio.message.monitorRunSuccess': '分析完成',
+ 'portfolio.message.monitorRunFailed': '分析失败',
+ 'portfolio.message.monitorRunning': 'AI 分析已启动,请等待通知',
+ // Portfolio - 分组
+ 'portfolio.groups.all': '全部持仓',
+ 'portfolio.groups.ungrouped': '未分组',
+ 'portfolio.form.group': '分组',
+ 'portfolio.form.enterGroup': '输入或选择分组',
+ // Portfolio - 预警
+ 'portfolio.alerts.title': '价格/盈亏预警',
+ 'portfolio.alerts.addAlert': '添加预警',
+ 'portfolio.alerts.editAlert': '编辑预警',
+ 'portfolio.alerts.alertType': '预警类型',
+ 'portfolio.alerts.priceAbove': '价格高于',
+ 'portfolio.alerts.priceBelow': '价格低于',
+ 'portfolio.alerts.pnlAbove': '盈利高于 (%)',
+ 'portfolio.alerts.pnlBelow': '亏损低于 (%)',
+ 'portfolio.alerts.threshold': '阈值',
+ 'portfolio.alerts.thresholdRequired': '请输入阈值',
+ 'portfolio.alerts.enterPrice': '输入价格',
+ 'portfolio.alerts.enterPercent': '输入百分比',
+ 'portfolio.alerts.currentPrice': '当前价格',
+ 'portfolio.alerts.currentPriceHint': '当前价格',
+ 'portfolio.alerts.repeatInterval': '重复提醒',
+ 'portfolio.alerts.noRepeat': '不重复 (触发一次)',
+ 'portfolio.alerts.every5min': '每 5 分钟',
+ 'portfolio.alerts.every15min': '每 15 分钟',
+ 'portfolio.alerts.every30min': '每 30 分钟',
+ 'portfolio.alerts.every1hour': '每 1 小时',
+ 'portfolio.alerts.every4hours': '每 4 小时',
+ 'portfolio.alerts.onceDaily': '每天一次',
+ 'portfolio.alerts.enabled': '启用预警',
+ 'portfolio.alerts.enabledDesc': '开启后将自动监测并触发通知',
+ 'portfolio.alerts.delete': '删除',
+ 'portfolio.alerts.deleteConfirm': '确定要删除此预警吗?',
+ 'portfolio.modal.addAlert': '添加预警',
+ 'portfolio.modal.editAlert': '编辑预警',
-// User Management
-'menu.userManage': '用户管理',
-'menu.myProfile': '个人中心',
-'common.actions': '操作',
-'common.refresh': '刷新',
+ // User Management
+ 'menu.userManage': '用户管理',
+ 'menu.myProfile': '个人中心',
+ 'common.actions': '操作',
+ 'common.refresh': '刷新',
-'userManage.title': '用户管理',
-'userManage.searchPlaceholder': '搜索用户名/邮箱/昵称',
-'userManage.description': '管理系统用户、角色和权限',
-'userManage.createUser': '创建用户',
-'userManage.editUser': '编辑用户',
-'userManage.username': '用户名',
-'userManage.password': '密码',
-'userManage.nickname': '昵称',
-'userManage.email': '邮箱',
-'userManage.role': '角色',
-'userManage.status': '状态',
-'userManage.lastLogin': '最后登录',
-'userManage.active': '启用',
-'userManage.disabled': '禁用',
-'userManage.neverLogin': '从未登录',
-'userManage.usernameRequired': '请输入用户名',
-'userManage.usernamePlaceholder': '输入用户名',
-'userManage.passwordRequired': '请输入密码',
-'userManage.passwordPlaceholder': '输入密码(至少6位)',
-'userManage.passwordMin': '密码至少6个字符',
-'userManage.nicknamePlaceholder': '输入昵称',
-'userManage.emailPlaceholder': '输入邮箱',
-'userManage.emailInvalid': '邮箱格式不正确',
-'userManage.rolePlaceholder': '选择角色',
-'userManage.statusPlaceholder': '选择状态',
-'userManage.resetPassword': '重置密码',
-'userManage.resetPasswordWarning': '此操作将重置用户密码',
-'userManage.newPassword': '新密码',
-'userManage.newPasswordPlaceholder': '输入新密码',
-'userManage.confirmDelete': '确定要删除此用户吗?',
-'userManage.roleAdmin': '管理员',
-'userManage.roleManager': '经理',
-'userManage.roleUser': '普通用户',
-'userManage.roleViewer': '访客',
+ 'userManage.title': '用户管理',
+ 'userManage.searchPlaceholder': '搜索用户名/邮箱/昵称',
+ 'userManage.description': '管理系统用户、角色和权限',
+ 'userManage.createUser': '创建用户',
+ 'userManage.editUser': '编辑用户',
+ 'userManage.username': '用户名',
+ 'userManage.password': '密码',
+ 'userManage.nickname': '昵称',
+ 'userManage.email': '邮箱',
+ 'userManage.role': '角色',
+ 'userManage.status': '状态',
+ 'userManage.lastLogin': '最后登录',
+ 'userManage.active': '启用',
+ 'userManage.disabled': '禁用',
+ 'userManage.neverLogin': '从未登录',
+ 'userManage.usernameRequired': '请输入用户名',
+ 'userManage.usernamePlaceholder': '输入用户名',
+ 'userManage.passwordRequired': '请输入密码',
+ 'userManage.passwordPlaceholder': '输入密码(至少6位)',
+ 'userManage.passwordMin': '密码至少6个字符',
+ 'userManage.nicknamePlaceholder': '输入昵称',
+ 'userManage.emailPlaceholder': '输入邮箱',
+ 'userManage.emailInvalid': '邮箱格式不正确',
+ 'userManage.rolePlaceholder': '选择角色',
+ 'userManage.statusPlaceholder': '选择状态',
+ 'userManage.resetPassword': '重置密码',
+ 'userManage.resetPasswordWarning': '此操作将重置用户密码',
+ 'userManage.newPassword': '新密码',
+ 'userManage.newPasswordPlaceholder': '输入新密码',
+ 'userManage.confirmDelete': '确定要删除此用户吗?',
+ 'userManage.roleAdmin': '管理员',
+ 'userManage.roleManager': '经理',
+ 'userManage.roleUser': '普通用户',
+ 'userManage.roleViewer': '访客',
-// Profile
-'profile.title': '个人中心',
-'profile.description': '管理您的账户设置和偏好',
-'profile.basicInfo': '基本信息',
-'profile.changePassword': '修改密码',
-'profile.username': '用户名',
-'profile.nickname': '昵称',
-'profile.email': '邮箱',
-'profile.lastLogin': '最后登录',
-'profile.nicknamePlaceholder': '输入您的昵称',
-'profile.emailPlaceholder': '输入您的邮箱',
-'profile.emailInvalid': '邮箱格式不正确',
-'profile.emailCannotChange': '注册后邮箱不可修改',
-'profile.passwordHint': '密码至少需要6个字符',
-'profile.oldPassword': '当前密码',
-'profile.newPassword': '新密码',
-'profile.confirmPassword': '确认密码',
-'profile.oldPasswordRequired': '请输入当前密码',
-'profile.oldPasswordPlaceholder': '输入当前密码',
-'profile.newPasswordRequired': '请输入新密码',
-'profile.newPasswordPlaceholder': '输入新密码',
-'profile.confirmPasswordRequired': '请确认新密码',
-'profile.confirmPasswordPlaceholder': '再次输入新密码',
-'profile.passwordMin': '密码至少6个字符',
-'profile.passwordMismatch': '两次输入的密码不一致',
+ // Profile
+ 'profile.title': '个人中心',
+ 'profile.description': '管理您的账户设置和偏好',
+ 'profile.basicInfo': '基本信息',
+ 'profile.changePassword': '修改密码',
+ 'profile.username': '用户名',
+ 'profile.nickname': '昵称',
+ 'profile.email': '邮箱',
+ 'profile.lastLogin': '最后登录',
+ 'profile.nicknamePlaceholder': '输入您的昵称',
+ 'profile.emailPlaceholder': '输入您的邮箱',
+ 'profile.emailInvalid': '邮箱格式不正确',
+ 'profile.emailCannotChange': '注册后邮箱不可修改',
+ 'profile.passwordHint': '密码至少需要6个字符',
+ 'profile.oldPassword': '当前密码',
+ 'profile.newPassword': '新密码',
+ 'profile.confirmPassword': '确认密码',
+ 'profile.oldPasswordRequired': '请输入当前密码',
+ 'profile.oldPasswordPlaceholder': '输入当前密码',
+ 'profile.newPasswordRequired': '请输入新密码',
+ 'profile.newPasswordPlaceholder': '输入新密码',
+ 'profile.confirmPasswordRequired': '请确认新密码',
+ 'profile.confirmPasswordPlaceholder': '再次输入新密码',
+ 'profile.passwordMin': '密码至少6个字符',
+ 'profile.passwordMismatch': '两次输入的密码不一致',
-// Profile - Credits
-'profile.credits.title': '我的积分',
-'profile.credits.unit': '积分',
-'profile.credits.recharge': '开通/充值',
-'profile.credits.vipExpires': 'VIP有效期至',
-'profile.credits.vipExpired': 'VIP已过期',
-'profile.credits.noVip': '非VIP用户',
-'profile.credits.hint': '使用AI分析等功能会消耗积分,VIP用户免费',
+ // Profile - Credits
+ 'profile.credits.title': '我的积分',
+ 'profile.credits.unit': '积分',
+ 'profile.credits.recharge': '开通/充值',
+ 'profile.credits.vipExpires': 'VIP有效期至',
+ 'profile.credits.vipExpired': 'VIP已过期',
+ 'profile.credits.noVip': '非VIP用户',
+ 'profile.credits.hint': '使用AI分析等功能会消耗积分,VIP用户免费',
-// Profile - Credits Log (消费记录)
-'profile.creditsLog': '消费记录',
-'profile.creditsLog.time': '时间',
-'profile.creditsLog.action': '类型',
-'profile.creditsLog.amount': '变动',
-'profile.creditsLog.balance': '余额',
-'profile.creditsLog.remark': '备注',
-'profile.creditsLog.actionConsume': '消费',
-'profile.creditsLog.actionRecharge': '充值',
-'profile.creditsLog.actionAdjust': '调整',
-'profile.creditsLog.actionRefund': '退款',
-'profile.creditsLog.actionVipGrant': 'VIP授予',
-'profile.creditsLog.actionVipRevoke': 'VIP取消',
-'profile.creditsLog.actionRegisterBonus': '注册奖励',
-'profile.creditsLog.actionReferralBonus': '邀请奖励',
+ // Profile - Credits Log (消费记录)
+ 'profile.creditsLog': '消费记录',
+ 'profile.creditsLog.time': '时间',
+ 'profile.creditsLog.action': '类型',
+ 'profile.creditsLog.amount': '变动',
+ 'profile.creditsLog.balance': '余额',
+ 'profile.creditsLog.remark': '备注',
+ 'profile.creditsLog.actionConsume': '消费',
+ 'profile.creditsLog.actionRecharge': '充值',
+ 'profile.creditsLog.actionAdjust': '调整',
+ 'profile.creditsLog.actionRefund': '退款',
+ 'profile.creditsLog.actionVipGrant': 'VIP授予',
+ 'profile.creditsLog.actionVipRevoke': 'VIP取消',
+ 'profile.creditsLog.actionRegisterBonus': '注册奖励',
+ 'profile.creditsLog.actionReferralBonus': '邀请奖励',
-// Profile - Referral (邀请)
-'profile.referral.title': '邀请好友',
-'profile.referral.listTab': '邀请列表',
-'profile.referral.totalInvited': '已邀请',
-'profile.referral.bonusPerInvite': '每邀请获得',
-'profile.referral.yourLink': '您的邀请链接',
-'profile.referral.copyLink': '复制链接',
-'profile.referral.linkCopied': '邀请链接已复制',
-'profile.referral.newUserBonus': '新用户注册获得',
-'profile.referral.user': '用户',
-'profile.referral.registerTime': '注册时间',
-'profile.referral.noReferrals': '暂无邀请记录',
-'profile.referral.shareNow': '立即分享邀请',
+ // Profile - Referral (邀请)
+ 'profile.referral.title': '邀请好友',
+ 'profile.referral.listTab': '邀请列表',
+ 'profile.referral.totalInvited': '已邀请',
+ 'profile.referral.bonusPerInvite': '每邀请获得',
+ 'profile.referral.yourLink': '您的邀请链接',
+ 'profile.referral.copyLink': '复制链接',
+ 'profile.referral.linkCopied': '邀请链接已复制',
+ 'profile.referral.newUserBonus': '新用户注册获得',
+ 'profile.referral.user': '用户',
+ 'profile.referral.registerTime': '注册时间',
+ 'profile.referral.noReferrals': '暂无邀请记录',
+ 'profile.referral.shareNow': '立即分享邀请',
-// Profile - Notification Settings (通知设置)
-'profile.notifications.title': '通知设置',
-'profile.notifications.hint': '配置您的默认通知方式,在创建资产监控和预警时将自动使用这些设置',
-'profile.notifications.defaultChannels': '默认通知渠道',
-'profile.notifications.browser': '站内通知',
-'profile.notifications.email': '邮件',
-'profile.notifications.phone': '短信',
-'profile.notifications.telegramBotToken': 'Telegram Bot Token',
-'profile.notifications.telegramBotTokenPlaceholder': '请输入您的 Telegram Bot Token',
-'profile.notifications.telegramBotTokenHint': '通过 @BotFather 创建机器人获取 Token',
-'profile.notifications.telegramChatId': 'Telegram Chat ID',
-'profile.notifications.telegramPlaceholder': '请输入您的 Telegram Chat ID(如 123456789)',
-'profile.notifications.telegramHint': '发送 /start 给 @userinfobot 可获取您的 Chat ID',
-'profile.notifications.notifyEmail': '通知邮箱',
-'profile.notifications.emailPlaceholder': '接收通知的邮箱地址',
-'profile.notifications.emailHint': '默认使用账户邮箱,可设置其他邮箱接收通知',
-'profile.notifications.phonePlaceholder': '请输入手机号(如 +8613800138000)',
-'profile.notifications.phoneHint': '需要管理员配置 Twilio 服务后才能使用短信通知',
-'profile.notifications.discordWebhook': 'Discord Webhook',
-'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
-'profile.notifications.discordHint': '在 Discord 服务器设置中创建 Webhook',
-'profile.notifications.webhookUrl': 'Webhook URL',
-'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
-'profile.notifications.webhookHint': '自定义 Webhook 地址,将以 POST JSON 方式推送通知',
-'profile.notifications.webhookToken': 'Webhook Token(可选)',
-'profile.notifications.webhookTokenPlaceholder': '用于验证请求的 Bearer Token',
-'profile.notifications.webhookTokenHint': '将作为 Authorization: Bearer Token 发送到 Webhook',
-'profile.notifications.testBtn': '发送测试通知',
-'profile.notifications.saveSuccess': '通知设置保存成功',
-'profile.notifications.selectChannel': '请至少选择一个通知渠道',
-'profile.notifications.fillTelegramToken': '请填写 Telegram Bot Token',
-'profile.notifications.fillTelegram': '请填写 Telegram Chat ID',
-'profile.notifications.fillEmail': '请填写通知邮箱',
-'profile.notifications.testSent': '测试通知已发送,请检查您的通知渠道',
+ // Profile - Notification Settings (通知设置)
+ 'profile.notifications.title': '通知设置',
+ 'profile.notifications.hint': '配置您的默认通知方式,在创建资产监控和预警时将自动使用这些设置',
+ 'profile.notifications.defaultChannels': '默认通知渠道',
+ 'profile.notifications.browser': '站内通知',
+ 'profile.notifications.email': '邮件',
+ 'profile.notifications.phone': '短信',
+ 'profile.notifications.telegramBotToken': 'Telegram Bot Token',
+ 'profile.notifications.telegramBotTokenPlaceholder': '请输入您的 Telegram Bot Token',
+ 'profile.notifications.telegramBotTokenHint': '通过 @BotFather 创建机器人获取 Token',
+ 'profile.notifications.telegramChatId': 'Telegram Chat ID',
+ 'profile.notifications.telegramPlaceholder': '请输入您的 Telegram Chat ID(如 123456789)',
+ 'profile.notifications.telegramHint': '发送 /start 给 @userinfobot 可获取您的 Chat ID',
+ 'profile.notifications.notifyEmail': '通知邮箱',
+ 'profile.notifications.emailPlaceholder': '接收通知的邮箱地址',
+ 'profile.notifications.emailHint': '默认使用账户邮箱,可设置其他邮箱接收通知',
+ 'profile.notifications.phonePlaceholder': '请输入手机号(如 +8613800138000)',
+ 'profile.notifications.phoneHint': '需要管理员配置 Twilio 服务后才能使用短信通知',
+ 'profile.notifications.discordWebhook': 'Discord Webhook',
+ 'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
+ 'profile.notifications.discordHint': '在 Discord 服务器设置中创建 Webhook',
+ 'profile.notifications.webhookUrl': 'Webhook URL',
+ 'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
+ 'profile.notifications.webhookHint': '自定义 Webhook 地址,将以 POST JSON 方式推送通知',
+ 'profile.notifications.webhookToken': 'Webhook Token(可选)',
+ 'profile.notifications.webhookTokenPlaceholder': '用于验证请求的 Bearer Token',
+ 'profile.notifications.webhookTokenHint': '将作为 Authorization: Bearer Token 发送到 Webhook',
+ 'profile.notifications.testBtn': '发送测试通知',
+ 'profile.notifications.saveSuccess': '通知设置保存成功',
+ 'profile.notifications.selectChannel': '请至少选择一个通知渠道',
+ 'profile.notifications.fillTelegramToken': '请填写 Telegram Bot Token',
+ 'profile.notifications.fillTelegram': '请填写 Telegram Chat ID',
+ 'profile.notifications.fillEmail': '请填写通知邮箱',
+ 'profile.notifications.testSent': '测试通知已发送,请检查您的通知渠道',
-// User Manage - Credits & VIP
-'userManage.credits': '积分',
-'userManage.adjustCredits': '调整积分',
-'userManage.setVip': '设置VIP',
-'userManage.currentCredits': '当前积分',
-'userManage.newCredits': '新积分',
-'userManage.enterCredits': '输入新的积分数量',
-'userManage.creditsNonNegative': '积分不能为负数',
-'userManage.currentVip': '当前VIP状态',
-'userManage.vipActive': '有效',
-'userManage.vipExpired': '已过期',
-'userManage.vipDays': 'VIP天数',
-'userManage.vipExpiresAt': 'VIP过期时间',
-'userManage.cancelVip': '取消VIP',
-'userManage.days': '天',
-'userManage.customDate': '自定义日期',
-'userManage.selectDate': '请选择日期',
-'userManage.remark': '备注',
-'userManage.remarkPlaceholder': '可选备注',
+ // User Manage - Credits & VIP
+ 'userManage.credits': '积分',
+ 'userManage.adjustCredits': '调整积分',
+ 'userManage.setVip': '设置VIP',
+ 'userManage.currentCredits': '当前积分',
+ 'userManage.newCredits': '新积分',
+ 'userManage.enterCredits': '输入新的积分数量',
+ 'userManage.creditsNonNegative': '积分不能为负数',
+ 'userManage.currentVip': '当前VIP状态',
+ 'userManage.vipActive': '有效',
+ 'userManage.vipExpired': '已过期',
+ 'userManage.vipDays': 'VIP天数',
+ 'userManage.vipExpiresAt': 'VIP过期时间',
+ 'userManage.cancelVip': '取消VIP',
+ 'userManage.days': '天',
+ 'userManage.customDate': '自定义日期',
+ 'userManage.selectDate': '请选择日期',
+ 'userManage.remark': '备注',
+ 'userManage.remarkPlaceholder': '可选备注',
-// Settings - Billing
-'settings.group.billing': '计费配置',
-'settings.field.BILLING_ENABLED': '启用计费',
-'settings.field.BILLING_VIP_BYPASS': 'VIP免费',
-'settings.field.BILLING_COST_AI_ANALYSIS': 'AI分析消耗',
-'settings.field.BILLING_COST_STRATEGY_RUN': '策略运行消耗',
-'settings.field.BILLING_COST_BACKTEST': '回测消耗',
-'settings.field.BILLING_COST_PORTFOLIO_MONITOR': 'Portfolio监控消耗',
-'settings.field.CREDITS_REGISTER_BONUS': '注册奖励',
-'settings.field.CREDITS_REFERRAL_BONUS': '邀请奖励',
-'settings.field.RECHARGE_TELEGRAM_URL': '充值Telegram链接',
-'settings.desc.BILLING_ENABLED': '启用计费系统。启用后,用户使用某些功能需要消耗积分',
-'settings.desc.BILLING_VIP_BYPASS': 'VIP用户在有效期内可免费使用所有付费功能',
-'settings.desc.BILLING_COST_AI_ANALYSIS': '每次AI分析消耗的积分数',
-'settings.desc.BILLING_COST_STRATEGY_RUN': '启动策略时消耗的积分数',
-'settings.desc.BILLING_COST_BACKTEST': '每次回测消耗的积分数',
-'settings.desc.BILLING_COST_PORTFOLIO_MONITOR': '每次Portfolio AI监控消耗的积分数',
-'settings.desc.CREDITS_REGISTER_BONUS': '新用户注册时获得的积分奖励',
-'settings.desc.CREDITS_REFERRAL_BONUS': '用户通过邀请链接成功邀请新用户时,邀请人获得的积分奖励',
-'settings.desc.VERIFICATION_CODE_MAX_ATTEMPTS': '验证码验证失败的最大尝试次数,超过后将锁定',
-'settings.desc.VERIFICATION_CODE_LOCK_MINUTES': '验证码验证失败次数超过限制后的锁定时长(分钟)',
-'settings.desc.RECHARGE_TELEGRAM_URL': '用户点击充值时跳转的Telegram客服链接',
+ // Settings - Billing
+ 'settings.group.billing': '计费配置',
+ 'settings.field.BILLING_ENABLED': '启用计费',
+ 'settings.field.BILLING_VIP_BYPASS': 'VIP免费',
+ 'settings.field.BILLING_COST_AI_ANALYSIS': 'AI分析消耗',
+ 'settings.field.BILLING_COST_STRATEGY_RUN': '策略运行消耗',
+ 'settings.field.BILLING_COST_BACKTEST': '回测消耗',
+ 'settings.field.BILLING_COST_PORTFOLIO_MONITOR': 'Portfolio监控消耗',
+ 'settings.field.CREDITS_REGISTER_BONUS': '注册奖励',
+ 'settings.field.CREDITS_REFERRAL_BONUS': '邀请奖励',
+ 'settings.field.RECHARGE_TELEGRAM_URL': '充值Telegram链接',
+ 'settings.desc.BILLING_ENABLED': '启用计费系统。启用后,用户使用某些功能需要消耗积分',
+ 'settings.desc.BILLING_VIP_BYPASS': 'VIP用户在有效期内可免费使用所有付费功能',
+ 'settings.desc.BILLING_COST_AI_ANALYSIS': '每次AI分析消耗的积分数',
+ 'settings.desc.BILLING_COST_STRATEGY_RUN': '启动策略时消耗的积分数',
+ 'settings.desc.BILLING_COST_BACKTEST': '每次回测消耗的积分数',
+ 'settings.desc.BILLING_COST_PORTFOLIO_MONITOR': '每次Portfolio AI监控消耗的积分数',
+ 'settings.desc.CREDITS_REGISTER_BONUS': '新用户注册时获得的积分奖励',
+ 'settings.desc.CREDITS_REFERRAL_BONUS': '用户通过邀请链接成功邀请新用户时,邀请人获得的积分奖励',
+ 'settings.desc.VERIFICATION_CODE_MAX_ATTEMPTS': '验证码验证失败的最大尝试次数,超过后将锁定',
+ 'settings.desc.VERIFICATION_CODE_LOCK_MINUTES': '验证码验证失败次数超过限制后的锁定时长(分钟)',
+ 'settings.desc.RECHARGE_TELEGRAM_URL': '用户点击充值时跳转的Telegram客服链接',
-// Global Market
-'globalMarket.title': '全球金融面板',
-'globalMarket.lastUpdate': '最后更新',
-'globalMarket.refresh': '刷新数据',
-'globalMarket.name': '名称',
-'globalMarket.price': '价格',
-'globalMarket.change': '涨跌',
-'globalMarket.trend': '走势',
-'globalMarket.pair': '货币对',
-'globalMarket.unit': '单位',
-'globalMarket.refreshSuccess': '数据刷新成功',
-'globalMarket.refreshError': '数据刷新失败',
-'globalMarket.fetchError': '获取数据失败',
-'globalMarket.loading': '加载中...',
-'globalMarket.fearGreedIndex': '恐惧贪婪指数',
-'globalMarket.fearGreedTip': '恐惧贪婪指数衡量市场情绪,0表示极度恐惧,100表示极度贪婪',
-'globalMarket.volatilityIndex': '波动率指数',
-'globalMarket.vixTitle': 'VIX 波动率指数',
-'globalMarket.vixTip': 'VIX指数衡量市场预期波动率,数值越高表示市场越恐慌',
-'globalMarket.extremeFear': '极度恐惧',
-'globalMarket.fear': '恐惧',
-'globalMarket.neutral': '中性',
-'globalMarket.greed': '贪婪',
-'globalMarket.extremeGreed': '极度贪婪',
-'globalMarket.marketOverview': '全球市场概览',
-'globalMarket.indices': '主要指数',
-'globalMarket.forex': '外汇市场',
-'globalMarket.crypto': '加密货币',
-'globalMarket.commodities': '大宗商品',
-'globalMarket.heatmap': '市场热力图',
-'globalMarket.cryptoHeatmap': '加密货币热力图',
-'globalMarket.sectorHeatmap': '板块热力图',
-'globalMarket.forexHeatmap': '外汇热力图',
-'globalMarket.opportunities': '交易机会',
-'globalMarket.noOpportunities': '暂无明显交易机会',
-'globalMarket.financialNews': '财经资讯',
-'globalMarket.noNews': '暂无新闻',
-'globalMarket.economicCalendar': '财经日历',
-'globalMarket.noEvents': '暂无事件',
-'globalMarket.actual': '实际',
-'globalMarket.forecast': '预期',
-'globalMarket.previous': '前值',
-'globalMarket.signal.bullish': '看涨趋势',
-'globalMarket.signal.bearish': '看跌趋势',
-'globalMarket.signal.overbought': '超买警告',
-'globalMarket.signal.oversold': '超卖机会',
-'globalMarket.worldMap': '全球市场地图',
-'globalMarket.rising': '上涨',
-'globalMarket.falling': '下跌',
-'globalMarket.bullish': '利多',
-'globalMarket.bearish': '利空',
-'globalMarket.expectedImpact': '预期影响',
-'globalMarket.aboveForecast': '高于预期',
-'globalMarket.belowForecast': '低于预期',
-'globalMarket.upcomingEvents': '即将公布',
-'globalMarket.releasedEvents': '已公布数据'
+ // Global Market
+ 'globalMarket.title': '全球金融面板',
+ 'globalMarket.lastUpdate': '最后更新',
+ 'globalMarket.refresh': '刷新数据',
+ 'globalMarket.name': '名称',
+ 'globalMarket.price': '价格',
+ 'globalMarket.change': '涨跌',
+ 'globalMarket.trend': '走势',
+ 'globalMarket.pair': '货币对',
+ 'globalMarket.unit': '单位',
+ 'globalMarket.refreshSuccess': '数据刷新成功',
+ 'globalMarket.refreshError': '数据刷新失败',
+ 'globalMarket.fetchError': '获取数据失败',
+ 'globalMarket.loading': '加载中...',
+ 'globalMarket.fearGreedIndex': '恐惧贪婪指数',
+ 'globalMarket.fearGreedTip': '恐惧贪婪指数衡量市场情绪,0表示极度恐惧,100表示极度贪婪',
+ 'globalMarket.volatilityIndex': '波动率指数',
+ 'globalMarket.vixTitle': 'VIX 波动率指数',
+ 'globalMarket.vixTip': 'VIX指数衡量市场预期波动率,数值越高表示市场越恐慌',
+ 'globalMarket.extremeFear': '极度恐惧',
+ 'globalMarket.fear': '恐惧',
+ 'globalMarket.neutral': '中性',
+ 'globalMarket.greed': '贪婪',
+ 'globalMarket.extremeGreed': '极度贪婪',
+ 'globalMarket.marketOverview': '全球市场概览',
+ 'globalMarket.indices': '主要指数',
+ 'globalMarket.forex': '外汇市场',
+ 'globalMarket.crypto': '加密货币',
+ 'globalMarket.commodities': '大宗商品',
+ 'globalMarket.heatmap': '市场热力图',
+ 'globalMarket.cryptoHeatmap': '加密货币热力图',
+ 'globalMarket.sectorHeatmap': '板块热力图',
+ 'globalMarket.forexHeatmap': '外汇热力图',
+ 'globalMarket.opportunities': '交易机会',
+ 'globalMarket.noOpportunities': '暂无明显交易机会',
+ 'globalMarket.financialNews': '财经资讯',
+ 'globalMarket.noNews': '暂无新闻',
+ 'globalMarket.economicCalendar': '财经日历',
+ 'globalMarket.noEvents': '暂无事件',
+ 'globalMarket.actual': '实际',
+ 'globalMarket.forecast': '预期',
+ 'globalMarket.previous': '前值',
+ 'globalMarket.signal.bullish': '看涨趋势',
+ 'globalMarket.signal.bearish': '看跌趋势',
+ 'globalMarket.signal.overbought': '超买警告',
+ 'globalMarket.signal.oversold': '超卖机会',
+ 'globalMarket.worldMap': '全球市场地图',
+ 'globalMarket.rising': '上涨',
+ 'globalMarket.falling': '下跌',
+ 'globalMarket.bullish': '利多',
+ 'globalMarket.bearish': '利空',
+ 'globalMarket.expectedImpact': '预期影响',
+ 'globalMarket.aboveForecast': '高于预期',
+ 'globalMarket.belowForecast': '低于预期',
+ 'globalMarket.upcomingEvents': '即将公布',
+ 'globalMarket.releasedEvents': '已公布数据',
+
+ // Trading Assistant
+ 'trading-assistant.form.notificationFromProfile': '通知将发送到您在个人中心配置的地址。',
+ 'trading-assistant.form.notificationConfigMissing': '您选中的渠道还未配置参数({channels}),将无法接收通知。请前往个人中心进行配置。',
+ 'trading-assistant.form.goToProfile': '前往配置'
}
export default {
-...components,
-...locale
+ ...components,
+ ...locale
}
diff --git a/quantdinger_vue/src/views/trading-assistant/index.vue b/quantdinger_vue/src/views/trading-assistant/index.vue
index 5d1c28030..b08ecab2e 100644
--- a/quantdinger_vue/src/views/trading-assistant/index.vue
+++ b/quantdinger_vue/src/views/trading-assistant/index.vue
@@ -866,15 +866,30 @@
+
+
+ {{ $t('trading-assistant.form.notificationConfigMissing', { channels: unconfiguredChannels.join(', ') }) }}
+
+ {{ $t('trading-assistant.form.goToProfile') }}
+
+
+
+
+
+
- {{ $t('trading-assistant.form.notificationFromProfile') || '通知将发送到您在个人中心配置的地址' }}
+ {{ $t('trading-assistant.form.notificationFromProfile') }}
- {{ $t('trading-assistant.form.goToProfile') || '前往配置' }}
+ {{ $t('trading-assistant.form.goToProfile') }}
@@ -1413,6 +1428,30 @@ export default {
})
return { groups: groupList, ungrouped }
+ },
+ // Check if selected channels are configured in user profile
+ unconfiguredChannels () {
+ const missing = []
+ if (this.notifyChannelsUi.includes('telegram')) {
+ // Check if telegram token or chat id is missing
+ if (!this.userNotificationSettings.telegram_bot_token && !this.userNotificationSettings.telegram_chat_id) {
+ missing.push('Telegram')
+ }
+ }
+ if (this.notifyChannelsUi.includes('email')) {
+ if (!this.userNotificationSettings.email) {
+ missing.push('Email')
+ }
+ }
+ if (this.notifyChannelsUi.includes('discord')) {
+ if (!this.userNotificationSettings.discord_webhook) {
+ missing.push('Discord')
+ }
+ }
+ // Phone/SMS check if needed
+ // if (this.notifyChannelsUi.includes('phone') && !this.userNotificationSettings.phone) { ... }
+
+ return missing
}
},
data () {