mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-10 06:20:58 +08:00
fix: OKX trading issues and improve position tracking
- Add maxMktSz check for OKX market orders to prevent exceeding limits - Increase margin safety buffer (0.1% fee + 1% buffer) for all exchanges - Fix Binance position closure detection with direct trade queries - Move Recent Completed Trades before Current Positions in AI prompt - Update README screenshots with table layout for better alignment
This commit is contained in:
@@ -9,6 +9,7 @@ import type {
|
||||
AIModel,
|
||||
Exchange,
|
||||
CreateTraderRequest,
|
||||
CreateExchangeRequest,
|
||||
UpdateModelConfigRequest,
|
||||
UpdateExchangeConfigRequest,
|
||||
CompetitionData,
|
||||
@@ -224,6 +225,57 @@ export const api = {
|
||||
if (!result.success) throw new Error('更新交易所配置失败')
|
||||
},
|
||||
|
||||
// 创建新的交易所账户
|
||||
async createExchange(request: CreateExchangeRequest): Promise<{ id: string }> {
|
||||
const result = await httpClient.post<{ id: string }>(`${API_BASE}/exchanges`, request)
|
||||
if (!result.success) throw new Error('创建交易所账户失败')
|
||||
return result.data!
|
||||
},
|
||||
|
||||
// 创建新的交易所账户(加密传输)
|
||||
async createExchangeEncrypted(request: CreateExchangeRequest): Promise<{ id: string }> {
|
||||
// 检查是否启用了传输加密
|
||||
const config = await CryptoService.fetchCryptoConfig()
|
||||
|
||||
if (!config.transport_encryption) {
|
||||
// 传输加密禁用时,直接发送明文
|
||||
const result = await httpClient.post<{ id: string }>(`${API_BASE}/exchanges`, request)
|
||||
if (!result.success) throw new Error('创建交易所账户失败')
|
||||
return result.data!
|
||||
}
|
||||
|
||||
// 获取RSA公钥
|
||||
const publicKey = await CryptoService.fetchPublicKey()
|
||||
|
||||
// 初始化加密服务
|
||||
await CryptoService.initialize(publicKey)
|
||||
|
||||
// 获取用户信息
|
||||
const userId = localStorage.getItem('user_id') || ''
|
||||
const sessionId = sessionStorage.getItem('session_id') || ''
|
||||
|
||||
// 加密敏感数据
|
||||
const encryptedPayload = await CryptoService.encryptSensitiveData(
|
||||
JSON.stringify(request),
|
||||
userId,
|
||||
sessionId
|
||||
)
|
||||
|
||||
// 发送加密数据
|
||||
const result = await httpClient.post<{ id: string }>(
|
||||
`${API_BASE}/exchanges`,
|
||||
encryptedPayload
|
||||
)
|
||||
if (!result.success) throw new Error('创建交易所账户失败')
|
||||
return result.data!
|
||||
},
|
||||
|
||||
// 删除交易所账户
|
||||
async deleteExchange(exchangeId: string): Promise<void> {
|
||||
const result = await httpClient.delete(`${API_BASE}/exchanges/${exchangeId}`)
|
||||
if (!result.success) throw new Error('删除交易所账户失败')
|
||||
},
|
||||
|
||||
// 使用加密传输更新交易所配置(自动检测是否启用加密)
|
||||
async updateExchangeConfigsEncrypted(
|
||||
request: UpdateExchangeConfigRequest
|
||||
|
||||
Reference in New Issue
Block a user