feat: 实现跟单筛选条件记录和展示功能
- 新增 FilteredOrder 实体和数据库表,记录被过滤的订单信息 - 在筛选失败时自动记录到数据库并发送 Telegram 通知 - 创建 FilteredOrderService 和 API 接口,支持查询被过滤订单列表 - 前端新增被过滤订单列表页面,支持按过滤类型筛选 - 修复价差计算逻辑,使用数组最大值和最小值而非第一个元素 - 优化编辑页面 UI,钱包和 Leader 显示与创建页面一致(只读) - 添加多语言支持(中文、繁体中文、英文)
This commit is contained in:
+118
-5
@@ -107,7 +107,10 @@ export interface CopyTradingTemplate {
|
||||
maxDailyOrders: number
|
||||
priceTolerance: string
|
||||
supportSell: boolean
|
||||
useCount: number
|
||||
// 过滤条件
|
||||
minOrderDepth?: string
|
||||
maxSpread?: string
|
||||
minOrderbookDepth?: string
|
||||
createdAt: number
|
||||
updatedAt: number
|
||||
}
|
||||
@@ -168,19 +171,36 @@ export interface TemplateCopyRequest {
|
||||
}
|
||||
|
||||
/**
|
||||
* 跟单关系(钱包-模板关联)
|
||||
* 跟单配置(独立配置,不再绑定模板)
|
||||
*/
|
||||
export interface CopyTrading {
|
||||
id: number
|
||||
accountId: number
|
||||
accountName?: string
|
||||
walletAddress: string
|
||||
templateId: number
|
||||
templateName: string
|
||||
leaderId: number
|
||||
leaderName?: string
|
||||
leaderAddress: string
|
||||
enabled: boolean
|
||||
// 跟单配置参数
|
||||
copyMode: 'RATIO' | 'FIXED'
|
||||
copyRatio: string
|
||||
fixedAmount?: string
|
||||
maxOrderSize: string
|
||||
minOrderSize: string
|
||||
maxDailyLoss: string
|
||||
maxDailyOrders: number
|
||||
priceTolerance: string
|
||||
delaySeconds: number
|
||||
pollIntervalSeconds: number
|
||||
useWebSocket: boolean
|
||||
websocketReconnectInterval: number
|
||||
websocketMaxRetries: number
|
||||
supportSell: boolean
|
||||
// 过滤条件
|
||||
minOrderDepth?: string
|
||||
maxSpread?: string
|
||||
minOrderbookDepth?: string
|
||||
createdAt: number
|
||||
updatedAt: number
|
||||
}
|
||||
@@ -195,12 +215,58 @@ export interface CopyTradingListResponse {
|
||||
|
||||
/**
|
||||
* 跟单创建请求
|
||||
* 所有配置参数都需要手动输入,模板仅用于前端快速填充表单
|
||||
*/
|
||||
export interface CopyTradingCreateRequest {
|
||||
accountId: number
|
||||
templateId: number
|
||||
leaderId: number
|
||||
enabled?: boolean
|
||||
// 跟单配置参数
|
||||
copyMode?: 'RATIO' | 'FIXED'
|
||||
copyRatio?: string
|
||||
fixedAmount?: string
|
||||
maxOrderSize?: string
|
||||
minOrderSize?: string
|
||||
maxDailyLoss?: string
|
||||
maxDailyOrders?: number
|
||||
priceTolerance?: string
|
||||
delaySeconds?: number
|
||||
pollIntervalSeconds?: number
|
||||
useWebSocket?: boolean
|
||||
websocketReconnectInterval?: number
|
||||
websocketMaxRetries?: number
|
||||
supportSell?: boolean
|
||||
// 过滤条件
|
||||
minOrderDepth?: string
|
||||
maxSpread?: string
|
||||
minOrderbookDepth?: string
|
||||
}
|
||||
|
||||
/**
|
||||
* 跟单更新请求
|
||||
*/
|
||||
export interface CopyTradingUpdateRequest {
|
||||
copyTradingId: number
|
||||
enabled?: boolean
|
||||
// 跟单配置参数(可选,只更新提供的字段)
|
||||
copyMode?: 'RATIO' | 'FIXED'
|
||||
copyRatio?: string
|
||||
fixedAmount?: string
|
||||
maxOrderSize?: string
|
||||
minOrderSize?: string
|
||||
maxDailyLoss?: string
|
||||
maxDailyOrders?: number
|
||||
priceTolerance?: string
|
||||
delaySeconds?: number
|
||||
pollIntervalSeconds?: number
|
||||
useWebSocket?: boolean
|
||||
websocketReconnectInterval?: number
|
||||
websocketMaxRetries?: number
|
||||
supportSell?: boolean
|
||||
// 过滤条件
|
||||
minOrderDepth?: string
|
||||
maxSpread?: string
|
||||
minOrderbookDepth?: string
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -600,6 +666,53 @@ export interface OrderTrackingRequest {
|
||||
buyOrderId?: string
|
||||
}
|
||||
|
||||
/**
|
||||
* 被过滤订单信息
|
||||
*/
|
||||
export interface FilteredOrder {
|
||||
id: number
|
||||
copyTradingId: number
|
||||
accountId: number
|
||||
accountName?: string
|
||||
leaderId: number
|
||||
leaderName?: string
|
||||
leaderTradeId: string
|
||||
marketId: string
|
||||
marketTitle?: string
|
||||
marketSlug?: string
|
||||
side: 'BUY' | 'SELL'
|
||||
outcomeIndex?: number
|
||||
outcome?: string
|
||||
price: string
|
||||
size: string
|
||||
calculatedQuantity?: string
|
||||
filterReason: string
|
||||
filterType: string
|
||||
createdAt: number
|
||||
}
|
||||
|
||||
/**
|
||||
* 被过滤订单列表请求
|
||||
*/
|
||||
export interface FilteredOrderListRequest {
|
||||
copyTradingId: number
|
||||
filterType?: string
|
||||
page?: number
|
||||
limit?: number
|
||||
startTime?: number
|
||||
endTime?: number
|
||||
}
|
||||
|
||||
/**
|
||||
* 被过滤订单列表响应
|
||||
*/
|
||||
export interface FilteredOrderListResponse {
|
||||
list: FilteredOrder[]
|
||||
total: number
|
||||
page: number
|
||||
limit: number
|
||||
}
|
||||
|
||||
/**
|
||||
* 消息推送配置
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user