-- Gate 策略管理 — Station 数据库表
|
|
-- 策略实时状态(apiKeyMd5 唯一,UPSERT)
|
CREATE TABLE IF NOT EXISTS `strategy_status` (
|
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`api_key_md5` VARCHAR(64) NOT NULL COMMENT 'apiKey MD5',
|
`alias_name` VARCHAR(64) DEFAULT NULL COMMENT '实例别名(Station 端自定义显示名)',
|
`contract` VARCHAR(32) DEFAULT NULL COMMENT '合约名称',
|
`state` VARCHAR(32) DEFAULT NULL COMMENT '策略状态:ACTIVE / STOPPED / WAITING_KLINE',
|
`leverage` VARCHAR(16) DEFAULT NULL COMMENT '杠杆倍数',
|
`grid_rate` VARCHAR(16) DEFAULT NULL COMMENT '网格间距比例',
|
`expected_profit` VARCHAR(32) DEFAULT NULL COMMENT '预期收益(USDT)',
|
`max_loss` VARCHAR(32) DEFAULT NULL COMMENT '最大亏损(USDT)',
|
`base_quantity` VARCHAR(16) DEFAULT NULL COMMENT '基底开仓张数',
|
`quantity` VARCHAR(16) DEFAULT NULL COMMENT '每次下单张数',
|
`max_position_size` INT(11) DEFAULT 0 COMMENT '最大持仓张数(单方向)',
|
`stop_loss_count` INT(11) DEFAULT 0 COMMENT '止损阶梯次数',
|
`take_profit_grid_span` INT(11) DEFAULT 2 COMMENT '止盈网格跨度',
|
`stop_loss_count_mode` VARCHAR(16) DEFAULT NULL COMMENT '止损统计方式:single / dual',
|
`add_position_interval` INT(11) DEFAULT 0 COMMENT '加仓间隔',
|
`add_position_quantity` INT(11) DEFAULT 0 COMMENT '加仓数量',
|
`max_position_per_side` INT(11) DEFAULT 0 COMMENT '单边最大仓位',
|
`add_position_start_threshold` INT(11) DEFAULT 0 COMMENT '加仓启动阈值',
|
`place_excess_take_profit` TINYINT(1) DEFAULT 0 COMMENT '超额止盈开关',
|
`price_drive_enabled` TINYINT(1) DEFAULT 1 COMMENT '价格驱动开关',
|
`current_round` INT(11) DEFAULT 0 COMMENT '当前轮次',
|
`total_rounds` INT(11) DEFAULT 0 COMMENT '总轮数上限',
|
`accumulated_long_loss` INT(11) DEFAULT 0 COMMENT '多头累计止损次数',
|
`accumulated_short_loss` INT(11) DEFAULT 0 COMMENT '空头累计止损次数',
|
`cumulative_pnl` VARCHAR(32) DEFAULT '0' COMMENT '累计已实现盈亏',
|
`unrealized_pnl` VARCHAR(32) DEFAULT '0' COMMENT '未实现盈亏',
|
`principal` VARCHAR(32) DEFAULT NULL COMMENT '初始本金',
|
`create_by` VARCHAR(64) DEFAULT NULL,
|
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
`update_by` VARCHAR(64) DEFAULT NULL,
|
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
`version` INT(11) DEFAULT 0,
|
PRIMARY KEY (`id`),
|
UNIQUE KEY `uk_api_key_md5` (`api_key_md5`)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='策略实时状态';
|
|
-- 策略事件日志(只追加,eventId 唯一去重)
|
CREATE TABLE IF NOT EXISTS `strategy_event_log` (
|
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
`event_id` VARCHAR(64) NOT NULL COMMENT '事件唯一 ID(幂等去重)',
|
`event_type` VARCHAR(64) NOT NULL COMMENT '事件类型:HEARTBEAT / STRATEGY_START / STRATEGY_STOP / ROUND_COMPLETE / STOP_LOSS_TRIGGERED / ENTRY_FILLED / PNL_SNAPSHOT',
|
`api_key_md5` VARCHAR(64) NOT NULL COMMENT 'apiKey MD5',
|
`contract` VARCHAR(32) DEFAULT NULL COMMENT '合约名称',
|
`event_time` BIGINT(20) DEFAULT NULL COMMENT '事件时间戳(ms)',
|
`payload_json` TEXT DEFAULT NULL COMMENT 'JSON payload',
|
`create_by` VARCHAR(64) DEFAULT NULL,
|
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
`update_by` VARCHAR(64) DEFAULT NULL,
|
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
`version` INT(11) DEFAULT 0,
|
PRIMARY KEY (`id`),
|
UNIQUE KEY `uk_event_id` (`event_id`),
|
KEY `idx_api_key_md5_time` (`api_key_md5`, `event_time`)
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='策略事件日志';
|
|
-- ============================================================
|
-- 升级脚本:为已存在的 strategy_status 表补齐配置回显字段
|
-- (新增字段与上方建表语句保持一致;若已执行过可忽略 Duplicate column 报错)
|
-- ============================================================
|
ALTER TABLE `strategy_status`
|
ADD COLUMN `expected_profit` VARCHAR(32) DEFAULT NULL COMMENT '预期收益(USDT)' AFTER `grid_rate`,
|
ADD COLUMN `max_loss` VARCHAR(32) DEFAULT NULL COMMENT '最大亏损(USDT)' AFTER `grid_rate`,
|
ADD COLUMN `quantity` VARCHAR(16) DEFAULT NULL COMMENT '每次下单张数' AFTER `base_quantity`,
|
ADD COLUMN `max_position_size` INT(11) DEFAULT 0 COMMENT '最大持仓张数(单方向)' AFTER `base_quantity`,
|
ADD COLUMN `stop_loss_count` INT(11) DEFAULT 0 COMMENT '止损阶梯次数' AFTER `base_quantity`,
|
ADD COLUMN `take_profit_grid_span` INT(11) DEFAULT 2 COMMENT '止盈网格跨度' AFTER `base_quantity`,
|
ADD COLUMN `price_drive_enabled` TINYINT(1) DEFAULT 1 COMMENT '价格驱动开关' AFTER `place_excess_take_profit`;
|
|
-- ============================================================
|
-- 实例别名(Station 端自定义显示名,2026-08 新增)
|
-- ============================================================
|
ALTER TABLE `strategy_status`
|
ADD COLUMN `alias_name` VARCHAR(64) DEFAULT NULL COMMENT '实例别名(Station 端自定义显示名)' AFTER `api_key_md5`;
|