Initial commit
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
-- 模拟交易系统 - PostgreSQL 数据库表
|
||||
-- 运行方式: psql -U postgres -d stock_app -f init_sim_trade.sql
|
||||
|
||||
-- 模拟交易记录表
|
||||
CREATE TABLE IF NOT EXISTS sim_trades (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
|
||||
stock_code VARCHAR(10) NOT NULL,
|
||||
stock_name VARCHAR(50),
|
||||
trade_type VARCHAR(10) NOT NULL, -- 'buy' 或 'sell'
|
||||
price DECIMAL(10,4) NOT NULL,
|
||||
quantity INTEGER NOT NULL DEFAULT 1000,
|
||||
trade_date DATE NOT NULL,
|
||||
trade_time TIME,
|
||||
recommend_rate DECIMAL(5,2), -- 推荐率
|
||||
signal_reason TEXT, -- 交易信号原因
|
||||
commission DECIMAL(10,4) DEFAULT 0, -- 佣金 (万2.5, 最低5元)
|
||||
stamp_tax DECIMAL(10,4) DEFAULT 0, -- 印花税 (千1, 仅卖出)
|
||||
total_fee DECIMAL(10,4) DEFAULT 0, -- 总手续费
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 模拟持仓表
|
||||
CREATE TABLE IF NOT EXISTS sim_positions (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
|
||||
stock_code VARCHAR(10) NOT NULL,
|
||||
stock_name VARCHAR(50),
|
||||
quantity INTEGER NOT NULL DEFAULT 0,
|
||||
avg_cost DECIMAL(10,4) NOT NULL DEFAULT 0,
|
||||
total_cost DECIMAL(15,4) NOT NULL DEFAULT 0,
|
||||
current_price DECIMAL(10,4),
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(user_id, stock_code)
|
||||
);
|
||||
|
||||
-- 模拟交易统计表(每日汇总)
|
||||
CREATE TABLE IF NOT EXISTS sim_daily_stats (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
|
||||
stat_date DATE NOT NULL,
|
||||
total_market_value DECIMAL(15,4) DEFAULT 0, -- 总市值
|
||||
total_cost DECIMAL(15,4) DEFAULT 0, -- 总成本
|
||||
unrealized_profit DECIMAL(15,4) DEFAULT 0, -- 浮动盈亏
|
||||
realized_profit DECIMAL(15,4) DEFAULT 0, -- 已实现盈亏
|
||||
total_profit DECIMAL(15,4) DEFAULT 0, -- 总盈亏
|
||||
trade_count INTEGER DEFAULT 0, -- 当日交易次数
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(user_id, stat_date)
|
||||
);
|
||||
|
||||
-- 模拟交易配置表
|
||||
CREATE TABLE IF NOT EXISTS sim_config (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id INTEGER UNIQUE REFERENCES users(id) ON DELETE CASCADE,
|
||||
initial_capital DECIMAL(15,4) DEFAULT 1000000, -- 初始资金(默认100万)
|
||||
trade_quantity INTEGER DEFAULT 1000, -- 每次交易数量
|
||||
auto_trade_enabled BOOLEAN DEFAULT true, -- 是否启用自动交易
|
||||
auto_trade_time TIME DEFAULT '10:00:00', -- 自动交易时间
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- 创建索引
|
||||
CREATE INDEX IF NOT EXISTS idx_sim_trades_user ON sim_trades(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_sim_trades_date ON sim_trades(trade_date);
|
||||
CREATE INDEX IF NOT EXISTS idx_sim_trades_stock ON sim_trades(stock_code);
|
||||
CREATE INDEX IF NOT EXISTS idx_sim_positions_user ON sim_positions(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_sim_daily_stats_user_date ON sim_daily_stats(user_id, stat_date);
|
||||
|
||||
-- 输出结果
|
||||
SELECT 'Simulation trade tables created successfully!' as status;
|
||||
Reference in New Issue
Block a user