-- 백테스팅 설정 테이블
-- Ta4j 에서 제공하는 주요 백테스팅 옵션을 저장
CREATE TABLE IF NOT EXISTS gc_backtest_settings (
    id                      BIGINT          NOT NULL AUTO_INCREMENT PRIMARY KEY,
    device_id               VARCHAR(100),

    -- ── 자본 설정 ──────────────────────────────────────────────────────────
    initial_capital         DECIMAL(20,2)   NOT NULL DEFAULT 10000000.00,  -- 초기 자본 (원)

    -- ── 비용 모델 ──────────────────────────────────────────────────────────
    commission_type         VARCHAR(20)     NOT NULL DEFAULT 'LINEAR',     -- LINEAR | ZERO
    commission_rate         DECIMAL(8,5)    NOT NULL DEFAULT 0.00150,      -- 수수료율 (0.15%)
    slippage_rate           DECIMAL(8,5)    NOT NULL DEFAULT 0.00050,      -- 슬리피지 (0.05%)

    -- ── 진입/청산 가격 ───────────────────────────────────────────────────
    entry_price_type        VARCHAR(20)     NOT NULL DEFAULT 'CLOSE',      -- CLOSE | NEXT_OPEN
    exit_price_type         VARCHAR(20)     NOT NULL DEFAULT 'CLOSE',      -- CLOSE | NEXT_OPEN

    -- ── 포지션 방향 ──────────────────────────────────────────────────────
    position_direction      VARCHAR(10)     NOT NULL DEFAULT 'LONG',       -- LONG | SHORT | BOTH

    -- ── 거래 규모 ──────────────────────────────────────────────────────────
    trade_size_type         VARCHAR(20)     NOT NULL DEFAULT 'CAPITAL_PCT',-- CAPITAL_PCT | FIXED_AMOUNT
    trade_size_value        DECIMAL(10,4)   NOT NULL DEFAULT 100.0000,     -- 비율(%) or 고정금액(원)

    -- ── 손절 (StopLossRule) ───────────────────────────────────────────────
    stop_loss_enabled       TINYINT(1)      NOT NULL DEFAULT 0,
    stop_loss_pct           DECIMAL(6,3)    NOT NULL DEFAULT 2.000,        -- 손절 비율 (%)

    -- ── 익절 (StopGainRule) ───────────────────────────────────────────────
    take_profit_enabled     TINYINT(1)      NOT NULL DEFAULT 0,
    take_profit_pct         DECIMAL(6,3)    NOT NULL DEFAULT 5.000,        -- 익절 비율 (%)

    -- ── 트레일링 스탑 (TrailingStopLossRule) ─────────────────────────────
    trailing_stop_enabled   TINYINT(1)      NOT NULL DEFAULT 0,
    trailing_stop_pct       DECIMAL(6,3)    NOT NULL DEFAULT 2.000,        -- 트레일링 스탑 비율 (%)

    -- ── 재진입 제어 ───────────────────────────────────────────────────────
    reentry_wait_bars       INT             NOT NULL DEFAULT 0,            -- 매도 후 재진입 대기 봉 수
    max_open_trades         INT             NOT NULL DEFAULT 1,            -- 최대 동시 보유 포지션 수

    -- ── 기타 ──────────────────────────────────────────────────────────────
    partial_exit_enabled    TINYINT(1)      NOT NULL DEFAULT 0,            -- 분할 청산 여부
    partial_exit_pct        DECIMAL(6,3)    NOT NULL DEFAULT 50.000,       -- 분할 청산 비율 (%)

    created_at              DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at              DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
