From bfae183e393dceb40fffb4b53f8113d7998dbeee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=87=E8=96=87=E5=AE=89?= Date: Sun, 8 Feb 2026 20:06:47 +0800 Subject: [PATCH] 1 --- .cursorrules | 6 +++- frontend/src/components/StatsDashboard.jsx | 38 ++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/.cursorrules b/.cursorrules index 9de17a7..387ad76 100644 --- a/.cursorrules +++ b/.cursorrules @@ -11,4 +11,8 @@ ## 3. 代码风格 - 使用 Python 异步编程 (asyncio)。 -- 所有的交易日志必须记录 Symbol、价格、原因和时间戳。 \ No newline at end of file +- 所有的交易日志必须记录 Symbol、价格、原因和时间戳。 + +## 4. 不要在本地运行交易系统,后台服务,数据库连接 +- 交易系统必须在服务器上运行,严禁在本地环境测试。 +- 所有配置(如 API 密钥、数据库连接等)必须在服务器上配置,本地环境不得包含任何敏感信息。 \ No newline at end of file diff --git a/frontend/src/components/StatsDashboard.jsx b/frontend/src/components/StatsDashboard.jsx index a1bdb5b..5cb4755 100644 --- a/frontend/src/components/StatsDashboard.jsx +++ b/frontend/src/components/StatsDashboard.jsx @@ -274,6 +274,26 @@ const StatsDashboard = () => { { limit: 0, market: 0, unknown: 0 } ) + const handleExportPositions = () => { + if (openTrades.length === 0) { + alert('暂无持仓数据可导出') + return + } + + const timestamp = new Date().toISOString().slice(0, 19).replace(/:/g, '-') + const filename = `持仓记录_${timestamp}.json` + const dataStr = JSON.stringify(openTrades, null, 2) + const dataBlob = new Blob([dataStr], { type: 'application/json' }) + const url = URL.createObjectURL(dataBlob) + const link = document.createElement('a') + link.href = url + link.download = filename + document.body.appendChild(link) + link.click() + document.body.removeChild(link) + URL.revokeObjectURL(url) + } + return (
@@ -441,6 +461,24 @@ const StatsDashboard = () => {

当前持仓

+