Administrator
2026-08-14 57e5a8385de2d5ff2e43c72535b472e42d65ba91
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
-- 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`;