Update readmes.

This commit is contained in:
nobody
2025-10-30 00:41:14 +08:00
parent 8962d26d2d
commit 4c21989328
5 changed files with 540 additions and 3 deletions

View File

@@ -8,8 +8,10 @@ feat: Add Aster DEX exchange support + fix precision issues
## Bug Fixes
- 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
- Add automatic precision fetching from /exchangeInfo endpoint
- Add quantity=0 handling in CloseLong/CloseShort (auto-detect position size)
- Remove trailing zeros from formatted values
## Documentation

View File

@@ -9,7 +9,7 @@
---
Автоматизированная система торговли фьючерсами Binance на базе **DeepSeek/Qwen AI**, поддерживающая **конкуренцию нескольких AI-моделей в реальной торговле**, с полным анализом рынка, принятием решений AI, **механизмом самообучения** и профессиональным веб-интерфейсом мониторинга.
Автоматизированная система торговли криптовалютными фьючерсами на базе **DeepSeek/Qwen AI**, поддерживающая **Binance, Hyperliquid и Aster DEX биржи**, **конкуренцию нескольких 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
@@ -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 трейдеров, конкурирующих друг с другом:

View File

@@ -9,7 +9,7 @@
---
Автоматизована система торгівлі ф'ючерсами Binance на базі **DeepSeek/Qwen AI**, що підтримує **змагання кількох AI-моделей у реальній торгівлі**, з повним аналізом ринку, прийняттям рішень AI, **механізмом самонавчання** та професійним веб-інтерфейсом моніторингу.
Автоматизована система торгівлі криптовалютними ф'ючерсами на базі **DeepSeek/Qwen AI**, що підтримує **Binance, Hyperliquid та Aster DEX біржі**, **змагання кількох 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
@@ -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 трейдерів, що змагаються один з одним:

View File

@@ -9,7 +9,7 @@
---
一个基于 **DeepSeek/Qwen AI**币安合约自动交易系统,支持**多AI模型实盘竞赛**具备完整的市场分析、AI决策、**自我学习机制**和专业的Web监控界面。
一个基于 **DeepSeek/Qwen AI**加密货币期货自动交易系统,支持 **Binance、Hyperliquid和Aster DEX交易所****多AI模型实盘竞赛**具备完整的市场分析、AI决策、**自我学习机制**和专业的Web监控界面。
> ⚠️ **风险提示**本系统为实验性项目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竞赛模式
@@ -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钱包安全系统
- 💰 更低的交易手续费
- 🌐 多链支持ETHBSCPolygon
- 🌍 无需KYC
**步骤1**创建Aster API钱包
1. 访问[Aster API钱包](https://www.asterdex.com/en/api-wallet)
2. 连接你的主钱包MetaMaskWalletConnect等
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竞赛
用于运行多个AI trader相互竞争

View File

@@ -646,6 +646,26 @@ func (t *AsterTrader) OpenShort(symbol string, quantity float64, leverage int) (
// CloseLong 平多单
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)
if err != nil {
return nil, err
@@ -673,6 +693,9 @@ func (t *AsterTrader) CloseLong(symbol string, quantity float64) (map[string]int
priceStr := t.formatFloatWithPrecision(formattedPrice, prec.PricePrecision)
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{}{
"symbol": symbol,
"positionSide": "BOTH",
@@ -693,11 +716,33 @@ func (t *AsterTrader) CloseLong(symbol string, quantity float64) (map[string]int
return nil, err
}
log.Printf("✓ 平多仓成功: %s 数量: %s", symbol, qtyStr)
return result, nil
}
// CloseShort 平空单
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)
if err != nil {
return nil, err
@@ -725,6 +770,9 @@ func (t *AsterTrader) CloseShort(symbol string, quantity float64) (map[string]in
priceStr := t.formatFloatWithPrecision(formattedPrice, prec.PricePrecision)
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{}{
"symbol": symbol,
"positionSide": "BOTH",
@@ -745,6 +793,7 @@ func (t *AsterTrader) CloseShort(symbol string, quantity float64) (map[string]in
return nil, err
}
log.Printf("✓ 平空仓成功: %s 数量: %s", symbol, qtyStr)
return result, nil
}