1
zj
yesterday e4b5bb994a493f575d96a63ccb2f819276c66b81
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
-- 为 t_item 中每个品种批量插入交割合约参数(6 档秒级周期)
-- 周期与收益率:60秒10% | 120秒15% | 180秒20% | 300秒35% | 480秒50% | 720秒100%
-- profit_ratio / profit_ratio_max 存小数(0.10 = 10%)
-- 已存在相同 symbol + timenum + timeunit 的记录则跳过,可重复执行
 
-- USE trading_order_zh;
 
INSERT INTO `t_futures_para` (
    `uuid`,
    `symbol`,
    `timenum`,
    `timeunit`,
    `unit_amount`,
    `unit_max_amount`,
    `profit_ratio`,
    `profit_ratio_cardinality`,
    `unit_fee`,
    `profit_ratio_max`,
    `create_by`,
    `update_by`,
    `update_time`,
    `remarks`,
    `del_flag`,
    `create_time_ts`,
    `update_time_ts`,
    `create_time`
)
SELECT
    REPLACE(UUID(), '-', '') AS uuid,
    i.symbol,
    p.timenum,
    'second' AS timeunit,
    IFNULL(i.unit_amount, 100) AS unit_amount,
    0 AS unit_max_amount,
    p.profit_ratio,
    10000 AS profit_ratio_cardinality,
    0.01 AS unit_fee,
    p.profit_ratio_max,
    '2' AS create_by,
    '2' AS update_by,
    NOW() AS update_time,
    NULL AS remarks,
    '0' AS del_flag,
    UNIX_TIMESTAMP() AS create_time_ts,
    UNIX_TIMESTAMP() AS update_time_ts,
    NOW() AS create_time
FROM t_item i
CROSS JOIN (
    SELECT 60  AS timenum, 0.10 AS profit_ratio, 0.10 AS profit_ratio_max
    UNION ALL SELECT 120, 0.15, 0.15
    UNION ALL SELECT 180, 0.20, 0.20
    UNION ALL SELECT 300, 0.35, 0.35
    UNION ALL SELECT 480, 0.50, 0.50
    UNION ALL SELECT 720, 1.00, 1.00
) p
WHERE i.del_flag = '0'
  -- 仅股票类可取消下面注释;留空则 t_item 全部品种
  -- AND i.type IN ('US-stocks', 'HK-stocks', 'TW-stocks', 'A-stocks', 'JP-stocks', 'INDIA-stocks', 'UK-stocks')
  AND NOT EXISTS (
      SELECT 1
      FROM t_futures_para fp
      WHERE fp.symbol = i.symbol
        AND fp.timenum = p.timenum
        AND fp.timeunit = 'second'
        AND fp.del_flag = '0'
  );
 
-- 执行后核对条数(应为 品种数 × 6)
-- SELECT COUNT(*) FROM t_futures_para WHERE del_flag = '0' AND timeunit = 'second' AND timenum IN (60,120,180,300,480,720);