mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-15 16:56:56 +08:00
Update readmes.
This commit is contained in:
@@ -8,8 +8,10 @@ feat: Add Aster DEX exchange support + fix precision issues
|
|||||||
|
|
||||||
## Bug Fixes
|
## Bug Fixes
|
||||||
- Fix precision error (code -1111) for all order types
|
- Fix precision error (code -1111) for all order types
|
||||||
|
- Fix "Quantity less than zero" error (code -4003) when closing positions
|
||||||
- Implement proper float-to-string conversion with exchange precision
|
- Implement proper float-to-string conversion with exchange precision
|
||||||
- Add automatic precision fetching from /exchangeInfo endpoint
|
- Add automatic precision fetching from /exchangeInfo endpoint
|
||||||
|
- Add quantity=0 handling in CloseLong/CloseShort (auto-detect position size)
|
||||||
- Remove trailing zeros from formatted values
|
- Remove trailing zeros from formatted values
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|||||||
164
README.ru.md
164
README.ru.md
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Автоматизированная система торговли фьючерсами Binance на базе **DeepSeek/Qwen AI**, поддерживающая **конкуренцию нескольких AI-моделей в реальной торговле**, с полным анализом рынка, принятием решений AI, **механизмом самообучения** и профессиональным веб-интерфейсом мониторинга.
|
Автоматизированная система торговли криптовалютными фьючерсами на базе **DeepSeek/Qwen AI**, поддерживающая **Binance, Hyperliquid и Aster DEX биржи**, **конкуренцию нескольких AI-моделей в реальной торговле**, с полным анализом рынка, принятием решений AI, **механизмом самообучения** и профессиональным веб-интерфейсом мониторинга.
|
||||||
|
|
||||||
> ⚠️ **Предупреждение о рисках**: Эта система экспериментальная. Автоматическая торговля с AI несет значительные риски. Настоятельно рекомендуется использовать только для обучения/исследований или тестирования с небольшими суммами!
|
> ⚠️ **Предупреждение о рисках**: Эта система экспериментальная. Автоматическая торговля с AI несет значительные риски. Настоятельно рекомендуется использовать только для обучения/исследований или тестирования с небольшими суммами!
|
||||||
|
|
||||||
@@ -21,6 +21,63 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 🆕 Последние обновления
|
||||||
|
|
||||||
|
### 🚀 Поддержка нескольких бирж!
|
||||||
|
|
||||||
|
NOFX теперь поддерживает **три основные биржи**: Binance, Hyperliquid и Aster DEX!
|
||||||
|
|
||||||
|
#### **Биржа Hyperliquid**
|
||||||
|
|
||||||
|
Высокопроизводительная децентрализованная биржа бессрочных фьючерсов!
|
||||||
|
|
||||||
|
**Ключевые особенности:**
|
||||||
|
- ✅ Полная поддержка торговли (лонг/шорт, плечо, стоп-лосс/тейк-профит)
|
||||||
|
- ✅ Автоматическая обработка точности (размер и цена ордера)
|
||||||
|
- ✅ Единый интерфейс трейдера (бесшовное переключение бирж)
|
||||||
|
- ✅ Поддержка мейннета и тестнета
|
||||||
|
- ✅ Не нужны API ключи - только приватный ключ Ethereum
|
||||||
|
|
||||||
|
**Почему Hyperliquid?**
|
||||||
|
- 🔥 Более низкие комиссии чем на централизованных биржах
|
||||||
|
- 🔒 Без хранения - вы контролируете свои средства
|
||||||
|
- ⚡ Быстрое исполнение с расчетом на цепи
|
||||||
|
- 🌍 Не нужна KYC
|
||||||
|
|
||||||
|
**Быстрый старт:**
|
||||||
|
1. Получите приватный ключ MetaMask (удалите префикс `0x`)
|
||||||
|
2. Установите `"exchange": "hyperliquid"` в config.json
|
||||||
|
3. Добавьте `"hyperliquid_private_key": "your_key"`
|
||||||
|
4. Начните торговать!
|
||||||
|
|
||||||
|
См. [Руководство по конфигурации](#-альтернатива-использование-биржи-hyperliquid).
|
||||||
|
|
||||||
|
#### **Биржа Aster DEX** (НОВОЕ! v2.0.2)
|
||||||
|
|
||||||
|
Децентрализованная биржа бессрочных фьючерсов, совместимая с Binance!
|
||||||
|
|
||||||
|
**Ключевые особенности:**
|
||||||
|
- ✅ API в стиле Binance (легкая миграция с Binance)
|
||||||
|
- ✅ Web3 аутентификация кошелька (безопасно и децентрализованно)
|
||||||
|
- ✅ Полная поддержка торговли с автоматической обработкой точности
|
||||||
|
- ✅ Более низкие комиссии за торговлю чем CEX
|
||||||
|
- ✅ Совместимость с EVM (Ethereum, BSC, Polygon и т.д.)
|
||||||
|
|
||||||
|
**Почему Aster?**
|
||||||
|
- 🎯 **API совместимый с Binance** - нужны минимальные изменения кода
|
||||||
|
- 🔐 **Система API кошелька** - отдельный торговый кошелек для безопасности
|
||||||
|
- 💰 **Конкурентные комиссии** - ниже чем большинство централизованных бирж
|
||||||
|
- 🌐 **Поддержка нескольких цепей** - торгуйте на вашей любимой EVM цепи
|
||||||
|
|
||||||
|
**Быстрый старт:**
|
||||||
|
1. Посетите [Aster API Wallet](https://www.asterdex.com/en/api-wallet)
|
||||||
|
2. Подключите основной кошелек и создайте API кошелек
|
||||||
|
3. Скопируйте адрес API Signer и приватный ключ
|
||||||
|
4. Установите `"exchange": "aster"` в config.json
|
||||||
|
5. Добавьте `"aster_user"`, `"aster_signer"` и `"aster_private_key"`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## ✨ Основные возможности
|
## ✨ Основные возможности
|
||||||
|
|
||||||
### 🏆 Режим конкуренции нескольких AI
|
### 🏆 Режим конкуренции нескольких AI
|
||||||
@@ -308,6 +365,111 @@ cp config.json.example config.json
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
#### 🔷 Альтернатива: Использование биржи Hyperliquid
|
||||||
|
|
||||||
|
**NOFX также поддерживает Hyperliquid** - децентрализованную биржу бессрочных фьючерсов. Чтобы использовать Hyperliquid вместо Binance:
|
||||||
|
|
||||||
|
**Шаг 1**: Получите приватный ключ Ethereum (для аутентификации Hyperliquid)
|
||||||
|
|
||||||
|
1. Откройте **MetaMask** (или любой Ethereum кошелек)
|
||||||
|
2. Экспортируйте приватный ключ
|
||||||
|
3. **Удалите префикс `0x`** из ключа
|
||||||
|
4. Пополните кошелек на [Hyperliquid](https://hyperliquid.xyz)
|
||||||
|
|
||||||
|
**Шаг 2**: Настройте `config.json` для Hyperliquid
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"traders": [
|
||||||
|
{
|
||||||
|
"id": "hyperliquid_trader",
|
||||||
|
"name": "My Hyperliquid Trader",
|
||||||
|
"ai_model": "deepseek",
|
||||||
|
"exchange": "hyperliquid",
|
||||||
|
"hyperliquid_private_key": "your_private_key_without_0x",
|
||||||
|
"hyperliquid_testnet": false,
|
||||||
|
"deepseek_key": "sk-xxxxxxxxxxxxx",
|
||||||
|
"initial_balance": 1000.0,
|
||||||
|
"scan_interval_minutes": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"use_default_coins": true,
|
||||||
|
"api_server_port": 8080
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ключевые отличия от конфигурации Binance:**
|
||||||
|
- Замените `binance_api_key` + `binance_secret_key` на `hyperliquid_private_key`
|
||||||
|
- Добавьте поле `"exchange": "hyperliquid"`
|
||||||
|
- Установите `hyperliquid_testnet: false` для мейннета (или `true` для тестнета)
|
||||||
|
|
||||||
|
**⚠️ Предупреждение безопасности**: Никогда не делитесь приватным ключом! Используйте отдельный кошелек для торговли, а не основной.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 🔶 Альтернатива: Использование биржи Aster DEX
|
||||||
|
|
||||||
|
**NOFX также поддерживает Aster DEX** - децентрализованную биржу бессрочных фьючерсов, совместимую с Binance!
|
||||||
|
|
||||||
|
**Почему выбрать Aster?**
|
||||||
|
- 🎯 API совместимый с Binance (легкая миграция)
|
||||||
|
- 🔐 Система безопасности API кошелька
|
||||||
|
- 💰 Более низкие комиссии за торговлю
|
||||||
|
- 🌐 Поддержка нескольких цепей (ETH, BSC, Polygon)
|
||||||
|
- 🌍 Не нужна KYC
|
||||||
|
|
||||||
|
**Шаг 1**: Создайте Aster API кошелек
|
||||||
|
|
||||||
|
1. Посетите [Aster API Wallet](https://www.asterdex.com/en/api-wallet)
|
||||||
|
2. Подключите основной кошелек (MetaMask, WalletConnect и т.д.)
|
||||||
|
3. Нажмите "Создать API кошелек"
|
||||||
|
4. **Сохраните эти 3 элемента немедленно:**
|
||||||
|
- Адрес основного кошелька (User)
|
||||||
|
- Адрес API кошелька (Signer)
|
||||||
|
- Приватный ключ API кошелька (⚠️ показывается только один раз!)
|
||||||
|
|
||||||
|
**Шаг 2**: Настройте `config.json` для Aster
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"traders": [
|
||||||
|
{
|
||||||
|
"id": "aster_deepseek",
|
||||||
|
"name": "Aster DeepSeek Trader",
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ключевые поля конфигурации:**
|
||||||
|
- `"exchange": "aster"` - Установите биржу на Aster
|
||||||
|
- `aster_user` - Адрес вашего основного кошелька
|
||||||
|
- `aster_signer` - Адрес API кошелька (из Шага 1)
|
||||||
|
- `aster_private_key` - Приватный ключ API кошелька (без префикса `0x`)
|
||||||
|
|
||||||
|
**⚠️ Примечания безопасности**:
|
||||||
|
- API кошелек отдельный от основного (дополнительный уровень безопасности)
|
||||||
|
- Никогда не делитесь приватным ключом API
|
||||||
|
- Вы можете отозвать доступ API кошелька в любое время на [asterdex.com](https://www.asterdex.com/en/api-wallet)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
#### ⚔️ Экспертный режим: Конкуренция нескольких трейдеров
|
#### ⚔️ Экспертный режим: Конкуренция нескольких трейдеров
|
||||||
|
|
||||||
Для запуска нескольких AI трейдеров, конкурирующих друг с другом:
|
Для запуска нескольких AI трейдеров, конкурирующих друг с другом:
|
||||||
|
|||||||
164
README.uk.md
164
README.uk.md
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Автоматизована система торгівлі ф'ючерсами Binance на базі **DeepSeek/Qwen AI**, що підтримує **змагання кількох AI-моделей у реальній торгівлі**, з повним аналізом ринку, прийняттям рішень AI, **механізмом самонавчання** та професійним веб-інтерфейсом моніторингу.
|
Автоматизована система торгівлі криптовалютними ф'ючерсами на базі **DeepSeek/Qwen AI**, що підтримує **Binance, Hyperliquid та Aster DEX біржі**, **змагання кількох AI-моделей у реальній торгівлі**, з повним аналізом ринку, прийняттям рішень AI, **механізмом самонавчання** та професійним веб-інтерфейсом моніторингу.
|
||||||
|
|
||||||
> ⚠️ **Попередження про ризики**: Ця система експериментальна. Автоматична торгівля з AI несе значні ризики. Наполегливо рекомендується використовувати лише для навчання/досліджень або тестування з невеликими сумами!
|
> ⚠️ **Попередження про ризики**: Ця система експериментальна. Автоматична торгівля з AI несе значні ризики. Наполегливо рекомендується використовувати лише для навчання/досліджень або тестування з невеликими сумами!
|
||||||
|
|
||||||
@@ -21,6 +21,63 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 🆕 Останні оновлення
|
||||||
|
|
||||||
|
### 🚀 Підтримка кількох бірж!
|
||||||
|
|
||||||
|
NOFX тепер підтримує **три основні біржі**: Binance, Hyperliquid та Aster DEX!
|
||||||
|
|
||||||
|
#### **Біржа Hyperliquid**
|
||||||
|
|
||||||
|
Високопродуктивна децентралізована біржа безстрокових ф'ючерсів!
|
||||||
|
|
||||||
|
**Ключові особливості:**
|
||||||
|
- ✅ Повна підтримка торгівлі (лонг/шорт, плече, стоп-лосс/тейк-профіт)
|
||||||
|
- ✅ Автоматична обробка точності (розмір та ціна ордера)
|
||||||
|
- ✅ Єдиний інтерфейс трейдера (безшовне перемикання бірж)
|
||||||
|
- ✅ Підтримка мейннету та тестнету
|
||||||
|
- ✅ Не потрібні API ключі - тільки приватний ключ Ethereum
|
||||||
|
|
||||||
|
**Чому Hyperliquid?**
|
||||||
|
- 🔥 Нижчі комісії ніж на централізованих біржах
|
||||||
|
- 🔒 Без зберігання - ви контролюєте свої кошти
|
||||||
|
- ⚡ Швидке виконання з розрахунком на ланцюзі
|
||||||
|
- 🌍 Не потрібна KYC
|
||||||
|
|
||||||
|
**Швидкий старт:**
|
||||||
|
1. Отримайте приватний ключ MetaMask (видаліть префікс `0x`)
|
||||||
|
2. Встановіть `"exchange": "hyperliquid"` в config.json
|
||||||
|
3. Додайте `"hyperliquid_private_key": "your_key"`
|
||||||
|
4. Почніть торгувати!
|
||||||
|
|
||||||
|
Див. [Посібник з конфігурації](#-альтернатива-використання-біржі-hyperliquid).
|
||||||
|
|
||||||
|
#### **Біржа Aster DEX** (НОВЕ! v2.0.2)
|
||||||
|
|
||||||
|
Децентралізована біржа безстрокових ф'ючерсів, сумісна з Binance!
|
||||||
|
|
||||||
|
**Ключові особливості:**
|
||||||
|
- ✅ API в стилі Binance (легка міграція з Binance)
|
||||||
|
- ✅ Web3 автентифікація гаманця (безпечно та децентралізовано)
|
||||||
|
- ✅ Повна підтримка торгівлі з автоматичною обробкою точності
|
||||||
|
- ✅ Нижчі комісії за торгівлю ніж CEX
|
||||||
|
- ✅ Сумісність з EVM (Ethereum, BSC, Polygon тощо)
|
||||||
|
|
||||||
|
**Чому Aster?**
|
||||||
|
- 🎯 **API сумісний з Binance** - потрібні мінімальні зміни коду
|
||||||
|
- 🔐 **Система API гаманця** - окремий торговий гаманець для безпеки
|
||||||
|
- 💰 **Конкурентні комісії** - нижче ніж більшість централізованих бірж
|
||||||
|
- 🌐 **Підтримка кількох ланцюгів** - торгуйте на вашому улюбленому EVM ланцюзі
|
||||||
|
|
||||||
|
**Швидкий старт:**
|
||||||
|
1. Відвідайте [Aster API Wallet](https://www.asterdex.com/en/api-wallet)
|
||||||
|
2. Підключіть основний гаманець і створіть API гаманець
|
||||||
|
3. Скопіюйте адресу API Signer та приватний ключ
|
||||||
|
4. Встановіть `"exchange": "aster"` в config.json
|
||||||
|
5. Додайте `"aster_user"`, `"aster_signer"` та `"aster_private_key"`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## ✨ Основні можливості
|
## ✨ Основні можливості
|
||||||
|
|
||||||
### 🏆 Режим змагання кількох AI
|
### 🏆 Режим змагання кількох AI
|
||||||
@@ -308,6 +365,111 @@ cp config.json.example config.json
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
#### 🔷 Альтернатива: Використання біржі Hyperliquid
|
||||||
|
|
||||||
|
**NOFX також підтримує Hyperliquid** - децентралізовану біржу безстрокових ф'ючерсів. Щоб використовувати Hyperliquid замість Binance:
|
||||||
|
|
||||||
|
**Крок 1**: Отримайте приватний ключ Ethereum (для автентифікації Hyperliquid)
|
||||||
|
|
||||||
|
1. Відкрийте **MetaMask** (або будь-який Ethereum гаманець)
|
||||||
|
2. Експортуйте приватний ключ
|
||||||
|
3. **Видаліть префікс `0x`** з ключа
|
||||||
|
4. Поповніть гаманець на [Hyperliquid](https://hyperliquid.xyz)
|
||||||
|
|
||||||
|
**Крок 2**: Налаштуйте `config.json` для Hyperliquid
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"traders": [
|
||||||
|
{
|
||||||
|
"id": "hyperliquid_trader",
|
||||||
|
"name": "My Hyperliquid Trader",
|
||||||
|
"ai_model": "deepseek",
|
||||||
|
"exchange": "hyperliquid",
|
||||||
|
"hyperliquid_private_key": "your_private_key_without_0x",
|
||||||
|
"hyperliquid_testnet": false,
|
||||||
|
"deepseek_key": "sk-xxxxxxxxxxxxx",
|
||||||
|
"initial_balance": 1000.0,
|
||||||
|
"scan_interval_minutes": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"use_default_coins": true,
|
||||||
|
"api_server_port": 8080
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ключові відмінності від конфігурації Binance:**
|
||||||
|
- Замініть `binance_api_key` + `binance_secret_key` на `hyperliquid_private_key`
|
||||||
|
- Додайте поле `"exchange": "hyperliquid"`
|
||||||
|
- Встановіть `hyperliquid_testnet: false` для мейннету (або `true` для тестнету)
|
||||||
|
|
||||||
|
**⚠️ Попередження безпеки**: Ніколи не діліться приватним ключем! Використовуйте окремий гаманець для торгівлі, а не основний.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 🔶 Альтернатива: Використання біржі Aster DEX
|
||||||
|
|
||||||
|
**NOFX також підтримує Aster DEX** - децентралізовану біржу безстрокових ф'ючерсів, сумісну з Binance!
|
||||||
|
|
||||||
|
**Чому обрати Aster?**
|
||||||
|
- 🎯 API сумісний з Binance (легка міграція)
|
||||||
|
- 🔐 Система безпеки API гаманця
|
||||||
|
- 💰 Нижчі комісії за торгівлю
|
||||||
|
- 🌐 Підтримка кількох ланцюгів (ETH, BSC, Polygon)
|
||||||
|
- 🌍 Не потрібна KYC
|
||||||
|
|
||||||
|
**Крок 1**: Створіть Aster API гаманець
|
||||||
|
|
||||||
|
1. Відвідайте [Aster API Wallet](https://www.asterdex.com/en/api-wallet)
|
||||||
|
2. Підключіть основний гаманець (MetaMask, WalletConnect тощо)
|
||||||
|
3. Натисніть "Створити API гаманець"
|
||||||
|
4. **Збережіть ці 3 елементи негайно:**
|
||||||
|
- Адреса основного гаманця (User)
|
||||||
|
- Адреса API гаманця (Signer)
|
||||||
|
- Приватний ключ API гаманця (⚠️ показується лише один раз!)
|
||||||
|
|
||||||
|
**Крок 2**: Налаштуйте `config.json` для Aster
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"traders": [
|
||||||
|
{
|
||||||
|
"id": "aster_deepseek",
|
||||||
|
"name": "Aster DeepSeek Trader",
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ключові поля конфігурації:**
|
||||||
|
- `"exchange": "aster"` - Встановіть біржу на Aster
|
||||||
|
- `aster_user` - Адреса вашого основного гаманця
|
||||||
|
- `aster_signer` - Адреса API гаманця (з Кроку 1)
|
||||||
|
- `aster_private_key` - Приватний ключ API гаманця (без префікса `0x`)
|
||||||
|
|
||||||
|
**⚠️ Примітки безпеки**:
|
||||||
|
- API гаманець окремий від основного (додатковий рівень безпеки)
|
||||||
|
- Ніколи не діліться приватним ключем API
|
||||||
|
- Ви можете відкликати доступ API гаманця в будь-який час на [asterdex.com](https://www.asterdex.com/en/api-wallet)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
#### ⚔️ Експертний режим: Змагання кількох трейдерів
|
#### ⚔️ Експертний режим: Змагання кількох трейдерів
|
||||||
|
|
||||||
Для запуску кількох AI трейдерів, що змагаються один з одним:
|
Для запуску кількох AI трейдерів, що змагаються один з одним:
|
||||||
|
|||||||
164
README.zh-CN.md
164
README.zh-CN.md
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
一个基于 **DeepSeek/Qwen AI** 的币安合约自动交易系统,支持**多AI模型实盘竞赛**,具备完整的市场分析、AI决策、**自我学习机制**和专业的Web监控界面。
|
一个基于 **DeepSeek/Qwen AI** 的加密货币期货自动交易系统,支持 **Binance、Hyperliquid和Aster DEX交易所**,**多AI模型实盘竞赛**,具备完整的市场分析、AI决策、**自我学习机制**和专业的Web监控界面。
|
||||||
|
|
||||||
> ⚠️ **风险提示**:本系统为实验性项目,AI自动交易存在重大风险,强烈建议仅用于学习研究或小额资金测试!
|
> ⚠️ **风险提示**:本系统为实验性项目,AI自动交易存在重大风险,强烈建议仅用于学习研究或小额资金测试!
|
||||||
|
|
||||||
@@ -21,6 +21,63 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 🆕 最新更新
|
||||||
|
|
||||||
|
### 🚀 多交易所支持!
|
||||||
|
|
||||||
|
NOFX现已支持**三大交易所**:Binance、Hyperliquid和Aster DEX!
|
||||||
|
|
||||||
|
#### **Hyperliquid交易所**
|
||||||
|
|
||||||
|
高性能的去中心化永续期货交易所!
|
||||||
|
|
||||||
|
**核心特性:**
|
||||||
|
- ✅ 完整交易支持(做多/做空、杠杆、止损/止盈)
|
||||||
|
- ✅ 自动精度处理(订单数量和价格)
|
||||||
|
- ✅ 统一trader接口(无缝切换交易所)
|
||||||
|
- ✅ 支持主网和测试网
|
||||||
|
- ✅ 无需API密钥 - 只需以太坊私钥
|
||||||
|
|
||||||
|
**为什么选择Hyperliquid?**
|
||||||
|
- 🔥 比中心化交易所手续费更低
|
||||||
|
- 🔒 非托管 - 你掌控自己的资金
|
||||||
|
- ⚡ 快速执行与链上结算
|
||||||
|
- 🌍 无需KYC
|
||||||
|
|
||||||
|
**快速开始:**
|
||||||
|
1. 获取你的MetaMask私钥(去掉`0x`前缀)
|
||||||
|
2. 在config.json中设置`"exchange": "hyperliquid"`
|
||||||
|
3. 添加`"hyperliquid_private_key": "your_key"`
|
||||||
|
4. 开始交易!
|
||||||
|
|
||||||
|
详见[配置指南](#-备选使用hyperliquid交易所)。
|
||||||
|
|
||||||
|
#### **Aster DEX交易所**(新!v2.0.2)
|
||||||
|
|
||||||
|
兼容Binance的去中心化永续期货交易所!
|
||||||
|
|
||||||
|
**核心特性:**
|
||||||
|
- ✅ Binance风格API(从Binance轻松迁移)
|
||||||
|
- ✅ Web3钱包认证(安全且去中心化)
|
||||||
|
- ✅ 完整交易支持,自动精度处理
|
||||||
|
- ✅ 比中心化交易所手续费更低
|
||||||
|
- ✅ 兼容EVM(以太坊、BSC、Polygon等)
|
||||||
|
|
||||||
|
**为什么选择Aster?**
|
||||||
|
- 🎯 **兼容Binance API** - 需要最少的代码修改
|
||||||
|
- 🔐 **API钱包系统** - 独立交易钱包提升安全性
|
||||||
|
- 💰 **有竞争力的手续费** - 比大多数中心化交易所更低
|
||||||
|
- 🌐 **多链支持** - 在你喜欢的EVM链上交易
|
||||||
|
|
||||||
|
**快速开始:**
|
||||||
|
1. 访问[Aster API钱包](https://www.asterdex.com/en/api-wallet)
|
||||||
|
2. 连接你的主钱包并创建API钱包
|
||||||
|
3. 复制API Signer地址和私钥
|
||||||
|
4. 在config.json中设置`"exchange": "aster"`
|
||||||
|
5. 添加`"aster_user"`、`"aster_signer"`和`"aster_private_key"`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## ✨ 核心特性
|
## ✨ 核心特性
|
||||||
|
|
||||||
### 🏆 多AI竞赛模式
|
### 🏆 多AI竞赛模式
|
||||||
@@ -371,6 +428,111 @@ cp config.json.example config.json
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
#### 🔷 备选:使用Hyperliquid交易所
|
||||||
|
|
||||||
|
**NOFX也支持Hyperliquid** - 去中心化永续期货交易所。使用Hyperliquid而非Binance:
|
||||||
|
|
||||||
|
**步骤1**:获取以太坊私钥(用于Hyperliquid身份验证)
|
||||||
|
|
||||||
|
1. 打开**MetaMask**(或任何以太坊钱包)
|
||||||
|
2. 导出你的私钥
|
||||||
|
3. **去掉`0x`前缀**
|
||||||
|
4. 在[Hyperliquid](https://hyperliquid.xyz)上为钱包充值
|
||||||
|
|
||||||
|
**步骤2**:为Hyperliquid配置`config.json`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"traders": [
|
||||||
|
{
|
||||||
|
"id": "hyperliquid_trader",
|
||||||
|
"name": "My Hyperliquid Trader",
|
||||||
|
"ai_model": "deepseek",
|
||||||
|
"exchange": "hyperliquid",
|
||||||
|
"hyperliquid_private_key": "your_private_key_without_0x",
|
||||||
|
"hyperliquid_testnet": false,
|
||||||
|
"deepseek_key": "sk-xxxxxxxxxxxxx",
|
||||||
|
"initial_balance": 1000.0,
|
||||||
|
"scan_interval_minutes": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"use_default_coins": true,
|
||||||
|
"api_server_port": 8080
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**与Binance配置的关键区别:**
|
||||||
|
- 用`hyperliquid_private_key`替换`binance_api_key` + `binance_secret_key`
|
||||||
|
- 添加`"exchange": "hyperliquid"`字段
|
||||||
|
- 设置`hyperliquid_testnet: false`用于主网(或`true`用于测试网)
|
||||||
|
|
||||||
|
**⚠️ 安全警告**:切勿分享你的私钥!使用专门的钱包进行交易,而非主钱包。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 🔶 备选:使用Aster DEX交易所
|
||||||
|
|
||||||
|
**NOFX也支持Aster DEX** - 兼容Binance的去中心化永续期货交易所!
|
||||||
|
|
||||||
|
**为什么选择Aster?**
|
||||||
|
- 🎯 兼容Binance API(轻松迁移)
|
||||||
|
- 🔐 API钱包安全系统
|
||||||
|
- 💰 更低的交易手续费
|
||||||
|
- 🌐 多链支持(ETH、BSC、Polygon)
|
||||||
|
- 🌍 无需KYC
|
||||||
|
|
||||||
|
**步骤1**:创建Aster API钱包
|
||||||
|
|
||||||
|
1. 访问[Aster API钱包](https://www.asterdex.com/en/api-wallet)
|
||||||
|
2. 连接你的主钱包(MetaMask、WalletConnect等)
|
||||||
|
3. 点击"创建API钱包"
|
||||||
|
4. **立即保存这3项:**
|
||||||
|
- 主钱包地址(User)
|
||||||
|
- API钱包地址(Signer)
|
||||||
|
- API钱包私钥(⚠️ 仅显示一次!)
|
||||||
|
|
||||||
|
**步骤2**:为Aster配置`config.json`
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"traders": [
|
||||||
|
{
|
||||||
|
"id": "aster_deepseek",
|
||||||
|
"name": "Aster DeepSeek Trader",
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**关键配置字段:**
|
||||||
|
- `"exchange": "aster"` - 设置交易所为Aster
|
||||||
|
- `aster_user` - 你的主钱包地址
|
||||||
|
- `aster_signer` - API钱包地址(来自步骤1)
|
||||||
|
- `aster_private_key` - API钱包私钥(去掉`0x`前缀)
|
||||||
|
|
||||||
|
**⚠️ 安全提示**:
|
||||||
|
- API钱包与主钱包分离(额外的安全层)
|
||||||
|
- 切勿分享API私钥
|
||||||
|
- 你可以随时在[asterdex.com](https://www.asterdex.com/en/api-wallet)撤销API钱包访问
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
#### ⚔️ 专家模式:多Trader竞赛
|
#### ⚔️ 专家模式:多Trader竞赛
|
||||||
|
|
||||||
用于运行多个AI trader相互竞争:
|
用于运行多个AI trader相互竞争:
|
||||||
|
|||||||
@@ -646,6 +646,26 @@ func (t *AsterTrader) OpenShort(symbol string, quantity float64, leverage int) (
|
|||||||
|
|
||||||
// CloseLong 平多单
|
// CloseLong 平多单
|
||||||
func (t *AsterTrader) CloseLong(symbol string, quantity float64) (map[string]interface{}, error) {
|
func (t *AsterTrader) CloseLong(symbol string, quantity float64) (map[string]interface{}, error) {
|
||||||
|
// 如果数量为0,获取当前持仓数量
|
||||||
|
if quantity == 0 {
|
||||||
|
positions, err := t.GetPositions()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, pos := range positions {
|
||||||
|
if pos["symbol"] == symbol && pos["side"] == "long" {
|
||||||
|
quantity = pos["positionAmt"].(float64)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if quantity == 0 {
|
||||||
|
return nil, fmt.Errorf("没有找到 %s 的多仓", symbol)
|
||||||
|
}
|
||||||
|
log.Printf(" 📊 获取到多仓数量: %.8f", quantity)
|
||||||
|
}
|
||||||
|
|
||||||
price, err := t.GetMarketPrice(symbol)
|
price, err := t.GetMarketPrice(symbol)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -673,6 +693,9 @@ func (t *AsterTrader) CloseLong(symbol string, quantity float64) (map[string]int
|
|||||||
priceStr := t.formatFloatWithPrecision(formattedPrice, prec.PricePrecision)
|
priceStr := t.formatFloatWithPrecision(formattedPrice, prec.PricePrecision)
|
||||||
qtyStr := t.formatFloatWithPrecision(formattedQty, prec.QuantityPrecision)
|
qtyStr := t.formatFloatWithPrecision(formattedQty, prec.QuantityPrecision)
|
||||||
|
|
||||||
|
log.Printf(" 📏 精度处理: 价格 %.8f -> %s (精度=%d), 数量 %.8f -> %s (精度=%d)",
|
||||||
|
limitPrice, priceStr, prec.PricePrecision, quantity, qtyStr, prec.QuantityPrecision)
|
||||||
|
|
||||||
params := map[string]interface{}{
|
params := map[string]interface{}{
|
||||||
"symbol": symbol,
|
"symbol": symbol,
|
||||||
"positionSide": "BOTH",
|
"positionSide": "BOTH",
|
||||||
@@ -693,11 +716,33 @@ func (t *AsterTrader) CloseLong(symbol string, quantity float64) (map[string]int
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Printf("✓ 平多仓成功: %s 数量: %s", symbol, qtyStr)
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// CloseShort 平空单
|
// CloseShort 平空单
|
||||||
func (t *AsterTrader) CloseShort(symbol string, quantity float64) (map[string]interface{}, error) {
|
func (t *AsterTrader) CloseShort(symbol string, quantity float64) (map[string]interface{}, error) {
|
||||||
|
// 如果数量为0,获取当前持仓数量
|
||||||
|
if quantity == 0 {
|
||||||
|
positions, err := t.GetPositions()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, pos := range positions {
|
||||||
|
if pos["symbol"] == symbol && pos["side"] == "short" {
|
||||||
|
// Aster的GetPositions已经将空仓数量转换为正数,直接使用
|
||||||
|
quantity = pos["positionAmt"].(float64)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if quantity == 0 {
|
||||||
|
return nil, fmt.Errorf("没有找到 %s 的空仓", symbol)
|
||||||
|
}
|
||||||
|
log.Printf(" 📊 获取到空仓数量: %.8f", quantity)
|
||||||
|
}
|
||||||
|
|
||||||
price, err := t.GetMarketPrice(symbol)
|
price, err := t.GetMarketPrice(symbol)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -725,6 +770,9 @@ func (t *AsterTrader) CloseShort(symbol string, quantity float64) (map[string]in
|
|||||||
priceStr := t.formatFloatWithPrecision(formattedPrice, prec.PricePrecision)
|
priceStr := t.formatFloatWithPrecision(formattedPrice, prec.PricePrecision)
|
||||||
qtyStr := t.formatFloatWithPrecision(formattedQty, prec.QuantityPrecision)
|
qtyStr := t.formatFloatWithPrecision(formattedQty, prec.QuantityPrecision)
|
||||||
|
|
||||||
|
log.Printf(" 📏 精度处理: 价格 %.8f -> %s (精度=%d), 数量 %.8f -> %s (精度=%d)",
|
||||||
|
limitPrice, priceStr, prec.PricePrecision, quantity, qtyStr, prec.QuantityPrecision)
|
||||||
|
|
||||||
params := map[string]interface{}{
|
params := map[string]interface{}{
|
||||||
"symbol": symbol,
|
"symbol": symbol,
|
||||||
"positionSide": "BOTH",
|
"positionSide": "BOTH",
|
||||||
@@ -745,6 +793,7 @@ func (t *AsterTrader) CloseShort(symbol string, quantity float64) (map[string]in
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Printf("✓ 平空仓成功: %s 数量: %s", symbol, qtyStr)
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user