CREATE TABLE `backtest_runs` (
	`id` text PRIMARY KEY NOT NULL,
	`symbol` text NOT NULL,
	`period` text NOT NULL,
	`total_trades` integer NOT NULL,
	`wins` integer NOT NULL,
	`losses` integer NOT NULL,
	`expired` integer NOT NULL,
	`win_rate` real NOT NULL,
	`profit_factor` real NOT NULL,
	`net_r` real NOT NULL,
	`max_drawdown` real NOT NULL,
	`equity_json` text NOT NULL,
	`data_mode` text NOT NULL,
	`tested_at` text NOT NULL,
	FOREIGN KEY (`symbol`) REFERENCES `instruments`(`symbol`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE INDEX `backtest_runs_symbol_idx` ON `backtest_runs` (`symbol`);--> statement-breakpoint
CREATE TABLE `instruments` (
	`symbol` text PRIMARY KEY NOT NULL,
	`provider_symbol` text NOT NULL,
	`label` text NOT NULL,
	`market` text NOT NULL,
	`precision` integer NOT NULL,
	`atr_multiplier` real DEFAULT 1.5 NOT NULL,
	`risk_reward` real DEFAULT 2 NOT NULL,
	`expiry_hours` integer DEFAULT 10 NOT NULL,
	`enabled` integer DEFAULT true NOT NULL,
	`sort_order` integer DEFAULT 0 NOT NULL,
	`created_at` text NOT NULL,
	`updated_at` text NOT NULL
);
--> statement-breakpoint
CREATE UNIQUE INDEX `instruments_provider_symbol_uq` ON `instruments` (`provider_symbol`);--> statement-breakpoint
CREATE TABLE `market_snapshots` (
	`symbol` text PRIMARY KEY NOT NULL,
	`price` real NOT NULL,
	`change` real DEFAULT 0 NOT NULL,
	`direction` text DEFAULT 'WAIT' NOT NULL,
	`score` integer DEFAULT 0 NOT NULL,
	`reasons_json` text DEFAULT '[]' NOT NULL,
	`chart_json` text DEFAULT '[]' NOT NULL,
	`indicators_json` text DEFAULT '{}' NOT NULL,
	`data_mode` text DEFAULT 'demo' NOT NULL,
	`updated_at` text NOT NULL,
	FOREIGN KEY (`symbol`) REFERENCES `instruments`(`symbol`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE INDEX `market_snapshots_updated_idx` ON `market_snapshots` (`updated_at`);--> statement-breakpoint
CREATE TABLE `signal_events` (
	`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
	`signal_id` text NOT NULL,
	`type` text NOT NULL,
	`price` real,
	`note` text,
	`occurred_at` text NOT NULL,
	FOREIGN KEY (`signal_id`) REFERENCES `signals`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE INDEX `signal_events_signal_idx` ON `signal_events` (`signal_id`);--> statement-breakpoint
CREATE TABLE `signals` (
	`id` text PRIMARY KEY NOT NULL,
	`symbol` text NOT NULL,
	`direction` text NOT NULL,
	`status` text DEFAULT 'PENDING' NOT NULL,
	`timeframe` text DEFAULT 'H1' NOT NULL,
	`trend_timeframe` text DEFAULT 'H4' NOT NULL,
	`entry` real NOT NULL,
	`entry_low` real NOT NULL,
	`entry_high` real NOT NULL,
	`stop_loss` real NOT NULL,
	`take_profit_1` real NOT NULL,
	`take_profit_2` real NOT NULL,
	`setup_score` integer NOT NULL,
	`risk_reward` real NOT NULL,
	`reasons_json` text NOT NULL,
	`indicators_json` text NOT NULL,
	`chart_json` text NOT NULL,
	`data_mode` text DEFAULT 'demo' NOT NULL,
	`generated_at` text NOT NULL,
	`expires_at` text NOT NULL,
	`activated_at` text,
	`tp1_at` text,
	`closed_at` text,
	`result_r` real,
	`last_checked_at` text,
	`locked` integer DEFAULT true NOT NULL,
	FOREIGN KEY (`symbol`) REFERENCES `instruments`(`symbol`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE INDEX `signals_symbol_idx` ON `signals` (`symbol`);--> statement-breakpoint
CREATE INDEX `signals_status_idx` ON `signals` (`status`);--> statement-breakpoint
CREATE INDEX `signals_generated_idx` ON `signals` (`generated_at`);