Docs: Enhance README files with beginner-friendly guides (4 languages)

**Configuration Improvements:**
- Add comprehensive "Get AI API Keys" section (DeepSeek + Qwen)
- Split configuration into Beginner Mode and Expert Mode
- Add step-by-step setup guides with placeholder tables
- Add configuration checklist and field explanations
- Document smart default behavior for use_default_coins (v2.0.2)
**Startup/Monitoring Guides:**
- Add detailed 2-step system startup instructions
- Include expected output and error troubleshooting tables
- Add monitoring and graceful shutdown procedures
- Provide health check commands
**AI Decision Flow Updates:**
- Enhance flow diagram with emojis and wider boxes
- Add v2.0.2 improvement markers throughout
- Document position duration tracking
- Document accurate USDT PnL calculation with leverage
- Document enhanced AI freedom for raw data analysis
- Document improved position tracking (symbol_side keys)
- Add "Key Improvements in v2.0.2" summary section
**Code Changes:**
- Simplify config.json.example to beginner-friendly single trader
- Implement smart default: use_default_coins auto-enables when omitted
- Set default to true if false without coin_pool_api_url
**Files Updated:**
- README.md (English): +559 lines
- README.zh-CN.md (Chinese): +527 lines
- README.ru.md (Russian): +634 lines
- README.uk.md (Ukrainian): +521 lines
- config.json.example: Simplified configuration
- config/config.go: Smart default logic
Total: 2068+ additions across all documentation
Co-Authored-By: tinkle-community <tinklefund@gmail.com>
This commit is contained in:
tinkle-community
2025-10-29 17:16:27 +08:00
parent 938926254f
commit 3e5a701859
6 changed files with 2066 additions and 202 deletions
+467 -90
View File
@@ -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<br>**✨ Smart Default: `true`** (v2.0.2+)<br>Auto-enabled if no API URL provided | `true` or omit | ❌ No<br>(Optional, auto-defaults) |
| `coin_pool_api_url` | Custom coin pool API<br>*Only needed when `use_default_coins: false`* | `""` (empty) | ❌ No |
| `oi_top_api_url` | Open interest API<br>*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!**
+631 -3
View File
@@ -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` | Использовать встроенный список монет<br>**✨ Умное значение по умолчанию: `true`** (v2.0.2+)<br>Автоматически включается без API | `true` или опустить | ❌ Нет<br>(Опционально, авто) |
| `coin_pool_api_url` | API пользовательского пула монет<br>*Требуется только при `use_default_coins: false`* | `""` (пусто) | ❌ Нет |
| `oi_top_api_url` | API открытого интереса<br>*Опциональные дополнительные данные* | `""` (пусто) | ❌ Нет |
| `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!**
+518 -3
View File
@@ -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` | Використовувати вбудований список монет<br>**✨ Розумне значення за замовчуванням: `true`** (v2.0.2+)<br>Автоматично включається без API | `true` або опустити | ❌ Ні<br>(Опціонально, авто) |
| `coin_pool_api_url` | API користувацького пулу монет<br>*Потрібно лише при `use_default_coins: false`* | `""` (пусто) | ❌ Ні |
| `oi_top_api_url` | API відкритого інтересу<br>*Опціональні додаткові дані* | `""` (пусто) | ❌ Ні |
| `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!**
+436 -89
View File
@@ -207,9 +207,117 @@ npm install
cd ..
```
### 4. 配置系统
### 4. 获取AI API密钥
创建 `config.json` 文件
在配置系统之前,您需要获取AI API密钥。请选择以下AI提供商之一
#### 选项1DeepSeek(推荐新手)
**为什么选择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` | 使用内置币种列表<br>**✨ 智能默认:`true`** (v2.0.2+)<br>未提供API时自动启用 | `true` 或省略 | ❌ 否<br>(可选,自动默认) |
| `coin_pool_api_url` | 自定义币种池API<br>*仅当`use_default_coins: false`时需要* | `""`(空) | ❌ 否 |
| `oi_top_api_url` | 持仓量API<br>*可选补充数据* | `""`(空) | ❌ 否 |
| `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的力量,探索量化交易的可能性!**
+9 -17
View File
@@ -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,
+5
View File
@@ -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)