feat: 开源准备和功能优化
- 添加 MIT 许可证 - 创建完整的项目 README.md - 前端添加 GitHub 和 Twitter 链接 - 重构表名:copy_trading_accounts -> wallet_accounts - 更新 Account 实体类 - 添加数据库迁移脚本 V3 - 更新初始化脚本和文档 - 优化跟单订单类型:GTC -> FAK - 买入和卖出订单均使用 FAK (Fill-And-Kill) - 允许部分成交,未成交部分立即取消 - 提高跟单响应速度和价格匹配准确性
This commit is contained in:
@@ -4,10 +4,10 @@ import jakarta.persistence.*
|
||||
|
||||
/**
|
||||
* 账户信息实体
|
||||
* 用于存储跟单者的账户信息(支持多账户)
|
||||
* 用于存储钱包账户信息(支持多账户)
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "copy_trading_accounts")
|
||||
@Table(name = "wallet_accounts")
|
||||
data class Account(
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
|
||||
@@ -461,10 +461,12 @@ class CopyOrderTrackingService(
|
||||
}
|
||||
|
||||
// 8. 构建订单请求
|
||||
// 跟单订单使用 FAK (Fill-And-Kill),允许部分成交,未成交部分立即取消
|
||||
// 这样可以快速响应 Leader 的交易,避免订单长期挂单导致价格不匹配
|
||||
val orderRequest = NewOrderRequest(
|
||||
order = signedOrder,
|
||||
owner = account.apiKey!!,
|
||||
orderType = "GTC", // Good-Til-Cancelled
|
||||
orderType = "FAK", // Fill-And-Kill
|
||||
deferExec = false
|
||||
)
|
||||
|
||||
@@ -584,10 +586,12 @@ class CopyOrderTrackingService(
|
||||
)
|
||||
|
||||
// 构建订单请求(每次重试都使用新签名的订单)
|
||||
// 跟单订单使用 FAK (Fill-And-Kill),允许部分成交,未成交部分立即取消
|
||||
// 这样可以快速响应 Leader 的交易,避免订单长期挂单导致价格不匹配
|
||||
val orderRequest = NewOrderRequest(
|
||||
order = signedOrder,
|
||||
owner = owner, // API Key
|
||||
orderType = "GTC", // Good-Til-Cancelled
|
||||
orderType = "FAK", // Fill-And-Kill
|
||||
deferExec = false
|
||||
)
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
-- ============================================
|
||||
-- 1. 创建账户表
|
||||
-- ============================================
|
||||
CREATE TABLE IF NOT EXISTS copy_trading_accounts (
|
||||
CREATE TABLE IF NOT EXISTS wallet_accounts (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||
private_key VARCHAR(500) NOT NULL COMMENT '私钥(加密存储)',
|
||||
wallet_address VARCHAR(42) NOT NULL UNIQUE COMMENT '钱包地址(从私钥推导)',
|
||||
@@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS copy_trading_accounts (
|
||||
updated_at BIGINT NOT NULL COMMENT '更新时间(毫秒时间戳)',
|
||||
INDEX idx_wallet_address (wallet_address),
|
||||
INDEX idx_is_default (is_default)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='跟单系统账户表';
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='钱包账户表';
|
||||
|
||||
-- ============================================
|
||||
-- 2. 创建被跟单者(Leader)表
|
||||
@@ -77,7 +77,7 @@ CREATE TABLE IF NOT EXISTS copy_trading (
|
||||
INDEX idx_template_id (template_id),
|
||||
INDEX idx_leader_id (leader_id),
|
||||
INDEX idx_enabled (enabled),
|
||||
FOREIGN KEY (account_id) REFERENCES copy_trading_accounts(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (account_id) REFERENCES wallet_accounts(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (template_id) REFERENCES copy_trading_templates(id) ON DELETE RESTRICT,
|
||||
FOREIGN KEY (leader_id) REFERENCES copy_trading_leaders(id) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='跟单关系表(钱包-模板关联)';
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
-- ============================================
|
||||
-- 重命名账户表:copy_trading_accounts -> wallet_accounts
|
||||
-- ============================================
|
||||
|
||||
-- 检查表是否存在,如果存在则重命名
|
||||
-- 注意:此迁移脚本假设表已经存在(从 V1 迁移创建)
|
||||
|
||||
-- 1. 查找外键约束名称并删除
|
||||
SET @fk_name = NULL;
|
||||
SELECT CONSTRAINT_NAME INTO @fk_name
|
||||
FROM information_schema.KEY_COLUMN_USAGE
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'copy_trading'
|
||||
AND COLUMN_NAME = 'account_id'
|
||||
AND REFERENCED_TABLE_NAME = 'copy_trading_accounts'
|
||||
LIMIT 1;
|
||||
|
||||
-- 2. 如果找到外键,删除它
|
||||
SET @drop_fk_sql = IF(@fk_name IS NOT NULL,
|
||||
CONCAT('ALTER TABLE copy_trading DROP FOREIGN KEY `', @fk_name, '`'),
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @drop_fk_sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 3. 重命名表
|
||||
RENAME TABLE copy_trading_accounts TO wallet_accounts;
|
||||
|
||||
-- 4. 重新添加外键约束
|
||||
ALTER TABLE copy_trading
|
||||
ADD CONSTRAINT fk_copy_trading_account_id
|
||||
FOREIGN KEY (account_id) REFERENCES wallet_accounts(id) ON DELETE CASCADE;
|
||||
|
||||
-- 5. 更新表注释
|
||||
ALTER TABLE wallet_accounts COMMENT = '钱包账户表';
|
||||
|
||||
Reference in New Issue
Block a user