rustdx icon indicating copy to clipboard operation
rustdx copied to clipboard

计算前复权价格

Open zjp-CN opened this issue 2 years ago • 0 comments

-- 计算复权数据
DROP TABLE IF EXISTS rustdx.qfq_x;
CREATE TABLE rustdx.qfq_x (
    -- 前复权系数
    code FixedString(6),
    x    Float64,
    PRIMARY KEY(code)
) ENGINE = MergeTree  AS
WITH
qfq AS (
    SELECT code, LAST_VALUE(close) / LAST_VALUE(factor) AS qfq_multi
    FROM rustdx.factor
    GROUP BY code
    ORDER BY code
)
SELECT * FROM qfq;
--  SELECT * FROM rustdx.qfq_x LIMIT 2;
DROP TABLE IF EXISTS rustdx.qfq;
CREATE TABLE rustdx.qfq (
    -- 前复权价格
    date  Date,
    code  FixedString(6),
    close Float64,
    open  Float64,
    high  Float64,
    low   Float64,
    PRIMARY KEY(date, code)
) ENGINE = MergeTree AS
WITH
qfq_x AS (SELECT * FROM rustdx.qfq_x),
fct AS (
    SELECT date, code, open/close AS open, high/close AS high, low/close AS low, factor
    FROM rustdx.factor
),
raw AS (
    SELECT *
    FROM fct
    LEFT JOIN qfq_x ON qfq_x.code = fct.code
)
SELECT date, code, factor*x AS close, open*close AS open, high*close AS high, low*close AS low
FROM raw
ORDER BY date, code

计算后的数据在 rustdx.qfq 表,并且每次运行此脚本时,将原表删除再重建。

zjp-CN avatar Jul 03 '22 04:07 zjp-CN