106 lines
4.0 KiB
MySQL
106 lines
4.0 KiB
MySQL
|
|
-- 资产快照表
|
||
|
|
CREATE TABLE IF NOT EXISTS assets_snapshots (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
account_id VARCHAR(50) NOT NULL,
|
||
|
|
cash DECIMAL(15, 2) NOT NULL DEFAULT 0,
|
||
|
|
frozen_cash DECIMAL(15, 2) NOT NULL DEFAULT 0,
|
||
|
|
market_value DECIMAL(15, 2) NOT NULL DEFAULT 0,
|
||
|
|
profit DECIMAL(15, 2) NOT NULL DEFAULT 0,
|
||
|
|
total_asset DECIMAL(15, 2) NOT NULL DEFAULT 0,
|
||
|
|
data_hash VARCHAR(64) NOT NULL,
|
||
|
|
collected_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX idx_assets_account_id ON assets_snapshots(account_id);
|
||
|
|
CREATE INDEX idx_assets_collected_at ON assets_snapshots(collected_at);
|
||
|
|
CREATE INDEX idx_assets_data_hash ON assets_snapshots(data_hash);
|
||
|
|
|
||
|
|
-- 订单表
|
||
|
|
CREATE TABLE IF NOT EXISTS orders (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
order_id BIGINT NOT NULL,
|
||
|
|
account_id VARCHAR(50) NOT NULL,
|
||
|
|
stock_code VARCHAR(20) NOT NULL,
|
||
|
|
price DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
volume INTEGER NOT NULL DEFAULT 0,
|
||
|
|
traded_price DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
traded_volume INTEGER NOT NULL DEFAULT 0,
|
||
|
|
order_status INTEGER NOT NULL DEFAULT 0,
|
||
|
|
order_time BIGINT NOT NULL,
|
||
|
|
order_remark TEXT,
|
||
|
|
data_hash VARCHAR(64) NOT NULL,
|
||
|
|
collected_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX idx_orders_order_id ON orders(order_id);
|
||
|
|
CREATE INDEX idx_orders_stock_code ON orders(stock_code);
|
||
|
|
CREATE INDEX idx_orders_account_id ON orders(account_id);
|
||
|
|
CREATE INDEX idx_orders_collected_at ON orders(collected_at);
|
||
|
|
|
||
|
|
-- 持仓表
|
||
|
|
CREATE TABLE IF NOT EXISTS positions (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
account_id VARCHAR(50) NOT NULL,
|
||
|
|
code VARCHAR(20) NOT NULL,
|
||
|
|
volume INTEGER NOT NULL DEFAULT 0,
|
||
|
|
can_use_volume INTEGER NOT NULL DEFAULT 0,
|
||
|
|
frozen_volume INTEGER NOT NULL DEFAULT 0,
|
||
|
|
avg_price DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
open_price DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
current_price DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
market_value DECIMAL(15, 2) NOT NULL DEFAULT 0,
|
||
|
|
profit DECIMAL(15, 2) NOT NULL DEFAULT 0,
|
||
|
|
profit_rate DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
min_profit_rate DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
data_hash VARCHAR(64) NOT NULL,
|
||
|
|
collected_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX idx_positions_code ON positions(code);
|
||
|
|
CREATE INDEX idx_positions_account_id ON positions(account_id);
|
||
|
|
CREATE INDEX idx_positions_collected_at ON positions(collected_at);
|
||
|
|
|
||
|
|
-- 行情数据表
|
||
|
|
CREATE TABLE IF NOT EXISTS tick_data (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
stock_code VARCHAR(20) NOT NULL,
|
||
|
|
last_price DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
open DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
high DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
low DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
last_close DECIMAL(10, 4) NOT NULL DEFAULT 0,
|
||
|
|
volume BIGINT NOT NULL DEFAULT 0,
|
||
|
|
amount DECIMAL(15, 2) NOT NULL DEFAULT 0,
|
||
|
|
pvolume BIGINT NOT NULL DEFAULT 0,
|
||
|
|
bid_prices DECIMAL(10, 4)[],
|
||
|
|
bid_volumes INTEGER[],
|
||
|
|
ask_prices DECIMAL(10, 4)[],
|
||
|
|
ask_volumes INTEGER[],
|
||
|
|
time BIGINT NOT NULL,
|
||
|
|
timetag VARCHAR(50),
|
||
|
|
stock_status INTEGER NOT NULL DEFAULT 0,
|
||
|
|
data_hash VARCHAR(64) NOT NULL,
|
||
|
|
collected_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX idx_tick_stock_code ON tick_data(stock_code);
|
||
|
|
CREATE INDEX idx_tick_time ON tick_data(time);
|
||
|
|
CREATE INDEX idx_tick_collected_at ON tick_data(collected_at);
|
||
|
|
|
||
|
|
-- 采集日志表
|
||
|
|
CREATE TABLE IF NOT EXISTS collection_logs (
|
||
|
|
id SERIAL PRIMARY KEY,
|
||
|
|
data_hash VARCHAR(64) NOT NULL,
|
||
|
|
has_changed BOOLEAN NOT NULL DEFAULT FALSE,
|
||
|
|
status_message TEXT,
|
||
|
|
collected_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
||
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX idx_collection_logs_hash ON collection_logs(data_hash);
|
||
|
|
CREATE INDEX idx_collection_logs_collected_at ON collection_logs(collected_at);
|