55 lines
2.9 KiB
PL/PgSQL
55 lines
2.9 KiB
PL/PgSQL
-- Insert initial reference data
|
|
|
|
-- Insert common symbols
|
|
INSERT INTO trading.symbols (symbol, name, exchange, asset_type, sector) VALUES
|
|
('AAPL', 'Apple Inc.', 'NASDAQ', 'equity', 'Technology'),
|
|
('GOOGL', 'Alphabet Inc.', 'NASDAQ', 'equity', 'Technology'),
|
|
('MSFT', 'Microsoft Corporation', 'NASDAQ', 'equity', 'Technology'),
|
|
('AMZN', 'Amazon.com Inc.', 'NASDAQ', 'equity', 'Consumer Discretionary'),
|
|
('TSLA', 'Tesla Inc.', 'NASDAQ', 'equity', 'Consumer Discretionary'),
|
|
('NVDA', 'NVIDIA Corporation', 'NASDAQ', 'equity', 'Technology'),
|
|
('META', 'Meta Platforms Inc.', 'NASDAQ', 'equity', 'Technology'),
|
|
('NFLX', 'Netflix Inc.', 'NASDAQ', 'equity', 'Communication Services'),
|
|
('SPY', 'SPDR S&P 500 ETF Trust', 'NYSE', 'etf', 'Broad Market'),
|
|
('QQQ', 'Invesco QQQ Trust', 'NASDAQ', 'etf', 'Technology'),
|
|
('BTC-USD', 'Bitcoin USD', 'CRYPTO', 'cryptocurrency', 'Digital Assets'),
|
|
('ETH-USD', 'Ethereum USD', 'CRYPTO', 'cryptocurrency', 'Digital Assets');
|
|
|
|
-- Insert default trading account
|
|
INSERT INTO trading.accounts (name, account_type, broker, cash_balance, buying_power, total_value) VALUES
|
|
('Demo Account', 'paper', 'demo', 100000.00, 100000.00, 100000.00);
|
|
|
|
-- Insert demo strategy
|
|
INSERT INTO strategy.strategies (name, description, config, parameters, is_active) VALUES
|
|
('Demo Mean Reversion', 'Simple mean reversion strategy for demonstration',
|
|
'{"timeframe": "1h", "lookback_period": 20}',
|
|
'{"rsi_oversold": 30, "rsi_overbought": 70, "position_size": 0.1}',
|
|
false);
|
|
|
|
-- Insert basic risk limits
|
|
INSERT INTO risk.limits (strategy_id, limit_type, limit_value, threshold_warning)
|
|
SELECT s.id, 'max_position_size', 10000.00, 8000.00
|
|
FROM strategy.strategies s
|
|
WHERE s.name = 'Demo Mean Reversion';
|
|
|
|
INSERT INTO risk.limits (strategy_id, limit_type, limit_value, threshold_warning)
|
|
SELECT s.id, 'max_daily_loss', 5000.00, 4000.00
|
|
FROM strategy.strategies s
|
|
WHERE s.name = 'Demo Mean Reversion';
|
|
|
|
-- Create updated_at trigger function
|
|
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = NOW();
|
|
RETURN NEW;
|
|
END;
|
|
$$ language 'plpgsql';
|
|
|
|
-- Apply updated_at triggers
|
|
CREATE TRIGGER update_symbols_updated_at BEFORE UPDATE ON trading.symbols FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
CREATE TRIGGER update_orders_updated_at BEFORE UPDATE ON trading.orders FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
CREATE TRIGGER update_positions_updated_at BEFORE UPDATE ON trading.positions FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
CREATE TRIGGER update_accounts_updated_at BEFORE UPDATE ON trading.accounts FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
CREATE TRIGGER update_strategies_updated_at BEFORE UPDATE ON strategy.strategies FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
CREATE TRIGGER update_limits_updated_at BEFORE UPDATE ON risk.limits FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|