File size: 3,572 Bytes
16bbbb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ba0fd74
16bbbb2
 
 
 
 
 
 
7a31ef1
 
 
 
 
16bbbb2
 
 
 
 
 
 
 
 
 
 
7a31ef1
 
 
16bbbb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
-- Trading Bot β€” Supabase SQL Schema
-- FΓΌge diese Datei im Supabase SQL Editor aus

-- ──────────────────────────────────────────────
-- Tabelle: trades
-- ──────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS trades (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    symbol TEXT NOT NULL,
    entry_price FLOAT NOT NULL,
    exit_price FLOAT,
    position_size_usd FLOAT NOT NULL,
    stop_loss FLOAT NOT NULL,
    take_profit_1 FLOAT NOT NULL,
    take_profit_2 FLOAT NOT NULL,
    entry_atr FLOAT NOT NULL DEFAULT 0,
    pnl_pct FLOAT,
    pnl_usd FLOAT,
    realized_pnl_usd FLOAT DEFAULT 0,
    risk_reward_ratio FLOAT,
    entry_learning_tags TEXT[],
    exit_learning_tags TEXT[],
    exit_reason TEXT,
    opened_at TIMESTAMPTZ DEFAULT NOW(),
    closed_at TIMESTAMPTZ,
    status TEXT DEFAULT 'open',   -- 'open', 'closed'
    hold_count INT DEFAULT 0,
    tp1_hit BOOLEAN DEFAULT FALSE,
    trailing_active BOOLEAN DEFAULT FALSE,
    trailing_stop FLOAT,
    highest_price FLOAT
);

-- ──────────────────────────────────────────────
-- Tabelle: scan_logs
-- ──────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS scan_logs (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    scanned_at TIMESTAMPTZ DEFAULT NOW(),
    market_gate_passed BOOLEAN NOT NULL,
    market_gate_reason TEXT,
    candidates_found INT DEFAULT 0,
    trades_opened INT DEFAULT 0,
    trades_closed INT DEFAULT 0,
    errors TEXT[],
    candidates TEXT[],
    ai_decisions JSONB
);

-- ──────────────────────────────────────────────
-- Tabelle: btc_price_log
-- ──────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS btc_price_log (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    price FLOAT NOT NULL,
    logged_at TIMESTAMPTZ DEFAULT NOW()
);

-- Index fΓΌr schnellere Abfragen
CREATE INDEX IF NOT EXISTS idx_btc_price_log_logged_at
    ON btc_price_log (logged_at DESC);

-- ──────────────────────────────────────────────
-- Tabelle: blacklist
-- ──────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS blacklist (
    symbol TEXT PRIMARY KEY,
    reason TEXT,
    expires_at TIMESTAMPTZ NOT NULL
);

-- Index fΓΌr schnelle Blacklist-Checks
CREATE INDEX IF NOT EXISTS idx_blacklist_expires
    ON blacklist (expires_at);

-- ──────────────────────────────────────────────
-- Row Level Security deaktivieren (fΓΌr Bot)
-- ──────────────────────────────────────────────
ALTER TABLE trades DISABLE ROW LEVEL SECURITY;
ALTER TABLE scan_logs DISABLE ROW LEVEL SECURITY;
ALTER TABLE btc_price_log DISABLE ROW LEVEL SECURITY;
ALTER TABLE blacklist DISABLE ROW LEVEL SECURITY;