# π€ NOFX - AI-Driven Crypto Futures Auto Trading Competition System
[](https://golang.org/)
[](https://reactjs.org/)
[](https://www.typescriptlang.org/)
[](LICENSE)
**Languages:** [English](README.md) | [δΈζ](README.zh-CN.md) | [Π£ΠΊΡΠ°ΡΠ½ΡΡΠΊΠ°](README.uk.md) | [Π ΡΡΡΠΊΠΈΠΉ](README.ru.md)
---
An automated crypto futures trading system powered by **DeepSeek/Qwen AI**, supporting **Binance, Hyperliquid, and Aster DEX exchanges**, **multi-AI model live trading competition**, featuring comprehensive market analysis, AI decision-making, **self-learning mechanism**, and professional Web monitoring interface.
> β οΈ **Risk Warning**: This system is experimental. AI auto-trading carries significant risks. Strongly recommended for learning/research purposes or testing with small amounts only!
## π₯ Developer Community
Join our Telegram developer community to discuss, share ideas, and get support:
**π¬ [NOFX Developer Community](https://t.me/nofx_dev_community)**
---
## π What's New (Latest Update)
### π Multi-Exchange Support!
NOFX now supports **three major exchanges**: Binance, Hyperliquid, and Aster DEX!
#### **Hyperliquid Exchange**
A high-performance decentralized perpetual futures exchange!
**Key Features:**
- β
Full trading support (long/short, leverage, stop-loss/take-profit)
- β
Automatic precision handling (order size & price)
- β
Unified trader interface (seamless exchange switching)
- β
Support for both mainnet and testnet
- β
No API keys needed - just your Ethereum private key
**Why Hyperliquid?**
- π₯ Lower fees than centralized exchanges
- π Non-custodial - you control your funds
- β‘ Fast execution with on-chain settlement
- π No KYC required
**Quick Start:**
1. Get your MetaMask private key (remove `0x` prefix)
2. Set `"exchange": "hyperliquid"` in config.json
3. Add `"hyperliquid_private_key": "your_key"`
4. Start trading!
See [Configuration Guide](#-alternative-using-hyperliquid-exchange) for details.
#### **Aster DEX Exchange** (NEW! v2.0.2)
A Binance-compatible decentralized perpetual futures exchange!
**Key Features:**
- β
Binance-style API (easy migration from Binance)
- β
Web3 wallet authentication (secure and decentralized)
- β
Full trading support with automatic precision handling
- β
Lower trading fees than CEX
- β
EVM-compatible (Ethereum, BSC, Polygon, etc.)
**Why Aster?**
- π― **Binance-compatible API** - minimal code changes required
- π **API Wallet System** - separate trading wallet for security
- π° **Competitive fees** - lower than most centralized exchanges
- π **Multi-chain support** - trade on your preferred EVM chain
**Quick Start:**
1. Visit [Aster API Wallet](https://www.asterdex.com/en/api-wallet)
2. Connect your main wallet and create an API wallet
3. Copy the API Signer address and Private Key
4. Set `"exchange": "aster"` in config.json
5. Add `"aster_user"`, `"aster_signer"`, and `"aster_private_key"`
---
## πΈ Screenshots
### π Competition Mode - Real-time AI Battle

*Multi-AI leaderboard with real-time performance comparison charts showing Qwen vs DeepSeek live trading battle*
### π Trader Details - Complete Trading Dashboard

*Professional trading interface with equity curves, live positions, and AI decision logs with expandable input prompts & chain-of-thought reasoning*
---
## β¨ Core Features
### π Multi-AI Competition Mode
- **Qwen vs DeepSeek** live trading battle
- Independent account management and decision logs
- Real-time performance comparison charts
- ROI PK and win rate statistics
### π§ AI Self-Learning Mechanism (NEW!)
- **Historical Feedback**: Analyzes last 20 cycles of trading performance before each decision
- **Smart Optimization**:
- Identifies best/worst performing coins
- Calculates win rate, profit/loss ratio, average profit
- Avoids repeating mistakes (consecutive losing coins)
- Reinforces successful strategies (high win rate patterns)
- **Dynamic Adjustment**: AI autonomously adjusts trading style based on historical performance
### π Intelligent Market Analysis
- **3-minute K-line**: Real-time price, EMA20, MACD, RSI(7)
- **4-hour K-line**: Long-term trend, EMA20/50, ATR, RSI(14)
- **Open Interest Analysis**: Market sentiment, capital flow judgment
- **OI Top Tracking**: Top 20 coins with fastest growing open interest
- **AI500 Coin Pool**: Automatic high-score coin screening
- **Liquidity Filter**: Auto-filters low liquidity coins (<15M USD position value)
### π― Professional Risk Control
- **Per-Coin Position Limit**:
- Altcoins β€ 1.5x account equity
- BTC/ETH β€ 10x account equity
- **Configurable Leverage** (v2.0.3+):
- Set maximum leverage in config.json
- Default: 5x for all coins (safe for subaccounts)
- Main accounts can increase: Altcoins up to 20x, BTC/ETH up to 50x
- β οΈ Binance subaccounts restricted to β€5x leverage
- **Margin Management**: Total usage β€90%, AI autonomous decision on usage rate
- **Risk-Reward Ratio**: Mandatory β₯1:2 (stop-loss:take-profit)
- **Prevent Position Stacking**: No duplicate opening of same coin/direction
### π¨ Professional UI
- **Professional Trading Interface**: Binance-style visual design
- **Dark Theme**: Classic color scheme (Gold #F0B90B + dark background)
- **Real-time Data**: 5-second refresh for accounts, positions, charts
- **Equity Curve**: Historical account value trend (USD/percentage toggle)
- **Performance Comparison Chart**: Real-time multi-AI ROI comparison
- **Smooth Animations**: Fluid hover, transition, and loading effects
### π Complete Decision Recording
- **Chain of Thought**: AI's complete reasoning process (CoT)
- **Historical Performance**: Overall win rate, average profit, profit/loss ratio
- **Recent Trades**: Last 5 trade details (entry price β exit price β P/L%)
- **Coin Statistics**: Per-coin performance (win rate, average P/L)
- **JSON Logs**: Complete decision records for post-trade analysis
---
## ποΈ Technical Architecture
```
nofx/
βββ main.go # Program entry (multi-trader manager)
βββ config.json # Configuration file (API keys, multi-trader config)
β
βββ api/ # HTTP API service
β βββ server.go # Gin framework, RESTful API
β
βββ trader/ # Trading core
β βββ auto_trader.go # Auto trading main controller (single trader)
β βββ binance_futures.go # Binance futures API wrapper
β
βββ manager/ # Multi-trader management
β βββ trader_manager.go # Manages multiple trader instances
β
βββ mcp/ # Model Context Protocol - AI communication
β βββ client.go # AI API client (DeepSeek/Qwen integration)
β
βββ decision/ # AI decision engine
β βββ engine.go # Decision logic with historical feedback
β
βββ market/ # Market data fetching
β βββ data.go # Market data & technical indicators (K-line, RSI, MACD)
β
βββ pool/ # Coin pool management
β βββ coin_pool.go # AI500 + OI Top merged pool
β
βββ logger/ # Logging system
β βββ decision_logger.go # Decision recording + performance analysis
β
βββ decision_logs/ # Decision log storage
β βββ qwen_trader/ # Qwen trader logs
β βββ deepseek_trader/ # DeepSeek trader logs
β
βββ web/ # React frontend
βββ src/
β βββ components/ # React components
β β βββ EquityChart.tsx # Equity curve chart
β β βββ ComparisonChart.tsx # Multi-AI comparison chart
β β βββ CompetitionPage.tsx # Competition leaderboard
β βββ lib/api.ts # API call wrapper
β βββ types/index.ts # TypeScript types
β βββ index.css # Binance-style CSS
β βββ App.tsx # Main app
βββ package.json
```
### Core Dependencies
**Backend (Go)**
- `github.com/adshao/go-binance/v2` - Binance API client
- `github.com/markcheno/go-talib` - Technical indicator calculation (TA-Lib)
- `github.com/gin-gonic/gin` - HTTP API framework
**Frontend (React + TypeScript)**
- `react` + `react-dom` - UI framework
- `recharts` - Chart library (equity curve, comparison charts)
- `swr` - Data fetching and caching
- `tailwindcss` - CSS framework
---
## π° Register Binance Account (Save on Fees!)
Before using this system, you need a Binance Futures account. **Use our referral link to save on trading fees:**
**π [Register Binance - Get Fee Discount](https://www.binance.com/join?ref=TINKLEVIP)**
### Registration Steps:
1. **Click the link above** to visit Binance registration page
2. **Complete registration** with email/phone number
3. **Complete KYC verification** (required for futures trading)
4. **Enable Futures account**:
- Go to Binance homepage β Derivatives β USD-M Futures
- Click "Open Now" to activate futures trading
5. **Create API Key**:
- Go to Account β API Management
- Create new API key, **enable "Futures" permission**
- Save API Key and Secret Key (needed for config.json)
- **Important**: Whitelist your IP address for security
### Fee Discount Benefits:
- β
**Spot trading**: Up to 30% fee discount
- β
**Futures trading**: Up to 30% fee discount
- β
**Lifetime validity**: Permanent discount on all trades
---
## π Quick Start
### π³ Option A: Docker One-Click Deployment (EASIEST - Recommended for Beginners!)
**β‘ Start trading in 3 simple steps with Docker - No installation needed!**
Docker automatically handles all dependencies (Go, Node.js, TA-Lib) and environment setup. Perfect for beginners!
#### Step 1: Prepare Configuration
```bash
# Copy configuration template
cp config.json.example config.json
# Edit and fill in your API keys
nano config.json # or use any editor
```
#### Step 2: One-Click Start
```bash
# Option 1: Use convenience script (Recommended)
chmod +x start.sh
./start.sh start --build
> #### Docker Compose Version Notes
>
> **This project uses Docker Compose V2 syntax (with spaces)**
>
> If you have the older standalone `docker-compose` installed, please upgrade to Docker Desktop or Docker 20.10+
# Option 2: Use docker compose directly
docker compose up -d --build
```
#### Step 3: Access Dashboard
Open your browser and visit: **http://localhost:3000**
**That's it! π** Your AI trading system is now running!
#### Manage Your System
```bash
./start.sh logs # View logs
./start.sh status # Check status
./start.sh stop # Stop services
./start.sh restart # Restart services
```
**π For detailed Docker deployment guide, troubleshooting, and advanced configuration:**
- **English**: See [DOCKER_DEPLOY.en.md](DOCKER_DEPLOY.en.md)
- **δΈζ**: ζ₯η [DOCKER_DEPLOY.md](DOCKER_DEPLOY.md)
---
### π¦ Option B: Manual Installation (For Developers)
**Note**: If you used Docker deployment above, skip this section. Manual installation is only needed if you want to modify the code or run without Docker.
### 1. Environment Requirements
- **Go 1.21+**
- **Node.js 18+**
- **TA-Lib** library (technical indicator calculation)
#### Installing TA-Lib
**macOS:**
```bash
brew install ta-lib
```
**Ubuntu/Debian:**
```bash
sudo apt-get install libta-lib0-dev
```
**Other systems**: Refer to [TA-Lib Official Documentation](https://github.com/markcheno/go-talib)
### 2. Clone the Project
```bash
git clone https://github.com/tinkle-community/nofx.git
cd nofx
```
### 3. Install Dependencies
**Backend:**
```bash
go mod download
```
**Frontend:**
```bash
cd web
npm install
cd ..
```
### 4. Get AI API Keys
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
}
],
"leverage": {
"btc_eth_leverage": 5,
"altcoin_leverage": 5
},
"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`)
---
#### π· Alternative: Using Hyperliquid Exchange
**NOFX also supports Hyperliquid** - a decentralized perpetual futures exchange. To use Hyperliquid instead of Binance:
**Step 1**: Get your Ethereum private key (for Hyperliquid authentication)
1. Open **MetaMask** (or any Ethereum wallet)
2. Export your private key
3. **Remove the `0x` prefix** from the key
4. Fund your wallet on [Hyperliquid](https://hyperliquid.xyz)
**Step 2**: Configure `config.json` for Hyperliquid
```json
{
"traders": [
{
"id": "hyperliquid_trader",
"name": "My Hyperliquid Trader",
"enabled": true,
"ai_model": "deepseek",
"exchange": "hyperliquid",
"hyperliquid_private_key": "your_private_key_without_0x",
"hyperliquid_wallet_addr": "your_ethereum_address",
"hyperliquid_testnet": false,
"deepseek_key": "sk-xxxxxxxxxxxxx",
"initial_balance": 1000.0,
"scan_interval_minutes": 3
}
],
"use_default_coins": true,
"api_server_port": 8080
}
```
**Key Differences from Binance Config:**
- Replace `binance_api_key` + `binance_secret_key` with `hyperliquid_private_key`
- Add `"exchange": "hyperliquid"` field
- Set `hyperliquid_testnet: false` for mainnet (or `true` for testnet)
**β οΈ Security Warning**: Never share your private key! Use a dedicated wallet for trading, not your main wallet.
---
#### πΆ Alternative: Using Aster DEX Exchange
**NOFX also supports Aster DEX** - a Binance-compatible decentralized perpetual futures exchange!
**Why Choose Aster?**
- π― Binance-compatible API (easy migration)
- π API Wallet security system
- π° Lower trading fees
- π Multi-chain support (ETH, BSC, Polygon)
- π No KYC required
**Step 1**: Create Aster API Wallet
1. Visit [Aster API Wallet](https://www.asterdex.com/en/api-wallet)
2. Connect your main wallet (MetaMask, WalletConnect, etc.)
3. Click "Create API Wallet"
4. **Save these 3 items immediately:**
- Main Wallet address (User)
- API Wallet address (Signer)
- API Wallet Private Key (β οΈ shown only once!)
**Step 2**: Configure `config.json` for Aster
```json
{
"traders": [
{
"id": "aster_deepseek",
"name": "Aster DeepSeek Trader",
"enabled": true,
"ai_model": "deepseek",
"exchange": "aster",
"aster_user": "0x63DD5aCC6b1aa0f563956C0e534DD30B6dcF7C4e",
"aster_signer": "0x21cF8Ae13Bb72632562c6Fff438652Ba1a151bb0",
"aster_private_key": "4fd0a42218f3eae43a6ce26d22544e986139a01e5b34a62db53757ffca81bae1",
"deepseek_key": "sk-xxxxxxxxxxxxx",
"initial_balance": 1000.0,
"scan_interval_minutes": 3
}
],
"use_default_coins": true,
"api_server_port": 8080,
"leverage": {
"btc_eth_leverage": 5,
"altcoin_leverage": 5
}
}
```
**Key Configuration Fields:**
- `"exchange": "aster"` - Set exchange to Aster
- `aster_user` - Your main wallet address
- `aster_signer` - API wallet address (from Step 1)
- `aster_private_key` - API wallet private key (without `0x` prefix)
**π For detailed setup instructions, see**: [Aster Integration Guide](ASTER_INTEGRATION.md)
**β οΈ Security Notes**:
- API wallet is separate from your main wallet (extra security layer)
- Never share your API private key
- You can revoke API wallet access anytime at [asterdex.com](https://www.asterdex.com/en/api-wallet)
---
#### βοΈ Expert Mode: Multi-Trader Competition
For running multiple AI traders competing against each other:
```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
}
```
**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)
---
#### π Configuration Field Explanations
| Field | Description | Example Value | Required? |
|-------|-------------|---------------|-----------|
| `id` | Unique identifier for this trader | `"my_trader"` | β
Yes |
| `name` | Display name | `"My AI Trader"` | β
Yes |
| `enabled` | Whether this trader is enabled
Set to `false` to skip startup | `true` or `false` | β
Yes |
| `ai_model` | AI provider to use | `"deepseek"` or `"qwen"` or `"custom"` | β
Yes |
| `exchange` | Exchange to use | `"binance"` or `"hyperliquid"` or `"aster"` | β
Yes |
| `binance_api_key` | Binance API key | `"abc123..."` | Required when using Binance |
| `binance_secret_key` | Binance Secret key | `"xyz789..."` | Required when using Binance |
| `hyperliquid_private_key` | Hyperliquid private key
β οΈ Remove `0x` prefix | `"your_key..."` | Required when using Hyperliquid |
| `hyperliquid_wallet_addr` | Hyperliquid wallet address | `"0xabc..."` | Required when using Hyperliquid |
| `hyperliquid_testnet` | Use testnet | `true` or `false` | β No (defaults to false) |
| `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 |
| **`leverage`** | **Leverage configuration (v2.0.3+)** | See below | β
Yes |
| `btc_eth_leverage` | Maximum leverage for BTC/ETH
β οΈ Subaccounts: β€5x | `5` (default, safe)
`50` (main account max) | β
Yes |
| `altcoin_leverage` | Maximum leverage for altcoins
β οΈ Subaccounts: β€5x | `5` (default, safe)
`20` (main account max) | β
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
---
#### βοΈ Leverage Configuration (v2.0.3+)
**What is leverage configuration?**
The leverage settings control the maximum leverage the AI can use for each trade. This is crucial for risk management, especially for Binance subaccounts which have leverage restrictions.
**Configuration format:**
```json
"leverage": {
"btc_eth_leverage": 5, // Maximum leverage for BTC and ETH
"altcoin_leverage": 5 // Maximum leverage for all other coins
}
```
**β οΈ Important: Binance Subaccount Restrictions**
- **Subaccounts**: Limited to **β€5x leverage** by Binance
- **Main accounts**: Can use up to 20x (altcoins) or 50x (BTC/ETH)
- If you're using a subaccount and set leverage >5x, trades will **fail** with error: `Subaccounts are restricted from using leverage greater than 5x`
**Recommended settings:**
| Account Type | BTC/ETH Leverage | Altcoin Leverage | Risk Level |
|-------------|------------------|------------------|------------|
| **Subaccount** | `5` | `5` | β
Safe (default) |
| **Main (Conservative)** | `10` | `10` | π‘ Medium |
| **Main (Aggressive)** | `20` | `15` | π΄ High |
| **Main (Maximum)** | `50` | `20` | π΄π΄ Very High |
**Examples:**
**Safe configuration (subaccount or conservative):**
```json
"leverage": {
"btc_eth_leverage": 5,
"altcoin_leverage": 5
}
```
**Aggressive configuration (main account only):**
```json
"leverage": {
"btc_eth_leverage": 20,
"altcoin_leverage": 15
}
```
**How AI uses leverage:**
- AI can choose **any leverage from 1x up to your configured maximum**
- For example, with `altcoin_leverage: 20`, AI might decide to use 5x, 10x, or 20x based on market conditions
- The configuration sets the **upper limit**, not a fixed value
- AI considers volatility, risk-reward ratio, and account balance when choosing leverage
---
#### β οΈ 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
```
**What you should see:**
```
π ε―ε¨θͺε¨δΊ€ζη³»η»...
β 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
```
**What you should see:**
```
VITE v5.x.x ready in xxx ms
β Local: http://localhost:3000/
β Network: use --host to expose
```
**β
Frontend is running when you see:**
- "Local: http://localhost:3000/" message
- No error messages
- Keep this terminal window open too!
---
#### **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 executes the following intelligent process:
```
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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
### Historical Feedback (Auto-added to Prompt)
```markdown
## π Historical Performance Feedback
### Overall Performance
- **Total Trades**: 15 (Profit: 8 | Loss: 7)
- **Win Rate**: 53.3%
- **Average Profit**: +3.2% | Average Loss: -2.1%
- **Profit/Loss Ratio**: 1.52:1
### Recent Trades
1. BTCUSDT LONG: 95000.0000 β 97500.0000 = +2.63% β
2. ETHUSDT SHORT: 3500.0000 β 3450.0000 = +1.43% β
3. SOLUSDT LONG: 185.0000 β 180.0000 = -2.70% β
4. BNBUSDT LONG: 610.0000 β 625.0000 = +2.46% β
5. ADAUSDT LONG: 0.8500 β 0.8300 = -2.35% β
### Coin Performance
- **Best**: BTCUSDT (Win rate 75%, avg +2.5%)
- **Worst**: SOLUSDT (Win rate 25%, avg -1.8%)
```
### How AI Uses Feedback
1. **Avoid consecutive losers**: Seeing SOLUSDT with 3 consecutive stop-losses, AI avoids or is more cautious
2. **Reinforce successful strategies**: BTC breakout long with 75% win rate, AI continues this pattern
3. **Dynamic style adjustment**: Win rate <40% β conservative; P/L ratio >2 β maintain aggressive
4. **Identify market conditions**: Consecutive losses may indicate choppy market, reduce trading frequency
---
## π Web Interface Features
### 1. Competition Page
- **π Leaderboard**: Real-time ROI ranking, golden border highlights leader
- **π Performance Comparison**: Dual AI ROI curve comparison (purple vs blue)
- **βοΈ Head-to-Head**: Direct comparison showing lead margin
- **Real-time Data**: Total equity, P/L%, position count, margin usage
### 2. Details Page
- **Equity Curve**: Historical trend chart (USD/percentage toggle)
- **Statistics**: Total cycles, success/fail, open/close stats
- **Position Table**: All position details (entry price, current price, P/L%, liquidation price)
- **AI Decision Logs**: Recent decision records (expandable CoT)
### 3. Real-time Updates
- System status, account info, position list: **5-second refresh**
- Decision logs, statistics: **10-second refresh**
- Equity charts: **10-second refresh**
---
## ποΈ API Endpoints
### Competition Related
```bash
GET /api/competition # Competition leaderboard (all traders)
GET /api/traders # Trader list
```
### Single Trader Related
```bash
GET /api/status?trader_id=xxx # System status
GET /api/account?trader_id=xxx # Account info
GET /api/positions?trader_id=xxx # Position list
GET /api/equity-history?trader_id=xxx # Equity history (chart data)
GET /api/decisions/latest?trader_id=xxx # Latest 5 decisions
GET /api/statistics?trader_id=xxx # Statistics
```
### System Endpoints
```bash
GET /health # Health check
GET /api/config # System configuration
```
---
## β οΈ Important Risk Warnings
### Trading Risks
1. **Cryptocurrency markets are extremely volatile**, AI decisions don't guarantee profit
2. **Futures trading uses leverage**, losses may exceed principal
3. **Extreme market conditions** may lead to liquidation risk
4. **Funding rates** may affect holding costs
5. **Liquidity risk**: Some coins may experience slippage
### Technical Risks
1. **Network latency** may cause price slippage
2. **API rate limits** may affect trade execution
3. **AI API timeouts** may cause decision failures
4. **System bugs** may trigger unexpected behavior
### Usage Recommendations
β
**Recommended**
- Use only funds you can afford to lose for testing
- Start with small amounts (recommended 100-500 USDT)
- Regularly check system operation status
- Monitor account balance changes
- Analyze AI decision logs to understand strategy
β **Not Recommended**
- Invest all funds or borrowed money
- Run unsupervised for long periods
- Blindly trust AI decisions
- Use without understanding the system
- Run during extreme market volatility
---
## π οΈ Common Issues
### 1. Compilation error: TA-Lib not found
**Solution**: Install TA-Lib library
```bash
# macOS
brew install ta-lib
# Ubuntu
sudo apt-get install libta-lib0-dev
```
### 2. Precision error: Precision is over the maximum
**Solution**: System auto-handles precision from Binance LOT_SIZE. If error persists, check network connection.
### 3. AI API timeout
**Solution**:
- Check if API key is correct
- Check network connection (may need proxy)
- System timeout is set to 120 seconds
### 4. Frontend can't connect to backend
**Solution**:
- Ensure backend is running (http://localhost:8080)
- Check if port 8080 is occupied
- Check browser console for errors
### 5. Coin pool API failure
**Solution**:
- Coin pool API is optional
- If API fails, system uses default mainstream coins (BTC, ETH, etc.)
- Check API URL and auth parameter in config.json
---
## π Performance Optimization Tips
1. **Set reasonable decision cycle**: Recommended 3-5 minutes, avoid over-trading
2. **Control candidate coin count**: System defaults to AI500 top 20 + OI Top top 20
3. **Regularly clean logs**: Avoid excessive disk usage
4. **Monitor API call count**: Avoid triggering Binance rate limits
5. **Test with small capital**: First test with 100-500 USDT for strategy validation
---
## π 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.2 (2025-10-29)
**Bug Fixes:**
- β
Fixed Aster exchange precision error (code -1111: "Precision is over the maximum defined for this asset")
- β
Improved price and quantity formatting to match exchange precision requirements
- β
Added detailed precision processing logs for debugging
- β
Enhanced all order functions (OpenLong, OpenShort, CloseLong, CloseShort, SetStopLoss, SetTakeProfit) with proper precision handling
**Technical Details:**
- Added `formatFloatWithPrecision` function to convert float64 to strings with correct precision
- Price and quantity parameters are now formatted according to exchange's `pricePrecision` and `quantityPrecision` specifications
- Trailing zeros are removed from formatted values to optimize API requests
### v2.0.1 (2025-10-29)
**Bug Fixes:**
- β
Fixed ComparisonChart data processing logic - switched from cycle_number to timestamp grouping
- β
Resolved chart freezing issue when backend restarts and cycle_number resets
- β
Improved chart data display - now shows all historical data points chronologically
- β
Enhanced debugging logs for better troubleshooting
### v2.0.0 (2025-10-28)
**Major Updates:**
- β
AI self-learning mechanism (historical feedback, performance analysis)
- β
Multi-trader competition mode (Qwen vs DeepSeek)
- β
Binance-style UI (complete Binance interface imitation)
- β
Performance comparison charts (real-time ROI comparison)
- β
Risk control optimization (per-coin position limit adjustment)
**Bug Fixes:**
- Fixed hardcoded initial balance issue
- Fixed multi-trader data sync issue
- Optimized chart data alignment (using cycle_number)
### v1.0.0 (2025-10-27)
- Initial release
- Basic AI trading functionality
- Decision logging system
- Simple Web interface
---
## π License
MIT License - See [LICENSE](LICENSE) file for details
---
## π€ Contributing
Issues and Pull Requests are welcome!
### Development Guide
1. Fork the project
2. Create feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to branch (`git push origin feature/AmazingFeature`)
5. Open Pull Request
---
## π¬ Contact
- **Twitter/X**: [@Web3Tinkle](https://x.com/Web3Tinkle)
- **GitHub Issues**: [Submit an Issue](https://github.com/tinkle-community/nofx/issues)
---
## π Acknowledgments
- [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/) - Technical indicator library
- [Recharts](https://recharts.org/) - React chart library
---
**Last Updated**: 2025-10-29 (v2.0.3)
**β‘ Explore the possibilities of quantitative trading with the power of AI!**
---
## β Star History
[](https://star-history.com/#tinkle-community/nofx&Date)