From c274d5bda3a5087e6c5a9f258bd57fe712f0693e Mon Sep 17 00:00:00 2001 From: XSX-Milan Date: Wed, 28 Jan 2026 12:02:32 +0800 Subject: [PATCH 1/3] Fix: Binance position sync logic and and entry price support --- .../app/services/pending_order_worker.py | 61 ++++-- .../scripts/test_sync_positions_binance.py | 201 ++++++++++++++++++ 2 files changed, 248 insertions(+), 14 deletions(-) create mode 100644 backend_api_python/scripts/test_sync_positions_binance.py diff --git a/backend_api_python/app/services/pending_order_worker.py b/backend_api_python/app/services/pending_order_worker.py index 1f5d5b6d2..d584b35c8 100644 --- a/backend_api_python/app/services/pending_order_worker.py +++ b/backend_api_python/app/services/pending_order_worker.py @@ -169,20 +169,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 +207,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 +368,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 +392,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 +414,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 +448,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() 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..7fe2b7119 --- /dev/null +++ b/backend_api_python/scripts/test_sync_positions_binance.py @@ -0,0 +1,201 @@ + +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() + +if __name__ == "__main__": + test_real_sync_binance() From 886d632c025d3700b7d537ed9115177b183cf0af Mon Sep 17 00:00:00 2001 From: XSX-Milan Date: Wed, 28 Jan 2026 12:20:30 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Optimize:=20Binance=E5=B9=B3=E4=BB=93?= =?UTF-8?q?=E5=8F=8A=E5=87=8F=E4=BB=93=E4=BC=98=E5=8C=96=20(Pre-execution?= =?UTF-8?q?=20sync=20&=20amount=20correction)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/services/pending_order_worker.py | 70 +++++++++++++++++- .../scripts/test_sync_positions_binance.py | 74 +++++++++++++++++++ 2 files changed, 140 insertions(+), 4 deletions(-) diff --git a/backend_api_python/app/services/pending_order_worker.py b/backend_api_python/app/services/pending_order_worker.py index d584b35c8..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": @@ -909,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 index 7fe2b7119..4c71ba34a 100644 --- a/backend_api_python/scripts/test_sync_positions_binance.py +++ b/backend_api_python/scripts/test_sync_positions_binance.py @@ -197,5 +197,79 @@ def test_real_sync_binance(): 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() From b7c2e1e38eea920f3fcb82c37e49d42fd2e5ad5b Mon Sep 17 00:00:00 2001 From: XSX-Milan Date: Wed, 28 Jan 2026 12:45:25 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix(vue):=20=E4=BC=98=E5=8C=96=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E9=85=8D=E7=BD=AE=E6=A3=80=E6=B5=8B=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E6=AD=A3=E7=A1=AE=E5=8C=BA=E5=88=86=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E4=B8=8E=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- quantdinger_vue/src/locales/lang/en-US.js | 7 +- quantdinger_vue/src/locales/lang/zh-CN.js | 4861 +++++++++-------- .../src/views/trading-assistant/index.vue | 45 +- 3 files changed, 2481 insertions(+), 2432 deletions(-) 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 @@ + + + + @@ -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 () {