diff --git a/README.md b/README.md
index ad7e7046..d4d7564e 100644
--- a/README.md
+++ b/README.md
@@ -207,9 +207,117 @@ npm install
cd ..
```
-### 4. System Configuration
+### 4. Get AI API Keys
-Create `config.json` file (use `config.json.example` as template):
+Before configuring the system, you need to obtain AI API keys. Choose one of the following AI providers:
+
+#### Option 1: DeepSeek (Recommended for Beginners)
+
+**Why DeepSeek?**
+- 💰 Cheaper than GPT-4 (about 1/10 the cost)
+- 🚀 Fast response time
+- 🎯 Excellent trading decision quality
+- 🌍 Works globally without VPN
+
+**How to get DeepSeek API Key:**
+
+1. **Visit**: [https://platform.deepseek.com](https://platform.deepseek.com)
+2. **Register**: Sign up with email/phone number
+3. **Verify**: Complete email/phone verification
+4. **Top-up**: Add credits to your account
+ - Minimum: ~$5 USD
+ - Recommended: $20-50 USD for testing
+5. **Create API Key**:
+ - Go to API Keys section
+ - Click "Create New Key"
+ - Copy and save the key (starts with `sk-`)
+ - ⚠️ **Important**: Save it immediately - you can't see it again!
+
+**Pricing**: ~$0.14 per 1M tokens (very cheap!)
+
+#### Option 2: Qwen (Alibaba Cloud)
+
+**How to get Qwen API Key:**
+
+1. **Visit**: [https://dashscope.aliyuncs.com](https://dashscope.aliyuncs.com)
+2. **Register**: Sign up with Alibaba Cloud account
+3. **Enable Service**: Activate DashScope service
+4. **Create API Key**:
+ - Go to API Key Management
+ - Create new key
+ - Copy and save (starts with `sk-`)
+
+**Note**: May require Chinese phone number for registration
+
+---
+
+### 5. System Configuration
+
+**Two configuration modes available:**
+- **🌟 Beginner Mode**: Single trader + default coins (recommended!)
+- **⚔️ Expert Mode**: Multiple traders competition
+
+#### 🌟 Beginner Mode Configuration (Recommended)
+
+**Step 1**: Copy and rename the example config file
+
+```bash
+cp config.json.example config.json
+```
+
+**Step 2**: Edit `config.json` with your API keys
+
+```json
+{
+ "traders": [
+ {
+ "id": "my_trader",
+ "name": "My AI Trader",
+ "ai_model": "deepseek",
+ "binance_api_key": "YOUR_BINANCE_API_KEY",
+ "binance_secret_key": "YOUR_BINANCE_SECRET_KEY",
+ "use_qwen": false,
+ "deepseek_key": "sk-xxxxxxxxxxxxx",
+ "qwen_key": "",
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
+ }
+ ],
+ "use_default_coins": true,
+ "coin_pool_api_url": "",
+ "oi_top_api_url": "",
+ "api_server_port": 8080
+}
+```
+
+**Step 3**: Replace placeholders with your actual keys
+
+| Placeholder | Replace With | Where to Get |
+|------------|--------------|--------------|
+| `YOUR_BINANCE_API_KEY` | Your Binance API Key | Binance → Account → API Management |
+| `YOUR_BINANCE_SECRET_KEY` | Your Binance Secret Key | Same as above |
+| `sk-xxxxxxxxxxxxx` | Your DeepSeek API Key | [platform.deepseek.com](https://platform.deepseek.com) |
+
+**Step 4**: Adjust initial balance (optional)
+
+- `initial_balance`: Set to your actual Binance futures account balance
+- Used to calculate profit/loss percentage
+- Example: If you have 500 USDT, set `"initial_balance": 500.0`
+
+**✅ Configuration Checklist:**
+
+- [ ] Binance API key filled in (no quotes issues)
+- [ ] Binance Secret key filled in (no quotes issues)
+- [ ] DeepSeek API key filled in (starts with `sk-`)
+- [ ] `use_default_coins` set to `true` (for beginners)
+- [ ] `initial_balance` matches your account balance
+- [ ] File saved as `config.json` (not `.example`)
+
+---
+
+#### ⚔️ Expert Mode: Multi-Trader Competition
+
+For running multiple AI traders competing against each other:
```json
{
@@ -218,12 +326,13 @@ Create `config.json` file (use `config.json.example` as template):
"id": "qwen_trader",
"name": "Qwen AI Trader",
"ai_model": "qwen",
- "binance_api_key": "YOUR_BINANCE_API_KEY",
- "binance_secret_key": "YOUR_BINANCE_SECRET_KEY",
+ "binance_api_key": "YOUR_BINANCE_API_KEY_1",
+ "binance_secret_key": "YOUR_BINANCE_SECRET_KEY_1",
"use_qwen": true,
"qwen_key": "sk-xxxxx",
- "scan_interval_minutes": 3,
- "initial_balance": 1000.0
+ "deepseek_key": "",
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
},
{
"id": "deepseek_trader",
@@ -232,126 +341,350 @@ Create `config.json` file (use `config.json.example` as template):
"binance_api_key": "YOUR_BINANCE_API_KEY_2",
"binance_secret_key": "YOUR_BINANCE_SECRET_KEY_2",
"use_qwen": false,
+ "qwen_key": "",
"deepseek_key": "sk-xxxxx",
- "scan_interval_minutes": 3,
- "initial_balance": 1000.0
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
}
],
- "coin_pool_api_url": "http://x.x.x.x:xxx/api/ai500/list?auth=YOUR_AUTH",
- "oi_top_api_url": "http://x.x.x.x:xxx/api/oi/top?auth=YOUR_AUTH",
+ "use_default_coins": true,
+ "coin_pool_api_url": "",
+ "oi_top_api_url": "",
"api_server_port": 8080
}
```
-**Configuration Notes:**
-- `traders`: Configure 1-N traders (single AI or multi-AI competition)
-- `id`: Unique trader identifier (used for log directory)
-- `ai_model`: "qwen" or "deepseek"
-- `binance_api_key/secret_key`: Each trader uses independent Binance account
-- `initial_balance`: Initial balance (for calculating P/L%)
-- `scan_interval_minutes`: Decision cycle (recommended 3-5 minutes)
-- `use_default_coins`: **true** = Use default 8 mainstream coins | **false** = Use API coin pool (recommended for beginners: true)
-- `coin_pool_api_url`: AI500 coin pool API (optional, ignored when use_default_coins=true)
-- `oi_top_api_url`: OI Top open interest API (optional, if empty, OI Top data is skipped)
+**Requirements for Competition Mode:**
+- 2 separate Binance futures accounts (different API keys)
+- Both AI API keys (Qwen + DeepSeek)
+- More capital for testing (recommended: 500+ USDT per account)
-**Default Coin List** (when `use_default_coins: true`):
+---
+
+#### 📚 Configuration Field Explanations
+
+| Field | Description | Example Value | Required? |
+|-------|-------------|---------------|-----------|
+| `id` | Unique identifier for this trader | `"my_trader"` | ✅ Yes |
+| `name` | Display name | `"My AI Trader"` | ✅ Yes |
+| `ai_model` | AI provider to use | `"deepseek"` or `"qwen"` | ✅ Yes |
+| `binance_api_key` | Binance API key | `"abc123..."` | ✅ Yes |
+| `binance_secret_key` | Binance Secret key | `"xyz789..."` | ✅ Yes |
+| `use_qwen` | Whether to use Qwen | `true` or `false` | ✅ Yes |
+| `deepseek_key` | DeepSeek API key | `"sk-xxx"` | If using DeepSeek |
+| `qwen_key` | Qwen API key | `"sk-xxx"` | If using Qwen |
+| `initial_balance` | Starting balance for P/L calculation | `1000.0` | ✅ Yes |
+| `scan_interval_minutes` | How often to make decisions | `3` (3-5 recommended) | ✅ Yes |
+| `use_default_coins` | Use built-in coin list
**✨ Smart Default: `true`** (v2.0.2+)
Auto-enabled if no API URL provided | `true` or omit | ❌ No
(Optional, auto-defaults) |
+| `coin_pool_api_url` | Custom coin pool API
*Only needed when `use_default_coins: false`* | `""` (empty) | ❌ No |
+| `oi_top_api_url` | Open interest API
*Optional supplement data* | `""` (empty) | ❌ No |
+| `api_server_port` | Web dashboard port | `8080` | ✅ Yes |
+
+**Default Trading Coins** (when `use_default_coins: true`):
- BTC, ETH, SOL, BNB, XRP, DOGE, ADA, HYPE
-### 5. Run the System
+---
-**Start backend (AI trading system + API server):**
+#### ⚠️ Important: `use_default_coins` Field
+
+**Smart Default Behavior (v2.0.2+):**
+
+The system now automatically defaults to `use_default_coins: true` if:
+- You don't include this field in config.json, OR
+- You set it to `false` but don't provide `coin_pool_api_url`
+
+This makes it beginner-friendly! You can even omit this field entirely.
+
+**Configuration Examples:**
+
+✅ **Option 1: Explicitly set (Recommended for clarity)**
+```json
+"use_default_coins": true,
+"coin_pool_api_url": "",
+"oi_top_api_url": ""
+```
+
+✅ **Option 2: Omit the field (uses default coins automatically)**
+```json
+// Just don't include "use_default_coins" at all
+"coin_pool_api_url": "",
+"oi_top_api_url": ""
+```
+
+⚙️ **Advanced: Use external API**
+```json
+"use_default_coins": false,
+"coin_pool_api_url": "http://your-api.com/coins",
+"oi_top_api_url": "http://your-api.com/oi"
+```
+
+---
+
+### 6. Run the System
+
+#### 🚀 Starting the System (2 steps)
+
+The system has **2 parts** that run separately:
+1. **Backend** (AI trading brain + API)
+2. **Frontend** (Web dashboard for monitoring)
+
+---
+
+#### **Step 1: Start the Backend**
+
+Open a terminal and run:
```bash
+# Build the program (first time only, or after code changes)
go build -o nofx
+
+# Start the backend
./nofx
```
-**Start frontend (Web Dashboard):**
+**What you should see:**
-Open a new terminal:
+```
+🚀 启动自动交易系统...
+✓ Trader [my_trader] 已初始化
+✓ API服务器启动在端口 8080
+📊 开始交易监控...
+```
+
+**⚠️ If you see errors:**
+
+| Error Message | Solution |
+|--------------|----------|
+| `invalid API key` | Check your Binance API key in config.json |
+| `TA-Lib not found` | Run `brew install ta-lib` (macOS) |
+| `port 8080 already in use` | Change `api_server_port` in config.json |
+| `DeepSeek API error` | Verify your DeepSeek API key and balance |
+
+**✅ Backend is running correctly when you see:**
+- No error messages
+- "开始交易监控..." appears
+- System shows account balance
+- Keep this terminal window open!
+
+---
+
+#### **Step 2: Start the Frontend**
+
+Open a **NEW terminal window** (keep the first one running!), then:
```bash
cd web
npm run dev
```
-**Access the interface:**
+**What you should see:**
+
```
-Web Dashboard: http://localhost:3000
-API Server: http://localhost:8080
+VITE v5.x.x ready in xxx ms
+
+➜ Local: http://localhost:3000/
+➜ Network: use --host to expose
```
-### 6. Stop the System
+**✅ Frontend is running when you see:**
+- "Local: http://localhost:3000/" message
+- No error messages
+- Keep this terminal window open too!
-Press `Ctrl+C` in both terminals
+---
+
+#### **Step 3: Access the Dashboard**
+
+Open your web browser and visit:
+
+**🌐 http://localhost:3000**
+
+**What you'll see:**
+- 📊 Real-time account balance
+- 📈 Open positions (if any)
+- 🤖 AI decision logs
+- 📉 Equity curve chart
+
+**First-time tips:**
+- It may take 3-5 minutes for the first AI decision
+- Initial decisions might say "观望" (wait) - this is normal
+- AI needs to analyze market conditions first
+
+---
+
+### 7. Monitor the System
+
+**What to watch:**
+
+✅ **Healthy System Signs:**
+- Backend terminal shows decision cycles every 3-5 minutes
+- No continuous error messages
+- Account balance updates
+- Web dashboard refreshes automatically
+
+⚠️ **Warning Signs:**
+- Repeated API errors
+- No decisions for 10+ minutes
+- Balance decreasing rapidly
+
+**Checking System Status:**
+
+```bash
+# In a new terminal window
+curl http://localhost:8080/health
+```
+
+Should return: `{"status":"ok"}`
+
+---
+
+### 8. Stop the System
+
+**Graceful Shutdown (Recommended):**
+
+1. Go to the **backend terminal** (the first one)
+2. Press `Ctrl+C`
+3. Wait for "系统已停止" message
+4. Go to the **frontend terminal** (the second one)
+5. Press `Ctrl+C`
+
+**⚠️ Important:**
+- Always stop the backend first
+- Wait for confirmation before closing terminals
+- Don't force quit (don't close terminal directly)
---
## 📖 AI Decision Flow
-Each decision cycle (default 3 minutes), the system runs the following process:
+Each decision cycle (default 3 minutes), the system executes the following intelligent process:
```
-┌─────────────────────────────────────────────────────┐
-│ 1. Analyze Historical Performance (last 20 cycles) │
-├─────────────────────────────────────────────────────┤
-│ ✓ Calculate overall win rate, avg profit, P/L ratio│
-│ ✓ Statistics for each coin (win rate, avg P/L) │
-│ ✓ Identify best/worst coins │
-│ ✓ List last 5 trade details │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 2. Get Account Status │
-├─────────────────────────────────────────────────────┤
-│ • Account equity, available balance │
-│ • Number of positions, total P/L │
-│ • Margin usage rate │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 3. Analyze Existing Positions (if any) │
-├─────────────────────────────────────────────────────┤
-│ • Get market data for each position │
-│ • Calculate technical indicators (RSI, MACD, EMA) │
-│ • AI decides whether to close positions │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 4. Evaluate New Opportunities (candidate coin pool) │
-├─────────────────────────────────────────────────────┤
-│ • Get AI500 high-score coins (top 20) │
-│ • Get OI Top growing coins (top 20) │
-│ • Merge and deduplicate, filter low liquidity │
-│ • Batch fetch market data and technical indicators │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 5. AI Comprehensive Decision │
-├─────────────────────────────────────────────────────┤
-│ • Review historical feedback (win rate, best/worst)│
-│ • Chain of Thought analysis │
-│ • Output decision: close/open/hold/wait │
-│ • Includes leverage, position size, SL, TP │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 6. Execute Trades │
-├─────────────────────────────────────────────────────┤
-│ • Priority: close first, then open │
-│ • Auto-adapt precision (LOT_SIZE) │
-│ • Prevent position stacking (reject duplicate) │
-│ • Auto-cancel all orders after closing │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 7. Record Logs │
-├─────────────────────────────────────────────────────┤
-│ • Save complete decision to decision_logs/ │
-│ • Includes CoT, decision JSON, account snapshot │
-└─────────────────────────────────────────────────────┘
+┌──────────────────────────────────────────────────────────┐
+│ 1. 📊 Analyze Historical Performance (last 20 cycles) │
+├──────────────────────────────────────────────────────────┤
+│ ✓ Calculate overall win rate, avg profit, P/L ratio │
+│ ✓ Per-coin statistics (win rate, avg P/L in USDT) │
+│ ✓ Identify best/worst performing coins │
+│ ✓ List last 5 trade details with accurate PnL │
+│ ✓ Calculate Sharpe ratio for risk-adjusted performance │
+│ 📌 NEW (v2.0.2): Accurate USDT PnL with leverage │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 2. 💰 Get Account Status │
+├──────────────────────────────────────────────────────────┤
+│ • Total equity & available balance │
+│ • Number of open positions & unrealized P/L │
+│ • Margin usage rate (AI manages up to 90%) │
+│ • Daily P/L tracking & drawdown monitoring │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 3. 🔍 Analyze Existing Positions (if any) │
+├──────────────────────────────────────────────────────────┤
+│ • For each position, fetch latest market data │
+│ • Calculate real-time technical indicators: │
+│ - 3min K-line: RSI(7), MACD, EMA20 │
+│ - 4hour K-line: RSI(14), EMA20/50, ATR │
+│ • Track position holding duration (e.g., "2h 15min") │
+│ 📌 NEW (v2.0.2): Shows how long each position held │
+│ • Display: Entry price, current price, P/L%, duration │
+│ • AI evaluates: Should hold or close? │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 4. 🎯 Evaluate New Opportunities (candidate coins) │
+├──────────────────────────────────────────────────────────┤
+│ • Fetch coin pool (2 modes): │
+│ 🌟 Default Mode: BTC, ETH, SOL, BNB, XRP, etc. │
+│ ⚙️ Advanced Mode: AI500 (top 20) + OI Top (top 20) │
+│ • Merge & deduplicate candidate coins │
+│ • Filter: Remove low liquidity (<15M USD OI value) │
+│ • Batch fetch market data + technical indicators │
+│ • Calculate volatility, trend strength, volume surge │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 5. 🧠 AI Comprehensive Decision (DeepSeek/Qwen) │
+├──────────────────────────────────────────────────────────┤
+│ • Review historical feedback: │
+│ - Recent win rate & profit factor │
+│ - Best/worst coins performance │
+│ - Avoid repeating mistakes │
+│ • Analyze all raw sequence data: │
+│ - 3min price序列, 4hour K-line序列 │
+│ - Complete indicator sequences (not just latest) │
+│ 📌 NEW (v2.0.2): AI has full freedom to analyze │
+│ • Chain of Thought (CoT) reasoning process │
+│ • Output structured decisions: │
+│ - Action: close_long/close_short/open_long/open_short│
+│ - Coin symbol, quantity, leverage │
+│ - Stop-loss & take-profit levels (≥1:2 ratio) │
+│ • Decision: Wait/Hold/Close/Open │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 6. ⚡ Execute Trades │
+├──────────────────────────────────────────────────────────┤
+│ • Priority order: Close existing → Then open new │
+│ • Risk checks before execution: │
+│ - Position size limits (1.5x for altcoins, 10x BTC) │
+│ - No duplicate positions (same coin + direction) │
+│ - Margin usage within 90% limit │
+│ • Auto-fetch & apply Binance LOT_SIZE precision │
+│ • Execute orders via Binance Futures API │
+│ • After closing: Auto-cancel all pending orders │
+│ • Record actual execution price & order ID │
+│ 📌 Track position open time for duration calculation │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 7. 📝 Record Complete Logs & Update Performance │
+├──────────────────────────────────────────────────────────┤
+│ • Save decision log to decision_logs/{trader_id}/ │
+│ • Log includes: │
+│ - Complete Chain of Thought (CoT) │
+│ - Input prompt with all market data │
+│ - Structured decision JSON │
+│ - Account snapshot (balance, positions, margin) │
+│ - Execution results (success/failure, prices) │
+│ • Update performance database: │
+│ - Match open/close pairs by symbol_side key │
+│ 📌 NEW: Prevents long/short conflicts │
+│ - Calculate accurate USDT PnL: │
+│ PnL = Position Value × Price Δ% × Leverage │
+│ 📌 NEW: Considers quantity + leverage │
+│ - Store: quantity, leverage, open time, close time │
+│ - Update win rate, profit factor, Sharpe ratio │
+│ • Performance data feeds back into next cycle │
+└──────────────────────────────────────────────────────────┘
+ ↓
+ (Repeat every 3-5 min)
```
+### Key Improvements in v2.0.2
+
+**📌 Position Duration Tracking:**
+- System now tracks how long each position has been held
+- Displayed in user prompt: "持仓时长2小时15分钟"
+- Helps AI make better decisions on when to exit
+
+**📌 Accurate PnL Calculation:**
+- Previously: Only percentage (100U@5% = 1000U@5% = both showed "5.0")
+- Now: Real USDT profit = Position Value × Price Change × Leverage
+- Example: 1000 USDT × 5% × 20x = 1000 USDT actual profit
+
+**📌 Enhanced AI Freedom:**
+- AI can freely analyze all raw sequence data
+- No longer restricted to predefined indicator combinations
+- Can perform own trend analysis, support/resistance calculation
+
+**📌 Improved Position Tracking:**
+- Uses `symbol_side` key (e.g., "BTCUSDT_long")
+- Prevents conflicts when holding both long & short
+- Stores complete data: quantity, leverage, open/close times
+
---
## 🧠 AI Self-Learning Example
@@ -528,6 +861,50 @@ sudo apt-get install libta-lib0-dev
## 🔄 Changelog
+### v2.0.2 (2025-10-29)
+
+**Critical Bug Fixes - Trade History & Performance Analysis:**
+
+This version fixes **critical calculation errors** in the historical trade record and performance analysis system that significantly affected profitability statistics.
+
+**1. PnL Calculation - Major Error Fixed** (logger/decision_logger.go)
+- **Problem**: Previously calculated PnL as percentage only, completely ignoring position size and leverage
+ - Example: 100 USDT position earning 5% and 1000 USDT position earning 5% both showed `5.0` as profit
+ - This made performance analysis completely inaccurate
+- **Solution**: Now calculates actual USDT profit amount
+ ```
+ PnL (USDT) = Position Value × Price Change % × Leverage
+ Example: 1000 USDT × 5% × 20x = 1000 USDT actual profit
+ ```
+- **Impact**: Win rate, profit factor, and Sharpe ratio now based on accurate USDT amounts
+
+**2. Position Tracking - Missing Critical Data**
+- **Problem**: Open position records only stored price and time, missing quantity and leverage
+- **Solution**: Now stores complete trade data:
+ - `quantity`: Position size (in coins)
+ - `leverage`: Leverage multiplier (e.g., 20x)
+ - These are essential for accurate PnL calculations
+
+**3. Position Key Logic - Long/Short Conflict**
+- **Problem**: Used `symbol` as position key, causing data conflicts when holding both long and short
+ - Example: BTCUSDT long and BTCUSDT short would overwrite each other
+- **Solution**: Changed to `symbol_side` format (e.g., `BTCUSDT_long`, `BTCUSDT_short`)
+ - Now properly distinguishes between long and short positions
+
+**4. Sharpe Ratio Calculation - Code Optimization**
+- **Problem**: Used custom Newton's method for square root calculation
+- **Solution**: Replaced with standard library `math.Sqrt`
+ - More reliable, maintainable, and efficient
+
+**Why This Update Matters:**
+- ✅ Historical trade statistics now show **real USDT profit/loss** instead of meaningless percentages
+- ✅ Performance comparison between different leverage trades is now accurate
+- ✅ AI self-learning mechanism receives correct historical feedback
+- ✅ Profit factor and Sharpe ratio calculations are now meaningful
+- ✅ Multi-position tracking (long + short simultaneously) works correctly
+
+**Recommendation**: If you were running the system before this update, your historical statistics were inaccurate. After updating to v2.0.2, new trades will be calculated correctly.
+
### v2.0.1 (2025-10-29)
**Bug Fixes:**
@@ -595,7 +972,7 @@ Issues and Pull Requests are welcome!
---
-**Last Updated**: 2025-10-29
+**Last Updated**: 2025-10-29 (v2.0.2)
**⚡ Explore the possibilities of quantitative trading with the power of AI!**
diff --git a/README.ru.md b/README.ru.md
index f8f8e2b9..e25c2365 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -143,9 +143,593 @@ npm install
cd ..
```
-### 4. Конфигурация системы
+### 4. Получение AI API ключей
-Создайте файл `config.json` (используйте `config.json.example` как шаблон):
+Перед настройкой системы вам необходимо получить AI API ключ. Выберите одного из следующих AI провайдеров:
+
+#### Вариант 1: DeepSeek (Рекомендуется для новичков)
+
+**Почему DeepSeek?**
+- 💰 Дешевле чем GPT-4 (примерно 1/10 стоимости)
+- 🚀 Быстрое время отклика
+- 🎯 Отличное качество торговых решений
+- 🌍 Доступен глобально без VPN
+
+**Как получить DeepSeek API ключ:**
+
+1. **Посетите**: [https://platform.deepseek.com](https://platform.deepseek.com)
+2. **Зарегистрируйтесь**: Используя email/номер телефона
+3. **Подтвердите**: Завершите подтверждение email/телефона
+4. **Пополните**: Добавьте баланс на аккаунт
+ - Минимум: ~$5 USD
+ - Рекомендуется: $20-50 USD для тестирования
+5. **Создайте API ключ**:
+ - Перейдите в раздел API Keys
+ - Нажмите "Создать новый ключ"
+ - Скопируйте и сохраните ключ (начинается с `sk-`)
+ - ⚠️ **Важно**: Сохраните немедленно - позже увидеть не сможете!
+
+**Цена**: Примерно $0.14 за миллион токенов (очень дешево!)
+
+#### Вариант 2: Qwen (Alibaba Cloud Tongyi Qianwen)
+
+**Как получить Qwen API ключ:**
+
+1. **Посетите**: [https://dashscope.aliyuncs.com](https://dashscope.aliyuncs.com)
+2. **Зарегистрируйтесь**: Используя аккаунт Alibaba Cloud
+3. **Активируйте сервис**: Активируйте DashScope сервис
+4. **Создайте API ключ**:
+ - Перейдите в управление API ключами
+ - Создайте новый ключ
+ - Скопируйте и сохраните (начинается с `sk-`)
+
+**Примечание**: Может потребоваться китайский номер телефона для регистрации
+
+---
+
+### 5. Конфигурация системы
+
+**Доступны два режима конфигурации:**
+- **🌟 Режим новичка**: Один трейдер + монеты по умолчанию (Рекомендуется!)
+- **⚔️ Экспертный режим**: Конкуренция нескольких трейдеров
+
+#### 🌟 Конфигурация режима новичка (Рекомендуется)
+
+**Шаг 1**: Скопируйте и переименуйте файл примера конфигурации
+
+```bash
+cp config.json.example config.json
+```
+
+**Шаг 2**: Отредактируйте `config.json` и заполните ваши API ключи
+
+```json
+{
+ "traders": [
+ {
+ "id": "my_trader",
+ "name": "Мой AI Трейдер",
+ "ai_model": "deepseek",
+ "binance_api_key": "YOUR_BINANCE_API_KEY",
+ "binance_secret_key": "YOUR_BINANCE_SECRET_KEY",
+ "use_qwen": false,
+ "deepseek_key": "sk-xxxxxxxxxxxxx",
+ "qwen_key": "",
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
+ }
+ ],
+ "use_default_coins": true,
+ "coin_pool_api_url": "",
+ "oi_top_api_url": "",
+ "api_server_port": 8080
+}
+```
+
+**Шаг 3**: Замените заполнители вашими фактическими ключами
+
+| Заполнитель | Заменить на | Где получить |
+|-------------|-------------|--------------|
+| `YOUR_BINANCE_API_KEY` | Ваш Binance API ключ | Binance → Аккаунт → Управление API |
+| `YOUR_BINANCE_SECRET_KEY` | Ваш Binance Secret ключ | То же самое |
+| `sk-xxxxxxxxxxxxx` | Ваш DeepSeek API ключ | [platform.deepseek.com](https://platform.deepseek.com) |
+
+**Шаг 4**: Настройте начальный баланс (опционально)
+
+- `initial_balance`: Установите ваш фактический баланс Binance Futures аккаунта
+- Используется для расчета P/L процентов
+- Пример: Если у вас 500 USDT, установите `"initial_balance": 500.0`
+
+**✅ Контрольный список конфигурации:**
+
+- [ ] Binance API ключ заполнен (без кавычек)
+- [ ] Binance Secret ключ заполнен (без кавычек)
+- [ ] DeepSeek API ключ заполнен (начинается с `sk-`)
+- [ ] `use_default_coins` установлен в `true` (для новичков)
+- [ ] `initial_balance` соответствует балансу аккаунта
+- [ ] Файл сохранен как `config.json` (не `.example`)
+
+---
+
+#### ⚔️ Экспертный режим: Конкуренция нескольких трейдеров
+
+Для запуска нескольких AI трейдеров, конкурирующих друг с другом:
+
+```json
+{
+ "traders": [
+ {
+ "id": "qwen_trader",
+ "name": "Qwen AI Trader",
+ "ai_model": "qwen",
+ "binance_api_key": "YOUR_BINANCE_API_KEY_1",
+ "binance_secret_key": "YOUR_BINANCE_SECRET_KEY_1",
+ "use_qwen": true,
+ "qwen_key": "sk-xxxxx",
+ "deepseek_key": "",
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
+ },
+ {
+ "id": "deepseek_trader",
+ "name": "DeepSeek AI Trader",
+ "ai_model": "deepseek",
+ "binance_api_key": "YOUR_BINANCE_API_KEY_2",
+ "binance_secret_key": "YOUR_BINANCE_SECRET_KEY_2",
+ "use_qwen": false,
+ "qwen_key": "",
+ "deepseek_key": "sk-xxxxx",
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
+ }
+ ],
+ "use_default_coins": true,
+ "coin_pool_api_url": "",
+ "oi_top_api_url": "",
+ "api_server_port": 8080
+}
+```
+
+**Требования для режима конкуренции:**
+- 2 отдельных Binance Futures аккаунта (разные API ключи)
+- Оба AI API ключа (Qwen + DeepSeek)
+- Больше тестовых средств (Рекомендуется: 500+ USDT на аккаунт)
+
+---
+
+#### 📚 Объяснение полей конфигурации
+
+| Поле | Описание | Пример значения | Обязательно? |
+|------|----------|-----------------|--------------|
+| `id` | Уникальный идентификатор для этого трейдера | `"my_trader"` | ✅ Да |
+| `name` | Отображаемое имя | `"Мой AI Трейдер"` | ✅ Да |
+| `ai_model` | Используемый AI провайдер | `"deepseek"` или `"qwen"` | ✅ Да |
+| `binance_api_key` | Binance API ключ | `"abc123..."` | ✅ Да |
+| `binance_secret_key` | Binance Secret ключ | `"xyz789..."` | ✅ Да |
+| `use_qwen` | Использовать ли Qwen | `true` или `false` | ✅ Да |
+| `deepseek_key` | DeepSeek API ключ | `"sk-xxx"` | Требуется при использовании DeepSeek |
+| `qwen_key` | Qwen API ключ | `"sk-xxx"` | Требуется при использовании Qwen |
+| `initial_balance` | Начальный баланс для расчета P/L | `1000.0` | ✅ Да |
+| `scan_interval_minutes` | Частота решений (минуты) | `3` (рекомендуется 3-5) | ✅ Да |
+| `use_default_coins` | Использовать встроенный список монет
**✨ Умное значение по умолчанию: `true`** (v2.0.2+)
Автоматически включается без API | `true` или опустить | ❌ Нет
(Опционально, авто) |
+| `coin_pool_api_url` | API пользовательского пула монет
*Требуется только при `use_default_coins: false`* | `""` (пусто) | ❌ Нет |
+| `oi_top_api_url` | API открытого интереса
*Опциональные дополнительные данные* | `""` (пусто) | ❌ Нет |
+| `api_server_port` | Порт веб-панели | `8080` | ✅ Да |
+
+**Монеты по умолчанию для торговли** (когда `use_default_coins: true`):
+- BTC, ETH, SOL, BNB, XRP, DOGE, ADA, HYPE
+
+---
+
+#### ⚠️ Важно: Поле `use_default_coins`
+
+**Умное поведение по умолчанию (v2.0.2+):**
+
+Система теперь автоматически устанавливает `use_default_coins: true`, если:
+- Вы не включили это поле в config.json, или
+- Вы установили его в `false`, но не предоставили `coin_pool_api_url`
+
+Это делает систему более дружелюбной для новичков! Вы даже можете полностью опустить это поле.
+
+**Примеры конфигурации:**
+
+✅ **Вариант 1: Явное указание (Рекомендуется для ясности)**
+```json
+"use_default_coins": true,
+"coin_pool_api_url": "",
+"oi_top_api_url": ""
+```
+
+✅ **Вариант 2: Опустить поле (Автоматически использует монеты по умолчанию)**
+```json
+// Не включать "use_default_coins" вообще
+"coin_pool_api_url": "",
+"oi_top_api_url": ""
+```
+
+⚙️ **Расширенное: Использовать внешний API**
+```json
+"use_default_coins": false,
+"coin_pool_api_url": "http://your-api.com/coins",
+"oi_top_api_url": "http://your-api.com/oi"
+```
+
+---
+
+### 6. Запуск системы
+
+#### 🚀 Запуск системы (2 шага)
+
+Система состоит из **2 частей**, которые необходимо запустить отдельно:
+1. **Backend** (AI торговый мозг + API)
+2. **Frontend** (Веб-панель мониторинга)
+
+---
+
+#### **Шаг 1: Запустите Backend**
+
+Откройте терминал и выполните:
+
+```bash
+# Соберите программу (первый запуск или после изменений кода)
+go build -o nofx
+
+# Запустите backend
+./nofx
+```
+
+**Вы должны увидеть:**
+
+```
+🚀 Запуск системы автоматической торговли...
+✓ Трейдер [my_trader] инициализирован
+✓ API сервер запущен на порту 8080
+📊 Начинается мониторинг торговли...
+```
+
+**⚠️ Если видите ошибки:**
+
+| Сообщение об ошибке | Решение |
+|---------------------|---------|
+| `invalid API key` | Проверьте Binance API ключи в config.json |
+| `TA-Lib not found` | Выполните `brew install ta-lib` (macOS) |
+| `port 8080 already in use` | Измените `api_server_port` в config.json |
+| `DeepSeek API error` | Проверьте DeepSeek API ключ и баланс |
+
+**✅ Признаки работы Backend:**
+- Нет сообщений об ошибках
+- Появляется "Начинается мониторинг торговли..."
+- Система показывает баланс аккаунта
+- Держите это окно терминала открытым!
+
+---
+
+#### **Шаг 2: Запустите Frontend**
+
+Откройте **новое окно терминала** (держите первое открытым!), затем:
+
+```bash
+cd web
+npm run dev
+```
+
+**Вы должны увидеть:**
+
+```
+VITE v5.x.x ready in xxx ms
+
+➜ Local: http://localhost:3000/
+➜ Network: use --host to expose
+```
+
+**✅ Признаки работы Frontend:**
+- Сообщение "Local: http://localhost:3000/"
+- Нет сообщений об ошибках
+- Также держите это окно терминала открытым!
+
+---
+
+#### **Шаг 3: Доступ к панели**
+
+Откройте в веб-браузере:
+
+**🌐 http://localhost:3000**
+
+**Вы увидите:**
+- 📊 Баланс аккаунта в реальном времени
+- 📈 Позиции (если есть)
+- 🤖 AI логи решений
+- 📉 График капитала
+
+**Подсказки для первого использования:**
+- Первое AI решение может занять 3-5 минут
+- Начальное решение может показать "наблюдение" - это нормально
+- AI должен сначала проанализировать рынок
+
+---
+
+### 7. Мониторинг системы
+
+**Что отслеживать:**
+
+✅ **Признаки здоровой системы:**
+- Backend терминал показывает циклы решений каждые 3-5 минут
+- Нет постоянных сообщений об ошибках
+- Обновляется баланс аккаунта
+- Веб-панель автоматически обновляется
+
+⚠️ **Признаки предупреждения:**
+- Повторяющиеся API ошибки
+- Нет решений более 10 минут
+- Быстро падающий баланс
+
+**Проверка состояния системы:**
+
+```bash
+# В новом окне терминала
+curl http://localhost:8080/health
+```
+
+Должно вернуть: `{"status":"ok"}`
+
+---
+
+### 8. Остановка системы
+
+**Изящное завершение (Рекомендуется):**
+
+1. Перейдите к **Backend терминалу** (первому)
+2. Нажмите `Ctrl+C`
+3. Дождитесь сообщения "Система остановлена"
+4. Перейдите к **Frontend терминалу** (второму)
+5. Нажмите `Ctrl+C`
+
+**⚠️ Важно:**
+- Всегда останавливайте backend первым
+- Дождитесь подтверждения перед закрытием терминалов
+- Не принудительно завершайте (не закрывайте терминалы сразу)
+
+---
+
+## 📖 Процесс принятия решений AI
+
+Каждый цикл принятия решений (по умолчанию 3 минуты), система работает по следующему процессу:
+
+```
+┌──────────────────────────────────────────────────────────┐
+│ 1. 📊 Анализ исторической производительности │
+│ (последние 20 циклов) │
+├──────────────────────────────────────────────────────────┤
+│ ✓ Расчет общего процента выигрышей, средней прибыли, │
+│ соотношения прибыли/убытка │
+│ ✓ Статистика по каждой монете (процент выигрышей, │
+│ средний P/L в USDT) │
+│ ✓ Определение лучших/худших монет по производительности │
+│ ✓ Список деталей последних 5 сделок с точным P/L │
+│ ✓ Расчет коэффициента Шарпа для оценки риска │
+│ 📌 НОВОЕ (v2.0.2): Точный P/L в USDT с учетом плеча │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 2. 💰 Получение состояния аккаунта │
+├──────────────────────────────────────────────────────────┤
+│ • Капитал аккаунта, доступный баланс, нереализованный │
+│ P/L │
+│ • Количество позиций, общий P/L (реализованный + │
+│ нереализованный) │
+│ • Использование маржи (текущее/максимальное) │
+│ • Индикаторы оценки риска │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 3. 🔍 Анализ существующих позиций (если есть) │
+├──────────────────────────────────────────────────────────┤
+│ • Получение рыночных данных для каждой позиции │
+│ (3-минутные + 4-часовые свечи) │
+│ • Расчет технических индикаторов (RSI, MACD, EMA) │
+│ • Отображение длительности удержания позиции │
+│ (например, "удерживается 2 часа 15 минут") │
+│ • AI определяет, нужно ли закрыть (тейк-профит, │
+│ стоп-лосс или корректировка) │
+│ 📌 НОВОЕ (v2.0.2): Отслеживание длительности позиции │
+│ помогает AI решать │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 4. 🎯 Оценка новых возможностей (пул кандидатов монет) │
+├──────────────────────────────────────────────────────────┤
+│ • Получение топ-20 монет с высоким рейтингом AI500 │
+│ • Получение топ-20 монет с самым быстрым ростом OI │
+│ • Объединение, удаление дубликатов, фильтрация монет с │
+│ низкой ликвидностью (OI < 15M USD) │
+│ • Массовое получение рыночных данных и технических │
+│ индикаторов │
+│ • Подготовка полных последовательностей сырых данных │
+│ для каждой монеты-кандидата │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 5. 🧠 Комплексное решение AI │
+├──────────────────────────────────────────────────────────┤
+│ • Просмотр исторической обратной связи (процент │
+│ выигрышей, коэффициент P/L, лучшие/худшие монеты) │
+│ • Получение всех данных последовательностей (свечи, │
+│ индикаторы, открытый интерес) │
+│ • Анализ Chain of Thought │
+│ • Вывод решения: закрыть/открыть/удерживать/наблюдать │
+│ • Включает параметры плеча, размера, стоп-лосса, │
+│ тейк-профита │
+│ 📌 НОВОЕ (v2.0.2): AI может свободно анализировать │
+│ сырые последовательности, не ограничен заранее │
+│ определенными индикаторами │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 6. ⚡ Исполнение сделок │
+├──────────────────────────────────────────────────────────┤
+│ • Приоритизация: сначала закрытие, затем открытие │
+│ • Автоматическая адаптация точности (правила LOT_SIZE) │
+│ • Предотвращение накопления позиций (отклонение │
+│ дублирования монета/направление) │
+│ • Автоматическая отмена всех ордеров после закрытия │
+│ • Запись времени открытия для отслеживания │
+│ длительности позиции │
+│ 📌 НОВОЕ (v2.0.2): Отслеживание времени открытия │
+│ позиции │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 7. 📝 Запись логов │
+├──────────────────────────────────────────────────────────┤
+│ • Сохранение полной записи решения в decision_logs/ │
+│ • Включает цепочку рассуждений, JSON решения, снимок │
+│ аккаунта, результаты исполнения │
+│ • Хранение полных данных позиции (количество, плечо, │
+│ время открытия/закрытия) │
+│ • Использование ключей symbol_side для предотвращения │
+│ конфликтов лонг/шорт │
+│ 📌 НОВОЕ (v2.0.2): Предотвращение конфликтов при │
+│ удержании лонг + шорт, учет количества + плеча │
+└──────────────────────────────────────────────────────────┘
+```
+
+### Ключевые улучшения в v2.0.2
+
+**📌 Отслеживание длительности позиции:**
+- Система теперь отслеживает, как долго каждая позиция удерживается
+- Отображается в промпте пользователя: "удерживается 2 часа 15 минут"
+- Помогает AI принимать лучшие решения о том, когда выйти
+
+**📌 Точный расчет P/L:**
+- Ранее: Только процент (100U@5% = 1000U@5% = оба показывали "5.0")
+- Теперь: Реальная прибыль в USDT = Стоимость позиции × Изменение цены × Плечо
+- Пример: 1000 USDT × 5% × 20x = 1000 USDT фактической прибыли
+
+**📌 Расширенная свобода AI:**
+- AI может свободно анализировать все данные сырых последовательностей
+- Больше не ограничен заранее определенными комбинациями индикаторов
+- Может выполнять собственный анализ трендов, расчет поддержки/сопротивления
+
+**📌 Улучшенное отслеживание позиций:**
+- Использует ключ `symbol_side` (например, "BTCUSDT_long")
+- Предотвращает конфликты при одновременном удержании лонг и шорт
+- Хранит полные данные: количество, плечо, время открытия/закрытия
+
+---
+
+## ⚠️ Важные предупреждения о рисках
+
+### Торговые риски
+
+1. **Рынки криптовалют чрезвычайно волатильны**, решения AI не гарантируют прибыль
+2. **Торговля фьючерсами использует плечо**, убытки могут превысить основную сумму
+3. **Экстремальные рыночные условия** могут привести к ликвидации
+4. **Комиссии за финансирование** могут повлиять на стоимость удержания
+5. **Риск ликвидности**: Некоторые монеты могут испытывать проскальзывание
+
+### Технические риски
+
+1. **Задержка сети** может вызвать проскальзывание цены
+2. **Лимиты API** могут повлиять на исполнение сделок
+3. **Тайм-ауты AI API** могут вызвать сбои решений
+4. **Системные ошибки** могут вызвать неожиданное поведение
+
+### Рекомендации по использованию
+
+✅ **Рекомендуется**
+- Используйте только средства, потерю которых вы можете позволить для тестирования
+- Начните с небольших сумм (рекомендуется 100-500 USDT)
+- Регулярно проверяйте состояние работы системы
+- Отслеживайте изменения баланса счета
+- Анализируйте логи решений AI для понимания стратегии
+
+❌ **Не рекомендуется**
+- Инвестировать все средства или заемные деньги
+- Запускать без присмотра на длительные периоды
+- Слепо доверять решениям AI
+- Использовать без понимания системы
+- Запускать во время экстремальной волатильности рынка
+
+---
+
+## 🛠️ Частые проблемы
+
+### 1. Ошибка компиляции: TA-Lib не найдена
+
+**Решение**: Установите библиотеку TA-Lib
+```bash
+# macOS
+brew install ta-lib
+
+# Ubuntu
+sudo apt-get install libta-lib0-dev
+```
+
+### 2. Ошибка точности: Точность превышает максимум
+
+**Решение**: Система автоматически обрабатывает точность из Binance LOT_SIZE. Если ошибка сохраняется, проверьте сетевое подключение.
+
+### 3. Тайм-аут AI API
+
+**Решение**:
+- Проверьте правильность API ключа
+- Проверьте сетевое подключение (может потребоваться прокси)
+- Тайм-аут системы установлен на 120 секунд
+
+### 4. Frontend не может подключиться к backend
+
+**Решение**:
+- Убедитесь, что backend запущен (http://localhost:8080)
+- Проверьте, не занят ли порт 8080
+- Проверьте ошибки в консоли браузера
+
+### 5. Сбой API пула монет
+
+**Решение**:
+- API пула монет опционален
+- Если API не работает, система использует основные монеты по умолчанию (BTC, ETH и т.д.)
+- Проверьте URL API и параметр auth в config.json
+
+---
+
+## 📄 Лицензия
+
+Лицензия MIT - См. файл [LICENSE](LICENSE) для деталей
+
+---
+
+## 🤝 Вклад в проект
+
+Приветствуются Issues и Pull Requests!
+
+### Руководство по разработке
+
+1. Сделайте Fork проекта
+2. Создайте ветку функции (`git checkout -b feature/AmazingFeature`)
+3. Зафиксируйте изменения (`git commit -m 'Add some AmazingFeature'`)
+4. Отправьте в ветку (`git push origin feature/AmazingFeature`)
+5. Откройте Pull Request
+
+---
+
+## 📬 Контакты
+
+- **Twitter/X**: [@Web3Tinkle](https://x.com/Web3Tinkle)
+- **GitHub Issues**: [Создать Issue](https://github.com/tinkle-community/nofx/issues)
+
+---
+
+## 🙏 Благодарности
+
+- [Binance API](https://binance-docs.github.io/apidocs/futures/en/) - Binance Futures API
+- [DeepSeek](https://platform.deepseek.com/) - DeepSeek AI API
+- [Qwen](https://dashscope.aliyuncs.com/) - Alibaba Cloud Qwen
+- [TA-Lib](https://ta-lib.org/) - Библиотека технических индикаторов
+- [Recharts](https://recharts.org/) - Библиотека графиков React
+
+---
+
+## 🔄 История изменений
```json
{
@@ -338,6 +922,50 @@ sudo apt-get install libta-lib0-dev
## 🔄 История изменений
+### v2.0.2 (2025-10-29)
+
+**Критические исправления ошибок - История сделок и анализ производительности:**
+
+Эта версия исправляет **критические ошибки расчета** в системе исторических записей сделок и анализа производительности, которые значительно влияли на статистику прибыльности.
+
+**1. Расчет P/L - Исправление крупной ошибки** (logger/decision_logger.go)
+- **Проблема**: Ранее P/L рассчитывался только как процент, полностью игнорируя размер позиции и плечо
+ - Пример: Позиция 100 USDT с доходом 5% и позиция 1000 USDT с доходом 5% обе показывали `5.0` как прибыль
+ - Это делало анализ производительности полностью неточным
+- **Решение**: Теперь рассчитывается фактическая прибыль в USDT
+ ```
+ P/L (USDT) = Стоимость позиции × Изменение цены % × Плечо
+ Пример: 1000 USDT × 5% × 20x = 1000 USDT фактической прибыли
+ ```
+- **Влияние**: Процент выигрышей, коэффициент прибыли и коэффициент Шарпа теперь основаны на точных суммах USDT
+
+**2. Отслеживание позиций - Отсутствие критических данных**
+- **Проблема**: Записи открытых позиций хранили только цену и время, пропуская количество и плечо
+- **Решение**: Теперь хранит полные торговые данные:
+ - `quantity`: Размер позиции (в монетах)
+ - `leverage`: Множитель плеча (например, 20x)
+ - Эти данные необходимы для точного расчета P/L
+
+**3. Логика ключа позиции - Конфликт Long/Short**
+- **Проблема**: Использовался `symbol` как ключ позиции, что вызывало конфликты данных при одновременном удержании лонгов и шортов
+ - Пример: BTCUSDT лонг и BTCUSDT шорт перезаписывали друг друга
+- **Решение**: Изменено на формат `symbol_side` (например, `BTCUSDT_long`, `BTCUSDT_short`)
+ - Теперь правильно различает лонг и шорт позиции
+
+**4. Расчет коэффициента Шарпа - Оптимизация кода**
+- **Проблема**: Использовался пользовательский метод Ньютона для расчета квадратного корня
+- **Решение**: Заменен на стандартную библиотеку `math.Sqrt`
+ - Более надежный, поддерживаемый и эффективный
+
+**Почему это обновление важно:**
+- ✅ Историческая статистика сделок теперь показывает **реальную прибыль/убыток в USDT** вместо бессмысленных процентов
+- ✅ Сравнение производительности между сделками с разным плечом теперь точно
+- ✅ Механизм самообучения AI получает правильную историческую обратную связь
+- ✅ Расчеты коэффициента прибыли и коэффициента Шарпа теперь имеют смысл
+- ✅ Отслеживание нескольких позиций (лонг + шорт одновременно) теперь работает правильно
+
+**Рекомендация**: Если вы запускали систему до этого обновления, ваша историческая статистика была неточной. После обновления до v2.0.2, новые сделки будут рассчитываться правильно.
+
### v2.0.1 (2025-10-29)
**Исправления ошибок:**
@@ -357,7 +985,7 @@ sudo apt-get install libta-lib0-dev
---
-**Последнее обновление**: 2025-10-29
+**Последнее обновление**: 2025-10-29 (v2.0.2)
**⚡ Исследуйте возможности количественной торговли с силой AI!**
diff --git a/README.uk.md b/README.uk.md
index f9b08699..d9460c8c 100644
--- a/README.uk.md
+++ b/README.uk.md
@@ -143,13 +143,484 @@ npm install
cd ..
```
-### 4. Конфігурація системи
+### 4. Отримання AI API ключів
-Створіть файл `config.json` (використовуйте `config.json.example` як шаблон):
+Перед налаштуванням системи вам необхідно отримати AI API ключ. Виберіть одного з наступних AI провайдерів:
+
+#### Варіант 1: DeepSeek (Рекомендується для новачків)
+
+**Чому DeepSeek?**
+- 💰 Дешевше ніж GPT-4 (приблизно 1/10 вартості)
+- 🚀 Швидкий час відгуку
+- 🎯 Відмінна якість торгових рішень
+- 🌍 Доступний глобально без VPN
+
+**Як отримати DeepSeek API ключ:**
+
+1. **Відвідайте**: [https://platform.deepseek.com](https://platform.deepseek.com)
+2. **Зареєструйтеся**: Використовуючи email/номер телефону
+3. **Підтвердіть**: Завершіть підтвердження email/телефону
+4. **Поповніть**: Додайте баланс на акаунт
+ - Мінімум: ~$5 USD
+ - Рекомендується: $20-50 USD для тестування
+5. **Створіть API ключ**:
+ - Перейдіть у розділ API Keys
+ - Натисніть "Створити новий ключ"
+ - Скопіюйте та збережіть ключ (починається з `sk-`)
+ - ⚠️ **Важливо**: Збережіть негайно - пізніше побачити не зможете!
+
+**Ціна**: Приблизно $0.14 за мільйон токенів (дуже дешево!)
+
+#### Варіант 2: Qwen (Alibaba Cloud Tongyi Qianwen)
+
+**Як отримати Qwen API ключ:**
+
+1. **Відвідайте**: [https://dashscope.aliyuncs.com](https://dashscope.aliyuncs.com)
+2. **Зареєструйтеся**: Використовуючи акаунт Alibaba Cloud
+3. **Активуйте сервіс**: Активуйте DashScope сервіс
+4. **Створіть API ключ**:
+ - Перейдіть в управління API ключами
+ - Створіть новий ключ
+ - Скопіюйте та збережіть (починається з `sk-`)
+
+**Примітка**: Може знадобитися китайський номер телефону для реєстрації
+
+---
+
+### 5. Конфігурація системи
+
+**Доступні два режими конфігурації:**
+- **🌟 Режим новачка**: Один трейдер + монети за замовчуванням (Рекомендується!)
+- **⚔️ Експертний режим**: Змагання кількох трейдерів
+
+#### 🌟 Конфігурація режиму новачка (Рекомендується)
+
+**Крок 1**: Скопіюйте та перейменуйте файл прикладу конфігурації
+
+```bash
+cp config.json.example config.json
+```
+
+**Крок 2**: Відредагуйте `config.json` та заповніть ваші API ключі
```json
{
"traders": [
+ {
+ "id": "my_trader",
+ "name": "Мій AI Трейдер",
+ "ai_model": "deepseek",
+ "binance_api_key": "YOUR_BINANCE_API_KEY",
+ "binance_secret_key": "YOUR_BINANCE_SECRET_KEY",
+ "use_qwen": false,
+ "deepseek_key": "sk-xxxxxxxxxxxxx",
+ "qwen_key": "",
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
+ }
+ ],
+ "use_default_coins": true,
+ "coin_pool_api_url": "",
+ "oi_top_api_url": "",
+ "api_server_port": 8080
+}
+```
+
+**Крок 3**: Замініть заповнювачі вашими фактичними ключами
+
+| Заповнювач | Замінити на | Де отримати |
+|------------|-------------|-------------|
+| `YOUR_BINANCE_API_KEY` | Ваш Binance API ключ | Binance → Акаунт → Управління API |
+| `YOUR_BINANCE_SECRET_KEY` | Ваш Binance Secret ключ | Те ж саме |
+| `sk-xxxxxxxxxxxxx` | Ваш DeepSeek API ключ | [platform.deepseek.com](https://platform.deepseek.com) |
+
+**Крок 4**: Налаштуйте початковий баланс (опціонально)
+
+- `initial_balance`: Встановіть ваш фактичний баланс Binance Futures акаунта
+- Використовується для розрахунку P/L відсотків
+- Приклад: Якщо у вас 500 USDT, встановіть `"initial_balance": 500.0`
+
+**✅ Контрольний список конфігурації:**
+
+- [ ] Binance API ключ заповнено (без лапок)
+- [ ] Binance Secret ключ заповнено (без лапок)
+- [ ] DeepSeek API ключ заповнено (починається з `sk-`)
+- [ ] `use_default_coins` встановлено в `true` (для новачків)
+- [ ] `initial_balance` відповідає балансу акаунта
+- [ ] Файл збережено як `config.json` (не `.example`)
+
+---
+
+#### ⚔️ Експертний режим: Змагання кількох трейдерів
+
+Для запуску кількох AI трейдерів, що змагаються один з одним:
+
+```json
+{
+ "traders": [
+ {
+ "id": "qwen_trader",
+ "name": "Qwen AI Trader",
+ "ai_model": "qwen",
+ "binance_api_key": "YOUR_BINANCE_API_KEY_1",
+ "binance_secret_key": "YOUR_BINANCE_SECRET_KEY_1",
+ "use_qwen": true,
+ "qwen_key": "sk-xxxxx",
+ "deepseek_key": "",
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
+ },
+ {
+ "id": "deepseek_trader",
+ "name": "DeepSeek AI Trader",
+ "ai_model": "deepseek",
+ "binance_api_key": "YOUR_BINANCE_API_KEY_2",
+ "binance_secret_key": "YOUR_BINANCE_SECRET_KEY_2",
+ "use_qwen": false,
+ "qwen_key": "",
+ "deepseek_key": "sk-xxxxx",
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
+ }
+ ],
+ "use_default_coins": true,
+ "coin_pool_api_url": "",
+ "oi_top_api_url": "",
+ "api_server_port": 8080
+}
+```
+
+**Вимоги для режиму змагання:**
+- 2 окремі Binance Futures акаунти (різні API ключі)
+- Обидва AI API ключі (Qwen + DeepSeek)
+- Більше тестових коштів (Рекомендується: 500+ USDT на акаунт)
+
+---
+
+#### 📚 Пояснення полів конфігурації
+
+| Поле | Опис | Приклад значення | Обов'язково? |
+|------|------|------------------|--------------|
+| `id` | Унікальний ідентифікатор для цього трейдера | `"my_trader"` | ✅ Так |
+| `name` | Відображуване ім'я | `"Мій AI Трейдер"` | ✅ Так |
+| `ai_model` | Використовуваний AI провайдер | `"deepseek"` або `"qwen"` | ✅ Так |
+| `binance_api_key` | Binance API ключ | `"abc123..."` | ✅ Так |
+| `binance_secret_key` | Binance Secret ключ | `"xyz789..."` | ✅ Так |
+| `use_qwen` | Використовувати чи Qwen | `true` або `false` | ✅ Так |
+| `deepseek_key` | DeepSeek API ключ | `"sk-xxx"` | Потрібно при використанні DeepSeek |
+| `qwen_key` | Qwen API ключ | `"sk-xxx"` | Потрібно при використанні Qwen |
+| `initial_balance` | Початковий баланс для розрахунку P/L | `1000.0` | ✅ Так |
+| `scan_interval_minutes` | Частота рішень (хвилини) | `3` (рекомендується 3-5) | ✅ Так |
+| `use_default_coins` | Використовувати вбудований список монет
**✨ Розумне значення за замовчуванням: `true`** (v2.0.2+)
Автоматично включається без API | `true` або опустити | ❌ Ні
(Опціонально, авто) |
+| `coin_pool_api_url` | API користувацького пулу монет
*Потрібно лише при `use_default_coins: false`* | `""` (пусто) | ❌ Ні |
+| `oi_top_api_url` | API відкритого інтересу
*Опціональні додаткові дані* | `""` (пусто) | ❌ Ні |
+| `api_server_port` | Порт веб-панелі | `8080` | ✅ Так |
+
+**Монети за замовчуванням для торгівлі** (коли `use_default_coins: true`):
+- BTC, ETH, SOL, BNB, XRP, DOGE, ADA, HYPE
+
+---
+
+#### ⚠️ Важливо: Поле `use_default_coins`
+
+**Розумна поведінка за замовчуванням (v2.0.2+):**
+
+Система тепер автоматично встановлює `use_default_coins: true`, якщо:
+- Ви не включили це поле в config.json, або
+- Ви встановили його в `false`, але не надали `coin_pool_api_url`
+
+Це робить систему більш дружньою для новачків! Ви навіть можете повністю опустити це поле.
+
+**Приклади конфігурації:**
+
+✅ **Варіант 1: Явне вказання (Рекомендується для ясності)**
+```json
+"use_default_coins": true,
+"coin_pool_api_url": "",
+"oi_top_api_url": ""
+```
+
+✅ **Варіант 2: Опустити поле (Автоматично використовує монети за замовчуванням)**
+```json
+// Не включати "use_default_coins" взагалі
+"coin_pool_api_url": "",
+"oi_top_api_url": ""
+```
+
+⚙️ **Розширене: Використовувати зовнішній API**
+```json
+"use_default_coins": false,
+"coin_pool_api_url": "http://your-api.com/coins",
+"oi_top_api_url": "http://your-api.com/oi"
+```
+
+---
+
+### 6. Запуск системи
+
+#### 🚀 Запуск системи (2 кроки)
+
+Система складається з **2 частин**, які необхідно запустити окремо:
+1. **Backend** (AI торговий мозок + API)
+2. **Frontend** (Веб-панель моніторингу)
+
+---
+
+#### **Крок 1: Запустіть Backend**
+
+Відкрийте термінал та виконайте:
+
+```bash
+# Зберіть програму (перший запуск або після змін коду)
+go build -o nofx
+
+# Запустіть backend
+./nofx
+```
+
+**Ви повинні побачити:**
+
+```
+🚀 Запуск системи автоматичної торгівлі...
+✓ Трейдер [my_trader] ініціалізовано
+✓ API сервер запущено на порту 8080
+📊 Починається моніторинг торгівлі...
+```
+
+**⚠️ Якщо бачите помилки:**
+
+| Повідомлення про помилку | Рішення |
+|--------------------------|---------|
+| `invalid API key` | Перевірте Binance API ключі в config.json |
+| `TA-Lib not found` | Виконайте `brew install ta-lib` (macOS) |
+| `port 8080 already in use` | Змініть `api_server_port` в config.json |
+| `DeepSeek API error` | Перевірте DeepSeek API ключ та баланс |
+
+**✅ Ознаки роботи Backend:**
+- Немає повідомлень про помилки
+- З'являється "Починається моніторинг торгівлі..."
+- Система показує баланс акаунта
+- Тримайте це вікно терміналу відкритим!
+
+---
+
+#### **Крок 2: Запустіть Frontend**
+
+Відкрийте **нове вікно терміналу** (тримайте перше відкритим!), потім:
+
+```bash
+cd web
+npm run dev
+```
+
+**Ви повинні побачити:**
+
+```
+VITE v5.x.x ready in xxx ms
+
+➜ Local: http://localhost:3000/
+➜ Network: use --host to expose
+```
+
+**✅ Ознаки роботи Frontend:**
+- Повідомлення "Local: http://localhost:3000/"
+- Немає повідомлень про помилки
+- Також тримайте це вікно терміналу відкритим!
+
+---
+
+#### **Крок 3: Доступ до панелі**
+
+Відкрийте у веб-браузері:
+
+**🌐 http://localhost:3000**
+
+**Ви побачите:**
+- 📊 Баланс акаунта в реальному часі
+- 📈 Позиції (якщо є)
+- 🤖 AI логи рішень
+- 📉 Графік капіталу
+
+**Підказки для першого використання:**
+- Перше AI рішення може зайняти 3-5 хвилин
+- Початкове рішення може показати "спостереження" - це нормально
+- AI повинен спочатку проаналізувати ринок
+
+---
+
+### 7. Моніторинг системи
+
+**Що відстежувати:**
+
+✅ **Ознаки здорової системи:**
+- Backend термінал показує цикли рішень кожні 3-5 хвилин
+- Немає постійних повідомлень про помилки
+- Оновлюється баланс акаунта
+- Веб-панель автоматично оновлюється
+
+⚠️ **Ознаки попередження:**
+- Повторювані API помилки
+- Немає рішень більше 10 хвилин
+- Швидко падаючий баланс
+
+**Перевірка стану системи:**
+
+```bash
+# У новому вікні терміналу
+curl http://localhost:8080/health
+```
+
+Повинно повернути: `{"status":"ok"}`
+
+---
+
+### 8. Зупинка системи
+
+**Витончене завершення (Рекомендується):**
+
+1. Перейдіть до **Backend терміналу** (першого)
+2. Натисніть `Ctrl+C`
+3. Дочекайтеся повідомлення "Система зупинена"
+4. Перейдіть до **Frontend терміналу** (другого)
+5. Натисніть `Ctrl+C`
+
+**⚠️ Важливо:**
+- Завжди зупиняйте backend першим
+- Дочекайтеся підтвердження перед закриттям терміналів
+- Не примусово завершуйте (не закривайте термінали одразу)
+
+---
+
+## 📖 Процес прийняття рішень AI
+
+Кожен цикл прийняття рішень (за замовчуванням 3 хвилини), система працює за наступним процесом:
+
+```
+┌──────────────────────────────────────────────────────────┐
+│ 1. 📊 Аналіз історичної продуктивності │
+│ (останні 20 циклів) │
+├──────────────────────────────────────────────────────────┤
+│ ✓ Розрахунок загального відсотка виграшів, середнього │
+│ прибутку, співвідношення прибутку/збитку │
+│ ✓ Статистика по кожній монеті (відсоток виграшів, │
+│ середній P/L в USDT) │
+│ ✓ Визначення найкращих/найгірших монет за │
+│ продуктивністю │
+│ ✓ Список деталей останніх 5 угод з точним P/L │
+│ ✓ Розрахунок коефіцієнта Шарпа для оцінки ризику │
+│ 📌 НОВЕ (v2.0.2): Точний P/L в USDT з врахуванням │
+│ плеча │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 2. 💰 Отримання стану акаунта │
+├──────────────────────────────────────────────────────────┤
+│ • Капітал акаунта, доступний баланс, нереалізований │
+│ P/L │
+│ • Кількість позицій, загальний P/L (реалізований + │
+│ нереалізований) │
+│ • Використання маржі (поточне/максимальне) │
+│ • Індикатори оцінки ризику │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 3. 🔍 Аналіз існуючих позицій (якщо є) │
+├──────────────────────────────────────────────────────────┤
+│ • Отримання ринкових даних для кожної позиції │
+│ (3-хвилинні + 4-годинні свічки) │
+│ • Розрахунок технічних індикаторів (RSI, MACD, EMA) │
+│ • Відображення тривалості утримання позиції │
+│ (наприклад, "утримується 2 години 15 хвилин") │
+│ • AI визначає, чи потрібно закрити (тейк-профіт, │
+│ стоп-лосс або коригування) │
+│ 📌 НОВЕ (v2.0.2): Відстеження тривалості позиції │
+│ допомагає AI вирішувати │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 4. 🎯 Оцінка нових можливостей (пул кандидатів монет) │
+├──────────────────────────────────────────────────────────┤
+│ • Отримання топ-20 монет з високим рейтингом AI500 │
+│ • Отримання топ-20 монет з найшвидшим зростанням OI │
+│ • Об'єднання, видалення дублікатів, фільтрація монет з │
+│ низькою ліквідністю (OI < 15M USD) │
+│ • Масове отримання ринкових даних та технічних │
+│ індикаторів │
+│ • Підготовка повних послідовностей сирих даних для │
+│ кожної монети-кандидата │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 5. 🧠 Комплексне рішення AI │
+├──────────────────────────────────────────────────────────┤
+│ • Перегляд історичного зворотного зв'язку (відсоток │
+│ виграшів, коефіцієнт P/L, найкращі/найгірші монети) │
+│ • Отримання всіх даних послідовностей (свічки, │
+│ індикатори, відкритий інтерес) │
+│ • Аналіз Chain of Thought │
+│ • Вивід рішення: закрити/відкрити/утримувати/спостерігати │
+│ • Включає параметри плеча, розміру, стоп-лосса, │
+│ тейк-профіта │
+│ 📌 НОВЕ (v2.0.2): AI може вільно аналізувати сирі │
+│ послідовності, не обмежений заздалегідь визначеними │
+│ індикаторами │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 6. ⚡ Виконання угод │
+├──────────────────────────────────────────────────────────┤
+│ • Пріоритизація: спочатку закриття, потім відкриття │
+│ • Автоматична адаптація точності (правила LOT_SIZE) │
+│ • Запобігання накопиченню позицій (відхилення │
+│ дублювання монета/напрямок) │
+│ • Автоматична відміна всіх ордерів після закриття │
+│ • Запис часу відкриття для відстеження тривалості │
+│ позиції │
+│ 📌 НОВЕ (v2.0.2): Відстеження часу відкриття позиції │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 7. 📝 Запис логів │
+├──────────────────────────────────────────────────────────┤
+│ • Збереження повного запису рішення в decision_logs/ │
+│ • Включає ланцюг міркувань, JSON рішення, знімок │
+│ акаунта, результати виконання │
+│ • Зберігання повних даних позиції (кількість, плече, │
+│ час відкриття/закриття) │
+│ • Використання ключів symbol_side для запобігання │
+│ конфліктів лонг/шорт │
+│ 📌 НОВЕ (v2.0.2): Запобігання конфліктів при утриманні │
+│ лонг + шорт, врахування кількості + плеча │
+└──────────────────────────────────────────────────────────┘
+```
+
+### Ключові покращення в v2.0.2
+
+**📌 Відстеження тривалості позиції:**
+- Система тепер відстежує, як довго кожна позиція утримується
+- Відображається в промпті користувача: "утримується 2 години 15 хвилин"
+- Допомагає AI приймати кращі рішення про те, коли вийти
+
+**📌 Точний розрахунок P/L:**
+- Раніше: Лише відсоток (100U@5% = 1000U@5% = обидва показували "5.0")
+- Тепер: Реальний прибуток в USDT = Вартість позиції × Зміна ціни × Плече
+- Приклад: 1000 USDT × 5% × 20x = 1000 USDT фактичного прибутку
+
+**📌 Розширена свобода AI:**
+- AI може вільно аналізувати всі дані сирих послідовностей
+- Більше не обмежений заздалегідь визначеними комбінаціями індикаторів
+- Може виконувати власний аналіз трендів, розрахунок підтримки/опору
+
+**📌 Покращене відстеження позицій:**
+- Використовує ключ `symbol_side` (наприклад, "BTCUSDT_long")
+- Запобігає конфліктам при одночасному утриманні лонг та шорт
+- Зберігає повні дані: кількість, плече, час відкриття/закриття
+
+---
+
+## ⚠️ Важливі попередження про ризики
+
+### Торговельні ризики
{
"id": "qwen_trader",
"name": "Qwen AI Trader",
@@ -338,6 +809,50 @@ sudo apt-get install libta-lib0-dev
## 🔄 Історія змін
+### v2.0.2 (2025-10-29)
+
+**Критичні виправлення помилок - Історія угод та аналіз продуктивності:**
+
+Ця версія виправляє **критичні помилки розрахунку** в системі історичних записів угод та аналізу продуктивності, які значно впливали на статистику прибутковості.
+
+**1. Розрахунок P/L - Виправлення великої помилки** (logger/decision_logger.go)
+- **Проблема**: Раніше P/L розраховувався лише як відсоток, повністю ігноруючи розмір позиції та плече
+ - Приклад: Позиція 100 USDT з доходом 5% та позиція 1000 USDT з доходом 5% обидві показували `5.0` як прибуток
+ - Це робило аналіз продуктивності повністю неточним
+- **Рішення**: Тепер розраховується фактичний прибуток в USDT
+ ```
+ P/L (USDT) = Вартість позиції × Зміна ціни % × Плече
+ Приклад: 1000 USDT × 5% × 20x = 1000 USDT фактичного прибутку
+ ```
+- **Вплив**: Відсоток виграшів, коефіцієнт прибутку та коефіцієнт Шарпа тепер засновані на точних сумах USDT
+
+**2. Відстеження позицій - Відсутність критичних даних**
+- **Проблема**: Записи відкритих позицій зберігали лише ціну та час, пропускаючи кількість та плече
+- **Рішення**: Тепер зберігає повні торгові дані:
+ - `quantity`: Розмір позиції (в монетах)
+ - `leverage`: Множник плеча (наприклад, 20x)
+ - Ці дані необхідні для точного розрахунку P/L
+
+**3. Логіка ключа позиції - Конфлікт Long/Short**
+- **Проблема**: Використовувався `symbol` як ключ позиції, що викликало конфлікти даних при одночасному утриманні лонгів та шортів
+ - Приклад: BTCUSDT лонг та BTCUSDT шорт перезаписували один одного
+- **Рішення**: Змінено на формат `symbol_side` (наприклад, `BTCUSDT_long`, `BTCUSDT_short`)
+ - Тепер правильно розрізняє лонг та шорт позиції
+
+**4. Розрахунок коефіцієнта Шарпа - Оптимізація коду**
+- **Проблема**: Використовувався користувацький метод Ньютона для розрахунку квадратного кореня
+- **Рішення**: Замінено на стандартну бібліотеку `math.Sqrt`
+ - Більш надійний, підтримуваний та ефективний
+
+**Чому це оновлення важливе:**
+- ✅ Історична статистика угод тепер показує **реальний прибуток/збиток в USDT** замість безглуздих відсотків
+- ✅ Порівняння продуктивності між угодами з різним плечем тепер точне
+- ✅ Механізм самонавчання AI отримує правильний історичний зворотний зв'язок
+- ✅ Розрахунки коефіцієнта прибутку та коефіцієнта Шарпа тепер мають сенс
+- ✅ Відстеження кількох позицій (лонг + шорт одночасно) тепер працює правильно
+
+**Рекомендація**: Якщо ви запускали систему до цього оновлення, ваша історична статистика була неточною. Після оновлення до v2.0.2, нові угоди будуть розраховуватися правильно.
+
### v2.0.1 (2025-10-29)
**Виправлення помилок:**
@@ -357,7 +872,7 @@ sudo apt-get install libta-lib0-dev
---
-**Останнє оновлення**: 2025-10-29
+**Останнє оновлення**: 2025-10-29 (v2.0.2)
**⚡ Досліджуйте можливості кількісної торгівлі з силою AI!**
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 077fd6cc..a62f4d02 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -207,9 +207,117 @@ npm install
cd ..
```
-### 4. 配置系统
+### 4. 获取AI API密钥
-创建 `config.json` 文件:
+在配置系统之前,您需要获取AI API密钥。请选择以下AI提供商之一:
+
+#### 选项1:DeepSeek(推荐新手)
+
+**为什么选择DeepSeek?**
+- 💰 比GPT-4便宜(约1/10成本)
+- 🚀 响应速度快
+- 🎯 交易决策质量优秀
+- 🌍 全球可用无需VPN
+
+**如何获取DeepSeek API密钥:**
+
+1. **访问**:[https://platform.deepseek.com](https://platform.deepseek.com)
+2. **注册**:使用邮箱/手机号注册
+3. **验证**:完成邮箱/手机验证
+4. **充值**:向账户添加余额
+ - 最低:约$5美元
+ - 推荐:$20-50美元用于测试
+5. **创建API密钥**:
+ - 进入API Keys部分
+ - 点击"创建新密钥"
+ - 复制并保存密钥(以`sk-`开头)
+ - ⚠️ **重要**:立即保存 - 之后无法再查看!
+
+**价格**:每百万tokens约$0.14(非常便宜!)
+
+#### 选项2:Qwen(阿里云通义千问)
+
+**如何获取Qwen API密钥:**
+
+1. **访问**:[https://dashscope.aliyuncs.com](https://dashscope.aliyuncs.com)
+2. **注册**:使用阿里云账户注册
+3. **开通服务**:激活DashScope服务
+4. **创建API密钥**:
+ - 进入API密钥管理
+ - 创建新密钥
+ - 复制并保存(以`sk-`开头)
+
+**注意**:可能需要中国手机号注册
+
+---
+
+### 5. 系统配置
+
+**两种配置模式可选:**
+- **🌟 新手模式**:单trader + 默认币种(推荐!)
+- **⚔️ 专家模式**:多trader竞赛
+
+#### 🌟 新手模式配置(推荐)
+
+**步骤1**:复制并重命名示例配置文件
+
+```bash
+cp config.json.example config.json
+```
+
+**步骤2**:编辑`config.json`填入您的API密钥
+
+```json
+{
+ "traders": [
+ {
+ "id": "my_trader",
+ "name": "我的AI交易员",
+ "ai_model": "deepseek",
+ "binance_api_key": "YOUR_BINANCE_API_KEY",
+ "binance_secret_key": "YOUR_BINANCE_SECRET_KEY",
+ "use_qwen": false,
+ "deepseek_key": "sk-xxxxxxxxxxxxx",
+ "qwen_key": "",
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
+ }
+ ],
+ "use_default_coins": true,
+ "coin_pool_api_url": "",
+ "oi_top_api_url": "",
+ "api_server_port": 8080
+}
+```
+
+**步骤3**:用您的实际密钥替换占位符
+
+| 占位符 | 替换为 | 哪里获取 |
+|-------|--------|---------|
+| `YOUR_BINANCE_API_KEY` | 您的币安API密钥 | 币安 → 账户 → API管理 |
+| `YOUR_BINANCE_SECRET_KEY` | 您的币安Secret密钥 | 同上 |
+| `sk-xxxxxxxxxxxxx` | 您的DeepSeek API密钥 | [platform.deepseek.com](https://platform.deepseek.com) |
+
+**步骤4**:调整初始余额(可选)
+
+- `initial_balance`:设置为您实际的币安合约账户余额
+- 用于计算盈亏百分比
+- 例如:如果您有500 USDT,设置`"initial_balance": 500.0`
+
+**✅ 配置检查清单:**
+
+- [ ] 币安API密钥已填写(无引号问题)
+- [ ] 币安Secret密钥已填写(无引号问题)
+- [ ] DeepSeek API密钥已填写(以`sk-`开头)
+- [ ] `use_default_coins`设为`true`(新手)
+- [ ] `initial_balance`与您的账户余额匹配
+- [ ] 文件保存为`config.json`(不是`.example`)
+
+---
+
+#### ⚔️ 专家模式:多Trader竞赛
+
+用于运行多个AI trader相互竞争:
```json
{
@@ -218,12 +326,13 @@ cd ..
"id": "qwen_trader",
"name": "Qwen AI Trader",
"ai_model": "qwen",
- "binance_api_key": "YOUR_BINANCE_API_KEY",
- "binance_secret_key": "YOUR_BINANCE_SECRET_KEY",
+ "binance_api_key": "YOUR_BINANCE_API_KEY_1",
+ "binance_secret_key": "YOUR_BINANCE_SECRET_KEY_1",
"use_qwen": true,
"qwen_key": "sk-xxxxx",
- "scan_interval_minutes": 3,
- "initial_balance": 1000.0
+ "deepseek_key": "",
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
},
{
"id": "deepseek_trader",
@@ -232,58 +341,217 @@ cd ..
"binance_api_key": "YOUR_BINANCE_API_KEY_2",
"binance_secret_key": "YOUR_BINANCE_SECRET_KEY_2",
"use_qwen": false,
+ "qwen_key": "",
"deepseek_key": "sk-xxxxx",
- "scan_interval_minutes": 3,
- "initial_balance": 1000.0
+ "initial_balance": 1000.0,
+ "scan_interval_minutes": 3
}
],
- "coin_pool_api_url": "http://x.x.x.x:xxx/api/ai500/list?auth=YOUR_AUTH",
- "oi_top_api_url": "http://x.x.x.x:xxx/api/oi/top?auth=YOUR_AUTH",
+ "use_default_coins": true,
+ "coin_pool_api_url": "",
+ "oi_top_api_url": "",
"api_server_port": 8080
}
```
-**配置说明:**
-- `traders`: 可配置1-N个trader(单AI或多AI竞赛)
-- `id`: Trader唯一标识(用于日志目录)
-- `ai_model`: "qwen" 或 "deepseek"
-- `binance_api_key/secret_key`: 每个trader使用独立的币安账户
-- `initial_balance`: 初始余额(用于计算盈亏%)
-- `scan_interval_minutes`: 决策周期(建议3-5分钟)
-- `use_default_coins`: **true** = 使用默认8个主流币种 | **false** = 使用API币种池(新手推荐:true)
-- `coin_pool_api_url`: AI500币种池API(可选,当use_default_coins=true时忽略)
-- `oi_top_api_url`: OI Top持仓量API(可选,留空时跳过OI Top数据)
+**竞赛模式要求:**
+- 2个独立的币安合约账户(不同的API密钥)
+- 两种AI API密钥(Qwen + DeepSeek)
+- 更多测试资金(推荐:每个账户500+ USDT)
-**默认币种列表**(当 `use_default_coins: true` 时):
+---
+
+#### 📚 配置字段详解
+
+| 字段 | 说明 | 示例值 | 是否必填? |
+|-----|------|--------|-----------|
+| `id` | 此trader的唯一标识符 | `"my_trader"` | ✅ 是 |
+| `name` | 显示名称 | `"我的AI交易员"` | ✅ 是 |
+| `ai_model` | 使用的AI提供商 | `"deepseek"` 或 `"qwen"` | ✅ 是 |
+| `binance_api_key` | 币安API密钥 | `"abc123..."` | ✅ 是 |
+| `binance_secret_key` | 币安Secret密钥 | `"xyz789..."` | ✅ 是 |
+| `use_qwen` | 是否使用Qwen | `true` 或 `false` | ✅ 是 |
+| `deepseek_key` | DeepSeek API密钥 | `"sk-xxx"` | 使用DeepSeek时必填 |
+| `qwen_key` | Qwen API密钥 | `"sk-xxx"` | 使用Qwen时必填 |
+| `initial_balance` | 用于P/L计算的起始余额 | `1000.0` | ✅ 是 |
+| `scan_interval_minutes` | 决策频率(分钟) | `3`(建议3-5) | ✅ 是 |
+| `use_default_coins` | 使用内置币种列表
**✨ 智能默认:`true`** (v2.0.2+)
未提供API时自动启用 | `true` 或省略 | ❌ 否
(可选,自动默认) |
+| `coin_pool_api_url` | 自定义币种池API
*仅当`use_default_coins: false`时需要* | `""`(空) | ❌ 否 |
+| `oi_top_api_url` | 持仓量API
*可选补充数据* | `""`(空) | ❌ 否 |
+| `api_server_port` | Web仪表板端口 | `8080` | ✅ 是 |
+
+**默认交易币种**(当 `use_default_coins: true` 时):
- BTC、ETH、SOL、BNB、XRP、DOGE、ADA、HYPE
-### 5. 运行系统
+---
-**启动后端(AI交易系统 + API服务器):**
+#### ⚠️ 重要:`use_default_coins` 字段
+
+**智能默认行为(v2.0.2+):**
+
+系统现在会自动默认为`use_default_coins: true`,如果:
+- 您在config.json中未包含此字段,或
+- 您将其设为`false`但未提供`coin_pool_api_url`
+
+这让新手更友好!您甚至可以完全省略此字段。
+
+**配置示例:**
+
+✅ **选项1:显式设置(推荐以保持清晰)**
+```json
+"use_default_coins": true,
+"coin_pool_api_url": "",
+"oi_top_api_url": ""
+```
+
+✅ **选项2:省略字段(自动使用默认币种)**
+```json
+// 完全不包含"use_default_coins"
+"coin_pool_api_url": "",
+"oi_top_api_url": ""
+```
+
+⚙️ **高级:使用外部API**
+```json
+"use_default_coins": false,
+"coin_pool_api_url": "http://your-api.com/coins",
+"oi_top_api_url": "http://your-api.com/oi"
+```
+
+---
+
+### 6. 运行系统
+
+#### 🚀 启动系统(2个步骤)
+
+系统有**2个部分**需要分别运行:
+1. **后端**(AI交易大脑 + API)
+2. **前端**(Web监控仪表板)
+
+---
+
+#### **步骤1:启动后端**
+
+打开终端并运行:
```bash
+# 构建程序(首次运行或代码更改后)
go build -o nofx
+
+# 启动后端
./nofx
```
-**启动前端(Web Dashboard):**
+**您应该看到:**
-新开终端窗口:
+```
+🚀 启动自动交易系统...
+✓ Trader [my_trader] 已初始化
+✓ API服务器启动在端口 8080
+📊 开始交易监控...
+```
+
+**⚠️ 如果看到错误:**
+
+| 错误信息 | 解决方案 |
+|---------|---------|
+| `invalid API key` | 检查config.json中的币安API密钥 |
+| `TA-Lib not found` | 运行`brew install ta-lib`(macOS) |
+| `port 8080 already in use` | 修改config.json中的`api_server_port` |
+| `DeepSeek API error` | 验证DeepSeek API密钥和余额 |
+
+**✅ 后端运行正常的标志:**
+- 无错误信息
+- 出现"开始交易监控..."
+- 系统显示账户余额
+- 保持此终端窗口打开!
+
+---
+
+#### **步骤2:启动前端**
+
+打开**新的终端窗口**(保持第一个运行!),然后:
```bash
cd web
npm run dev
```
-**访问界面:**
+**您应该看到:**
+
```
-Web Dashboard: http://localhost:3000
-API Server: http://localhost:8080
+VITE v5.x.x ready in xxx ms
+
+➜ Local: http://localhost:3000/
+➜ Network: use --host to expose
```
-### 6. 停止系统
+**✅ 前端运行正常的标志:**
+- "Local: http://localhost:3000/"消息
+- 无错误信息
+- 也保持此终端窗口打开!
-在两个终端中分别按 `Ctrl+C`
+---
+
+#### **步骤3:访问仪表板**
+
+在Web浏览器中访问:
+
+**🌐 http://localhost:3000**
+
+**您将看到:**
+- 📊 实时账户余额
+- 📈 持仓(如果有)
+- 🤖 AI决策日志
+- 📉 净值曲线图
+
+**首次使用提示:**
+- 首次AI决策可能需要3-5分钟
+- 初始决策可能显示"观望"- 这是正常的
+- AI需要先分析市场状况
+
+---
+
+### 7. 监控系统
+
+**需要关注的内容:**
+
+✅ **健康系统标志:**
+- 后端终端每3-5分钟显示决策周期
+- 无持续错误信息
+- 账户余额更新
+- Web仪表板自动刷新
+
+⚠️ **警告标志:**
+- 重复的API错误
+- 10分钟以上无决策
+- 余额快速下降
+
+**检查系统状态:**
+
+```bash
+# 在新终端窗口中
+curl http://localhost:8080/health
+```
+
+应返回:`{"status":"ok"}`
+
+---
+
+### 8. 停止系统
+
+**优雅关闭(推荐):**
+
+1. 转到**后端终端**(第一个)
+2. 按`Ctrl+C`
+3. 等待"系统已停止"消息
+4. 转到**前端终端**(第二个)
+5. 按`Ctrl+C`
+
+**⚠️ 重要:**
+- 始终先停止后端
+- 关闭终端前等待确认
+- 不要强制退出(不要直接关闭终端)
---
@@ -292,66 +560,101 @@ API Server: http://localhost:8080
每个决策周期(默认3分钟),系统按以下流程运行:
```
-┌─────────────────────────────────────────────────────┐
-│ 1. 分析历史表现(最近20个周期) │
-├─────────────────────────────────────────────────────┤
-│ ✓ 计算整体胜率、平均盈利、盈亏比 │
-│ ✓ 统计各币种表现(胜率、平均盈亏) │
-│ ✓ 识别最佳/最差币种 │
-│ ✓ 列出最近5笔交易详情 │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 2. 获取账户状态 │
-├─────────────────────────────────────────────────────┤
-│ • 账户净值、可用余额 │
-│ • 持仓数量、总盈亏 │
-│ • 保证金使用率 │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 3. 分析现有持仓(如果有) │
-├─────────────────────────────────────────────────────┤
-│ • 获取每个持仓的市场数据 │
-│ • 计算技术指标(RSI、MACD、EMA) │
-│ • AI判断是否需要平仓 │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 4. 评估新机会(候选币种池) │
-├─────────────────────────────────────────────────────┤
-│ • 获取AI500高评分币种(前20个) │
-│ • 获取OI Top持仓增长币种(前20个) │
-│ • 合并去重,过滤低流动性币种(<15M) │
-│ • 批量获取市场数据和技术指标 │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 5. AI综合决策 │
-├─────────────────────────────────────────────────────┤
-│ • 查看历史反馈(胜率、最佳/最差币种) │
-│ • Chain of Thought 思维链分析 │
-│ • 输出决策:平仓/开仓/持有/观望 │
-│ • 包含杠杆、仓位、止损、止盈 │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 6. 执行交易 │
-├─────────────────────────────────────────────────────┤
-│ • 优先级排序:先平仓,再开仓 │
-│ • 精度自动适配(LOT_SIZE) │
-│ • 防止仓位叠加(同币种同方向拒绝开仓) │
-│ • 平仓后自动取消所有挂单 │
-└─────────────────────────────────────────────────────┘
- ↓
-┌─────────────────────────────────────────────────────┐
-│ 7. 记录日志 │
-├─────────────────────────────────────────────────────┤
-│ • 保存完整决策记录到 decision_logs/ │
-│ • 包含思维链、决策JSON、账户快照、执行结果 │
-└─────────────────────────────────────────────────────┘
+┌──────────────────────────────────────────────────────────┐
+│ 1. 📊 分析历史表现(最近20个周期) │
+├──────────────────────────────────────────────────────────┤
+│ ✓ 计算整体胜率、平均盈利、盈亏比 │
+│ ✓ 统计各币种表现(胜率、平均USDT盈亏) │
+│ ✓ 识别最佳/最差币种 │
+│ ✓ 列出最近5笔交易详情(含准确盈亏金额) │
+│ ✓ 计算夏普比率衡量风险调整后收益 │
+│ 📌 新增 (v2.0.2): 考虑杠杆的准确USDT盈亏计算 │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 2. 💰 获取账户状态 │
+├──────────────────────────────────────────────────────────┤
+│ • 账户净值、可用余额、未实现盈亏 │
+│ • 持仓数量、总盈亏(已实现+未实现) │
+│ • 保证金使用率(current/maximum) │
+│ • 风险评估指标 │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 3. 🔍 分析现有持仓(如果有) │
+├──────────────────────────────────────────────────────────┤
+│ • 获取每个持仓的市场数据(3分钟+4小时K线) │
+│ • 计算技术指标(RSI、MACD、EMA) │
+│ • 显示持仓时长(例如"持仓时长2小时15分钟") │
+│ • AI判断是否需要平仓(止盈、止损或调整) │
+│ 📌 新增 (v2.0.2): 追踪持仓时长帮助AI决策 │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 4. 🎯 评估新机会(候选币种池) │
+├──────────────────────────────────────────────────────────┤
+│ • 获取AI500高评分币种(前20个) │
+│ • 获取OI Top持仓增长币种(前20个) │
+│ • 合并去重,过滤低流动性币种(持仓量<15M USD) │
+│ • 批量获取市场数据和技术指标 │
+│ • 为每个候选币种准备完整的原始数据序列 │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 5. 🧠 AI综合决策 │
+├──────────────────────────────────────────────────────────┤
+│ • 查看历史反馈(胜率、盈亏比、最佳/最差币种) │
+│ • 接收所有原始序列数据(K线、指标、持仓量) │
+│ • Chain of Thought 思维链分析 │
+│ • 输出决策:平仓/开仓/持有/观望 │
+│ • 包含杠杆、仓位、止损、止盈参数 │
+│ 📌 新增 (v2.0.2): AI可自由分析原始序列,不受预定义指标限制 │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 6. ⚡ 执行交易 │
+├──────────────────────────────────────────────────────────┤
+│ • 优先级排序:先平仓,再开仓 │
+│ • 精度自动适配(LOT_SIZE规则) │
+│ • 防止仓位叠加(同币种同方向拒绝开仓) │
+│ • 平仓后自动取消所有挂单 │
+│ • 记录开仓时间用于持仓时长追踪 │
+│ 📌 新增 (v2.0.2): 追踪持仓开仓时间 │
+└──────────────────────────────────────────────────────────┘
+ ↓
+┌──────────────────────────────────────────────────────────┐
+│ 7. 📝 记录日志 │
+├──────────────────────────────────────────────────────────┤
+│ • 保存完整决策记录到 decision_logs/ │
+│ • 包含思维链、决策JSON、账户快照、执行结果 │
+│ • 存储完整持仓数据(数量、杠杆、开/平仓时间) │
+│ • 使用symbol_side键值防止多空冲突 │
+│ 📌 新增 (v2.0.2): 防止多空持仓冲突,考虑数量+杠杆 │
+└──────────────────────────────────────────────────────────┘
```
+### v2.0.2的核心改进
+
+**📌 持仓时长追踪:**
+- 系统现在追踪每个持仓已持有多长时间
+- 在用户提示中显示:"持仓时长2小时15分钟"
+- 帮助AI更好地判断何时退出仓位
+
+**📌 准确的盈亏计算:**
+- 之前:只显示百分比(100U@5% = 1000U@5% = 都显示"5.0")
+- 现在:真实USDT盈亏 = 仓位价值 × 价格变化% × 杠杆倍数
+- 示例:1000 USDT × 5% × 20倍 = 1000 USDT实际盈利
+
+**📌 增强的AI自由度:**
+- AI可以自由分析所有原始序列数据
+- 不再局限于预定义的指标组合
+- 可以执行自己的趋势分析、支撑位/阻力位计算
+
+**📌 改进的持仓追踪:**
+- 使用`symbol_side`键值(例如"BTCUSDT_long")
+- 防止同时持有多空仓时的冲突
+- 存储完整数据:数量、杠杆、开/平仓时间
+
---
## 🧠 AI自我学习示例
@@ -607,6 +910,50 @@ sudo apt-get install libta-lib0-dev
## 🔄 更新日志
+### v2.0.2 (2025-10-29)
+
+**关键Bug修复 - 交易历史记录与性能分析:**
+
+本版本修复了历史交易记录和性能分析系统中的**严重计算错误**,这些错误严重影响了盈利统计的准确性。
+
+**1. 盈亏计算 - 重大错误修复** (logger/decision_logger.go)
+- **问题**:之前只用百分比计算盈亏,完全忽略了仓位大小和杠杆倍数
+ - 示例:100 USDT仓位赚5%和1000 USDT仓位赚5%都显示`5.0`作为盈利
+ - 这导致性能分析完全不准确
+- **解决方案**:现在计算实际USDT盈亏金额
+ ```
+ 盈亏(USDT) = 仓位价值 × 价格变化% × 杠杆倍数
+ 示例: 1000 USDT × 5% × 20倍 = 1000 USDT实际盈利
+ ```
+- **影响**:胜率、盈亏比和夏普比率现在基于准确的USDT金额计算
+
+**2. 持仓追踪 - 缺失关键数据**
+- **问题**:开仓记录只存储了价格和时间,缺少数量和杠杆
+- **解决方案**:现在存储完整交易数据:
+ - `quantity`: 持仓数量(币数)
+ - `leverage`: 杠杆倍数(如20倍)
+ - 这些是准确计算盈亏的必要数据
+
+**3. 持仓键值逻辑 - 多空冲突**
+- **问题**:使用`symbol`作为持仓键值,导致同时持有多空仓时数据冲突
+ - 示例:BTCUSDT多头和BTCUSDT空头会互相覆盖
+- **解决方案**:改为`symbol_side`格式(如`BTCUSDT_long`、`BTCUSDT_short`)
+ - 现在可以正确区分多空持仓
+
+**4. 夏普比率计算 - 代码优化**
+- **问题**:使用自定义的牛顿迭代法计算平方根
+- **解决方案**:替换为标准库`math.Sqrt`
+ - 更可靠、易维护且高效
+
+**为什么这次更新很重要:**
+- ✅ 历史交易统计现在显示**真实的USDT盈亏**而不是无意义的百分比
+- ✅ 不同杠杆倍数的交易对比现在准确了
+- ✅ AI自我学习机制接收到正确的历史反馈
+- ✅ 盈亏比和夏普比率计算现在有意义了
+- ✅ 多持仓追踪(同时持有多空)现在正常工作
+
+**建议**:如果您在此更新前运行过系统,您的历史统计数据是不准确的。更新到v2.0.2后,新的交易将被正确计算。
+
### v2.0.1 (2025-10-29)
**Bug修复:**
@@ -674,7 +1021,7 @@ MIT License - 详见 [LICENSE](LICENSE) 文件
---
-**最后更新**: 2025-10-29
+**最后更新**: 2025-10-29 (v2.0.2)
**⚡ 用AI的力量,探索量化交易的可能性!**
diff --git a/config.json.example b/config.json.example
index 3a6392a0..eb817ea6 100644
--- a/config.json.example
+++ b/config.json.example
@@ -1,29 +1,21 @@
{
"traders": [
{
- "id": "qwen_trader",
- "name": "Qwen AI Trader",
- "ai_model": "qwen",
- "binance_api_key": "YOUR_BINANCE_API_KEY_1",
- "binance_secret_key": "YOUR_BINANCE_SECRET_KEY_1",
- "qwen_key": "YOUR_QWEN_API_KEY",
- "initial_balance": 1000.0,
- "scan_interval_minutes": 3
- },
- {
- "id": "deepseek_trader",
- "name": "DeepSeek AI Trader",
+ "id": "my_trader",
+ "name": "My AI Trader",
"ai_model": "deepseek",
- "binance_api_key": "YOUR_BINANCE_API_KEY_2",
- "binance_secret_key": "YOUR_BINANCE_SECRET_KEY_2",
+ "binance_api_key": "YOUR_BINANCE_API_KEY",
+ "binance_secret_key": "YOUR_BINANCE_SECRET_KEY",
+ "use_qwen": false,
"deepseek_key": "YOUR_DEEPSEEK_API_KEY",
+ "qwen_key": "",
"initial_balance": 1000.0,
"scan_interval_minutes": 3
}
],
- "use_default_coins": false,
- "coin_pool_api_url": "http://x.x.x.x:x/api/ai500/list?auth=",
- "oi_top_api_url": "http://x.x.x.x:x/api/oi/top?auth=",
+ "use_default_coins": true,
+ "coin_pool_api_url": "",
+ "oi_top_api_url": "",
"api_server_port": 8080,
"max_daily_loss": 5.0,
"max_drawdown": 10.0,
diff --git a/config/config.go b/config/config.go
index 489b0a83..efaf7a75 100644
--- a/config/config.go
+++ b/config/config.go
@@ -44,6 +44,11 @@ func LoadConfig(filename string) (*Config, error) {
return nil, fmt.Errorf("解析配置文件失败: %w", err)
}
+ // 设置默认值:如果use_default_coins未设置(为false)且没有配置coin_pool_api_url,则默认使用默认币种列表
+ if !config.UseDefaultCoins && config.CoinPoolAPIURL == "" {
+ config.UseDefaultCoins = true
+ }
+
// 验证配置
if err := config.Validate(); err != nil {
return nil, fmt.Errorf("配置验证失败: %w", err)