# kis_quant_db — ERD & DDL Reference > **DB**: `kis_quant_db` @ `192.168.0.141:3306` > **Engine**: MariaDB / InnoDB · charset: `utf8mb4` > **총 테이블 수**: 50개 > **컬럼 COMMENT**: **전 테이블·전 컬럼** 채움(2026-08-04, empty=0). > 재적용: `python3 scripts/sql/fill_all_db_column_comments.py --apply` > SQL덤프: `scripts/sql/all_db_column_comments.generated.sql` > (config 전용 구버전: `fill_all_config_env_column_comments.py` / `all_config_env_column_comments.generated.sql`) > 호가컷 정밀: `config_*_ob_column_comments.sql` · 토큰/세션 정밀: `token_session_strategy_column_comments.sql` · 해설 `docs/증권사_토큰_시세.md` --- ## 목차 - [📊 트레이딩 핵심 (Active Trades & Orders)](#-트레이딩-핵심-active-trades--orders) - [⚙️ 전략 설정 (Strategy Config)](#-전략-설정-strategy-config) - [🌍 환경 설정 (Env Config)](#-환경-설정-env-config) - [📡 실시간 마켓 데이터 (WebSocket / Market Data)](#-실시간-마켓-데이터-websocket--market-data) - [🔍 종목 스캔 / 후보 (Universe & Candidates)](#-종목-스캔--후보-universe--candidates) - [📈 전략별 종목 설정 (Per-Stock Config)](#-전략별-종목-설정-per-stock-config) - [📰 DART 공시](#-dart-공시) - [🤖 AI 분석](#-ai-분석) - [📋 주문 실행 로그](#-주문-실행-로그) - [🔬 Optuna 스터디 결과](#-optuna-스터디-결과) --- ## ERD (주요 관계) > 명시적 FK 제약이 없으므로 코드 상 참조 관계를 표현합니다. ```mermaid erDiagram active_trades { varchar code PK varchar strategy PK double avg_buy_price int current_qty varchar status } trade_history { int id PK varchar code varchar strategy double pnl } target_candidates_history { int id PK varchar code varchar strategy } env_config { int id PK varchar created_at } env_config_ext { varchar env_key PK text env_value } env_auth_config { int id PK varchar created_at text KIS_APP_KEY_REAL text KIS_APP_KEY_OB_REAL } ws_candles { varchar code varchar candle_time PK double close } config_momentum { int id PK varchar created_at } active_trades ||--o{ trade_history : "청산→기록" active_trades ||--o{ target_candidates_history : "후보→진입" env_config ||--o{ config_momentum : "설정 스냅샷" env_config_ext ||--|| env_config : "확장 KV" env_auth_config ||--|| env_config : "앱키/시크릿/ID" ws_candles ||--o{ active_trades : "가격 참조" ``` --- ## 테이블 상세 ### 📊 트레이딩 핵심 (Active Trades & Orders) #### `active_trades` **PK**: `code`, `strategy` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `code` 🔑 | `varchar(20)` | NOT NULL | | 실보유: 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | 실보유: 종목명 | | `strategy` 🔑 | `varchar(50)` | NOT NULL | MANUAL | 실보유: 전략 ID (SHORT/MOMENTUM/BREAKOUT/US_MOMENTUM 등) | | `avg_buy_price` | `double` | NOT NULL | | 실보유: 평균 매수가 | | `current_price` | `double` | NULL | NULL | 실보유: 최근 평가/현재가 스냅샷 | | `stop_price` | `double` | NULL | NULL | 실보유: 손절가 | | `target_price` | `double` | NULL | NULL | 실보유: 목표가 | | `max_price` | `double` | NULL | NULL | 실보유: 보유 중 고점(트레일·어깨컷용) | | `atr_entry` | `double` | NULL | NULL | 실보유: 진입 시점 ATR | | `target_qty` | `int(11)` | NOT NULL | | 실보유: 목표 수량 | | `current_qty` | `int(11)` | NOT NULL | | 실보유: 현재 보유 수량 | | `total_invested` | `double` | NULL | NULL | 실보유: 총 투자금액 | | `status` | `text` | NOT NULL | | 실보유: 상태 | | `buy_date` | `text` | NOT NULL | | 실보유: 매수 시각/일자 | | `updated_at` | `text` | NOT NULL | | 실보유: 마지막 갱신 시각 | | `size_class` | `text` | NULL | NULL | 실보유: 사이즈 등급(소/중/대 등) | | `rsi` | `double` | NULL | NULL | 실보유: 진입/기록 시점 RSI | | `volume_ratio` | `double` | NULL | NULL | 실보유: 거래량 배수(기록 스냅샷) | | `tail_length_pct` | `double` | NULL | NULL | 실보유: 꼬리 길이%(기록 스냅샷) | | `ma5_gap_pct` | `double` | NULL | NULL | 실보유: MA5 괴리%(기록 스냅샷) | | `ma20_gap_pct` | `double` | NULL | NULL | 실보유: MA20 괴리%(기록 스냅샷) | | `foreign_net_buy` | `double` | NULL | NULL | 실보유: 외국인 순매수(기록 스냅샷) | | `institution_net_buy` | `double` | NULL | NULL | 실보유: 기관 순매수(기록 스냅샷) | | `market_hour` | `double` | NULL | NULL | 실보유: 장중 시각 메타 | | `is_mock` | `tinyint(1)` | NULL | NULL | 1=모의(KIS_MOCK) · 0=실전 · NULL=이관 전 미상 |
DDL 원문 ```sql CREATE TABLE `active_trades` ( `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL, `strategy` varchar(50) NOT NULL DEFAULT 'MANUAL', `avg_buy_price` double NOT NULL, `current_price` double DEFAULT NULL, `stop_price` double DEFAULT NULL, `target_price` double DEFAULT NULL, `max_price` double DEFAULT NULL, `atr_entry` double DEFAULT NULL, `target_qty` int(11) NOT NULL, `current_qty` int(11) NOT NULL, `total_invested` double DEFAULT NULL, `status` text NOT NULL, `buy_date` text NOT NULL, `updated_at` text NOT NULL, `size_class` text DEFAULT NULL, `rsi` double DEFAULT NULL, `volume_ratio` double DEFAULT NULL, `tail_length_pct` double DEFAULT NULL, `ma5_gap_pct` double DEFAULT NULL, `ma20_gap_pct` double DEFAULT NULL, `foreign_net_buy` double DEFAULT NULL, `institution_net_buy` double DEFAULT NULL, `market_hour` double DEFAULT NULL, `is_mock` tinyint(1) DEFAULT NULL, PRIMARY KEY (`code`,`strategy`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `active_trades_paper` **PK**: `code`, `strategy` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `code` 🔑 | `varchar(20)` | NOT NULL | | 페이퍼보유: 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | 페이퍼보유: 종목명 | | `strategy` 🔑 | `varchar(50)` | NOT NULL | MANUAL | 페이퍼보유: 전략 ID (SHORT/MOMENTUM/BREAKOUT/US_MOMENTUM 등) | | `avg_buy_price` | `double` | NOT NULL | | 페이퍼보유: 평균 매수가 | | `current_price` | `double` | NULL | NULL | 페이퍼보유: 최근 평가/현재가 스냅샷 | | `stop_price` | `double` | NULL | NULL | 페이퍼보유: 손절가 | | `target_price` | `double` | NULL | NULL | 페이퍼보유: 목표가 | | `max_price` | `double` | NULL | NULL | 페이퍼보유: 보유 중 고점(트레일·어깨컷용) | | `atr_entry` | `double` | NULL | NULL | 페이퍼보유: 진입 시점 ATR | | `target_qty` | `int(11)` | NOT NULL | | 페이퍼보유: 목표 수량 | | `current_qty` | `int(11)` | NOT NULL | | 페이퍼보유: 현재 보유 수량 | | `total_invested` | `double` | NULL | NULL | 페이퍼보유: 총 투자금액 | | `status` | `varchar(20)` | NOT NULL | | 페이퍼보유: 상태 | | `buy_date` | `varchar(30)` | NOT NULL | | 페이퍼보유: 매수 시각/일자 | | `updated_at` | `varchar(30)` | NOT NULL | | 페이퍼보유: 마지막 갱신 시각 | | `size_class` | `varchar(20)` | NULL | NULL | 페이퍼보유: 사이즈 등급(소/중/대 등) | | `fill_mode` | `varchar(16)` | NOT NULL | paper | 페이퍼보유: FILL MODE (fill_mode) | | `note` | `varchar(200)` | NULL | NULL | 페이퍼보유: 메모 |
DDL 원문 ```sql CREATE TABLE `active_trades_paper` ( `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL, `strategy` varchar(50) NOT NULL DEFAULT 'MANUAL', `avg_buy_price` double NOT NULL, `current_price` double DEFAULT NULL, `stop_price` double DEFAULT NULL, `target_price` double DEFAULT NULL, `max_price` double DEFAULT NULL, `atr_entry` double DEFAULT NULL, `target_qty` int(11) NOT NULL, `current_qty` int(11) NOT NULL, `total_invested` double DEFAULT NULL, `status` varchar(20) NOT NULL, `buy_date` varchar(30) NOT NULL, `updated_at` varchar(30) NOT NULL, `size_class` varchar(20) DEFAULT NULL, `fill_mode` varchar(16) NOT NULL DEFAULT 'paper', `note` varchar(200) DEFAULT NULL, PRIMARY KEY (`code`,`strategy`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `orders` **PK**: `id` | AUTO_INCREMENT=7429 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | 실주문: PK · AUTO_INCREMENT | | `ord_no` | `varchar(30)` | NOT NULL | | 실주문: 증권사 주문번호 | | `strategy_id` | `varchar(40)` | NOT NULL | | 실주문: 전략 ID | | `code` | `varchar(20)` | NOT NULL | | 실주문: 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | 실주문: 종목명 | | `side` | `varchar(8)` | NOT NULL | | 실주문: 매수/매도 구분 | | `qty` | `int(11)` | NOT NULL | | 실주문: 수량(주) | | `price` | `double` | NULL | 0 | 실주문: 주문/체결 가격 | | `filled_qty` | `int(11)` | NOT NULL | 0 | 실주문: 체결 수량 | | `filled_avg_price` | `double` | NULL | 0 | 실주문: 체결 평균가 | | `status` | `varchar(16)` | NOT NULL | SUBMITTED | 실주문: 상태 | | `msg_cd` | `varchar(20)` | NULL | NULL | 실주문: 응답 코드 | | `msg1` | `varchar(300)` | NULL | NULL | 실주문: 응답 메시지 | | `ord_date` | `varchar(10)` | NOT NULL | | 실주문: 주문일 | | `submitted_at` | `varchar(30)` | NOT NULL | | 실주문: 주문 제출 시각 | | `filled_at` | `varchar(30)` | NULL | NULL | 실주문: 체결 시각 | | `raw_json` | `mediumtext` | NULL | NULL | 실주문: 원본 응답 JSON | | `is_mock` | `tinyint(1)` | NULL | NULL | 1=모의(KIS_MOCK) · 0=실전 · NULL=이관 전 미상 | **인덱스**: - `uq_ord_no_ctx`: (`ord_no`, `strategy_id`, `code`, `side`, `ord_date`, `is_mock`) - `idx_strategy_date`: (`strategy_id`, `ord_date`) - `idx_code_date`: (`code`, `ord_date`) - `idx_orders_mock_date`: (`is_mock`, `ord_date`)
DDL 원문 ```sql CREATE TABLE `orders` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `ord_no` varchar(30) NOT NULL, `strategy_id` varchar(40) NOT NULL, `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL DEFAULT '', `side` varchar(8) NOT NULL, `qty` int(11) NOT NULL, `price` double DEFAULT 0, `filled_qty` int(11) NOT NULL DEFAULT 0, `filled_avg_price` double DEFAULT 0, `status` varchar(16) NOT NULL DEFAULT 'SUBMITTED', `msg_cd` varchar(20) DEFAULT NULL, `msg1` varchar(300) DEFAULT NULL, `ord_date` varchar(10) NOT NULL, `submitted_at` varchar(30) NOT NULL, `filled_at` varchar(30) DEFAULT NULL, `raw_json` mediumtext DEFAULT NULL, `is_mock` tinyint(1) DEFAULT NULL, `broker_open_qty` int(11) DEFAULT NULL, `broker_open_odno` varchar(30) DEFAULT NULL, `broker_reconcile_at` varchar(30) DEFAULT NULL, `broker_reconcile_note` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uq_ord_no_ctx` (`ord_no`,`strategy_id`,`code`,`side`,`ord_date`,`is_mock`), KEY `idx_strategy_date` (`strategy_id`,`ord_date`), KEY `idx_code_date` (`code`,`ord_date`), KEY `idx_orders_mock_date` (`is_mock`,`ord_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `orders_paper` **PK**: `id` | AUTO_INCREMENT=7 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | 페이퍼주문: PK · AUTO_INCREMENT | | `ord_no` | `varchar(40)` | NOT NULL | | 페이퍼주문: 증권사 주문번호 | | `strategy_id` | `varchar(40)` | NOT NULL | | 페이퍼주문: 전략 ID | | `code` | `varchar(20)` | NOT NULL | | 페이퍼주문: 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | 페이퍼주문: 종목명 | | `side` | `varchar(8)` | NOT NULL | | 페이퍼주문: 매수/매도 구분 | | `qty` | `int(11)` | NOT NULL | | 페이퍼주문: 수량(주) | | `price` | `double` | NULL | 0 | 페이퍼주문: 주문/체결 가격 | | `filled_qty` | `int(11)` | NOT NULL | 0 | 페이퍼주문: 체결 수량 | | `filled_avg_price` | `double` | NULL | 0 | 페이퍼주문: 체결 평균가 | | `status` | `varchar(16)` | NOT NULL | FILLED | 페이퍼주문: 상태 | | `msg_cd` | `varchar(20)` | NULL | NULL | 페이퍼주문: 응답 코드 | | `msg1` | `varchar(300)` | NULL | NULL | 페이퍼주문: 응답 메시지 | | `ord_date` | `varchar(10)` | NOT NULL | | 페이퍼주문: 주문일 | | `submitted_at` | `varchar(30)` | NOT NULL | | 페이퍼주문: 주문 제출 시각 | | `filled_at` | `varchar(30)` | NULL | NULL | 페이퍼주문: 체결 시각 | | `raw_json` | `mediumtext` | NULL | NULL | 페이퍼주문: 원본 응답 JSON | **인덱스**: - `uq_paper_ord_no_ctx`: (`ord_no`, `strategy_id`, `code`, `side`, `ord_date`) - `idx_paper_strategy_date`: (`strategy_id`, `ord_date`) - `idx_paper_code_date`: (`code`, `ord_date`)
DDL 원문 ```sql CREATE TABLE `orders_paper` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `ord_no` varchar(40) NOT NULL, `strategy_id` varchar(40) NOT NULL, `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL DEFAULT '', `side` varchar(8) NOT NULL, `qty` int(11) NOT NULL, `price` double DEFAULT 0, `filled_qty` int(11) NOT NULL DEFAULT 0, `filled_avg_price` double DEFAULT 0, `status` varchar(16) NOT NULL DEFAULT 'FILLED', `msg_cd` varchar(20) DEFAULT NULL, `msg1` varchar(300) DEFAULT NULL, `ord_date` varchar(10) NOT NULL, `submitted_at` varchar(30) NOT NULL, `filled_at` varchar(30) DEFAULT NULL, `raw_json` mediumtext DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uq_paper_ord_no_ctx` (`ord_no`,`strategy_id`,`code`,`side`,`ord_date`), KEY `idx_paper_strategy_date` (`strategy_id`,`ord_date`), KEY `idx_paper_code_date` (`code`,`ord_date`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `trade_history` **PK**: `id` | AUTO_INCREMENT=4399 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | 실청산이력: PK · AUTO_INCREMENT | | `code` | `varchar(20)` | NOT NULL | | 실청산이력: 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | 실청산이력: 종목명 | | `strategy` | `varchar(50)` | NULL | NULL | 실청산이력: 전략 ID (SHORT/MOMENTUM/BREAKOUT/US_MOMENTUM 등) | | `buy_price` | `double` | NOT NULL | | 실청산이력: 매수가 | | `sell_price` | `double` | NOT NULL | | 실청산이력: 매도가 | | `qty` | `int(11)` | NOT NULL | | 실청산이력: 수량(주) | | `profit_rate` | `double` | NOT NULL | | 실청산이력: 수익률(비율) | | `realized_pnl` | `double` | NOT NULL | | 실청산이력: 실현손익 | | `hold_minutes` | `int(11)` | NULL | NULL | 실청산이력: 보유 분 | | `buy_date` | `varchar(30)` | NULL | NULL | 실청산이력: 매수 시각/일자 | | `sell_date` | `varchar(30)` | NOT NULL | | 실청산이력: 매도 시각/일자 | | `sell_reason` | `varchar(200)` | NULL | NULL | 실청산이력: 매도 사유 | | `env_snapshot` | `text` | NULL | NULL | 실청산이력: 체결 시점 env/파라미터 JSON 스냅샷 | | `size_class` | `varchar(20)` | NULL | NULL | 실청산이력: 사이즈 등급(소/중/대 등) | | `rsi` | `double` | NULL | NULL | 실청산이력: 진입/기록 시점 RSI | | `volume_ratio` | `double` | NULL | NULL | 실청산이력: 거래량 배수(기록 스냅샷) | | `tail_length_pct` | `double` | NULL | NULL | 실청산이력: 꼬리 길이%(기록 스냅샷) | | `ma5_gap_pct` | `double` | NULL | NULL | 실청산이력: MA5 괴리%(기록 스냅샷) | | `ma20_gap_pct` | `double` | NULL | NULL | 실청산이력: MA20 괴리%(기록 스냅샷) | | `foreign_net_buy` | `double` | NULL | NULL | 실청산이력: 외국인 순매수(기록 스냅샷) | | `institution_net_buy` | `double` | NULL | NULL | 실청산이력: 기관 순매수(기록 스냅샷) | | `market_hour` | `double` | NULL | NULL | 실청산이력: 장중 시각 메타 | | `is_mock` | `tinyint(1)` | NULL | NULL | 1=모의(KIS_MOCK) · 0=실전 · NULL=이관 전 미상 |
DDL 원문 ```sql CREATE TABLE `trade_history` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL, `strategy` varchar(50) DEFAULT NULL, `buy_price` double NOT NULL, `sell_price` double NOT NULL, `qty` int(11) NOT NULL, `profit_rate` double NOT NULL, `realized_pnl` double NOT NULL, `hold_minutes` int(11) DEFAULT NULL, `buy_date` varchar(30) DEFAULT NULL, `sell_date` varchar(30) NOT NULL, `sell_reason` varchar(200) DEFAULT NULL, `env_snapshot` text DEFAULT NULL, `size_class` varchar(20) DEFAULT NULL, `is_mock` tinyint(1) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `trade_history_paper` **PK**: `id` | AUTO_INCREMENT=2 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | 페이퍼청산이력: PK · AUTO_INCREMENT | | `code` | `varchar(20)` | NOT NULL | | 페이퍼청산이력: 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | 페이퍼청산이력: 종목명 | | `strategy` | `varchar(50)` | NULL | NULL | 페이퍼청산이력: 전략 ID (SHORT/MOMENTUM/BREAKOUT/US_MOMENTUM 등) | | `buy_price` | `double` | NOT NULL | | 페이퍼청산이력: 매수가 | | `sell_price` | `double` | NOT NULL | | 페이퍼청산이력: 매도가 | | `qty` | `int(11)` | NOT NULL | | 페이퍼청산이력: 수량(주) | | `profit_rate` | `double` | NOT NULL | | 페이퍼청산이력: 수익률(비율) | | `realized_pnl` | `double` | NOT NULL | | 페이퍼청산이력: 실현손익 | | `hold_minutes` | `int(11)` | NULL | NULL | 페이퍼청산이력: 보유 분 | | `buy_date` | `varchar(30)` | NULL | NULL | 페이퍼청산이력: 매수 시각/일자 | | `sell_date` | `varchar(30)` | NOT NULL | | 페이퍼청산이력: 매도 시각/일자 | | `sell_reason` | `varchar(200)` | NULL | NULL | 페이퍼청산이력: 매도 사유 | | `env_snapshot` | `text` | NULL | NULL | 페이퍼청산이력: 체결 시점 env/파라미터 JSON 스냅샷 | | `size_class` | `varchar(20)` | NULL | NULL | 페이퍼청산이력: 사이즈 등급(소/중/대 등) | | `fill_mode` | `varchar(16)` | NOT NULL | paper | 페이퍼청산이력: FILL MODE (fill_mode) | **인덱스**: - `idx_thp_strategy_sell`: (`strategy`, `sell_date`) - `idx_thp_code_sell`: (`code`, `sell_date`)
DDL 원문 ```sql CREATE TABLE `trade_history_paper` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL, `strategy` varchar(50) DEFAULT NULL, `buy_price` double NOT NULL, `sell_price` double NOT NULL, `qty` int(11) NOT NULL, `profit_rate` double NOT NULL, `realized_pnl` double NOT NULL, `hold_minutes` int(11) DEFAULT NULL, `buy_date` varchar(30) DEFAULT NULL, `sell_date` varchar(30) NOT NULL, `sell_reason` varchar(200) DEFAULT NULL, `env_snapshot` text DEFAULT NULL, `size_class` varchar(20) DEFAULT NULL, `fill_mode` varchar(16) NOT NULL DEFAULT 'paper', PRIMARY KEY (`id`), KEY `idx_thp_strategy_sell` (`strategy`,`sell_date`), KEY `idx_thp_code_sell` (`code`,`sell_date`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `buy_execution_log` **PK**: `id` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `code` | `varchar(20)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | 종목명 | | `strategy` | `varchar(50)` | NOT NULL | | 전략 ID (SHORT/MOMENTUM/BREAKOUT/US_MOMENTUM 등) | | `buy_date` | `varchar(10)` | NOT NULL | | 매수 시각/일자 | | `executed_at` | `varchar(30)` | NOT NULL | | buy_execution_log: EXECUTED AT (executed_at) | | `amount` | `double` | NOT NULL | | buy_execution_log: AMOUNT (amount) | | `qty` | `int(11)` | NOT NULL | | 수량(주) |
DDL 원문 ```sql CREATE TABLE `buy_execution_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL, `strategy` varchar(50) NOT NULL, `buy_date` varchar(10) NOT NULL, `executed_at` varchar(30) NOT NULL, `amount` double NOT NULL, `qty` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `daily_summary` **PK**: `date` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `date` 🔑 | `varchar(10)` | NOT NULL | | daily_summary: DATE (date) | | `start_asset` | `double` | NULL | NULL | daily_summary: START ASSET (start_asset) | | `end_asset` | `double` | NULL | NULL | daily_summary: END ASSET (end_asset) | | `total_trades` | `int(11)` | NULL | NULL | daily_summary: TOTAL TRADES (total_trades) | | `win_trades` | `int(11)` | NULL | NULL | daily_summary: WIN TRADES (win_trades) | | `total_pnl` | `double` | NULL | NULL | daily_summary: TOTAL PNL (total_pnl) | | `win_rate` | `double` | NULL | NULL | daily_summary: WIN RATE (win_rate) |
DDL 원문 ```sql CREATE TABLE `daily_summary` ( `date` varchar(10) NOT NULL, `start_asset` double DEFAULT NULL, `end_asset` double DEFAULT NULL, `total_trades` int(11) DEFAULT NULL, `win_trades` int(11) DEFAULT NULL, `total_pnl` double DEFAULT NULL, `win_rate` double DEFAULT NULL, PRIMARY KEY (`date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
### ⚙️ 전략 설정 (Strategy Config) #### `config_momentum` **PK**: `id` | AUTO_INCREMENT=387 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `created_at` | `varchar(30)` | NOT NULL | | 설정행 생성시각 | | `MOMENTUM_LIVE_BACKTEST_ALIGN` | `text` | NULL | NULL | 모멘텀: LIVE BACKTEST ALIGN (MOMENTUM_LIVE_BACKTEST_ALIGN) | | `MOMENTUM_LIVE_SIGNAL_LOOKBACK_BARS` | `text` | NULL | NULL | 모멘텀: LIVE SIGNAL LOOKBACK 봉수 (MOMENTUM_LIVE_SIGNAL_LOOKBACK_BARS) | | `STRATEGY_MOMENTUM_ENABLED` | `text` | NULL | NULL | 국내모멘텀 ON/OFF. 다음루프 신규매수중단(보유청산유지). WS구독해제 안함. 기동시OFF→켜려면재시작 | | `MOMENTUM_UNIVERSE_SOURCE` | `text` | NULL | NULL | 모멘텀 유니버스 · ls_condition=LS 동명 AFR · 시세는 키움/한투 유지 · 매니저 최초 기동은 봇 재시작 필요할 수 있음 · 키움으로 자동 폴백 안 함 | | `RANK_MOMENTUM_SORT` | `text` | NULL | NULL | 모멘텀: RANK MOMENTUM SORT (RANK_MOMENTUM_SORT) | | `RANK_MOMENTUM_LIMIT` | `text` | NULL | NULL | 모멘텀: RANK MOMENTUM LIMIT (RANK_MOMENTUM_LIMIT) | | `CONDITION_MOMENTUM_NAME` | `text` | NULL | NULL | 모멘텀: CONDITION MOMENTUM NAME (CONDITION_MOMENTUM_NAME) | | `CONDITION_MOMENTUM_SEQ` | `text` | NULL | NULL | 모멘텀: CONDITION MOMENTUM SEQ (CONDITION_MOMENTUM_SEQ) | | `MOMENTUM_CAND_LIMIT` | `text` | NULL | NULL | 모멘텀 후보 상한 · 0=무제한 · 조건검색/랭킹이 N개 줘도 상위 N개만 매수체크·WS구독 · 전 전략 합산이 키움 WS 100종 한도를 넘지 않게 조절 | | `MOMENTUM_TIME_START` | `text` | NULL | NULL | 모멘텀: 매수시작 (MOMENTUM_TIME_START) | | `MOMENTUM_TIME_END` | `text` | NULL | NULL | 모멘텀: 매수종료 (MOMENTUM_TIME_END) | | `MOMENTUM_MAX_STOCKS` | `text` | NULL | NULL | 모멘텀 동시 종목 | | `MOMENTUM_MAX_BUY_AMOUNT` | `text` | NULL | NULL | 모멘텀: 1회최대매수금액 (MOMENTUM_MAX_BUY_AMOUNT) | | `MOMENTUM_MAX_DAILY` | `text` | NULL | NULL | 모멘텀: 일일매수횟수상한 (MOMENTUM_MAX_DAILY) | | `MOMENTUM_RSI_MIN` | `text` | NULL | NULL | 모멘텀: RSI하한 (MOMENTUM_RSI_MIN) | | `MOMENTUM_RSI_MAX` | `text` | NULL | NULL | 모멘텀: RSI상한 (MOMENTUM_RSI_MAX) | | `MOMENTUM_VOL_MULT` | `text` | NULL | NULL | 모멘텀: 거래량배수 (MOMENTUM_VOL_MULT) | | `MOMENTUM_VOL_WIN` | `text` | NULL | NULL | 모멘텀: 거래량윈도우 (MOMENTUM_VOL_WIN) | | `MOMENTUM_TIME_END_HM` | `text` | NULL | NULL | 모멘텀: 매수종료 HHMM (MOMENTUM_TIME_END_HM) | | `MOMENTUM_MAX_FROM_OPEN_PCT` | `text` | NULL | NULL | 모멘텀: 최대 시가대비 % (MOMENTUM_MAX_FROM_OPEN_PCT) | | `MOMENTUM_MIN_FROM_OPEN_PCT` | `text` | NULL | NULL | 모멘텀: 최소 시가대비 % (MOMENTUM_MIN_FROM_OPEN_PCT) | | `MOMENTUM_SKIP_HTS_SCAN_DUPES` | `text` | NULL | NULL | 모멘텀: HTS스캔중복스킵 (MOMENTUM_SKIP_HTS_SCAN_DUPES) | | `MOMENTUM_STOP_LOSS_PCT` | `text` | NULL | NULL | 모멘텀: 손절 % (MOMENTUM_STOP_LOSS_PCT) | | `MOMENTUM_TAKE_PROFIT_PCT` | `text` | NULL | NULL | 모멘텀: 익절 % (MOMENTUM_TAKE_PROFIT_PCT) | | `MOMENTUM_MIN_DROP_RATE` | `text` | NULL | NULL | 모멘텀: 최소 되돌림/하락 RATE (MOMENTUM_MIN_DROP_RATE) | | `MOMENTUM_SLOT_MONEY` | `text` | NULL | NULL | 모멘텀 슬롯(원) | | `MOMENTUM_MIN_PRICE` | `text` | NULL | NULL | 모멘텀: 최소가격 (MOMENTUM_MIN_PRICE) | | `MOMENTUM_MAX_LOSS_PER_TRADE_KRW` | `text` | NULL | NULL | 모멘텀: 최대 LOSS PER TRADE 원 (MOMENTUM_MAX_LOSS_PER_TRADE_KRW) | | `MOMENTUM_MIN_DROP_PCT_FOR_LOSS_CUT` | `text` | NULL | NULL | 모멘텀: 최소 되돌림/하락 % FOR LOSS CUT (MOMENTUM_MIN_DROP_PCT_FOR_LOSS_CUT) | | `MOMENTUM_MIN_PROFIT_PCT` | `text` | NULL | NULL | 모멘텀: 최소 PROFIT % (MOMENTUM_MIN_PROFIT_PCT) | | `MOMENTUM_TP_MAX_PCT` | `text` | NULL | NULL | 모멘텀: TP 최대 % (MOMENTUM_TP_MAX_PCT) | | `MOMENTUM_SHOULDER_MIN_HIGH_PCT` | `text` | NULL | NULL | 모멘텀: 어깨무장고점 % (MOMENTUM_SHOULDER_MIN_HIGH_PCT) | | `MOMENTUM_SHOULDER_CUT_PCT` | `text` | NULL | NULL | 모멘텀: 어깨컷 % (MOMENTUM_SHOULDER_CUT_PCT) | | `MOMENTUM_TOTAL_BUDGET_KRW` | `text` | NULL | NULL | 모멘텀 총 한도(원) | | `KIS_MOMENTUM_MM_CHANNEL` | `text` | NULL | NULL | 모멘텀: KIS MOMENTUM MM CHANNEL (KIS_MOMENTUM_MM_CHANNEL) | | `MOMENTUM_RATCHET_TIERS` | `text` | NULL | NULL | 모멘텀: 다단래칫 (MOMENTUM_RATCHET_TIERS) | | `MOMENTUM_TRAIL_PCT` | `text` | NULL | NULL | 모멘텀: 트레일 % (MOMENTUM_TRAIL_PCT) | | `MOMENTUM_TRAIL_ARM_PCT` | `text` | NULL | NULL | 모멘텀: 트레일무장 % (MOMENTUM_TRAIL_ARM_PCT) | | `MOMENTUM_MAX_HOLD_BARS` | `text` | NULL | NULL | 모멘텀: 최대보유봉 (MOMENTUM_MAX_HOLD_BARS) | | `MOMENTUM_USE_DEFENSE_FILTERS` | `text` | NULL | NULL | 모멘텀: 사용_ 방어필터 필터 S (MOMENTUM_USE_DEFENSE_FILTERS) | | `MOMENTUM_USE_HIGH_CHASE_FILTER` | `text` | NULL | NULL | 모멘텀: 사용_ 고점추격 필터 (MOMENTUM_USE_HIGH_CHASE_FILTER) | | `MOMENTUM_USE_DAILY_RANGE_FILTER` | `text` | NULL | NULL | 모멘텀: 사용_ DAILY RANGE 필터 (MOMENTUM_USE_DAILY_RANGE_FILTER) | | `MOMENTUM_HIGH_CHASE_THR` | `text` | NULL | NULL | 모멘텀: 고점추격 THR (MOMENTUM_HIGH_CHASE_THR) | | `MOMENTUM_RSI_PERIOD` | `text` | NULL | NULL | 모멘텀: RSI 기간 (MOMENTUM_RSI_PERIOD) | | `MOMENTUM_COOLDOWN_SEC` | `text` | NULL | NULL | 모멘텀: 쿨다운 초 (MOMENTUM_COOLDOWN_SEC) | | `MOMENTUM_MIN_HOLD_SEC` | `text` | NULL | NULL | 모멘텀: 최소보유 초 (MOMENTUM_MIN_HOLD_SEC) | | `MOMENTUM_FORCE_EOD_EXIT` | `text` | NULL | NULL | 모멘텀: FORCE 장마감 EXIT (MOMENTUM_FORCE_EOD_EXIT) | | `MOMENTUM_USE_EMA_FILTER` | `text` | NULL | NULL | 모멘텀: 사용_ EMA 필터 (MOMENTUM_USE_EMA_FILTER) | | `MOMENTUM_EMA_FAST_PERIOD` | `text` | NULL | NULL | 모멘텀: EMA단기 기간 (MOMENTUM_EMA_FAST_PERIOD) | | `MOMENTUM_EMA_SLOW_PERIOD` | `text` | NULL | NULL | 모멘텀: EMA장기 기간 (MOMENTUM_EMA_SLOW_PERIOD) | | `MOMENTUM_USE_RSI_MAX_FILTER` | `text` | NULL | NULL | 모멘텀: 사용_ RSI상한 필터 (MOMENTUM_USE_RSI_MAX_FILTER) | | `MOMENTUM_PATTERN_BREAKOUT` | `text` | NULL | NULL | 모멘텀: 패턴 돌파 (MOMENTUM_PATTERN_BREAKOUT) | | `MOMENTUM_PATTERN_PULLBACK` | `text` | NULL | NULL | 모멘텀: 패턴 되돌림 (MOMENTUM_PATTERN_PULLBACK) | | `MOMENTUM_CHASE_LOOKBACK_MIN` | `text` | NULL | NULL | 모멘텀: CHASE LOOKBACK 최소 (MOMENTUM_CHASE_LOOKBACK_MIN) | | `MOMENTUM_PULLBACK_LOOKBACK_MIN` | `text` | NULL | NULL | 모멘텀: 되돌림 LOOKBACK 최소 (MOMENTUM_PULLBACK_LOOKBACK_MIN) | | `MOMENTUM_PULLBACK_MIN_PCT` | `text` | NULL | NULL | 모멘텀: 되돌림 최소 % (MOMENTUM_PULLBACK_MIN_PCT) | | `MOMENTUM_PULLBACK_MAX_PCT` | `text` | NULL | NULL | 모멘텀: 되돌림 최대 % (MOMENTUM_PULLBACK_MAX_PCT) | | `MOMENTUM_SETUP_VOL_MAX_MULT` | `text` | NULL | NULL | 모멘텀: SETUP 거래량 최대 배수 (MOMENTUM_SETUP_VOL_MAX_MULT) | | `MOMENTUM_SETUP_BEAR_BARS_MIN` | `text` | NULL | NULL | 모멘텀: SETUP BEAR 봉수 최소 (MOMENTUM_SETUP_BEAR_BARS_MIN) | | `MOMENTUM_ORDERBOOK_FILTER_ENABLED` | `text` | NULL | NULL | 모멘텀 호가필터 ON · ON=스프레드·잔량비·얇은호가·매도벽으로 매수 차단 · OFF=저장만 | | `MOMENTUM_ORDERBOOK_MAX_SPREAD_PCT` | `text` | NULL | NULL | 모멘텀 스프레드상한(%) · 0.45=0.45% · 그리드 max_spread_pct 앵커 | | `MOMENTUM_ORDERBOOK_ENTRY_BID_LEVELS` | `text` | NULL | NULL | 모멘텀 호가단계(N호가) | | `MOMENTUM_ORDERBOOK_ENTRY_BID_DEPTH_MULT` | `text` | NULL | NULL | 모멘텀 매수호가깊이 배수 · 얇은호가 탈락 · 필요수량×N | | `MOMENTUM_ORDERBOOK_ENTRY_ASK_MAX_MULT` | `text` | NULL | NULL | 모멘텀 매도벽 허용배수 · 필요수량×N · 그리드 ask_max_mult | | `MOMENTUM_ORDERBOOK_MIN_BID_ASK_RATIO` | `text` | NULL | NULL | 모멘텀 매수/매도잔량비 하한 · 그리드 min_bid_ask_ratio | | `MOMENTUM_PROGRAM_FILTER_ENABLED` | `text` | NULL | NULL | 모멘텀: 프로그램매매 필터 ON/OFF (MOMENTUM_PROGRAM_FILTER_ENABLED) | | `MOMENTUM_PROGRAM_MIN_NET_BUY_QTY` | `text` | NULL | NULL | 모멘텀: 프로그램매매 최소 NET BUY QTY (MOMENTUM_PROGRAM_MIN_NET_BUY_QTY) | | `MOMENTUM_PROGRAM_MIN_NET_BUY_AMT` | `text` | NULL | NULL | 모멘텀: 프로그램매매 최소 NET BUY AMT (MOMENTUM_PROGRAM_MIN_NET_BUY_AMT) | | `MOMENTUM_PROGRAM_MAX_SELL_BUY_QTY_RATIO` | `text` | NULL | NULL | 모멘텀: 프로그램매매 최대 SELL BUY QTY RATIO (MOMENTUM_PROGRAM_MAX_SELL_BUY_QTY_RATIO) | | `MOMENTUM_PROGRAM_MIN_NET_DELTA_QTY` | `text` | NULL | NULL | 모멘텀: 프로그램매매 최소 NET DELTA QTY (MOMENTUM_PROGRAM_MIN_NET_DELTA_QTY) | | `MOMENTUM_PROGRAM_SNAPSHOT_MAX_AGE_SEC` | `text` | NULL | NULL | 모멘텀: 프로그램매매 SNAPSHOT 최대 AGE 초 (MOMENTUM_PROGRAM_SNAPSHOT_MAX_AGE_SEC) | | `MOMENTUM_BACKTEST_USE_TRIGGER_SNAPSHOT_DB` | `text` | NULL | NULL | 모멘텀: BACKTEST 사용_ TRIGGER SNAPSHOT DB (MOMENTUM_BACKTEST_USE_TRIGGER_SNAPSHOT_DB) | | `MOMENTUM_WHIPSAW_FILTER_ENABLED` | `text` | NULL | NULL | 모멘텀 휩쏘 필터 | | `MOMENTUM_WHIPSAW_MODE` | `text` | NULL | NULL | 모멘텀: 휩쏘 모드 (MOMENTUM_WHIPSAW_MODE) | | `MOMENTUM_WHIPSAW_SUBBAR_SEC` | `text` | NULL | NULL | 모멘텀: 휩쏘 SUBBAR 초 (MOMENTUM_WHIPSAW_SUBBAR_SEC) | | `MOMENTUM_WHIPSAW_LOOKBACK_SEC` | `text` | NULL | NULL | 모멘텀: 휩쏘 LOOKBACK 초 (MOMENTUM_WHIPSAW_LOOKBACK_SEC) | | `MOMENTUM_WHIPSAW_DIP_PCT` | `text` | NULL | NULL | 모멘텀: 휩쏘 DIP % (MOMENTUM_WHIPSAW_DIP_PCT) | | `MOMENTUM_WHIPSAW_RECOVERY_TOL_PCT` | `text` | NULL | NULL | 모멘텀: 휩쏘 RECOVERY TOL % (MOMENTUM_WHIPSAW_RECOVERY_TOL_PCT) | | `MOMENTUM_DAILY_PROFIT_TARGET_ENABLED` | `text` | NULL | NULL | 모멘텀 손익 감시 켜기 · OFF = 해당 전략 일일익절 비활성 (매수 차단 없음) | | `MOMENTUM_DAILY_PROFIT_TARGET_KRW` | `text` | NULL | NULL | 모멘텀 목표(원) | | `MOMENTUM_DAILY_PROFIT_TARGET_PCT` | `text` | NULL | NULL | 모멘텀 목표(%) · 퍼센트 그대로 (예: 2.5 = 2.5%) · 0=미사용 | | `MOMENTUM_DAILY_PROFIT_HALT_NEW_BUYS` | `text` | NULL | NULL | 모멘텀 신규매수 수동 중단 · 목표 무관 수동 잠금 · 비우면 마스터 상속 · OFF=정상 | | `MOMENTUM_BACKTEST_USE_TICK_EXIT` | `text` | NULL | NULL | 모멘텀: BACKTEST 사용_ TICK EXIT (MOMENTUM_BACKTEST_USE_TICK_EXIT) | | `MOMENTUM_BACKTEST_TICK_FALLBACK_OHLC` | `text` | NULL | NULL | ⚠ 모멘텀 OHLC 폴백 (정합위험·금지) · 절대금지 — 틱 청산 ON 시 엔진 무시 · Optuna 강제 OFF | | `MOMENTUM_BACKTEST_POLL_MS` | `text` | NULL | NULL | 모멘텀 틱청산 폴링(ms) · 실매 STRATEGY_LOOP_SLEEP≈0.1초 정합 · 틱 사이 청산 검사 간격 · 하한 50ms | | `MOMENTUM_BACKTEST_SELL_SLIP_PCT` | `text` | NULL | NULL | 모멘텀: BACKTEST SELL SLIP % (MOMENTUM_BACKTEST_SELL_SLIP_PCT) | | `MOMENTUM_BACKTEST_USE_TICK_ENTRY` | `text` | NULL | NULL | 모멘텀: BACKTEST 사용_ TICK ENTRY (MOMENTUM_BACKTEST_USE_TICK_ENTRY) | | `MOMENTUM_BACKTEST_BUY_SLIP_PCT` | `text` | NULL | NULL | 모멘텀: BACKTEST BUY SLIP % (MOMENTUM_BACKTEST_BUY_SLIP_PCT) | | `MOMENTUM_BACKTEST_UNIVERSE_STRICT` | `text` | NULL | NULL | 모멘텀: BACKTEST 유니버스 STRICT (MOMENTUM_BACKTEST_UNIVERSE_STRICT) | | `MOMENTUM_BACKTEST_UNIVERSE_STRICT_LAG_MIN` | `text` | NULL | NULL | 모멘텀: BACKTEST 유니버스 STRICT LAG 최소 (MOMENTUM_BACKTEST_UNIVERSE_STRICT_LAG_MIN) | | `MOMENTUM_BACKTEST_LIVE_SCAN_QUEUE` | `text` | NULL | NULL | 모멘텀: BACKTEST LIVE SCAN QUEUE (MOMENTUM_BACKTEST_LIVE_SCAN_QUEUE) | | `MOMENTUM_BACKTEST_SCAN_SEC` | `text` | NULL | NULL | 모멘텀: BACKTEST SCAN 초 (MOMENTUM_BACKTEST_SCAN_SEC) | | `MOMENTUM_BACKTEST_UNIVERSE_SCAN_AT` | `text` | NULL | NULL | 모멘텀: BACKTEST 유니버스 SCAN AT (MOMENTUM_BACKTEST_UNIVERSE_SCAN_AT) | | `MOMENTUM_UNIVERSE_EXIT_DEBOUNCE_SEC` | `text` | NULL | NULL | 모멘텀: 유니버스 EXIT DEBOUNCE 초 (MOMENTUM_UNIVERSE_EXIT_DEBOUNCE_SEC) | | `MOMENTUM_BACKTEST_CANDLE_WARMUP_BARS` | `text` | NULL | NULL | 모멘텀: BACKTEST CANDLE WARMUP 봉수 (MOMENTUM_BACKTEST_CANDLE_WARMUP_BARS) | | `MOMENTUM_BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT` | `text` | NULL | NULL | 모멘텀: BACKTEST 사용_ TRIGGER EVAL SNAPSHOT (MOMENTUM_BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT) | | `MOMENTUM_DAILY_PROFIT_MODE` | `text` | NULL | NULL | 모멘텀 익절방식 · 비우면 마스터 상속 · fixed/trailing/both | | `MOMENTUM_DAILY_PROFIT_TRAIL_TIERS` | `text` | NULL | NULL | 모멘텀 다단 트레일 · 수익원:컷%,… · 비우면 마스터 상속 · 예: 30000:50,100000:35,300000:25 | | `MOMENTUM_DAILY_PROFIT_TRAIL_DROP_PCT` | `text` | NULL | NULL | 모멘텀 단일 트레일 되돌림(%) · 다단 비었을 때만 · 고점 대비 % · 비우면 마스터 상속 · 0=미사용 | | `MOMENTUM_DAILY_PROFIT_TRAIL_ARM_KRW` | `text` | NULL | NULL | 모멘텀 트레일 발동수익(원) · 이 이상 벌어야 트레일 감시 · 비우면 마스터 상속 | | `MOMENTUM_DAILY_PROFIT_TRAIL_ARM_PCT` | `text` | NULL | NULL | 모멘텀: 일일익절 트레일무장 % (MOMENTUM_DAILY_PROFIT_TRAIL_ARM_PCT) | | `CONDITION_MOMENTUM_KIWOOM_NAME` | `text` | NULL | NULL | 모멘텀: CONDITION MOMENTUM KIWOOM NAME (CONDITION_MOMENTUM_KIWOOM_NAME) | | `CONDITION_MOMENTUM_KIWOOM_SEQ` | `text` | NULL | NULL | 모멘텀: CONDITION MOMENTUM KIWOOM SEQ (CONDITION_MOMENTUM_KIWOOM_SEQ) | | `MOMENTUM_KIWOOM_UNIVERSE` | `text` | NULL | NULL | 모멘텀: KIWOOM 유니버스 (MOMENTUM_KIWOOM_UNIVERSE) | | `MOMENTUM_EOD_ENABLED` | `text` | NULL | NULL | EOD 당일청산 사용 · ON=설정 시각 이후 보유 전량 장마감청산 · OFF=익절·손절·시간컷만 | | `MOMENTUM_EOD_HM` | `text` | NULL | NULL | EOD 시각 (HH:MM) · 정규장 15:30 마감 기준 최소 10분 전 · 순차매도 여유 | | `MOMENTUM_TRIGGER_E_CONFIRM` | `text` | NULL | NULL | 모멘텀: TRIGGER E CONFIRM (MOMENTUM_TRIGGER_E_CONFIRM) | | `MOMENTUM_TRIGGER_REQUIRE_BULL_BAR` | `text` | NULL | NULL | 모멘텀: TRIGGER REQUIRE BULL BAR (MOMENTUM_TRIGGER_REQUIRE_BULL_BAR) | | `MOMENTUM_USE_VOL_TRIGGER` | `text` | NULL | NULL | 모멘텀: 사용_ 거래량 TRIGGER (MOMENTUM_USE_VOL_TRIGGER) | | `MOMENTUM_USE_RSI_FILTER` | `text` | NULL | NULL | 모멘텀: 사용_ RSI 필터 (MOMENTUM_USE_RSI_FILTER) | | `MOMENTUM_LIVE_MIN_CANDLES` | `text` | NULL | NULL | 모멘텀: 실매최소봉수 (MOMENTUM_LIVE_MIN_CANDLES) | | `MOMENTUM_GAP_FILL_LIMIT` | `text` | NULL | NULL | 모멘텀: GAP FILL LIMIT (MOMENTUM_GAP_FILL_LIMIT) | | `MOMENTUM_GRID_FAST_SKIP_HTS_SCAN_DUPES` | `text` | NULL | NULL | 모멘텀: GRID FAST HTS스캔중복스킵 (MOMENTUM_GRID_FAST_SKIP_HTS_SCAN_DUPES) | | `MOMENTUM_LIVE_ALIGN_USE_FORMING_BAR` | `text` | NULL | NULL | 모멘텀: LIVE ALIGN 사용_ FORMING BAR (MOMENTUM_LIVE_ALIGN_USE_FORMING_BAR) | | `MOMENTUM_COOLDOWN_USE_CANDLE_FLOOR` | `text` | NULL | NULL | 모멘텀: 쿨다운 사용_ CANDLE FLOOR (MOMENTUM_COOLDOWN_USE_CANDLE_FLOOR) | | `MOMENTUM_COOLDOWN_ENGINE_ONLY` | `text` | NULL | NULL | 모멘텀: 쿨다운 ENGINE ONLY (MOMENTUM_COOLDOWN_ENGINE_ONLY) | | `MOMENTUM_BACKTEST_SKIP_PRE_SUBSCRIBE` | `text` | NULL | NULL | 모멘텀: BACKTEST SKIP PRE SUBSCRIBE (MOMENTUM_BACKTEST_SKIP_PRE_SUBSCRIBE) | | `MOMENTUM_MAX_DAILY_CHG` | `text` | NULL | NULL | 모멘텀: 당일등락상한 (MOMENTUM_MAX_DAILY_CHG) | | `MOMENTUM_BACKTEST_WALLCLOCK_LAST_PRICE` | `text` | NULL | NULL | 모멘텀: BACKTEST WALLCLOCK LAST PRICE (MOMENTUM_BACKTEST_WALLCLOCK_LAST_PRICE) | | `MOMENTUM_PREV_DAY_OPEN_HM_MAX` | `text` | NULL | NULL | 모멘텀: PREV DAY OPEN HHMM 최대 (MOMENTUM_PREV_DAY_OPEN_HM_MAX) | | `MOMENTUM_BACKTEST_REST_WARMUP` | `text` | NULL | NULL | 모멘텀: BACKTEST REST WARMUP (MOMENTUM_BACKTEST_REST_WARMUP) | | `MOMENTUM_BACKTEST_REST_WARMUP_BARS` | `text` | NULL | NULL | 모멘텀: BACKTEST REST WARMUP 봉수 (MOMENTUM_BACKTEST_REST_WARMUP_BARS) | | `MOMENTUM_BACKTEST_REST_WARMUP_BARS_RETRY` | `text` | NULL | NULL | 모멘텀: BACKTEST REST WARMUP 봉수 RETRY (MOMENTUM_BACKTEST_REST_WARMUP_BARS_RETRY) | | `MOMENTUM_BACKTEST_REST_MAX_CODES` | `text` | NULL | NULL | 모멘텀: BACKTEST REST 최대 CODES (MOMENTUM_BACKTEST_REST_MAX_CODES) | | `MOMENTUM_BACKTEST_REST_SLEEP_SEC` | `text` | NULL | NULL | 모멘텀: BACKTEST REST SLEEP 초 (MOMENTUM_BACKTEST_REST_SLEEP_SEC) | | `MOMENTUM_BACKTEST_REST_KIWOOM_MOCK` | `text` | NULL | NULL | 모멘텀: BACKTEST REST KIWOOM MOCK (MOMENTUM_BACKTEST_REST_KIWOOM_MOCK) | | `MOMENTUM_DAILY_PROFIT_RISK_BUDGET_ENABLED` | `text` | NULL | NULL | 모멘텀 리스크버짓(B) · ON=일일익절 hit 후 보유최악손절합>cushion 이면 전량정리 · 기본 OFF · 마스터 없음 | | `MOMENTUM_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` | `text` | NULL | NULL | 모멘텀 리스크버짓 쿨다운(초) · 같은 날 재평가 최소 간격 · 0=당일 1회만 | | `MOMENTUM_TICK_SELL_ENABLED` | `text` | NULL | NULL | 모멘텀 틱매도 · 비우면 공통 TICK_SELL_ENABLED · true/false 명시 시 전략만 덮어씀 · 기본 false | | `CONDITION_MOMENTUM_LS_NAME` | `text` | NULL | NULL | 모멘텀: CONDITION MOMENTUM LS NAME (CONDITION_MOMENTUM_LS_NAME) | | `MOMENTUM_LIVE_UNIVERSE_HISTORY_SOURCE` | `text` | NULL | NULL | 모멘텀: LIVE 유니버스 HISTORY SOURCE (MOMENTUM_LIVE_UNIVERSE_HISTORY_SOURCE) | | `MOMENTUM_E_MIN_CHG_PCT` | `text` | NULL | NULL | 모멘텀: E 최소 CHG % (MOMENTUM_E_MIN_CHG_PCT) |
DDL 원문 ```sql CREATE TABLE `config_momentum` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` varchar(30) NOT NULL, `MOMENTUM_LIVE_BACKTEST_ALIGN` text DEFAULT NULL, `MOMENTUM_LIVE_SIGNAL_LOOKBACK_BARS` text DEFAULT NULL, `STRATEGY_MOMENTUM_ENABLED` text DEFAULT NULL, `MOMENTUM_UNIVERSE_SOURCE` text DEFAULT NULL, `RANK_MOMENTUM_SORT` text DEFAULT NULL, `RANK_MOMENTUM_LIMIT` text DEFAULT NULL, `CONDITION_MOMENTUM_NAME` text DEFAULT NULL, `CONDITION_MOMENTUM_SEQ` text DEFAULT NULL, `MOMENTUM_CAND_LIMIT` text DEFAULT NULL, `MOMENTUM_TIME_START` text DEFAULT NULL, `MOMENTUM_TIME_END` text DEFAULT NULL, `MOMENTUM_MAX_STOCKS` text DEFAULT NULL, `MOMENTUM_MAX_BUY_AMOUNT` text DEFAULT NULL, `MOMENTUM_MAX_DAILY` text DEFAULT NULL, `MOMENTUM_RSI_MIN` text DEFAULT NULL, `MOMENTUM_RSI_MAX` text DEFAULT NULL, `MOMENTUM_VOL_MULT` text DEFAULT NULL, `MOMENTUM_VOL_WIN` text DEFAULT NULL, `MOMENTUM_TIME_END_HM` text DEFAULT NULL, `MOMENTUM_MAX_FROM_OPEN_PCT` text DEFAULT NULL, `MOMENTUM_MIN_FROM_OPEN_PCT` text DEFAULT NULL, `MOMENTUM_SKIP_HTS_SCAN_DUPES` text DEFAULT NULL, `MOMENTUM_STOP_LOSS_PCT` text DEFAULT NULL, `MOMENTUM_TAKE_PROFIT_PCT` text DEFAULT NULL, `MOMENTUM_MIN_DROP_RATE` text DEFAULT NULL, `MOMENTUM_SLOT_MONEY` text DEFAULT NULL, `MOMENTUM_MIN_PRICE` text DEFAULT NULL, `MOMENTUM_MAX_LOSS_PER_TRADE_KRW` text DEFAULT NULL, `MOMENTUM_MIN_DROP_PCT_FOR_LOSS_CUT` text DEFAULT NULL, `MOMENTUM_MIN_PROFIT_PCT` text DEFAULT NULL, `MOMENTUM_TP_MAX_PCT` text DEFAULT NULL, `MOMENTUM_SHOULDER_MIN_HIGH_PCT` text DEFAULT NULL, `MOMENTUM_SHOULDER_CUT_PCT` text DEFAULT NULL, `MOMENTUM_TOTAL_BUDGET_KRW` text DEFAULT NULL, `KIS_MOMENTUM_MM_CHANNEL` text DEFAULT NULL, `MOMENTUM_RATCHET_TIERS` text DEFAULT NULL, `MOMENTUM_TRAIL_PCT` text DEFAULT NULL, `MOMENTUM_TRAIL_ARM_PCT` text DEFAULT NULL, `MOMENTUM_MAX_HOLD_BARS` text DEFAULT NULL, `MOMENTUM_USE_DEFENSE_FILTERS` text DEFAULT NULL, `MOMENTUM_USE_HIGH_CHASE_FILTER` text DEFAULT NULL, `MOMENTUM_USE_DAILY_RANGE_FILTER` text DEFAULT NULL, `MOMENTUM_HIGH_CHASE_THR` text DEFAULT NULL, `MOMENTUM_RSI_PERIOD` text DEFAULT NULL, `MOMENTUM_COOLDOWN_SEC` text DEFAULT NULL, `MOMENTUM_MIN_HOLD_SEC` text DEFAULT NULL, `MOMENTUM_FORCE_EOD_EXIT` text DEFAULT NULL, `MOMENTUM_USE_EMA_FILTER` text DEFAULT NULL, `MOMENTUM_EMA_FAST_PERIOD` text DEFAULT NULL, `MOMENTUM_EMA_SLOW_PERIOD` text DEFAULT NULL, `MOMENTUM_USE_RSI_MAX_FILTER` text DEFAULT NULL, `MOMENTUM_PATTERN_BREAKOUT` text DEFAULT NULL, `MOMENTUM_PATTERN_PULLBACK` text DEFAULT NULL, `MOMENTUM_CHASE_LOOKBACK_MIN` text DEFAULT NULL, `MOMENTUM_PULLBACK_LOOKBACK_MIN` text DEFAULT NULL, `MOMENTUM_PULLBACK_MIN_PCT` text DEFAULT NULL, `MOMENTUM_PULLBACK_MAX_PCT` text DEFAULT NULL, `MOMENTUM_SETUP_VOL_MAX_MULT` text DEFAULT NULL, `MOMENTUM_SETUP_BEAR_BARS_MIN` text DEFAULT NULL, `MOMENTUM_ORDERBOOK_FILTER_ENABLED` text DEFAULT NULL, `MOMENTUM_ORDERBOOK_MAX_SPREAD_PCT` text DEFAULT NULL, `MOMENTUM_ORDERBOOK_ENTRY_BID_LEVELS` text DEFAULT NULL, `MOMENTUM_ORDERBOOK_ENTRY_BID_DEPTH_MULT` text DEFAULT NULL, `MOMENTUM_ORDERBOOK_ENTRY_ASK_MAX_MULT` text DEFAULT NULL, `MOMENTUM_ORDERBOOK_MIN_BID_ASK_RATIO` text DEFAULT NULL, `MOMENTUM_PROGRAM_FILTER_ENABLED` text DEFAULT NULL, `MOMENTUM_PROGRAM_MIN_NET_BUY_QTY` text DEFAULT NULL, `MOMENTUM_PROGRAM_MIN_NET_BUY_AMT` text DEFAULT NULL, `MOMENTUM_PROGRAM_MAX_SELL_BUY_QTY_RATIO` text DEFAULT NULL, `MOMENTUM_PROGRAM_MIN_NET_DELTA_QTY` text DEFAULT NULL, `MOMENTUM_PROGRAM_SNAPSHOT_MAX_AGE_SEC` text DEFAULT NULL, `MOMENTUM_BACKTEST_USE_TRIGGER_SNAPSHOT_DB` text DEFAULT NULL, `MOMENTUM_WHIPSAW_FILTER_ENABLED` text DEFAULT NULL, `MOMENTUM_WHIPSAW_MODE` text DEFAULT NULL, `MOMENTUM_WHIPSAW_SUBBAR_SEC` text DEFAULT NULL, `MOMENTUM_WHIPSAW_LOOKBACK_SEC` text DEFAULT NULL, `MOMENTUM_WHIPSAW_DIP_PCT` text DEFAULT NULL, `MOMENTUM_WHIPSAW_RECOVERY_TOL_PCT` text DEFAULT NULL, `MOMENTUM_DAILY_PROFIT_TARGET_ENABLED` text DEFAULT NULL, `MOMENTUM_DAILY_PROFIT_TARGET_KRW` text DEFAULT NULL, `MOMENTUM_DAILY_PROFIT_TARGET_PCT` text DEFAULT NULL, `MOMENTUM_DAILY_PROFIT_HALT_NEW_BUYS` text DEFAULT NULL, `MOMENTUM_BACKTEST_USE_TICK_EXIT` text DEFAULT NULL, `MOMENTUM_BACKTEST_TICK_FALLBACK_OHLC` text DEFAULT NULL, `MOMENTUM_BACKTEST_POLL_MS` text DEFAULT NULL, `MOMENTUM_BACKTEST_SELL_SLIP_PCT` text DEFAULT NULL, `MOMENTUM_BACKTEST_USE_TICK_ENTRY` text DEFAULT NULL, `MOMENTUM_BACKTEST_BUY_SLIP_PCT` text DEFAULT NULL, `MOMENTUM_BACKTEST_UNIVERSE_STRICT` text DEFAULT NULL, `MOMENTUM_BACKTEST_UNIVERSE_STRICT_LAG_MIN` text DEFAULT NULL, `MOMENTUM_BACKTEST_LIVE_SCAN_QUEUE` text DEFAULT NULL, `MOMENTUM_BACKTEST_SCAN_SEC` text DEFAULT NULL, `MOMENTUM_BACKTEST_UNIVERSE_SCAN_AT` text DEFAULT NULL, `MOMENTUM_UNIVERSE_EXIT_DEBOUNCE_SEC` text DEFAULT NULL, `MOMENTUM_BACKTEST_CANDLE_WARMUP_BARS` text DEFAULT NULL, `MOMENTUM_BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT` text DEFAULT NULL, `MOMENTUM_DAILY_PROFIT_MODE` text DEFAULT NULL, `MOMENTUM_DAILY_PROFIT_TRAIL_TIERS` text DEFAULT NULL, `MOMENTUM_DAILY_PROFIT_TRAIL_DROP_PCT` text DEFAULT NULL, `MOMENTUM_DAILY_PROFIT_TRAIL_ARM_KRW` text DEFAULT NULL, `MOMENTUM_DAILY_PROFIT_TRAIL_ARM_PCT` text DEFAULT NULL, `CONDITION_MOMENTUM_KIWOOM_NAME` text DEFAULT NULL, `CONDITION_MOMENTUM_KIWOOM_SEQ` text DEFAULT NULL, `MOMENTUM_KIWOOM_UNIVERSE` text DEFAULT NULL, `MOMENTUM_EOD_ENABLED` text DEFAULT NULL, `MOMENTUM_EOD_HM` text DEFAULT NULL, `MOMENTUM_TRIGGER_E_CONFIRM` text DEFAULT NULL, `MOMENTUM_TRIGGER_REQUIRE_BULL_BAR` text DEFAULT NULL, `MOMENTUM_USE_VOL_TRIGGER` text DEFAULT NULL, `MOMENTUM_USE_RSI_FILTER` text DEFAULT NULL, `MOMENTUM_LIVE_MIN_CANDLES` text DEFAULT NULL, `MOMENTUM_GAP_FILL_LIMIT` text DEFAULT NULL, `MOMENTUM_GRID_FAST_SKIP_HTS_SCAN_DUPES` text DEFAULT NULL, `MOMENTUM_LIVE_ALIGN_USE_FORMING_BAR` text DEFAULT NULL, `MOMENTUM_COOLDOWN_USE_CANDLE_FLOOR` text DEFAULT NULL, `MOMENTUM_COOLDOWN_ENGINE_ONLY` text DEFAULT NULL, `MOMENTUM_BACKTEST_SKIP_PRE_SUBSCRIBE` text DEFAULT NULL, `MOMENTUM_MAX_DAILY_CHG` text DEFAULT NULL, `MOMENTUM_BACKTEST_WALLCLOCK_LAST_PRICE` text DEFAULT NULL, `MOMENTUM_PREV_DAY_OPEN_HM_MAX` text DEFAULT NULL, `MOMENTUM_BACKTEST_REST_WARMUP` text DEFAULT NULL, `MOMENTUM_BACKTEST_REST_WARMUP_BARS` text DEFAULT NULL, `MOMENTUM_BACKTEST_REST_WARMUP_BARS_RETRY` text DEFAULT NULL, `MOMENTUM_BACKTEST_REST_MAX_CODES` text DEFAULT NULL, `MOMENTUM_BACKTEST_REST_SLEEP_SEC` text DEFAULT NULL, `MOMENTUM_BACKTEST_REST_KIWOOM_MOCK` text DEFAULT NULL, `MOMENTUM_DAILY_PROFIT_RISK_BUDGET_ENABLED` text DEFAULT NULL, `MOMENTUM_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` text DEFAULT NULL, `MOMENTUM_TICK_SELL_ENABLED` text DEFAULT NULL, `CONDITION_MOMENTUM_LS_NAME` text DEFAULT NULL, `MOMENTUM_LIVE_UNIVERSE_HISTORY_SOURCE` text DEFAULT NULL, `MOMENTUM_E_MIN_CHG_PCT` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=387 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `config_scalp` **PK**: `id` | AUTO_INCREMENT=391 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `created_at` | `varchar(30)` | NOT NULL | | 설정행 생성시각 | | `SCALP_ATR_UP_MULT` | `text` | NULL | NULL | 스캘핑: ATR UP 배수 (SCALP_ATR_UP_MULT) | | `SCALP_ATR_DOWN_MULT` | `text` | NULL | NULL | 스캘핑: ATR DOWN 배수 (SCALP_ATR_DOWN_MULT) | | `SCALP_ATR_DROP_MULT` | `text` | NULL | NULL | 스캘핑: ATR 되돌림/하락 배수 (SCALP_ATR_DROP_MULT) | | `SCALP_RSI_OVERSOLD` | `text` | NULL | NULL | 스캘핑: RSI과매도 (SCALP_RSI_OVERSOLD) | | `SCALP_RSI_OVERBOUGHT` | `text` | NULL | NULL | 스캘핑: RSI과매수 (SCALP_RSI_OVERBOUGHT) | | `SCALP_CANDLE_TIMEFRAME` | `text` | NULL | NULL | 스캘핑: CANDLE TIMEFRAME (SCALP_CANDLE_TIMEFRAME) | | `SCALP_MARKET_OPEN_WAIT_MIN` | `text` | NULL | NULL | 스캘핑: MARKET OPEN WAIT 최소 (SCALP_MARKET_OPEN_WAIT_MIN) | | `SCALP_GAP_FILL_LIMIT` | `text` | NULL | NULL | 스캘핑: GAP FILL LIMIT (SCALP_GAP_FILL_LIMIT) | | `SCALP_MIN_VOLUME` | `text` | NULL | NULL | 스캘핑: 최소 거래량 UME (SCALP_MIN_VOLUME) | | `KIS_SCALP_MM_CHANNEL` | `text` | NULL | NULL | 스캘핑: KIS SCALP MM CHANNEL (KIS_SCALP_MM_CHANNEL) | | `SCALP_CANDLE_KEEP_DAYS` | `text` | NULL | NULL | 스캘핑: CANDLE KEEP DAYS (SCALP_CANDLE_KEEP_DAYS) | | `SCALP_STOP_LOSS_PCT` | `text` | NULL | NULL | 스캘핑: 손절 % (SCALP_STOP_LOSS_PCT) | | `SCALP_TAKE_PROFIT_PCT` | `text` | NULL | NULL | 스캘핑: 익절 % (SCALP_TAKE_PROFIT_PCT) | | `SCALP_MIN_DROP_RATE` | `text` | NULL | NULL | 스캘핑: 최소 되돌림/하락 RATE (SCALP_MIN_DROP_RATE) | | `SCALP_GAP_RETRY_SEC` | `text` | NULL | NULL | 스캘핑: GAP RETRY 초 (SCALP_GAP_RETRY_SEC) | | `SCALP_REQUIRE_REVERSAL_CANDLE` | `text` | NULL | NULL | 스캘핑: REQUIRE REVERSAL CANDLE (SCALP_REQUIRE_REVERSAL_CANDLE) | | `SCALP_COOLDOWN_SEC` | `text` | NULL | NULL | 스캘핑: 쿨다운 초 (SCALP_COOLDOWN_SEC) | | `SCALP_TRAIL_TRIGGER_PCT` | `text` | NULL | NULL | 스캘핑: 트레일 TRIGGER % (SCALP_TRAIL_TRIGGER_PCT) | | `SCALP_MIN_PROFIT_PCT` | `text` | NULL | NULL | 스캘핑: 최소 PROFIT % (SCALP_MIN_PROFIT_PCT) | | `SCALP_HIGH_PRICE_CHASE_THRESHOLD` | `text` | NULL | NULL | 스캘핑: HIGH PRICE CHASE THRESHOLD (SCALP_HIGH_PRICE_CHASE_THRESHOLD) | | `SCALP_MAX_DAILY_CHANGE_PCT` | `text` | NULL | NULL | 스캘핑: 일일매수횟수상한 CHANGE % (SCALP_MAX_DAILY_CHANGE_PCT) | | `SCALP_MIN_PRICE` | `text` | NULL | NULL | 스캘핑: 최소가격 (SCALP_MIN_PRICE) | | `SCALP_MAX_LOSS_PER_TRADE_KRW` | `text` | NULL | NULL | 스캘핑: 최대 LOSS PER TRADE 원 (SCALP_MAX_LOSS_PER_TRADE_KRW) | | `SCALP_MIN_DROP_PCT_FOR_LOSS_CUT` | `text` | NULL | NULL | 스캘핑: 최소 되돌림/하락 % FOR LOSS CUT (SCALP_MIN_DROP_PCT_FOR_LOSS_CUT) | | `SCALP_USE_DEFENSE_FILTERS` | `text` | NULL | NULL | 스캘핑: 사용_ 방어필터 필터 S (SCALP_USE_DEFENSE_FILTERS) | | `SCALP_USE_MACD_CROSS` | `text` | NULL | NULL | 스캘핑: 사용_ MACD CROSS (SCALP_USE_MACD_CROSS) | | `SCALP_MACD_FAST` | `text` | NULL | NULL | 스캘핑: MACD FAST (SCALP_MACD_FAST) | | `SCALP_MACD_SLOW` | `text` | NULL | NULL | 스캘핑: MACD SLOW (SCALP_MACD_SLOW) | | `SCALP_MACD_SIGNAL` | `text` | NULL | NULL | 스캘핑: MACD SIGNAL (SCALP_MACD_SIGNAL) | | `SCALP_STOCH_K_PERIOD` | `text` | NULL | NULL | 스캘핑: STOCH K 기간 (SCALP_STOCH_K_PERIOD) | | `SCALP_STOCH_D_PERIOD` | `text` | NULL | NULL | 스캘핑: STOCH D 기간 (SCALP_STOCH_D_PERIOD) | | `SCALP_STOCH_SLOW` | `text` | NULL | NULL | 스캘핑: STOCH SLOW (SCALP_STOCH_SLOW) | | `SCALP_LIVE_BACKTEST_ALIGN` | `text` | NULL | NULL | 스캘핑: LIVE BACKTEST ALIGN (SCALP_LIVE_BACKTEST_ALIGN) | | `SCALP_LIVE_SIGNAL_LOOKBACK_BARS` | `text` | NULL | NULL | 스캘핑: LIVE SIGNAL LOOKBACK 봉수 (SCALP_LIVE_SIGNAL_LOOKBACK_BARS) | | `SCALP_UNIVERSE_SOURCE` | `text` | NULL | NULL | 스캘핑: 유니버스소스 (SCALP_UNIVERSE_SOURCE) | | `RANK_SCALP_SORT` | `text` | NULL | NULL | 스캘핑: RANK SCALP SORT (RANK_SCALP_SORT) | | `RANK_SCALP_LIMIT` | `text` | NULL | NULL | 스캘핑: RANK SCALP LIMIT (RANK_SCALP_LIMIT) | | `CONDITION_SCALP_NAME` | `text` | NULL | NULL | 스캘핑: CONDITION SCALP NAME (CONDITION_SCALP_NAME) | | `CONDITION_SCALP_SEQ` | `text` | NULL | NULL | 스캘핑: CONDITION SCALP SEQ (CONDITION_SCALP_SEQ) | | `SCALP_MAX_BUY_AMOUNT` | `text` | NULL | NULL | 스캘핑: 1회최대매수금액 (SCALP_MAX_BUY_AMOUNT) | | `SCALP_CAND_LIMIT` | `text` | NULL | NULL | 스캘핑: 후보상한 (SCALP_CAND_LIMIT) | | `SCALP_TIME_START` | `text` | NULL | NULL | 스캘핑: 매수시작 (SCALP_TIME_START) | | `SCALP_TIME_END` | `text` | NULL | NULL | 스캘핑: 매수종료 (SCALP_TIME_END) | | `SCALP_MODE` | `text` | NULL | NULL | 스캘핑: 모드 (SCALP_MODE) | | `SCALP_MOM_RSI_MIN` | `text` | NULL | NULL | 스캘핑: MOM RSI하한 (SCALP_MOM_RSI_MIN) | | `SCALP_MOM_RSI_MAX` | `text` | NULL | NULL | 스캘핑: MOM RSI상한 (SCALP_MOM_RSI_MAX) | | `SCALP_MOM_VOL_MULT` | `text` | NULL | NULL | 스캘핑: MOM 거래량배수 (SCALP_MOM_VOL_MULT) | | `SCALP_MOM_VOL_WIN` | `text` | NULL | NULL | 스캘핑: MOM 거래량윈도우 (SCALP_MOM_VOL_WIN) | | `SCALP_MOM_TIME_END_HM` | `text` | NULL | NULL | 스캘핑: MOM 매수종료 HHMM (SCALP_MOM_TIME_END_HM) | | `SCALP_MAX_DAILY` | `text` | NULL | NULL | 스캘핑: 일일매수횟수상한 (SCALP_MAX_DAILY) | | `SCALP_MAX_STOCKS` | `text` | NULL | NULL | 스캘핑: 동시보유상한 (SCALP_MAX_STOCKS) | | `SCALP_TP_MAX_PCT` | `text` | NULL | NULL | 스캘핑: TP 최대 % (SCALP_TP_MAX_PCT) | | `SCALP_SHOULDER_MIN_HIGH_PCT` | `text` | NULL | NULL | 스캘핑: 어깨무장고점 % (SCALP_SHOULDER_MIN_HIGH_PCT) | | `SCALP_SHOULDER_CUT_PCT` | `text` | NULL | NULL | 스캘핑: 어깨컷 % (SCALP_SHOULDER_CUT_PCT) | | `SCALP_TOTAL_BUDGET_KRW` | `text` | NULL | NULL | 스캘핑: 총운용한도 원 (SCALP_TOTAL_BUDGET_KRW) | | `STRATEGY_SCALP_ENABLED` | `text` | NULL | NULL | 스캘핑 ON/OFF. 다음루프 신규매수중단(보유청산유지). WS구독해제 안함. 기동시OFF→켜려면재시작 | | `SCALP_DAILY_PROFIT_TARGET_ENABLED` | `text` | NULL | NULL | 스캘핑: 일일익절 목표 ON/OFF (SCALP_DAILY_PROFIT_TARGET_ENABLED) | | `SCALP_DAILY_PROFIT_TARGET_KRW` | `text` | NULL | NULL | 스캘핑: 일일익절 목표 원 (SCALP_DAILY_PROFIT_TARGET_KRW) | | `SCALP_DAILY_PROFIT_TARGET_PCT` | `text` | NULL | NULL | 스캘핑: 일일익절 목표 % (SCALP_DAILY_PROFIT_TARGET_PCT) | | `SCALP_DAILY_PROFIT_HALT_NEW_BUYS` | `text` | NULL | NULL | 스캘핑: 일일익절 중단 NEW BUYS (SCALP_DAILY_PROFIT_HALT_NEW_BUYS) | | `SCALP_DAILY_PROFIT_MODE` | `text` | NULL | NULL | 스캘핑: 일일익절 모드 (SCALP_DAILY_PROFIT_MODE) | | `SCALP_DAILY_PROFIT_TRAIL_TIERS` | `text` | NULL | NULL | 스캘핑: 일일익절 트레일 다단 (SCALP_DAILY_PROFIT_TRAIL_TIERS) | | `SCALP_DAILY_PROFIT_TRAIL_DROP_PCT` | `text` | NULL | NULL | 스캘핑: 일일익절 트레일 되돌림/하락 % (SCALP_DAILY_PROFIT_TRAIL_DROP_PCT) | | `SCALP_DAILY_PROFIT_TRAIL_ARM_KRW` | `text` | NULL | NULL | 스캘핑: 일일익절 트레일무장 원 (SCALP_DAILY_PROFIT_TRAIL_ARM_KRW) | | `SCALP_DAILY_PROFIT_TRAIL_ARM_PCT` | `text` | NULL | NULL | 스캘핑: 일일익절 트레일무장 % (SCALP_DAILY_PROFIT_TRAIL_ARM_PCT) | | `SCALP_RSI_PERIOD` | `text` | NULL | NULL | 스캘핑: RSI 기간 (SCALP_RSI_PERIOD) | | `SCALP_GRID_TRIGGER_RSI_OVERSOLD` | `text` | NULL | NULL | 스캘핑: GRID TRIGGER RSI과매도 (SCALP_GRID_TRIGGER_RSI_OVERSOLD) | | `SCALP_GRID_TRIGGER_DROP_RATE` | `text` | NULL | NULL | 스캘핑: GRID TRIGGER 되돌림/하락 RATE (SCALP_GRID_TRIGGER_DROP_RATE) | | `SCALP_GRID_TRIGGER_HIGH_CHASE_THR` | `text` | NULL | NULL | 스캘핑: GRID TRIGGER 고점추격 THR (SCALP_GRID_TRIGGER_HIGH_CHASE_THR) | | `SCALP_GRID_TRIGGER_VOL_MULT` | `text` | NULL | NULL | 스캘핑: GRID TRIGGER 거래량배수 (SCALP_GRID_TRIGGER_VOL_MULT) | | `SCALP_GRID_TRIGGER_REQUIRE_REVERSAL` | `text` | NULL | NULL | 스캘핑: GRID TRIGGER REQUIRE REVERSAL (SCALP_GRID_TRIGGER_REQUIRE_REVERSAL) | | `SCALP_GRID_EXIT_SL_PCT` | `text` | NULL | NULL | 스캘핑: GRID EXIT SL % (SCALP_GRID_EXIT_SL_PCT) | | `SCALP_GRID_EXIT_TP_PCT` | `text` | NULL | NULL | 스캘핑: GRID EXIT TP % (SCALP_GRID_EXIT_TP_PCT) | | `SCALP_GRID_EXIT_TP_MAX_PCT` | `text` | NULL | NULL | 스캘핑: GRID EXIT TP 최대 % (SCALP_GRID_EXIT_TP_MAX_PCT) | | `SCALP_GRID_EXIT_SHOULDER_MIN_HIGH_PCT` | `text` | NULL | NULL | 스캘핑: GRID EXIT 어깨무장고점 % (SCALP_GRID_EXIT_SHOULDER_MIN_HIGH_PCT) | | `SCALP_GRID_EXIT_SHOULDER_CUT_PCT` | `text` | NULL | NULL | 스캘핑: GRID EXIT 어깨컷 % (SCALP_GRID_EXIT_SHOULDER_CUT_PCT) | | `SCALP_GRID_EXIT_MIN_HOLD_SEC` | `text` | NULL | NULL | 스캘핑: GRID EXIT 최소보유 초 (SCALP_GRID_EXIT_MIN_HOLD_SEC) | | `SCALP_SCORE_MDD_FLOOR` | `text` | NULL | NULL | 스캘핑: SCORE MDD FLOOR (SCALP_SCORE_MDD_FLOOR) | | `CONDITION_SCALP_KIWOOM_SEQ` | `text` | NULL | NULL | 스캘핑: CONDITION SCALP KIWOOM SEQ (CONDITION_SCALP_KIWOOM_SEQ) | | `CONDITION_SCALP_KIWOOM_NAME` | `text` | NULL | NULL | 스캘핑: CONDITION SCALP KIWOOM NAME (CONDITION_SCALP_KIWOOM_NAME) | | `SCALP_SKIP_HTS_SCAN_DUPES` | `text` | NULL | NULL | 스캘핑: HTS스캔중복스킵 (SCALP_SKIP_HTS_SCAN_DUPES) | | `SCALP_GRID_SKIP_HTS_SCAN_DUPES` | `text` | NULL | NULL | 스캘핑: GRID HTS스캔중복스킵 (SCALP_GRID_SKIP_HTS_SCAN_DUPES) | | `SCALP_BACKTEST_USE_TICK_EXIT` | `text` | NULL | NULL | 스캘핑 틱 청산 · ON=ws_ticks 시간순 청산(실매 폴링 정합) · OFF=OHLC intrabar | | `SCALP_BACKTEST_USE_TICK_ENTRY` | `text` | NULL | NULL | 스캘핑 틱 진입 · ON=예약 체결 시 해당 분 첫 틱가 · OFF=분봉 시가 | | `SCALP_BACKTEST_TICK_FALLBACK_OHLC` | `text` | NULL | NULL | ⚠ 스캘핑 OHLC 폴백 (정합위험·금지) · 절대금지 — 틱 청산 ON 시 엔진 무시 | | `SCALP_BACKTEST_POLL_MS` | `text` | NULL | NULL | 스캘핑 틱청산 폴링(ms) · 실매 STRATEGY_LOOP_SLEEP≈0.1초 정합 · 하한 50ms | | `SCALP_BACKTEST_SELL_SLIP_PCT` | `text` | NULL | NULL | 스캘핑: BACKTEST SELL SLIP % (SCALP_BACKTEST_SELL_SLIP_PCT) | | `SCALP_MIN_HOLD_SEC` | `text` | NULL | NULL | 스캘핑: 최소보유 초 (SCALP_MIN_HOLD_SEC) | | `SCALP_ORDERBOOK_FILTER_ENABLED` | `text` | NULL | NULL | 스캘핑 호가필터 ON · ON=스프레드·잔량비·얇은호가·매도벽으로 매수 차단 · OFF=저장만 | | `SCALP_ORDERBOOK_MAX_SPREAD_PCT` | `text` | NULL | NULL | 스캘핑 스프레드상한(%) · 0.45=0.45% · 그리드 max_spread_pct 앵커 | | `SCALP_ORDERBOOK_ENTRY_BID_LEVELS` | `text` | NULL | NULL | 스캘핑 호가단계(N호가) | | `SCALP_ORDERBOOK_ENTRY_BID_DEPTH_MULT` | `text` | NULL | NULL | 스캘핑 매수호가깊이 배수 · 얇은호가 탈락 · 필요수량×N | | `SCALP_ORDERBOOK_ENTRY_ASK_MAX_MULT` | `text` | NULL | NULL | 스캘핑 매도벽 허용배수 · 필요수량×N · 그리드 ask_max_mult | | `SCALP_ORDERBOOK_MIN_BID_ASK_RATIO` | `text` | NULL | NULL | 스캘핑 매수/매도잔량비 하한 · 그리드 min_bid_ask_ratio | | `SCALP_BACKTEST_CANDLE_WARMUP_BARS` | `text` | NULL | NULL | 스캘핑: BACKTEST CANDLE WARMUP 봉수 (SCALP_BACKTEST_CANDLE_WARMUP_BARS) | | `SCALP_UNIVERSE_EXIT_DEBOUNCE_SEC` | `text` | NULL | NULL | 스캘핑: 유니버스 EXIT DEBOUNCE 초 (SCALP_UNIVERSE_EXIT_DEBOUNCE_SEC) | | `SCALP_EOD_ENABLED` | `text` | NULL | NULL | EOD 당일청산 사용 · ON=설정 시각 이후 보유 전량 장마감청산 · OFF=익절·손절·어깨만 | | `SCALP_EOD_HM` | `text` | NULL | NULL | EOD 시각 (HH:MM) · 실매 기존 15:25 · 정규장 15:30 마감 직전 순차매도 | | `SCALP_DAILY_PROFIT_RISK_BUDGET_ENABLED` | `text` | NULL | NULL | 스캘핑: 일일익절 RISK 한도 ON/OFF (SCALP_DAILY_PROFIT_RISK_BUDGET_ENABLED) | | `SCALP_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` | `text` | NULL | NULL | 스캘핑: 일일익절 RISK 한도 쿨다운 초 (SCALP_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC) | | `SCALP_TICK_SELL_ENABLED` | `text` | NULL | NULL | 스캘핑: 틱매도 ON/OFF (SCALP_TICK_SELL_ENABLED) | | `SCALP_LIVE_ALIGN_USE_FORMING_BAR` | `text` | NULL | NULL | 스캘핑: LIVE ALIGN 사용_ FORMING BAR (SCALP_LIVE_ALIGN_USE_FORMING_BAR) | | `CONDITION_SCALP_LS_NAME` | `text` | NULL | NULL | 스캘핑: CONDITION SCALP LS NAME (CONDITION_SCALP_LS_NAME) | | `SCALP_LIVE_UNIVERSE_HISTORY_SOURCE` | `text` | NULL | NULL | 스캘핑: LIVE 유니버스 HISTORY SOURCE (SCALP_LIVE_UNIVERSE_HISTORY_SOURCE) | | `SCALP_CANDLE_GAP_FORCE_SEC` | `text` | NULL | NULL | 스캘핑: CANDLE GAP FORCE 초 (SCALP_CANDLE_GAP_FORCE_SEC) | | `SCALP_CANDLE_SHORT_LOG_SEC` | `text` | NULL | NULL | 스캘핑: CANDLE SHORT LOG 초 (SCALP_CANDLE_SHORT_LOG_SEC) |
DDL 원문 ```sql CREATE TABLE `config_scalp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` varchar(30) NOT NULL, `SCALP_ATR_UP_MULT` text DEFAULT NULL, `SCALP_ATR_DOWN_MULT` text DEFAULT NULL, `SCALP_ATR_DROP_MULT` text DEFAULT NULL, `SCALP_RSI_OVERSOLD` text DEFAULT NULL, `SCALP_RSI_OVERBOUGHT` text DEFAULT NULL, `SCALP_CANDLE_TIMEFRAME` text DEFAULT NULL, `SCALP_MARKET_OPEN_WAIT_MIN` text DEFAULT NULL, `SCALP_GAP_FILL_LIMIT` text DEFAULT NULL, `SCALP_MIN_VOLUME` text DEFAULT NULL, `KIS_SCALP_MM_CHANNEL` text DEFAULT NULL, `SCALP_CANDLE_KEEP_DAYS` text DEFAULT NULL, `SCALP_STOP_LOSS_PCT` text DEFAULT NULL, `SCALP_TAKE_PROFIT_PCT` text DEFAULT NULL, `SCALP_MIN_DROP_RATE` text DEFAULT NULL, `SCALP_GAP_RETRY_SEC` text DEFAULT NULL, `SCALP_REQUIRE_REVERSAL_CANDLE` text DEFAULT NULL, `SCALP_COOLDOWN_SEC` text DEFAULT NULL, `SCALP_TRAIL_TRIGGER_PCT` text DEFAULT NULL, `SCALP_MIN_PROFIT_PCT` text DEFAULT NULL, `SCALP_HIGH_PRICE_CHASE_THRESHOLD` text DEFAULT NULL, `SCALP_MAX_DAILY_CHANGE_PCT` text DEFAULT NULL, `SCALP_MIN_PRICE` text DEFAULT NULL, `SCALP_MAX_LOSS_PER_TRADE_KRW` text DEFAULT NULL, `SCALP_MIN_DROP_PCT_FOR_LOSS_CUT` text DEFAULT NULL, `SCALP_USE_DEFENSE_FILTERS` text DEFAULT NULL, `SCALP_USE_MACD_CROSS` text DEFAULT NULL, `SCALP_MACD_FAST` text DEFAULT NULL, `SCALP_MACD_SLOW` text DEFAULT NULL, `SCALP_MACD_SIGNAL` text DEFAULT NULL, `SCALP_STOCH_K_PERIOD` text DEFAULT NULL, `SCALP_STOCH_D_PERIOD` text DEFAULT NULL, `SCALP_STOCH_SLOW` text DEFAULT NULL, `SCALP_LIVE_BACKTEST_ALIGN` text DEFAULT NULL, `SCALP_LIVE_SIGNAL_LOOKBACK_BARS` text DEFAULT NULL, `SCALP_UNIVERSE_SOURCE` text DEFAULT NULL, `RANK_SCALP_SORT` text DEFAULT NULL, `RANK_SCALP_LIMIT` text DEFAULT NULL, `CONDITION_SCALP_NAME` text DEFAULT NULL, `CONDITION_SCALP_SEQ` text DEFAULT NULL, `SCALP_MAX_BUY_AMOUNT` text DEFAULT NULL, `SCALP_CAND_LIMIT` text DEFAULT NULL, `SCALP_TIME_START` text DEFAULT NULL, `SCALP_TIME_END` text DEFAULT NULL, `SCALP_MODE` text DEFAULT NULL, `SCALP_MOM_RSI_MIN` text DEFAULT NULL, `SCALP_MOM_RSI_MAX` text DEFAULT NULL, `SCALP_MOM_VOL_MULT` text DEFAULT NULL, `SCALP_MOM_VOL_WIN` text DEFAULT NULL, `SCALP_MOM_TIME_END_HM` text DEFAULT NULL, `SCALP_MAX_DAILY` text DEFAULT NULL, `SCALP_MAX_STOCKS` text DEFAULT NULL, `SCALP_TP_MAX_PCT` text DEFAULT NULL, `SCALP_SHOULDER_MIN_HIGH_PCT` text DEFAULT NULL, `SCALP_SHOULDER_CUT_PCT` text DEFAULT NULL, `SCALP_TOTAL_BUDGET_KRW` text DEFAULT NULL, `STRATEGY_SCALP_ENABLED` text DEFAULT NULL, `SCALP_DAILY_PROFIT_TARGET_ENABLED` text DEFAULT NULL, `SCALP_DAILY_PROFIT_TARGET_KRW` text DEFAULT NULL, `SCALP_DAILY_PROFIT_TARGET_PCT` text DEFAULT NULL, `SCALP_DAILY_PROFIT_HALT_NEW_BUYS` text DEFAULT NULL, `SCALP_DAILY_PROFIT_MODE` text DEFAULT NULL, `SCALP_DAILY_PROFIT_TRAIL_TIERS` text DEFAULT NULL, `SCALP_DAILY_PROFIT_TRAIL_DROP_PCT` text DEFAULT NULL, `SCALP_DAILY_PROFIT_TRAIL_ARM_KRW` text DEFAULT NULL, `SCALP_DAILY_PROFIT_TRAIL_ARM_PCT` text DEFAULT NULL, `SCALP_RSI_PERIOD` text DEFAULT NULL, `SCALP_GRID_TRIGGER_RSI_OVERSOLD` text DEFAULT NULL, `SCALP_GRID_TRIGGER_DROP_RATE` text DEFAULT NULL, `SCALP_GRID_TRIGGER_HIGH_CHASE_THR` text DEFAULT NULL, `SCALP_GRID_TRIGGER_VOL_MULT` text DEFAULT NULL, `SCALP_GRID_TRIGGER_REQUIRE_REVERSAL` text DEFAULT NULL, `SCALP_GRID_EXIT_SL_PCT` text DEFAULT NULL, `SCALP_GRID_EXIT_TP_PCT` text DEFAULT NULL, `SCALP_GRID_EXIT_TP_MAX_PCT` text DEFAULT NULL, `SCALP_GRID_EXIT_SHOULDER_MIN_HIGH_PCT` text DEFAULT NULL, `SCALP_GRID_EXIT_SHOULDER_CUT_PCT` text DEFAULT NULL, `SCALP_GRID_EXIT_MIN_HOLD_SEC` text DEFAULT NULL, `SCALP_SCORE_MDD_FLOOR` text DEFAULT NULL, `CONDITION_SCALP_KIWOOM_SEQ` text DEFAULT NULL, `CONDITION_SCALP_KIWOOM_NAME` text DEFAULT NULL, `SCALP_SKIP_HTS_SCAN_DUPES` text DEFAULT NULL, `SCALP_GRID_SKIP_HTS_SCAN_DUPES` text DEFAULT NULL, `SCALP_BACKTEST_USE_TICK_EXIT` text DEFAULT NULL, `SCALP_BACKTEST_USE_TICK_ENTRY` text DEFAULT NULL, `SCALP_BACKTEST_TICK_FALLBACK_OHLC` text DEFAULT NULL, `SCALP_BACKTEST_POLL_MS` text DEFAULT NULL, `SCALP_BACKTEST_SELL_SLIP_PCT` text DEFAULT NULL, `SCALP_MIN_HOLD_SEC` text DEFAULT NULL, `SCALP_ORDERBOOK_FILTER_ENABLED` text DEFAULT NULL, `SCALP_ORDERBOOK_MAX_SPREAD_PCT` text DEFAULT NULL, `SCALP_ORDERBOOK_ENTRY_BID_LEVELS` text DEFAULT NULL, `SCALP_ORDERBOOK_ENTRY_BID_DEPTH_MULT` text DEFAULT NULL, `SCALP_ORDERBOOK_ENTRY_ASK_MAX_MULT` text DEFAULT NULL, `SCALP_ORDERBOOK_MIN_BID_ASK_RATIO` text DEFAULT NULL, `SCALP_BACKTEST_CANDLE_WARMUP_BARS` text DEFAULT NULL, `SCALP_UNIVERSE_EXIT_DEBOUNCE_SEC` text DEFAULT NULL, `SCALP_EOD_ENABLED` text DEFAULT NULL, `SCALP_EOD_HM` text DEFAULT NULL, `SCALP_DAILY_PROFIT_RISK_BUDGET_ENABLED` text DEFAULT NULL, `SCALP_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` text DEFAULT NULL, `SCALP_TICK_SELL_ENABLED` text DEFAULT NULL, `SCALP_LIVE_ALIGN_USE_FORMING_BAR` text DEFAULT NULL, `CONDITION_SCALP_LS_NAME` text DEFAULT NULL, `SCALP_LIVE_UNIVERSE_HISTORY_SOURCE` text DEFAULT NULL, `SCALP_CANDLE_GAP_FORCE_SEC` text DEFAULT NULL, `SCALP_CANDLE_SHORT_LOG_SEC` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=391 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `config_short` **PK**: `id` | AUTO_INCREMENT=388 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `created_at` | `varchar(30)` | NOT NULL | | 설정행 생성시각 | | `STOP_LOSS_PCT` | `text` | NULL | NULL | 꼬리잡기: 손절 % (STOP_LOSS_PCT) | | `SHOULDER_CUT_PCT` | `text` | NULL | NULL | 꼬리잡기: 어깨컷 % (SHOULDER_CUT_PCT) | | `SHOULDER_MIN_HIGH_PCT` | `text` | NULL | NULL | 꼬리잡기: 어깨무장고점 % (SHOULDER_MIN_HIGH_PCT) | | `SHOULDER_MIN_NET_PCT` | `text` | NULL | NULL | 꼬리잡기: 어깨 최소 NET % (SHOULDER_MIN_NET_PCT) | | `STOP_ATR_MULTIPLIER_TAIL` | `text` | NULL | NULL | 꼬리잡기: STOP ATR 배수 IPLIER TAIL (STOP_ATR_MULTIPLIER_TAIL) | | `TARGET_ATR_MULTIPLIER_TAIL` | `text` | NULL | NULL | 꼬리잡기: 목표 ATR 배수 IPLIER TAIL (TARGET_ATR_MULTIPLIER_TAIL) | | `TAIL_ATR_SL_MIN_PCT` | `text` | NULL | NULL | 꼬리잡기: ATR손절 최소 % (TAIL_ATR_SL_MIN_PCT) | | `TAIL_ATR_SL_MAX_PCT` | `text` | NULL | NULL | 꼬리잡기: ATR손절 최대 % (TAIL_ATR_SL_MAX_PCT) | | `TAIL_ATR_TP_MIN_PCT` | `text` | NULL | NULL | 꼬리잡기: ATR익절 최소 % (TAIL_ATR_TP_MIN_PCT) | | `TAIL_ATR_TP_MAX_PCT` | `text` | NULL | NULL | 꼬리잡기: ATR익절 최대 % (TAIL_ATR_TP_MAX_PCT) | | `MIN_CANDLE_LEN_TAIL` | `text` | NULL | NULL | 꼬리잡기: 최소 CANDLE LEN TAIL (MIN_CANDLE_LEN_TAIL) | | `MIN_PRICE_TAIL` | `text` | NULL | NULL | 꼬리잡기: 최소가격 TAIL (MIN_PRICE_TAIL) | | `TAIL_SCORE_BASE` | `text` | NULL | NULL | 꼬리잡기: SCORE BASE (TAIL_SCORE_BASE) | | `TAIL_SCORE_RATIO_MULT` | `text` | NULL | NULL | 꼬리잡기: SCORE RATIO 배수 (TAIL_SCORE_RATIO_MULT) | | `TAIL_RATIO_MIN` | `text` | NULL | NULL | 꼬리잡기: RATIO 최소 (TAIL_RATIO_MIN) | | `TAIL_PCT_MIN` | `text` | NULL | NULL | 꼬리잡기: % 최소 (TAIL_PCT_MIN) | | `TAIL_SKIP_HTS_SCAN_DUPES` | `text` | NULL | NULL | 꼬리잡기: HTS스캔중복스킵 (TAIL_SKIP_HTS_SCAN_DUPES) | | `TAIL_USE_INTRADAY_DROP` | `text` | NULL | NULL | 꼬리잡기: 사용_ INTRADAY 되돌림/하락 (TAIL_USE_INTRADAY_DROP) | | `TAIL_USE_MA20_FILTER` | `text` | NULL | NULL | 꼬리잡기: 사용_ MA20 필터 (TAIL_USE_MA20_FILTER) | | `TAIL_USE_RSI_FILTER` | `text` | NULL | NULL | 꼬리잡기: 사용_ RSI 필터 (TAIL_USE_RSI_FILTER) | | `TAIL_USE_DAILY_RANGE_FILTER` | `text` | NULL | NULL | 꼬리잡기: 사용_ DAILY RANGE 필터 (TAIL_USE_DAILY_RANGE_FILTER) | | `TAIL_USE_HIGH_CHASE_FILTER` | `text` | NULL | NULL | 꼬리잡기: 사용_ 고점추격 필터 (TAIL_USE_HIGH_CHASE_FILTER) | | `TAIL_BAR_CHG_MIN_PCT` | `text` | NULL | NULL | 꼬리잡기: BAR CHG 최소 % (TAIL_BAR_CHG_MIN_PCT) | | `TAIL_BAR_CHG_MAX_PCT` | `text` | NULL | NULL | 꼬리잡기: BAR CHG 최대 % (TAIL_BAR_CHG_MAX_PCT) | | `TAIL_RSI_THRESHOLD` | `text` | NULL | NULL | 꼬리잡기: RSI THRESHOLD (TAIL_RSI_THRESHOLD) | | `MIN_DROP_PCT_FOR_LOSS_CUT` | `text` | NULL | NULL | 꼬리잡기: 최소 되돌림/하락 % FOR LOSS CUT (MIN_DROP_PCT_FOR_LOSS_CUT) | | `TAKE_PROFIT_PCT` | `text` | NULL | NULL | 꼬리잡기: 익절 % (TAKE_PROFIT_PCT) | | `MIN_DROP_RATE` | `text` | NULL | NULL | 꼬리잡기: 최소 되돌림/하락 RATE (MIN_DROP_RATE) | | `MIN_RECOVERY_RATIO_SHORT` | `text` | NULL | NULL | 꼬리잡기: 최소 RECOVERY RATIO SHORT (MIN_RECOVERY_RATIO_SHORT) | | `KIS_SHORT_MM_CHANNEL` | `text` | NULL | NULL | 꼬리잡기: KIS SHORT MM CHANNEL (KIS_SHORT_MM_CHANNEL) | | `SHORT_GAP_FILL_LIMIT` | `text` | NULL | NULL | 꼬리잡기: GAP FILL LIMIT (SHORT_GAP_FILL_LIMIT) | | `MAX_RECOVERY_RATIO_3M` | `text` | NULL | NULL | 꼬리잡기: 최대 RECOVERY RATIO 3M (MAX_RECOVERY_RATIO_3M) | | `TAIL_CANDLE_LOOKBACK` | `text` | NULL | NULL | 꼬리잡기: CANDLE LOOKBACK (TAIL_CANDLE_LOOKBACK) | | `SHORT_LIVE_BACKTEST_ALIGN` | `text` | NULL | NULL | 꼬리잡기: LIVE BACKTEST ALIGN (SHORT_LIVE_BACKTEST_ALIGN) | | `SHORT_LIVE_SIGNAL_LOOKBACK_BARS` | `text` | NULL | NULL | 꼬리잡기: LIVE SIGNAL LOOKBACK 봉수 (SHORT_LIVE_SIGNAL_LOOKBACK_BARS) | | `SHORT_UNIVERSE_SOURCE` | `text` | NULL | NULL | 꼬리잡기 유니버스 · ls_condition=LS 동명 AFR · 시세는 키움/한투 유지 · 매니저 최초 기동은 봇 재시작 필요할 수 있음 · 키움으로 자동 폴백 안 함 | | `RANK_SHORT_SORT` | `text` | NULL | NULL | 꼬리잡기: RANK SHORT SORT (RANK_SHORT_SORT) | | `RANK_SHORT_LIMIT` | `text` | NULL | NULL | 꼬리잡기: RANK SHORT LIMIT (RANK_SHORT_LIMIT) | | `CONDITION_SHORT_NAME` | `text` | NULL | NULL | 꼬리잡기: CONDITION SHORT NAME (CONDITION_SHORT_NAME) | | `CONDITION_SHORT_SEQ` | `text` | NULL | NULL | 꼬리잡기: CONDITION SHORT SEQ (CONDITION_SHORT_SEQ) | | `SHORT_MAX_BUY_AMOUNT` | `text` | NULL | NULL | 꼬리잡기: 1회최대매수금액 (SHORT_MAX_BUY_AMOUNT) | | `TAIL_MAX_BUY_AMOUNT` | `text` | NULL | NULL | 꼬리잡기: 1회최대매수금액 (TAIL_MAX_BUY_AMOUNT) | | `SHORT_CAND_LIMIT` | `text` | NULL | NULL | 꼬리잡기 후보 상한 · 0=무제한 · 조건검색/랭킹이 N개 줘도 상위 N개만 매수체크·WS구독 · 전 전략 합산이 키움 WS 100종 한도를 넘지 않게 조절 | | `SHORT_TIME_START` | `text` | NULL | NULL | 꼬리잡기: 매수시작 (SHORT_TIME_START) | | `SHORT_TIME_END` | `text` | NULL | NULL | 꼬리잡기: 매수종료 (SHORT_TIME_END) | | `SHORT_MAX_STOCKS` | `text` | NULL | NULL | 꼬리잡기: 동시보유상한 (SHORT_MAX_STOCKS) | | `SELL_USE_ORDERBOOK_ON_PROFIT` | `text` | NULL | NULL | 꼬리잡기: SELL 사용_ 호가 ON PROFIT (SELL_USE_ORDERBOOK_ON_PROFIT) | | `SELL_ORDERBOOK_BID_LEVELS` | `text` | NULL | NULL | 꼬리잡기: SELL 호가 BID LEVELS (SELL_ORDERBOOK_BID_LEVELS) | | `SELL_ORDERBOOK_DEPTH_MULT` | `text` | NULL | NULL | 꼬리잡기: SELL 호가 DEPTH 배수 (SELL_ORDERBOOK_DEPTH_MULT) | | `SHORT_TOTAL_BUDGET_KRW` | `text` | NULL | NULL | 꼬리잡기: 총운용한도 원 (SHORT_TOTAL_BUDGET_KRW) | | `STRATEGY_SHORT_ENABLED` | `text` | NULL | NULL | 꼬리잡기 ON/OFF. 다음루프 신규매수중단(보유청산유지). WS구독해제 안함. 기동시OFF→켜려면재시작 | | `TAIL_MIN_DROP_RATE` | `text` | NULL | NULL | 꼬리잡기: 최소 되돌림/하락 RATE (TAIL_MIN_DROP_RATE) | | `TAIL_MIN_RECOVERY_RATIO` | `text` | NULL | NULL | 꼬리잡기: 최소 RECOVERY RATIO (TAIL_MIN_RECOVERY_RATIO) | | `TAIL_MAX_RECOVERY_3M` | `text` | NULL | NULL | 꼬리잡기: 최대 RECOVERY 3M (TAIL_MAX_RECOVERY_3M) | | `TAIL_STOP_LOSS_PCT` | `text` | NULL | NULL | 꼬리잡기: 손절 % (TAIL_STOP_LOSS_PCT) | | `TAIL_TAKE_PROFIT_PCT` | `text` | NULL | NULL | 꼬리잡기: 익절 % (TAIL_TAKE_PROFIT_PCT) | | `TAIL_SHOULDER_MIN_HIGH_PCT` | `text` | NULL | NULL | 꼬리잡기: 어깨무장고점 % (TAIL_SHOULDER_MIN_HIGH_PCT) | | `TAIL_SHOULDER_CUT_PCT` | `text` | NULL | NULL | 꼬리잡기: 어깨컷 % (TAIL_SHOULDER_CUT_PCT) | | `TAIL_STOP_ATR_MULT` | `text` | NULL | NULL | 꼬리잡기: STOP ATR 배수 (TAIL_STOP_ATR_MULT) | | `TAIL_TARGET_ATR_MULT` | `text` | NULL | NULL | 꼬리잡기: 목표 ATR 배수 (TAIL_TARGET_ATR_MULT) | | `TAIL_MIN_PRICE` | `text` | NULL | NULL | 꼬리잡기: 최소가격 (TAIL_MIN_PRICE) | | `TAIL_MAX_DAILY_CHG` | `text` | NULL | NULL | 꼬리잡기: 당일등락상한 (TAIL_MAX_DAILY_CHG) | | `TAIL_MA20_MAX_ABOVE_PCT` | `text` | NULL | NULL | 꼬리잡기: MA20 최대 ABOVE % (TAIL_MA20_MAX_ABOVE_PCT) | | `TAIL_MAX_LOSS_KRW` | `text` | NULL | NULL | 꼬리잡기: 최대 LOSS 원 (TAIL_MAX_LOSS_KRW) | | `TAIL_MIN_DROP_FOR_LOSS_CUT` | `text` | NULL | NULL | 꼬리잡기: 최소 되돌림/하락 FOR LOSS CUT (TAIL_MIN_DROP_FOR_LOSS_CUT) | | `TAIL_RSI_PERIOD` | `text` | NULL | NULL | 꼬리잡기: RSI 기간 (TAIL_RSI_PERIOD) | | `TAIL_COOLDOWN_SEC` | `text` | NULL | NULL | 꼬리잡기: 쿨다운 초 (TAIL_COOLDOWN_SEC) | | `TAIL_MAX_DAILY` | `text` | NULL | NULL | 꼬리잡기: 일일매수횟수상한 (TAIL_MAX_DAILY) | | `TAIL_HIGH_CHASE_THR` | `text` | NULL | NULL | 꼬리잡기: 고점추격 THR (TAIL_HIGH_CHASE_THR) | | `TAIL_TIME_START` | `text` | NULL | NULL | 꼬리잡기: 매수시작 (TAIL_TIME_START) | | `TAIL_TIME_END` | `text` | NULL | NULL | 꼬리잡기: 매수종료 (TAIL_TIME_END) | | `TAIL_MAX_STOCKS` | `text` | NULL | NULL | 꼬리잡기 동시 종목 | | `TAIL_TOTAL_BUDGET_KRW` | `text` | NULL | NULL | 꼬리잡기 총 한도(원) | | `TAIL_SLOT_MONEY` | `text` | NULL | NULL | 꼬리잡기 슬롯(원) | | `TAIL_ENTRY_MODE` | `text` | NULL | NULL | 꼬리잡기: ENTRY 모드 (TAIL_ENTRY_MODE) | | `TAIL_LIMIT_ATR_MULT` | `text` | NULL | NULL | 꼬리잡기: LIMIT ATR 배수 (TAIL_LIMIT_ATR_MULT) | | `TAIL_LIMIT_ANCHOR` | `text` | NULL | NULL | 꼬리잡기: LIMIT ANCHOR (TAIL_LIMIT_ANCHOR) | | `TAIL_LIMIT_VALID_BARS` | `text` | NULL | NULL | 꼬리잡기: LIMIT VALID 봉수 (TAIL_LIMIT_VALID_BARS) | | `TAIL_LIMIT_FILL_SLIP_PCT` | `text` | NULL | NULL | 꼬리잡기: LIMIT FILL SLIP % (TAIL_LIMIT_FILL_SLIP_PCT) | | `TAIL_MIN_INVEST_RATIO_OF_SLOT` | `text` | NULL | NULL | 꼬리잡기: 최소 INVEST RATIO OF SLOT (TAIL_MIN_INVEST_RATIO_OF_SLOT) | | `TAIL_PARAM_SEARCH_ENTRY_MODE` | `text` | NULL | NULL | 꼬리잡기: PARAM SEARCH ENTRY 모드 (TAIL_PARAM_SEARCH_ENTRY_MODE) | | `TAIL_GRID_FAST_MAX_DAILY_CHG` | `text` | NULL | NULL | 꼬리잡기: GRID FAST 당일등락상한 (TAIL_GRID_FAST_MAX_DAILY_CHG) | | `TAIL_GRID_COARSE_MAX_DAILY_CHG` | `text` | NULL | NULL | 꼬리잡기: GRID COARSE 당일등락상한 (TAIL_GRID_COARSE_MAX_DAILY_CHG) | | `TAIL_GRID_FAST_LIMIT_ATR_MULT` | `text` | NULL | NULL | 꼬리잡기: GRID FAST LIMIT ATR 배수 (TAIL_GRID_FAST_LIMIT_ATR_MULT) | | `TAIL_GRID_COARSE_LIMIT_ATR_MULT` | `text` | NULL | NULL | 꼬리잡기: GRID COARSE LIMIT ATR 배수 (TAIL_GRID_COARSE_LIMIT_ATR_MULT) | | `TAIL_RATCHET_TIERS` | `text` | NULL | NULL | 꼬리잡기: 다단래칫 (TAIL_RATCHET_TIERS) | | `TAIL_MAX_HOLD_BARS` | `text` | NULL | NULL | 꼬리잡기: 최대보유봉 (TAIL_MAX_HOLD_BARS) | | `TAIL_BACKTEST_USE_TICK_DB` | `text` | NULL | NULL | 꼬리잡기: BACKTEST 사용_ TICK DB (TAIL_BACKTEST_USE_TICK_DB) | | `TAIL_BACKTEST_TICK_FALLBACK_OHLC` | `text` | NULL | NULL | ⚠ 꼬리 OHLC 폴백 (정합위험·금지) · 절대금지: 틱 모드에서 OHLC로 체결·고점 변조. 엔진은 틱 청산 ON 시 무시. Optuna/파람 강제 OFF | | `TAIL_TRAIL_PCT` | `text` | NULL | NULL | 꼬리잡기: 트레일 % (TAIL_TRAIL_PCT) | | `TAIL_TRAIL_ARM_PCT` | `text` | NULL | NULL | 꼬리잡기: 트레일무장 % (TAIL_TRAIL_ARM_PCT) | | `TAIL_PATTERN_HAMMER` | `text` | NULL | NULL | 꼬리잡기: 패턴 HAMMER (TAIL_PATTERN_HAMMER) | | `TAIL_PATTERN_PIN` | `text` | NULL | NULL | 꼬리잡기: 패턴 PIN (TAIL_PATTERN_PIN) | | `TAIL_PATTERN_ENGULFING` | `text` | NULL | NULL | 꼬리잡기: 패턴 ENGULFING (TAIL_PATTERN_ENGULFING) | | `TAIL_PATTERN_PIERCING` | `text` | NULL | NULL | 꼬리잡기: 패턴 PIERCING (TAIL_PATTERN_PIERCING) | | `TAIL_PATTERN_HARAMI` | `text` | NULL | NULL | 꼬리잡기: 패턴 HARAMI (TAIL_PATTERN_HARAMI) | | `TAIL_PATTERN_DOJI` | `text` | NULL | NULL | 꼬리잡기: 패턴 DOJI (TAIL_PATTERN_DOJI) | | `TAIL_PATTERN_MORNING_STAR` | `text` | NULL | NULL | 꼬리잡기: 패턴 MORNING STAR (TAIL_PATTERN_MORNING_STAR) | | `TAIL_PIN_CLOSE_UPPER_RATIO` | `text` | NULL | NULL | 꼬리잡기: PIN CLOSE UPPER RATIO (TAIL_PIN_CLOSE_UPPER_RATIO) | | `TAIL_PIN_MAX_UPPER_TAIL_RATIO` | `text` | NULL | NULL | 꼬리잡기: PIN 최대 UPPER TAIL RATIO (TAIL_PIN_MAX_UPPER_TAIL_RATIO) | | `TAIL_ENGULF_MIN_BODY_RATIO` | `text` | NULL | NULL | 꼬리잡기: ENGULF 최소 BODY RATIO (TAIL_ENGULF_MIN_BODY_RATIO) | | `TAIL_PIERCING_PENETRATE_RATIO` | `text` | NULL | NULL | 꼬리잡기: PIERCING PENETRATE RATIO (TAIL_PIERCING_PENETRATE_RATIO) | | `TAIL_HARAMI_MAX_BODY_RATIO` | `text` | NULL | NULL | 꼬리잡기: HARAMI 최대 BODY RATIO (TAIL_HARAMI_MAX_BODY_RATIO) | | `TAIL_DOJI_BODY_MAX_RATIO` | `text` | NULL | NULL | 꼬리잡기: DOJI BODY 최대 RATIO (TAIL_DOJI_BODY_MAX_RATIO) | | `TAIL_MORNING_STAR_BODY_MAX_RATIO` | `text` | NULL | NULL | 꼬리잡기: MORNING STAR BODY 최대 RATIO (TAIL_MORNING_STAR_BODY_MAX_RATIO) | | `TAIL_ORDERBOOK_FILTER_ENABLED` | `text` | NULL | NULL | 꼬리잡기 호가필터 ON · ON=스프레드·잔량비·얇은호가·매도벽으로 매수 차단 · OFF=저장만 | | `TAIL_ORDERBOOK_MAX_SPREAD_PCT` | `text` | NULL | NULL | 꼬리잡기 스프레드상한(%) · 0.45=0.45% · 그리드 max_spread_pct 앵커 | | `TAIL_ORDERBOOK_ENTRY_BID_LEVELS` | `text` | NULL | NULL | 꼬리잡기 호가단계(N호가) | | `TAIL_ORDERBOOK_ENTRY_BID_DEPTH_MULT` | `text` | NULL | NULL | 꼬리잡기 매수호가깊이 배수 · 얇은호가 탈락 · 필요수량×N | | `TAIL_ORDERBOOK_ENTRY_ASK_MAX_MULT` | `text` | NULL | NULL | 꼬리잡기 매도벽 허용배수 · 필요수량×N · 그리드 ask_max_mult | | `TAIL_ORDERBOOK_MIN_BID_ASK_RATIO` | `text` | NULL | NULL | 꼬리잡기 매수/매도잔량비 하한 · 그리드 min_bid_ask_ratio | | `TAIL_PROGRAM_FILTER_ENABLED` | `text` | NULL | NULL | 꼬리잡기: 프로그램매매 필터 ON/OFF (TAIL_PROGRAM_FILTER_ENABLED) | | `TAIL_PROGRAM_MIN_NET_BUY_QTY` | `text` | NULL | NULL | 꼬리잡기: 프로그램매매 최소 NET BUY QTY (TAIL_PROGRAM_MIN_NET_BUY_QTY) | | `TAIL_PROGRAM_MIN_NET_BUY_AMT` | `text` | NULL | NULL | 꼬리잡기: 프로그램매매 최소 NET BUY AMT (TAIL_PROGRAM_MIN_NET_BUY_AMT) | | `TAIL_PROGRAM_MAX_SELL_BUY_QTY_RATIO` | `text` | NULL | NULL | 꼬리잡기: 프로그램매매 최대 SELL BUY QTY RATIO (TAIL_PROGRAM_MAX_SELL_BUY_QTY_RATIO) | | `TAIL_PROGRAM_MIN_NET_DELTA_QTY` | `text` | NULL | NULL | 꼬리잡기: 프로그램매매 최소 NET DELTA QTY (TAIL_PROGRAM_MIN_NET_DELTA_QTY) | | `TAIL_PROGRAM_SNAPSHOT_MAX_AGE_SEC` | `text` | NULL | NULL | 꼬리잡기: 프로그램매매 SNAPSHOT 최대 AGE 초 (TAIL_PROGRAM_SNAPSHOT_MAX_AGE_SEC) | | `TAIL_BACKTEST_USE_TRIGGER_SNAPSHOT_DB` | `text` | NULL | NULL | 꼬리잡기: BACKTEST 사용_ TRIGGER SNAPSHOT DB (TAIL_BACKTEST_USE_TRIGGER_SNAPSHOT_DB) | | `TAIL_WHIPSAW_FILTER_ENABLED` | `text` | NULL | NULL | 꼬리잡기 휩쏘 필터 | | `TAIL_WHIPSAW_MODE` | `text` | NULL | NULL | 꼬리잡기: 휩쏘 모드 (TAIL_WHIPSAW_MODE) | | `TAIL_WHIPSAW_SUBBAR_SEC` | `text` | NULL | NULL | 꼬리 휩쏘 미니봉(초) · 비우면 글로벌 WHIPSAW_SUBBAR_SEC · Optuna 꼬리 TPE 축 | | `TAIL_WHIPSAW_LOOKBACK_SEC` | `text` | NULL | NULL | 꼬리 휩쏘 룩백(초) · 비우면 글로벌 WHIPSAW_LOOKBACK_SEC | | `TAIL_WHIPSAW_DIP_PCT` | `text` | NULL | NULL | 꼬리 휩쏘 하락폭(분율) · 0.003=0.3% · 비우면 글로벌 | | `TAIL_WHIPSAW_RECOVERY_TOL_PCT` | `text` | NULL | NULL | 꼬리 휩쏘 회복허용(분율) · 0.001=0.1% · 비우면 글로벌 | | `SHORT_DAILY_PROFIT_TARGET_ENABLED` | `text` | NULL | NULL | 꼬리잡기 손익 감시 켜기 · OFF = 해당 전략 일일익절 비활성 (매수 차단 없음) | | `SHORT_DAILY_PROFIT_TARGET_KRW` | `text` | NULL | NULL | 꼬리잡기 목표(원) | | `SHORT_DAILY_PROFIT_TARGET_PCT` | `text` | NULL | NULL | 꼬리잡기 목표(%) · 퍼센트 그대로 (예: 2.5 = 2.5%) · 0=미사용 | | `SHORT_DAILY_PROFIT_HALT_NEW_BUYS` | `text` | NULL | NULL | 꼬리잡기 신규매수 수동 중단 · 목표 무관 수동 잠금 · 비우면 마스터 상속 · OFF=정상 | | `TAIL_BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT` | `text` | NULL | NULL | 꼬리잡기: BACKTEST 사용_ TRIGGER EVAL SNAPSHOT (TAIL_BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT) | | `SHORT_DAILY_PROFIT_MODE` | `text` | NULL | NULL | 꼬리잡기 익절방식 · 비우면 마스터 상속 · fixed/trailing/both | | `SHORT_DAILY_PROFIT_TRAIL_TIERS` | `text` | NULL | NULL | 꼬리잡기 다단 트레일 · 수익원:컷%,… · 비우면 마스터 상속 · 예: 30000:50,100000:35,300000:25 | | `SHORT_DAILY_PROFIT_TRAIL_DROP_PCT` | `text` | NULL | NULL | 꼬리잡기 단일 트레일 되돌림(%) · 다단 비었을 때만 · 고점 대비 % · 비우면 마스터 상속 · 0=미사용 | | `SHORT_DAILY_PROFIT_TRAIL_ARM_KRW` | `text` | NULL | NULL | 꼬리잡기 트레일 발동수익(원) · 이 이상 벌어야 트레일 감시 · 비우면 마스터 상속 | | `SHORT_DAILY_PROFIT_TRAIL_ARM_PCT` | `text` | NULL | NULL | 꼬리잡기: 일일익절 트레일무장 % (SHORT_DAILY_PROFIT_TRAIL_ARM_PCT) | | `CONDITION_SHORT_KIWOOM_NAME` | `text` | NULL | NULL | 꼬리잡기: CONDITION SHORT KIWOOM NAME (CONDITION_SHORT_KIWOOM_NAME) | | `CONDITION_SHORT_KIWOOM_SEQ` | `text` | NULL | NULL | 꼬리잡기: CONDITION SHORT KIWOOM SEQ (CONDITION_SHORT_KIWOOM_SEQ) | | `TAIL_EOD_ENABLED` | `text` | NULL | NULL | EOD 당일청산 사용 · ON=설정 시각 이후 보유 전량 장마감 청산 · OFF=익절·손절·시간컷만 | | `TAIL_EOD_HM` | `text` | NULL | NULL | EOD 시각 (HH:MM) · 정규장 15:30 마감 기준 최소 10분 전 · 순차매도 여유 | | `TAIL_PARAM_SEARCH_MIN_START` | `text` | NULL | NULL | 꼬리 파라서치 최소 시작일 · 조건식 변경일 이후만 탐색 (YYYY-MM-DD) · CLI --start 와 max 적용 | | `TAIL_SYMBOL_DAILY_LOSS_LIMIT_KRW` | `text` | NULL | NULL | 꼬리잡기: SYMBOL DAILY LOSS LIMIT 원 (TAIL_SYMBOL_DAILY_LOSS_LIMIT_KRW) | | `TAIL_SYMBOL_DAILY_LOSS_LIMIT_PCT` | `text` | NULL | NULL | 꼬리잡기: SYMBOL DAILY LOSS LIMIT % (TAIL_SYMBOL_DAILY_LOSS_LIMIT_PCT) | | `TAIL_REENTRY_MIN_EDGE_KRW` | `text` | NULL | NULL | 꼬리잡기: REENTRY 최소 EDGE 원 (TAIL_REENTRY_MIN_EDGE_KRW) | | `TAIL_REENTRY_REQUIRE_NONNEG` | `text` | NULL | NULL | 꼬리잡기: REENTRY REQUIRE NONNEG (TAIL_REENTRY_REQUIRE_NONNEG) | | `TAIL_GRID_FAST_SYMBOL_LOSS_PCT` | `text` | NULL | NULL | 꼬리잡기: GRID FAST SYMBOL LOSS % (TAIL_GRID_FAST_SYMBOL_LOSS_PCT) | | `TAIL_GRID_FAST_SYMBOL_LOSS_KRW` | `text` | NULL | NULL | 꼬리잡기: GRID FAST SYMBOL LOSS 원 (TAIL_GRID_FAST_SYMBOL_LOSS_KRW) | | `TAIL_GRID_FAST_REENTRY_MIN_EDGE` | `text` | NULL | NULL | 꼬리잡기: GRID FAST REENTRY 최소 EDGE (TAIL_GRID_FAST_REENTRY_MIN_EDGE) | | `TAIL_BACKTEST_USE_TICK_EXIT` | `text` | NULL | NULL | 꼬리 틱 청산 · ON=ws_ticks 시간순 청산(실매 폴링 정합) · OFF=OHLC intrabar | | `TAIL_BACKTEST_POLL_MS` | `text` | NULL | NULL | 꼬리 틱청산 폴링(ms) · 실매 STRATEGY_LOOP_SLEEP≈0.1초 정합 · 하한 50ms | | `TAIL_BACKTEST_SELL_SLIP_PCT` | `text` | NULL | NULL | 꼬리잡기: BACKTEST SELL SLIP % (TAIL_BACKTEST_SELL_SLIP_PCT) | | `TAIL_BT_SYNTH_3M_FROM_1M` | `text` | NULL | NULL | 꼬리잡기: BT SYNTH 3M FROM 1M (TAIL_BT_SYNTH_3M_FROM_1M) | | `TAIL_BACKTEST_UNIVERSE_SCAN_AT` | `text` | NULL | NULL | 꼬리잡기: BACKTEST 유니버스 SCAN AT (TAIL_BACKTEST_UNIVERSE_SCAN_AT) | | `TAIL_BT_INCLUSION_LOOKBACK` | `text` | NULL | NULL | 꼬리잡기: BT INCLUSION LOOKBACK (TAIL_BT_INCLUSION_LOOKBACK) | | `TAIL_VOL_MULT` | `text` | NULL | NULL | 꼬리잡기: 거래량배수 (TAIL_VOL_MULT) | | `TAIL_VOL_WIN` | `text` | NULL | NULL | 꼬리잡기: 거래량윈도우 (TAIL_VOL_WIN) | | `TAIL_BACKTEST_CANDLE_WARMUP_BARS` | `text` | NULL | NULL | 꼬리잡기: BACKTEST CANDLE WARMUP 봉수 (TAIL_BACKTEST_CANDLE_WARMUP_BARS) | | `TAIL_BACKTEST_REST_WARMUP` | `text` | NULL | NULL | 꼬리잡기: BACKTEST REST WARMUP (TAIL_BACKTEST_REST_WARMUP) | | `TAIL_BACKTEST_REST_WARMUP_BARS` | `text` | NULL | NULL | 꼬리잡기: BACKTEST REST WARMUP 봉수 (TAIL_BACKTEST_REST_WARMUP_BARS) | | `TAIL_BACKTEST_REST_SLEEP_SEC` | `text` | NULL | NULL | 꼬리잡기: BACKTEST REST SLEEP 초 (TAIL_BACKTEST_REST_SLEEP_SEC) | | `TAIL_BACKTEST_REST_MAX_CODES` | `text` | NULL | NULL | 꼬리잡기: BACKTEST REST 최대 CODES (TAIL_BACKTEST_REST_MAX_CODES) | | `TAIL_VOL_SPIKE_LOOKBACK` | `text` | NULL | NULL | 꼬리잡기: 거래량 SPIKE LOOKBACK (TAIL_VOL_SPIKE_LOOKBACK) | | `TAIL_UNIVERSE_EXIT_DEBOUNCE_SEC` | `text` | NULL | NULL | 꼬리잡기: 유니버스 EXIT DEBOUNCE 초 (TAIL_UNIVERSE_EXIT_DEBOUNCE_SEC) | | `SHORT_DAILY_PROFIT_RISK_BUDGET_ENABLED` | `text` | NULL | NULL | 꼬리잡기 리스크버짓(B) · ON=일일익절 hit 후 보유최악손절합>cushion 이면 전량정리 · 기본 OFF · 마스터 없음 | | `SHORT_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` | `text` | NULL | NULL | 꼬리잡기 리스크버짓 쿨다운(초) · 같은 날 재평가 최소 간격 · 0=당일 1회만 | | `SHORT_TICK_SELL_ENABLED` | `text` | NULL | NULL | 꼬리잡기 틱매도 · 비우면 공통 TICK_SELL_ENABLED · true/false 명시 시 전략만 덮어씀 · 기본 false | | `TAIL_WHIPSAW_MIN_SUBBARS` | `text` | NULL | NULL | 꼬리잡기: 휩쏘 최소 SUBBARS (TAIL_WHIPSAW_MIN_SUBBARS) | | `TAIL_WHIPSAW_TICK_BUFFER_LIMIT` | `text` | NULL | NULL | 꼬리잡기: 휩쏘 TICK BUFFER LIMIT (TAIL_WHIPSAW_TICK_BUFFER_LIMIT) | | `CONDITION_SHORT_LS_NAME` | `text` | NULL | NULL | 꼬리잡기: CONDITION SHORT LS NAME (CONDITION_SHORT_LS_NAME) | | `SHORT_LIVE_UNIVERSE_HISTORY_SOURCE` | `text` | NULL | NULL | 꼬리잡기: LIVE 유니버스 HISTORY SOURCE (SHORT_LIVE_UNIVERSE_HISTORY_SOURCE) |
DDL 원문 ```sql CREATE TABLE `config_short` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` varchar(30) NOT NULL, `STOP_LOSS_PCT` text DEFAULT NULL, `SHOULDER_CUT_PCT` text DEFAULT NULL, `SHOULDER_MIN_HIGH_PCT` text DEFAULT NULL, `SHOULDER_MIN_NET_PCT` text DEFAULT NULL, `STOP_ATR_MULTIPLIER_TAIL` text DEFAULT NULL, `TARGET_ATR_MULTIPLIER_TAIL` text DEFAULT NULL, `TAIL_ATR_SL_MIN_PCT` text DEFAULT NULL, `TAIL_ATR_SL_MAX_PCT` text DEFAULT NULL, `TAIL_ATR_TP_MIN_PCT` text DEFAULT NULL, `TAIL_ATR_TP_MAX_PCT` text DEFAULT NULL, `MIN_CANDLE_LEN_TAIL` text DEFAULT NULL, `MIN_PRICE_TAIL` text DEFAULT NULL, `TAIL_SCORE_BASE` text DEFAULT NULL, `TAIL_SCORE_RATIO_MULT` text DEFAULT NULL, `TAIL_RATIO_MIN` text DEFAULT NULL, `TAIL_PCT_MIN` text DEFAULT NULL, `TAIL_SKIP_HTS_SCAN_DUPES` text DEFAULT NULL, `TAIL_USE_INTRADAY_DROP` text DEFAULT NULL, `TAIL_USE_MA20_FILTER` text DEFAULT NULL, `TAIL_USE_RSI_FILTER` text DEFAULT NULL, `TAIL_USE_DAILY_RANGE_FILTER` text DEFAULT NULL, `TAIL_USE_HIGH_CHASE_FILTER` text DEFAULT NULL, `TAIL_BAR_CHG_MIN_PCT` text DEFAULT NULL, `TAIL_BAR_CHG_MAX_PCT` text DEFAULT NULL, `TAIL_RSI_THRESHOLD` text DEFAULT NULL, `MIN_DROP_PCT_FOR_LOSS_CUT` text DEFAULT NULL, `TAKE_PROFIT_PCT` text DEFAULT NULL, `MIN_DROP_RATE` text DEFAULT NULL, `MIN_RECOVERY_RATIO_SHORT` text DEFAULT NULL, `KIS_SHORT_MM_CHANNEL` text DEFAULT NULL, `SHORT_GAP_FILL_LIMIT` text DEFAULT NULL, `MAX_RECOVERY_RATIO_3M` text DEFAULT NULL, `TAIL_CANDLE_LOOKBACK` text DEFAULT NULL, `SHORT_LIVE_BACKTEST_ALIGN` text DEFAULT NULL, `SHORT_LIVE_SIGNAL_LOOKBACK_BARS` text DEFAULT NULL, `SHORT_UNIVERSE_SOURCE` text DEFAULT NULL, `RANK_SHORT_SORT` text DEFAULT NULL, `RANK_SHORT_LIMIT` text DEFAULT NULL, `CONDITION_SHORT_NAME` text DEFAULT NULL, `CONDITION_SHORT_SEQ` text DEFAULT NULL, `SHORT_MAX_BUY_AMOUNT` text DEFAULT NULL, `TAIL_MAX_BUY_AMOUNT` text DEFAULT NULL, `SHORT_CAND_LIMIT` text DEFAULT NULL, `SHORT_TIME_START` text DEFAULT NULL, `SHORT_TIME_END` text DEFAULT NULL, `SHORT_MAX_STOCKS` text DEFAULT NULL, `SELL_USE_ORDERBOOK_ON_PROFIT` text DEFAULT NULL, `SELL_ORDERBOOK_BID_LEVELS` text DEFAULT NULL, `SELL_ORDERBOOK_DEPTH_MULT` text DEFAULT NULL, `SHORT_TOTAL_BUDGET_KRW` text DEFAULT NULL, `STRATEGY_SHORT_ENABLED` text DEFAULT NULL, `TAIL_MIN_DROP_RATE` text DEFAULT NULL, `TAIL_MIN_RECOVERY_RATIO` text DEFAULT NULL, `TAIL_MAX_RECOVERY_3M` text DEFAULT NULL, `TAIL_STOP_LOSS_PCT` text DEFAULT NULL, `TAIL_TAKE_PROFIT_PCT` text DEFAULT NULL, `TAIL_SHOULDER_MIN_HIGH_PCT` text DEFAULT NULL, `TAIL_SHOULDER_CUT_PCT` text DEFAULT NULL, `TAIL_STOP_ATR_MULT` text DEFAULT NULL, `TAIL_TARGET_ATR_MULT` text DEFAULT NULL, `TAIL_MIN_PRICE` text DEFAULT NULL, `TAIL_MAX_DAILY_CHG` text DEFAULT NULL, `TAIL_MA20_MAX_ABOVE_PCT` text DEFAULT NULL, `TAIL_MAX_LOSS_KRW` text DEFAULT NULL, `TAIL_MIN_DROP_FOR_LOSS_CUT` text DEFAULT NULL, `TAIL_RSI_PERIOD` text DEFAULT NULL, `TAIL_COOLDOWN_SEC` text DEFAULT NULL, `TAIL_MAX_DAILY` text DEFAULT NULL, `TAIL_HIGH_CHASE_THR` text DEFAULT NULL, `TAIL_TIME_START` text DEFAULT NULL, `TAIL_TIME_END` text DEFAULT NULL, `TAIL_MAX_STOCKS` text DEFAULT NULL, `TAIL_TOTAL_BUDGET_KRW` text DEFAULT NULL, `TAIL_SLOT_MONEY` text DEFAULT NULL, `TAIL_ENTRY_MODE` text DEFAULT NULL, `TAIL_LIMIT_ATR_MULT` text DEFAULT NULL, `TAIL_LIMIT_ANCHOR` text DEFAULT NULL, `TAIL_LIMIT_VALID_BARS` text DEFAULT NULL, `TAIL_LIMIT_FILL_SLIP_PCT` text DEFAULT NULL, `TAIL_MIN_INVEST_RATIO_OF_SLOT` text DEFAULT NULL, `TAIL_PARAM_SEARCH_ENTRY_MODE` text DEFAULT NULL, `TAIL_GRID_FAST_MAX_DAILY_CHG` text DEFAULT NULL, `TAIL_GRID_COARSE_MAX_DAILY_CHG` text DEFAULT NULL, `TAIL_GRID_FAST_LIMIT_ATR_MULT` text DEFAULT NULL, `TAIL_GRID_COARSE_LIMIT_ATR_MULT` text DEFAULT NULL, `TAIL_RATCHET_TIERS` text DEFAULT NULL, `TAIL_MAX_HOLD_BARS` text DEFAULT NULL, `TAIL_BACKTEST_USE_TICK_DB` text DEFAULT NULL, `TAIL_BACKTEST_TICK_FALLBACK_OHLC` text DEFAULT NULL, `TAIL_TRAIL_PCT` text DEFAULT NULL, `TAIL_TRAIL_ARM_PCT` text DEFAULT NULL, `TAIL_PATTERN_HAMMER` text DEFAULT NULL, `TAIL_PATTERN_PIN` text DEFAULT NULL, `TAIL_PATTERN_ENGULFING` text DEFAULT NULL, `TAIL_PATTERN_PIERCING` text DEFAULT NULL, `TAIL_PATTERN_HARAMI` text DEFAULT NULL, `TAIL_PATTERN_DOJI` text DEFAULT NULL, `TAIL_PATTERN_MORNING_STAR` text DEFAULT NULL, `TAIL_PIN_CLOSE_UPPER_RATIO` text DEFAULT NULL, `TAIL_PIN_MAX_UPPER_TAIL_RATIO` text DEFAULT NULL, `TAIL_ENGULF_MIN_BODY_RATIO` text DEFAULT NULL, `TAIL_PIERCING_PENETRATE_RATIO` text DEFAULT NULL, `TAIL_HARAMI_MAX_BODY_RATIO` text DEFAULT NULL, `TAIL_DOJI_BODY_MAX_RATIO` text DEFAULT NULL, `TAIL_MORNING_STAR_BODY_MAX_RATIO` text DEFAULT NULL, `TAIL_ORDERBOOK_FILTER_ENABLED` text DEFAULT NULL, `TAIL_ORDERBOOK_MAX_SPREAD_PCT` text DEFAULT NULL, `TAIL_ORDERBOOK_ENTRY_BID_LEVELS` text DEFAULT NULL, `TAIL_ORDERBOOK_ENTRY_BID_DEPTH_MULT` text DEFAULT NULL, `TAIL_ORDERBOOK_ENTRY_ASK_MAX_MULT` text DEFAULT NULL, `TAIL_ORDERBOOK_MIN_BID_ASK_RATIO` text DEFAULT NULL, `TAIL_PROGRAM_FILTER_ENABLED` text DEFAULT NULL, `TAIL_PROGRAM_MIN_NET_BUY_QTY` text DEFAULT NULL, `TAIL_PROGRAM_MIN_NET_BUY_AMT` text DEFAULT NULL, `TAIL_PROGRAM_MAX_SELL_BUY_QTY_RATIO` text DEFAULT NULL, `TAIL_PROGRAM_MIN_NET_DELTA_QTY` text DEFAULT NULL, `TAIL_PROGRAM_SNAPSHOT_MAX_AGE_SEC` text DEFAULT NULL, `TAIL_BACKTEST_USE_TRIGGER_SNAPSHOT_DB` text DEFAULT NULL, `TAIL_WHIPSAW_FILTER_ENABLED` text DEFAULT NULL, `TAIL_WHIPSAW_MODE` text DEFAULT NULL, `TAIL_WHIPSAW_SUBBAR_SEC` text DEFAULT NULL, `TAIL_WHIPSAW_LOOKBACK_SEC` text DEFAULT NULL, `TAIL_WHIPSAW_DIP_PCT` text DEFAULT NULL, `TAIL_WHIPSAW_RECOVERY_TOL_PCT` text DEFAULT NULL, `SHORT_DAILY_PROFIT_TARGET_ENABLED` text DEFAULT NULL, `SHORT_DAILY_PROFIT_TARGET_KRW` text DEFAULT NULL, `SHORT_DAILY_PROFIT_TARGET_PCT` text DEFAULT NULL, `SHORT_DAILY_PROFIT_HALT_NEW_BUYS` text DEFAULT NULL, `TAIL_BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT` text DEFAULT NULL, `SHORT_DAILY_PROFIT_MODE` text DEFAULT NULL, `SHORT_DAILY_PROFIT_TRAIL_TIERS` text DEFAULT NULL, `SHORT_DAILY_PROFIT_TRAIL_DROP_PCT` text DEFAULT NULL, `SHORT_DAILY_PROFIT_TRAIL_ARM_KRW` text DEFAULT NULL, `SHORT_DAILY_PROFIT_TRAIL_ARM_PCT` text DEFAULT NULL, `CONDITION_SHORT_KIWOOM_NAME` text DEFAULT NULL, `CONDITION_SHORT_KIWOOM_SEQ` text DEFAULT NULL, `TAIL_EOD_ENABLED` text DEFAULT NULL, `TAIL_EOD_HM` text DEFAULT NULL, `TAIL_PARAM_SEARCH_MIN_START` text DEFAULT NULL, `TAIL_SYMBOL_DAILY_LOSS_LIMIT_KRW` text DEFAULT NULL, `TAIL_SYMBOL_DAILY_LOSS_LIMIT_PCT` text DEFAULT NULL, `TAIL_REENTRY_MIN_EDGE_KRW` text DEFAULT NULL, `TAIL_REENTRY_REQUIRE_NONNEG` text DEFAULT NULL, `TAIL_GRID_FAST_SYMBOL_LOSS_PCT` text DEFAULT NULL, `TAIL_GRID_FAST_SYMBOL_LOSS_KRW` text DEFAULT NULL, `TAIL_GRID_FAST_REENTRY_MIN_EDGE` text DEFAULT NULL, `TAIL_BACKTEST_USE_TICK_EXIT` text DEFAULT NULL, `TAIL_BACKTEST_POLL_MS` text DEFAULT NULL, `TAIL_BACKTEST_SELL_SLIP_PCT` text DEFAULT NULL, `TAIL_BT_SYNTH_3M_FROM_1M` text DEFAULT NULL, `TAIL_BACKTEST_UNIVERSE_SCAN_AT` text DEFAULT NULL, `TAIL_BT_INCLUSION_LOOKBACK` text DEFAULT NULL, `TAIL_VOL_MULT` text DEFAULT NULL, `TAIL_VOL_WIN` text DEFAULT NULL, `TAIL_BACKTEST_CANDLE_WARMUP_BARS` text DEFAULT NULL, `TAIL_BACKTEST_REST_WARMUP` text DEFAULT NULL, `TAIL_BACKTEST_REST_WARMUP_BARS` text DEFAULT NULL, `TAIL_BACKTEST_REST_SLEEP_SEC` text DEFAULT NULL, `TAIL_BACKTEST_REST_MAX_CODES` text DEFAULT NULL, `TAIL_VOL_SPIKE_LOOKBACK` text DEFAULT NULL, `TAIL_UNIVERSE_EXIT_DEBOUNCE_SEC` text DEFAULT NULL, `SHORT_DAILY_PROFIT_RISK_BUDGET_ENABLED` text DEFAULT NULL, `SHORT_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` text DEFAULT NULL, `SHORT_TICK_SELL_ENABLED` text DEFAULT NULL, `TAIL_WHIPSAW_MIN_SUBBARS` text DEFAULT NULL, `TAIL_WHIPSAW_TICK_BUFFER_LIMIT` text DEFAULT NULL, `CONDITION_SHORT_LS_NAME` text DEFAULT NULL, `SHORT_LIVE_UNIVERSE_HISTORY_SOURCE` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=388 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `config_breakout` **PK**: `id` | AUTO_INCREMENT=388 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `created_at` | `varchar(30)` | NOT NULL | | 설정행 생성시각 | | `BREAKOUT_LIVE_BACKTEST_ALIGN` | `text` | NULL | NULL | 돌파: LIVE BACKTEST ALIGN (BREAKOUT_LIVE_BACKTEST_ALIGN) | | `BREAKOUT_LIVE_SIGNAL_LOOKBACK_BARS` | `text` | NULL | NULL | 돌파: LIVE SIGNAL LOOKBACK 봉수 (BREAKOUT_LIVE_SIGNAL_LOOKBACK_BARS) | | `BREAKOUT_UNIVERSE_SOURCE` | `text` | NULL | NULL | 돌파 유니버스 · ls_condition=LS 동명 AFR · 시세는 키움/한투 유지 · 매니저 최초 기동은 봇 재시작 필요할 수 있음 · 키움으로 자동 폴백 안 함 | | `RANK_BREAKOUT_SORT` | `text` | NULL | NULL | RANK 돌파 SORT (RANK_BREAKOUT_SORT) | | `RANK_BREAKOUT_LIMIT` | `text` | NULL | NULL | RANK 돌파 LIMIT (RANK_BREAKOUT_LIMIT) | | `CONDITION_BREAKOUT_NAME` | `text` | NULL | NULL | CONDITION 돌파 NAME (CONDITION_BREAKOUT_NAME) | | `CONDITION_BREAKOUT_SEQ` | `text` | NULL | NULL | CONDITION 돌파 SEQ (CONDITION_BREAKOUT_SEQ) | | `BREAKOUT_CAND_LIMIT` | `text` | NULL | NULL | 돌파 후보 상한 · 0=무제한 · 조건검색/랭킹이 N개 줘도 상위 N개만 매수체크·WS구독 · 전 전략 합산이 키움 WS 100종 한도를 넘지 않게 조절 | | `BREAKOUT_TIME_START` | `text` | NULL | NULL | 돌파: 매수시작 (BREAKOUT_TIME_START) | | `BREAKOUT_TIME_END` | `text` | NULL | NULL | 돌파: 매수종료 (BREAKOUT_TIME_END) | | `BREAKOUT_LOOKBACK_MIN` | `text` | NULL | NULL | 돌파: LOOKBACK 최소 (BREAKOUT_LOOKBACK_MIN) | | `BREAKOUT_VOL_WIN` | `text` | NULL | NULL | 돌파: 거래량윈도우 (BREAKOUT_VOL_WIN) | | `BREAKOUT_VOL_MULT` | `text` | NULL | NULL | 돌파: 거래량배수 (BREAKOUT_VOL_MULT) | | `BREAKOUT_PREV_CHG_MIN` | `text` | NULL | NULL | 돌파: PREV CHG 최소 (BREAKOUT_PREV_CHG_MIN) | | `BREAKOUT_PREV_CHG_MAX` | `text` | NULL | NULL | 돌파: PREV CHG 최대 (BREAKOUT_PREV_CHG_MAX) | | `BREAKOUT_STOP_LOSS_PCT` | `text` | NULL | NULL | 돌파: 손절 % (BREAKOUT_STOP_LOSS_PCT) | | `BREAKOUT_TAKE_PROFIT_PCT` | `text` | NULL | NULL | 돌파: 익절 % (BREAKOUT_TAKE_PROFIT_PCT) | | `BREAKOUT_TRAIL_PCT` | `text` | NULL | NULL | 돌파: 트레일 % (BREAKOUT_TRAIL_PCT) | | `BREAKOUT_GOLDEN_END_HM` | `text` | NULL | NULL | 돌파: GOLDEN END HHMM (BREAKOUT_GOLDEN_END_HM) | | `BREAKOUT_MAX_DAILY_CHG` | `text` | NULL | NULL | 돌파: 당일등락상한 (BREAKOUT_MAX_DAILY_CHG) | | `BREAKOUT_MIN_PRICE` | `text` | NULL | NULL | 돌파: 최소가격 (BREAKOUT_MIN_PRICE) | | `BREAKOUT_MAX_LOSS_PER_TRADE_KRW` | `text` | NULL | NULL | 돌파: 최대 LOSS PER TRADE 원 (BREAKOUT_MAX_LOSS_PER_TRADE_KRW) | | `BREAKOUT_SLOT_MONEY` | `text` | NULL | NULL | 돌파 슬롯(원) | | `BREAKOUT_MAX_DAILY` | `text` | NULL | NULL | 돌파: 일일매수횟수상한 (BREAKOUT_MAX_DAILY) | | `BREAKOUT_COOLDOWN_SEC` | `text` | NULL | NULL | 돌파: 쿨다운 초 (BREAKOUT_COOLDOWN_SEC) | | `BREAKOUT_MAX_STOCKS` | `text` | NULL | NULL | 돌파 동시 종목 | | `BREAKOUT_SHOULDER_MIN_HIGH_PCT` | `text` | NULL | NULL | 돌파: 어깨무장고점 % (BREAKOUT_SHOULDER_MIN_HIGH_PCT) | | `BREAKOUT_SHOULDER_CUT_PCT` | `text` | NULL | NULL | 돌파: 어깨컷 % (BREAKOUT_SHOULDER_CUT_PCT) | | `BREAKOUT_GRID_COARSE_SHOULDER_SMIN` | `text` | NULL | NULL | 돌파: GRID COARSE 어깨 SMIN (BREAKOUT_GRID_COARSE_SHOULDER_SMIN) | | `BREAKOUT_GRID_COARSE_SHOULDER_CUT` | `text` | NULL | NULL | 돌파: GRID COARSE 어깨컷 (BREAKOUT_GRID_COARSE_SHOULDER_CUT) | | `BREAKOUT_GRID_FINE_SHOULDER_SMIN` | `text` | NULL | NULL | 돌파: GRID FINE 어깨 SMIN (BREAKOUT_GRID_FINE_SHOULDER_SMIN) | | `BREAKOUT_GRID_FINE_SHOULDER_CUT` | `text` | NULL | NULL | 돌파: GRID FINE 어깨컷 (BREAKOUT_GRID_FINE_SHOULDER_CUT) | | `BREAKOUT_GRID_FULL_SHOULDER_SMIN` | `text` | NULL | NULL | 돌파: GRID FULL 어깨 SMIN (BREAKOUT_GRID_FULL_SHOULDER_SMIN) | | `BREAKOUT_GRID_FULL_SHOULDER_CUT` | `text` | NULL | NULL | 돌파: GRID FULL 어깨컷 (BREAKOUT_GRID_FULL_SHOULDER_CUT) | | `BREAKOUT_TOTAL_BUDGET_KRW` | `text` | NULL | NULL | 돌파 총 한도(원) | | `STRATEGY_BREAKOUT_ENABLED` | `text` | NULL | NULL | 돌파 ON/OFF. 다음루프 신규매수중단(보유청산유지). WS구독해제 안함. 기동시OFF→켜려면재시작 | | `KIS_BREAKOUT_MM_CHANNEL` | `text` | NULL | NULL | KIS 돌파 MM CHANNEL (KIS_BREAKOUT_MM_CHANNEL) | | `BREAKOUT_ENTRY_MODE` | `text` | NULL | NULL | 돌파: ENTRY 모드 (BREAKOUT_ENTRY_MODE) | | `BREAKOUT_INTRABAR_SLIPPAGE_PCT` | `text` | NULL | NULL | 돌파: INTRABAR SLIPPAGE % (BREAKOUT_INTRABAR_SLIPPAGE_PCT) | | `BREAKOUT_RATCHET_TIERS` | `text` | NULL | NULL | 돌파: 다단래칫 (BREAKOUT_RATCHET_TIERS) | | `BREAKOUT_MAX_HOLD_BARS` | `text` | NULL | NULL | 최대보유(분) · 0=OFF · 진입 후 N분 경과 시 max_hold 청산 | | `BREAKOUT_TRAIL_ARM_PCT` | `text` | NULL | NULL | 돌파: 트레일무장 % (BREAKOUT_TRAIL_ARM_PCT) | | `BREAKOUT_USE_EMA_FILTER` | `text` | NULL | NULL | 돌파: 사용_ EMA 필터 (BREAKOUT_USE_EMA_FILTER) | | `BREAKOUT_EMA_FAST_PERIOD` | `text` | NULL | NULL | 돌파: EMA단기 기간 (BREAKOUT_EMA_FAST_PERIOD) | | `BREAKOUT_EMA_SLOW_PERIOD` | `text` | NULL | NULL | 돌파: EMA장기 기간 (BREAKOUT_EMA_SLOW_PERIOD) | | `BREAKOUT_MIN_BAR_TRADE_VALUE_KRW` | `text` | NULL | NULL | 돌파: 최소 BAR TRADE VALUE 원 (BREAKOUT_MIN_BAR_TRADE_VALUE_KRW) | | `BREAKOUT_MIN_TURNOVER_1M_PCT` | `text` | NULL | NULL | 돌파: 최소 TURNOVER 1M % (BREAKOUT_MIN_TURNOVER_1M_PCT) | | `BREAKOUT_SHARE_DENOM` | `text` | NULL | NULL | 돌파: SHARE DENOM (BREAKOUT_SHARE_DENOM) | | `BREAKOUT_ORDERBOOK_FILTER_ENABLED` | `text` | NULL | NULL | 돌파 호가필터 ON · ON=스프레드·잔량비·얇은호가·매도벽으로 매수 차단 · OFF=저장만 | | `BREAKOUT_ORDERBOOK_MAX_SPREAD_PCT` | `text` | NULL | NULL | 돌파 스프레드상한(%) · 0.45=0.45% · 그리드 max_spread_pct 앵커 | | `BREAKOUT_ORDERBOOK_ENTRY_BID_LEVELS` | `text` | NULL | NULL | 돌파 호가단계(N호가) | | `BREAKOUT_ORDERBOOK_ENTRY_BID_DEPTH_MULT` | `text` | NULL | NULL | 돌파 매수호가깊이 배수 · 얇은호가 탈락 · 필요수량×N | | `BREAKOUT_ORDERBOOK_ENTRY_ASK_MAX_MULT` | `text` | NULL | NULL | 돌파 매도벽 허용배수 · 필요수량×N · 그리드 ask_max_mult | | `BREAKOUT_ORDERBOOK_MIN_BID_ASK_RATIO` | `text` | NULL | NULL | 돌파 매수/매도잔량비 하한 · 그리드 min_bid_ask_ratio | | `BREAKOUT_ORDERBOOK_ASK_WALL_MAX_QTY` | `text` | NULL | NULL | 돌파 매도벽 상한(주) · 그리드 ask_wall_max_qty | | `BREAKOUT_PROGRAM_FILTER_ENABLED` | `text` | NULL | NULL | 돌파: 프로그램매매 필터 ON/OFF (BREAKOUT_PROGRAM_FILTER_ENABLED) | | `BREAKOUT_PROGRAM_MIN_NET_BUY_QTY` | `text` | NULL | NULL | 돌파: 프로그램매매 최소 NET BUY QTY (BREAKOUT_PROGRAM_MIN_NET_BUY_QTY) | | `BREAKOUT_PROGRAM_MIN_NET_BUY_AMT` | `text` | NULL | NULL | 돌파: 프로그램매매 최소 NET BUY AMT (BREAKOUT_PROGRAM_MIN_NET_BUY_AMT) | | `BREAKOUT_PROGRAM_MAX_SELL_BUY_QTY_RATIO` | `text` | NULL | NULL | 돌파: 프로그램매매 최대 SELL BUY QTY RATIO (BREAKOUT_PROGRAM_MAX_SELL_BUY_QTY_RATIO) | | `BREAKOUT_PROGRAM_MIN_NET_DELTA_QTY` | `text` | NULL | NULL | 돌파: 프로그램매매 최소 NET DELTA QTY (BREAKOUT_PROGRAM_MIN_NET_DELTA_QTY) | | `BREAKOUT_PROGRAM_SNAPSHOT_MAX_AGE_SEC` | `text` | NULL | NULL | 돌파: 프로그램매매 SNAPSHOT 최대 AGE 초 (BREAKOUT_PROGRAM_SNAPSHOT_MAX_AGE_SEC) | | `BREAKOUT_BACKTEST_USE_TRIGGER_SNAPSHOT_DB` | `text` | NULL | NULL | 돌파: BACKTEST 사용_ TRIGGER SNAPSHOT DB (BREAKOUT_BACKTEST_USE_TRIGGER_SNAPSHOT_DB) | | `BREAKOUT_WHIPSAW_FILTER_ENABLED` | `text` | NULL | NULL | 돌파 휩쏘 필터 | | `BREAKOUT_WHIPSAW_MODE` | `text` | NULL | NULL | 돌파: 휩쏘 모드 (BREAKOUT_WHIPSAW_MODE) | | `BREAKOUT_WHIPSAW_SUBBAR_SEC` | `text` | NULL | NULL | 돌파: 휩쏘 SUBBAR 초 (BREAKOUT_WHIPSAW_SUBBAR_SEC) | | `BREAKOUT_WHIPSAW_LOOKBACK_SEC` | `text` | NULL | NULL | 돌파: 휩쏘 LOOKBACK 초 (BREAKOUT_WHIPSAW_LOOKBACK_SEC) | | `BREAKOUT_WHIPSAW_DIP_PCT` | `text` | NULL | NULL | 돌파: 휩쏘 DIP % (BREAKOUT_WHIPSAW_DIP_PCT) | | `BREAKOUT_WHIPSAW_RECOVERY_TOL_PCT` | `text` | NULL | NULL | 돌파: 휩쏘 RECOVERY TOL % (BREAKOUT_WHIPSAW_RECOVERY_TOL_PCT) | | `BREAKOUT_DAILY_PROFIT_TARGET_ENABLED` | `text` | NULL | NULL | 돌파 손익 감시 켜기 · OFF = 해당 전략 일일익절 비활성 (매수 차단 없음) | | `BREAKOUT_DAILY_PROFIT_TARGET_KRW` | `text` | NULL | NULL | 돌파 목표(원) | | `BREAKOUT_DAILY_PROFIT_TARGET_PCT` | `text` | NULL | NULL | 돌파 목표(%) · 퍼센트 그대로 (예: 2.5 = 2.5%) · 0=미사용 | | `BREAKOUT_DAILY_PROFIT_HALT_NEW_BUYS` | `text` | NULL | NULL | 돌파 신규매수 수동 중단 · 목표 무관 수동 잠금 · 비우면 마스터 상속 · OFF=정상 | | `BREAKOUT_BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT` | `text` | NULL | NULL | 돌파: BACKTEST 사용_ TRIGGER EVAL SNAPSHOT (BREAKOUT_BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT) | | `BREAKOUT_DAILY_PROFIT_MODE` | `text` | NULL | NULL | 돌파 익절방식 · 비우면 마스터 상속 · fixed/trailing/both | | `BREAKOUT_DAILY_PROFIT_TRAIL_TIERS` | `text` | NULL | NULL | 돌파 다단 트레일 · 수익원:컷%,… · 비우면 마스터 상속 · 예: 30000:50,100000:35,300000:25 | | `BREAKOUT_DAILY_PROFIT_TRAIL_DROP_PCT` | `text` | NULL | NULL | 돌파 단일 트레일 되돌림(%) · 다단 비었을 때만 · 고점 대비 % · 비우면 마스터 상속 · 0=미사용 | | `BREAKOUT_DAILY_PROFIT_TRAIL_ARM_KRW` | `text` | NULL | NULL | 돌파 트레일 발동수익(원) · 이 이상 벌어야 트레일 감시 · 비우면 마스터 상속 | | `BREAKOUT_DAILY_PROFIT_TRAIL_ARM_PCT` | `text` | NULL | NULL | 돌파: 일일익절 트레일무장 % (BREAKOUT_DAILY_PROFIT_TRAIL_ARM_PCT) | | `BREAKOUT_SL_MODE` | `text` | NULL | NULL | 돌파: SL 모드 (BREAKOUT_SL_MODE) | | `BREAKOUT_ATR_PERIOD` | `text` | NULL | NULL | 돌파: ATR 기간 (BREAKOUT_ATR_PERIOD) | | `BREAKOUT_ATR_SL_MULT` | `text` | NULL | NULL | 돌파: ATR손절 배수 (BREAKOUT_ATR_SL_MULT) | | `BREAKOUT_ATR_SL_MIN_PCT` | `text` | NULL | NULL | 돌파: ATR손절 최소 % (BREAKOUT_ATR_SL_MIN_PCT) | | `BREAKOUT_ATR_SL_MAX_PCT` | `text` | NULL | NULL | 돌파: ATR손절 최대 % (BREAKOUT_ATR_SL_MAX_PCT) | | `CONDITION_BREAKOUT_KIWOOM_NAME` | `text` | NULL | NULL | CONDITION 돌파 KIWOOM NAME (CONDITION_BREAKOUT_KIWOOM_NAME) | | `CONDITION_BREAKOUT_KIWOOM_SEQ` | `text` | NULL | NULL | CONDITION 돌파 KIWOOM SEQ (CONDITION_BREAKOUT_KIWOOM_SEQ) | | `BREAKOUT_EOD_ENABLED` | `text` | NULL | NULL | EOD 당일청산 사용 · ON=설정 시각 이후 보유 전량 eod 청산 · OFF=익절·손절·시간컷만 | | `BREAKOUT_EOD_HM` | `text` | NULL | NULL | EOD 시각 (HH:MM) · 이 시각 이후 보유 전량 청산 · 예: 15:15 | | `BREAKOUT_SKIP_HTS_SCAN_DUPES` | `text` | NULL | NULL | 돌파: HTS스캔중복스킵 (BREAKOUT_SKIP_HTS_SCAN_DUPES) | | `BREAKOUT_GRID_FAST_SKIP_HTS_SCAN_DUPES` | `text` | NULL | NULL | 돌파: GRID FAST HTS스캔중복스킵 (BREAKOUT_GRID_FAST_SKIP_HTS_SCAN_DUPES) | | `BREAKOUT_BACKTEST_TICK_FALLBACK_OHLC` | `text` | NULL | NULL | ⚠ 돌파 OHLC 폴백 (정합위험·금지) · 절대금지 — 틱 진입 ON 시 봉 high 폴백 안 함 | | `BREAKOUT_BACKTEST_USE_TICK_DB` | `text` | NULL | NULL | 돌파: BACKTEST 사용_ TICK DB (BREAKOUT_BACKTEST_USE_TICK_DB) | | `BREAKOUT_BACKTEST_USE_TICK_EXIT` | `text` | NULL | NULL | 돌파 틱 청산 · ON=ws_ticks 시간순 청산 · OFF=OHLC intrabar | | `BREAKOUT_BACKTEST_POLL_MS` | `text` | NULL | NULL | 돌파 틱청산 폴링(ms) · 실매 폴링 정합 · 하한 50ms | | `BREAKOUT_BACKTEST_SELL_SLIP_PCT` | `text` | NULL | NULL | 돌파: BACKTEST SELL SLIP % (BREAKOUT_BACKTEST_SELL_SLIP_PCT) | | `BREAKOUT_CONFIRM_MARGIN_PCT` | `text` | NULL | NULL | 돌파: CONFIRM MARGIN % (BREAKOUT_CONFIRM_MARGIN_PCT) | | `BREAKOUT_BODY_MIN_PCT` | `text` | NULL | NULL | 돌파: BODY 최소 % (BREAKOUT_BODY_MIN_PCT) | | `BREAKOUT_MAX_BUY_AMOUNT` | `text` | NULL | NULL | 돌파: 1회최대매수금액 (BREAKOUT_MAX_BUY_AMOUNT) | | `BREAKOUT_MIN_INVEST_RATIO_OF_SLOT` | `text` | NULL | NULL | 돌파: 최소 INVEST RATIO OF SLOT (BREAKOUT_MIN_INVEST_RATIO_OF_SLOT) | | `BREAKOUT_BACKTEST_CANDLE_WARMUP_BARS` | `text` | NULL | NULL | 돌파: BACKTEST CANDLE WARMUP 봉수 (BREAKOUT_BACKTEST_CANDLE_WARMUP_BARS) | | `BREAKOUT_BACKTEST_UNIVERSE_SCAN_AT` | `text` | NULL | NULL | 돌파: BACKTEST 유니버스 SCAN AT (BREAKOUT_BACKTEST_UNIVERSE_SCAN_AT) | | `BREAKOUT_UNIVERSE_EXIT_DEBOUNCE_SEC` | `text` | NULL | NULL | 돌파: 유니버스 EXIT DEBOUNCE 초 (BREAKOUT_UNIVERSE_EXIT_DEBOUNCE_SEC) | | `BREAKOUT_DAILY_PROFIT_RISK_BUDGET_ENABLED` | `text` | NULL | NULL | 돌파 리스크버짓(B) · ON=일일익절 hit 후 보유최악손절합>cushion 이면 전량정리 · 기본 OFF · 마스터 없음 | | `BREAKOUT_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` | `text` | NULL | NULL | 돌파 리스크버짓 쿨다운(초) · 같은 날 재평가 최소 간격 · 0=당일 1회만 | | `BREAKOUT_TICK_SELL_ENABLED` | `text` | NULL | NULL | 돌파 틱매도 · 비우면 공통 TICK_SELL_ENABLED · true/false 명시 시 전략만 덮어씀 · 기본 false | | `CONDITION_BREAKOUT_LS_NAME` | `text` | NULL | NULL | CONDITION 돌파 LS NAME (CONDITION_BREAKOUT_LS_NAME) | | `BREAKOUT_LIVE_UNIVERSE_HISTORY_SOURCE` | `text` | NULL | NULL | 돌파: LIVE 유니버스 HISTORY SOURCE (BREAKOUT_LIVE_UNIVERSE_HISTORY_SOURCE) | | `BREAKOUT_CANDLE_GAP_FORCE_SEC` | `text` | NULL | NULL | 돌파: CANDLE GAP FORCE 초 (BREAKOUT_CANDLE_GAP_FORCE_SEC) | | `BREAKOUT_CANDLE_SHORT_LOG_SEC` | `text` | NULL | NULL | 돌파: CANDLE SHORT LOG 초 (BREAKOUT_CANDLE_SHORT_LOG_SEC) |
DDL 원문 ```sql CREATE TABLE `config_breakout` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` varchar(30) NOT NULL, `BREAKOUT_LIVE_BACKTEST_ALIGN` text DEFAULT NULL, `BREAKOUT_LIVE_SIGNAL_LOOKBACK_BARS` text DEFAULT NULL, `BREAKOUT_UNIVERSE_SOURCE` text DEFAULT NULL, `RANK_BREAKOUT_SORT` text DEFAULT NULL, `RANK_BREAKOUT_LIMIT` text DEFAULT NULL, `CONDITION_BREAKOUT_NAME` text DEFAULT NULL, `CONDITION_BREAKOUT_SEQ` text DEFAULT NULL, `BREAKOUT_CAND_LIMIT` text DEFAULT NULL, `BREAKOUT_TIME_START` text DEFAULT NULL, `BREAKOUT_TIME_END` text DEFAULT NULL, `BREAKOUT_LOOKBACK_MIN` text DEFAULT NULL, `BREAKOUT_VOL_WIN` text DEFAULT NULL, `BREAKOUT_VOL_MULT` text DEFAULT NULL, `BREAKOUT_PREV_CHG_MIN` text DEFAULT NULL, `BREAKOUT_PREV_CHG_MAX` text DEFAULT NULL, `BREAKOUT_STOP_LOSS_PCT` text DEFAULT NULL, `BREAKOUT_TAKE_PROFIT_PCT` text DEFAULT NULL, `BREAKOUT_TRAIL_PCT` text DEFAULT NULL, `BREAKOUT_GOLDEN_END_HM` text DEFAULT NULL, `BREAKOUT_MAX_DAILY_CHG` text DEFAULT NULL, `BREAKOUT_MIN_PRICE` text DEFAULT NULL, `BREAKOUT_MAX_LOSS_PER_TRADE_KRW` text DEFAULT NULL, `BREAKOUT_SLOT_MONEY` text DEFAULT NULL, `BREAKOUT_MAX_DAILY` text DEFAULT NULL, `BREAKOUT_COOLDOWN_SEC` text DEFAULT NULL, `BREAKOUT_MAX_STOCKS` text DEFAULT NULL, `BREAKOUT_SHOULDER_MIN_HIGH_PCT` text DEFAULT NULL, `BREAKOUT_SHOULDER_CUT_PCT` text DEFAULT NULL, `BREAKOUT_GRID_COARSE_SHOULDER_SMIN` text DEFAULT NULL, `BREAKOUT_GRID_COARSE_SHOULDER_CUT` text DEFAULT NULL, `BREAKOUT_GRID_FINE_SHOULDER_SMIN` text DEFAULT NULL, `BREAKOUT_GRID_FINE_SHOULDER_CUT` text DEFAULT NULL, `BREAKOUT_GRID_FULL_SHOULDER_SMIN` text DEFAULT NULL, `BREAKOUT_GRID_FULL_SHOULDER_CUT` text DEFAULT NULL, `BREAKOUT_TOTAL_BUDGET_KRW` text DEFAULT NULL, `STRATEGY_BREAKOUT_ENABLED` text DEFAULT NULL, `KIS_BREAKOUT_MM_CHANNEL` text DEFAULT NULL, `BREAKOUT_ENTRY_MODE` text DEFAULT NULL, `BREAKOUT_INTRABAR_SLIPPAGE_PCT` text DEFAULT NULL, `BREAKOUT_RATCHET_TIERS` text DEFAULT NULL, `BREAKOUT_MAX_HOLD_BARS` text DEFAULT NULL, `BREAKOUT_TRAIL_ARM_PCT` text DEFAULT NULL, `BREAKOUT_USE_EMA_FILTER` text DEFAULT NULL, `BREAKOUT_EMA_FAST_PERIOD` text DEFAULT NULL, `BREAKOUT_EMA_SLOW_PERIOD` text DEFAULT NULL, `BREAKOUT_MIN_BAR_TRADE_VALUE_KRW` text DEFAULT NULL, `BREAKOUT_MIN_TURNOVER_1M_PCT` text DEFAULT NULL, `BREAKOUT_SHARE_DENOM` text DEFAULT NULL, `BREAKOUT_ORDERBOOK_FILTER_ENABLED` text DEFAULT NULL, `BREAKOUT_ORDERBOOK_MAX_SPREAD_PCT` text DEFAULT NULL, `BREAKOUT_ORDERBOOK_ENTRY_BID_LEVELS` text DEFAULT NULL, `BREAKOUT_ORDERBOOK_ENTRY_BID_DEPTH_MULT` text DEFAULT NULL, `BREAKOUT_ORDERBOOK_ENTRY_ASK_MAX_MULT` text DEFAULT NULL, `BREAKOUT_ORDERBOOK_MIN_BID_ASK_RATIO` text DEFAULT NULL, `BREAKOUT_ORDERBOOK_ASK_WALL_MAX_QTY` text DEFAULT NULL, `BREAKOUT_PROGRAM_FILTER_ENABLED` text DEFAULT NULL, `BREAKOUT_PROGRAM_MIN_NET_BUY_QTY` text DEFAULT NULL, `BREAKOUT_PROGRAM_MIN_NET_BUY_AMT` text DEFAULT NULL, `BREAKOUT_PROGRAM_MAX_SELL_BUY_QTY_RATIO` text DEFAULT NULL, `BREAKOUT_PROGRAM_MIN_NET_DELTA_QTY` text DEFAULT NULL, `BREAKOUT_PROGRAM_SNAPSHOT_MAX_AGE_SEC` text DEFAULT NULL, `BREAKOUT_BACKTEST_USE_TRIGGER_SNAPSHOT_DB` text DEFAULT NULL, `BREAKOUT_WHIPSAW_FILTER_ENABLED` text DEFAULT NULL, `BREAKOUT_WHIPSAW_MODE` text DEFAULT NULL, `BREAKOUT_WHIPSAW_SUBBAR_SEC` text DEFAULT NULL, `BREAKOUT_WHIPSAW_LOOKBACK_SEC` text DEFAULT NULL, `BREAKOUT_WHIPSAW_DIP_PCT` text DEFAULT NULL, `BREAKOUT_WHIPSAW_RECOVERY_TOL_PCT` text DEFAULT NULL, `BREAKOUT_DAILY_PROFIT_TARGET_ENABLED` text DEFAULT NULL, `BREAKOUT_DAILY_PROFIT_TARGET_KRW` text DEFAULT NULL, `BREAKOUT_DAILY_PROFIT_TARGET_PCT` text DEFAULT NULL, `BREAKOUT_DAILY_PROFIT_HALT_NEW_BUYS` text DEFAULT NULL, `BREAKOUT_BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT` text DEFAULT NULL, `BREAKOUT_DAILY_PROFIT_MODE` text DEFAULT NULL, `BREAKOUT_DAILY_PROFIT_TRAIL_TIERS` text DEFAULT NULL, `BREAKOUT_DAILY_PROFIT_TRAIL_DROP_PCT` text DEFAULT NULL, `BREAKOUT_DAILY_PROFIT_TRAIL_ARM_KRW` text DEFAULT NULL, `BREAKOUT_DAILY_PROFIT_TRAIL_ARM_PCT` text DEFAULT NULL, `BREAKOUT_SL_MODE` text DEFAULT NULL, `BREAKOUT_ATR_PERIOD` text DEFAULT NULL, `BREAKOUT_ATR_SL_MULT` text DEFAULT NULL, `BREAKOUT_ATR_SL_MIN_PCT` text DEFAULT NULL, `BREAKOUT_ATR_SL_MAX_PCT` text DEFAULT NULL, `CONDITION_BREAKOUT_KIWOOM_NAME` text DEFAULT NULL, `CONDITION_BREAKOUT_KIWOOM_SEQ` text DEFAULT NULL, `BREAKOUT_EOD_ENABLED` text DEFAULT NULL, `BREAKOUT_EOD_HM` text DEFAULT NULL, `BREAKOUT_SKIP_HTS_SCAN_DUPES` text DEFAULT NULL, `BREAKOUT_GRID_FAST_SKIP_HTS_SCAN_DUPES` text DEFAULT NULL, `BREAKOUT_BACKTEST_TICK_FALLBACK_OHLC` text DEFAULT NULL, `BREAKOUT_BACKTEST_USE_TICK_DB` text DEFAULT NULL, `BREAKOUT_BACKTEST_USE_TICK_EXIT` text DEFAULT NULL, `BREAKOUT_BACKTEST_POLL_MS` text DEFAULT NULL, `BREAKOUT_BACKTEST_SELL_SLIP_PCT` text DEFAULT NULL, `BREAKOUT_CONFIRM_MARGIN_PCT` text DEFAULT NULL, `BREAKOUT_BODY_MIN_PCT` text DEFAULT NULL, `BREAKOUT_MAX_BUY_AMOUNT` text DEFAULT NULL, `BREAKOUT_MIN_INVEST_RATIO_OF_SLOT` text DEFAULT NULL, `BREAKOUT_BACKTEST_CANDLE_WARMUP_BARS` text DEFAULT NULL, `BREAKOUT_BACKTEST_UNIVERSE_SCAN_AT` text DEFAULT NULL, `BREAKOUT_UNIVERSE_EXIT_DEBOUNCE_SEC` text DEFAULT NULL, `BREAKOUT_DAILY_PROFIT_RISK_BUDGET_ENABLED` text DEFAULT NULL, `BREAKOUT_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` text DEFAULT NULL, `BREAKOUT_TICK_SELL_ENABLED` text DEFAULT NULL, `CONDITION_BREAKOUT_LS_NAME` text DEFAULT NULL, `BREAKOUT_LIVE_UNIVERSE_HISTORY_SOURCE` text DEFAULT NULL, `BREAKOUT_CANDLE_GAP_FORCE_SEC` text DEFAULT NULL, `BREAKOUT_CANDLE_SHORT_LOG_SEC` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=388 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `config_range_break` **PK**: `id` | AUTO_INCREMENT=307 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `created_at` | `varchar(30)` | NOT NULL | | 설정행 생성시각 | | `STRATEGY_RANGE_BREAK_ENABLED` | `text` | NULL | NULL | 박스권돌파 ON/OFF. 다음루프 신규매수중단(보유청산유지). WS구독해제 안함 | | `RANGE_BREAK_LIVE_BACKTEST_ALIGN` | `text` | NULL | NULL | 박스권돌파: LIVE BACKTEST ALIGN (RANGE_BREAK_LIVE_BACKTEST_ALIGN) | | `RANGE_BREAK_LIVE_SIGNAL_LOOKBACK_BARS` | `text` | NULL | NULL | 박스권돌파: LIVE SIGNAL LOOKBACK 봉수 (RANGE_BREAK_LIVE_SIGNAL_LOOKBACK_BARS) | | `RANGE_BREAK_UNIVERSE_SOURCE` | `text` | NULL | NULL | 박스권돌파: 유니버스소스 (RANGE_BREAK_UNIVERSE_SOURCE) | | `RANK_RANGE_BREAK_SORT` | `text` | NULL | NULL | 박스권돌파: RANK RANGE BREAK SORT (RANK_RANGE_BREAK_SORT) | | `RANK_RANGE_BREAK_LIMIT` | `text` | NULL | NULL | 박스권돌파: RANK RANGE BREAK LIMIT (RANK_RANGE_BREAK_LIMIT) | | `CONDITION_RANGE_BREAK_NAME` | `text` | NULL | NULL | 박스권돌파: CONDITION RANGE BREAK NAME (CONDITION_RANGE_BREAK_NAME) | | `CONDITION_RANGE_BREAK_SEQ` | `text` | NULL | NULL | 박스권돌파: CONDITION RANGE BREAK SEQ (CONDITION_RANGE_BREAK_SEQ) | | `RANGE_BREAK_CAND_LIMIT` | `text` | NULL | NULL | 박스권돌파: 후보상한 (RANGE_BREAK_CAND_LIMIT) | | `RANGE_BREAK_BOX_LOOKBACK_MIN` | `text` | NULL | NULL | 박스권돌파: BOX LOOKBACK 최소 (RANGE_BREAK_BOX_LOOKBACK_MIN) | | `RANGE_BREAK_BOX_MAX_WIDTH_PCT` | `text` | NULL | NULL | 박스권돌파: BOX 최대 WIDTH % (RANGE_BREAK_BOX_MAX_WIDTH_PCT) | | `RANGE_BREAK_BOX_MIN_WIDTH_PCT` | `text` | NULL | NULL | 박스권돌파: BOX 최소 WIDTH % (RANGE_BREAK_BOX_MIN_WIDTH_PCT) | | `RANGE_BREAK_SETUP_VOL_MAX_MULT` | `text` | NULL | NULL | 박스권돌파: SETUP 거래량 최대 배수 (RANGE_BREAK_SETUP_VOL_MAX_MULT) | | `RANGE_BREAK_SETUP_BEAR_BARS_MIN` | `text` | NULL | NULL | 박스권돌파: SETUP BEAR 봉수 최소 (RANGE_BREAK_SETUP_BEAR_BARS_MIN) | | `RANGE_BREAK_VOL_MULT` | `text` | NULL | NULL | 박스권돌파: 거래량배수 (RANGE_BREAK_VOL_MULT) | | `RANGE_BREAK_VOL_WIN` | `text` | NULL | NULL | 박스권돌파: 거래량윈도우 (RANGE_BREAK_VOL_WIN) | | `RANGE_BREAK_VOL_BASELINE_WIN` | `text` | NULL | NULL | 박스권돌파: 거래량 BASELINE WIN (RANGE_BREAK_VOL_BASELINE_WIN) | | `RANGE_BREAK_BREAK_MARGIN_PCT` | `text` | NULL | NULL | 박스권돌파: BREAK MARGIN % (RANGE_BREAK_BREAK_MARGIN_PCT) | | `RANGE_BREAK_BODY_MIN_PCT` | `text` | NULL | NULL | 박스권돌파: BODY 최소 % (RANGE_BREAK_BODY_MIN_PCT) | | `RANGE_BREAK_TIME_START` | `text` | NULL | NULL | 박스권돌파: 매수시작 (RANGE_BREAK_TIME_START) | | `RANGE_BREAK_TIME_END_HM` | `text` | NULL | NULL | 박스권돌파: 매수종료 HHMM (RANGE_BREAK_TIME_END_HM) | | `RANGE_BREAK_STOP_LOSS_PCT` | `text` | NULL | NULL | 박스권돌파: 손절 % (RANGE_BREAK_STOP_LOSS_PCT) | | `RANGE_BREAK_TAKE_PROFIT_PCT` | `text` | NULL | NULL | 박스권돌파: 익절 % (RANGE_BREAK_TAKE_PROFIT_PCT) | | `RANGE_BREAK_TRAIL_PCT` | `text` | NULL | NULL | 박스권돌파: 트레일 % (RANGE_BREAK_TRAIL_PCT) | | `RANGE_BREAK_TRAIL_ARM_PCT` | `text` | NULL | NULL | 박스권돌파: 트레일무장 % (RANGE_BREAK_TRAIL_ARM_PCT) | | `RANGE_BREAK_SHOULDER_MIN_HIGH_PCT` | `text` | NULL | NULL | 박스권돌파: 어깨무장고점 % (RANGE_BREAK_SHOULDER_MIN_HIGH_PCT) | | `RANGE_BREAK_SHOULDER_CUT_PCT` | `text` | NULL | NULL | 박스권돌파: 어깨컷 % (RANGE_BREAK_SHOULDER_CUT_PCT) | | `RANGE_BREAK_MAX_HOLD_BARS` | `text` | NULL | NULL | 박스권돌파: 최대보유봉 (RANGE_BREAK_MAX_HOLD_BARS) | | `RANGE_BREAK_MAX_DAILY` | `text` | NULL | NULL | 박스권돌파: 일일매수횟수상한 (RANGE_BREAK_MAX_DAILY) | | `RANGE_BREAK_COOLDOWN_SEC` | `text` | NULL | NULL | 박스권돌파: 쿨다운 초 (RANGE_BREAK_COOLDOWN_SEC) | | `RANGE_BREAK_MAX_DAILY_CHG` | `text` | NULL | NULL | 박스권돌파: 당일등락상한 (RANGE_BREAK_MAX_DAILY_CHG) | | `RANGE_BREAK_MIN_PRICE` | `text` | NULL | NULL | 박스권돌파: 최소가격 (RANGE_BREAK_MIN_PRICE) | | `RANGE_BREAK_HIGH_CHASE_THR` | `text` | NULL | NULL | 박스권돌파: 고점추격 THR (RANGE_BREAK_HIGH_CHASE_THR) | | `RANGE_BREAK_USE_HIGH_CHASE_FILTER` | `text` | NULL | NULL | 박스권돌파: 사용_ 고점추격 필터 (RANGE_BREAK_USE_HIGH_CHASE_FILTER) | | `RANGE_BREAK_MAX_LOSS_PER_TRADE_KRW` | `text` | NULL | NULL | 박스권돌파: 최대 LOSS PER TRADE 원 (RANGE_BREAK_MAX_LOSS_PER_TRADE_KRW) | | `RANGE_BREAK_SLOT_MONEY` | `text` | NULL | NULL | 박스권돌파: 슬롯금액 (RANGE_BREAK_SLOT_MONEY) | | `RANGE_BREAK_MAX_BUY_AMOUNT` | `text` | NULL | NULL | 박스권돌파: 1회최대매수금액 (RANGE_BREAK_MAX_BUY_AMOUNT) | | `RANGE_BREAK_MIN_INVEST_RATIO_OF_SLOT` | `text` | NULL | NULL | 박스권돌파: 최소 INVEST RATIO OF SLOT (RANGE_BREAK_MIN_INVEST_RATIO_OF_SLOT) | | `RANGE_BREAK_FORCE_EOD_EXIT` | `text` | NULL | NULL | 박스권돌파: FORCE 장마감 EXIT (RANGE_BREAK_FORCE_EOD_EXIT) | | `KIS_RANGE_BREAK_MM_CHANNEL` | `text` | NULL | NULL | 박스권돌파: KIS RANGE BREAK MM CHANNEL (KIS_RANGE_BREAK_MM_CHANNEL) | | `RANGE_BREAK_MAX_STOCKS` | `text` | NULL | NULL | 박스권돌파: 동시보유상한 (RANGE_BREAK_MAX_STOCKS) | | `RANGE_BREAK_TOTAL_BUDGET_KRW` | `text` | NULL | NULL | 박스권돌파: 총운용한도 원 (RANGE_BREAK_TOTAL_BUDGET_KRW) | | `RANGE_BREAK_DAILY_PROFIT_TARGET_ENABLED` | `text` | NULL | NULL | 박스권돌파: 일일익절 목표 ON/OFF (RANGE_BREAK_DAILY_PROFIT_TARGET_ENABLED) | | `RANGE_BREAK_DAILY_PROFIT_TARGET_KRW` | `text` | NULL | NULL | 박스권돌파: 일일익절 목표 원 (RANGE_BREAK_DAILY_PROFIT_TARGET_KRW) | | `RANGE_BREAK_DAILY_PROFIT_TARGET_PCT` | `text` | NULL | NULL | 박스권돌파: 일일익절 목표 % (RANGE_BREAK_DAILY_PROFIT_TARGET_PCT) | | `RANGE_BREAK_DAILY_PROFIT_HALT_NEW_BUYS` | `text` | NULL | NULL | 박스권돌파: 일일익절 중단 NEW BUYS (RANGE_BREAK_DAILY_PROFIT_HALT_NEW_BUYS) | | `RANGE_BREAK_DAILY_PROFIT_MODE` | `text` | NULL | NULL | 박스권돌파: 일일익절 모드 (RANGE_BREAK_DAILY_PROFIT_MODE) | | `RANGE_BREAK_DAILY_PROFIT_TRAIL_TIERS` | `text` | NULL | NULL | 박스권돌파: 일일익절 트레일 다단 (RANGE_BREAK_DAILY_PROFIT_TRAIL_TIERS) | | `RANGE_BREAK_DAILY_PROFIT_TRAIL_DROP_PCT` | `text` | NULL | NULL | 박스권돌파: 일일익절 트레일 되돌림/하락 % (RANGE_BREAK_DAILY_PROFIT_TRAIL_DROP_PCT) | | `RANGE_BREAK_DAILY_PROFIT_TRAIL_ARM_KRW` | `text` | NULL | NULL | 박스권돌파: 일일익절 트레일무장 원 (RANGE_BREAK_DAILY_PROFIT_TRAIL_ARM_KRW) | | `RANGE_BREAK_DAILY_PROFIT_TRAIL_ARM_PCT` | `text` | NULL | NULL | 박스권돌파: 일일익절 트레일무장 % (RANGE_BREAK_DAILY_PROFIT_TRAIL_ARM_PCT) | | `RANGE_BREAK_BACKTEST_USE_TICK_EXIT` | `text` | NULL | NULL | 박스돌파 틱 청산 · ON=ws_ticks 시간순 청산 · OFF=OHLC intrabar | | `RANGE_BREAK_BACKTEST_TICK_FALLBACK_OHLC` | `text` | NULL | NULL | ⚠ 박스돌파 OHLC 폴백 (정합위험·금지) · 절대금지 — 틱 청산 ON 시 엔진 무시 | | `RANGE_BREAK_BACKTEST_POLL_MS` | `text` | NULL | NULL | 박스돌파 틱청산 폴링(ms) · 실매 폴링 정합 · 하한 50ms | | `RANGE_BREAK_BACKTEST_SELL_SLIP_PCT` | `text` | NULL | NULL | 박스권돌파: BACKTEST SELL SLIP % (RANGE_BREAK_BACKTEST_SELL_SLIP_PCT) | | `RANGE_BREAK_DAILY_PROFIT_RISK_BUDGET_ENABLED` | `text` | NULL | NULL | 박스권돌파: 일일익절 RISK 한도 ON/OFF (RANGE_BREAK_DAILY_PROFIT_RISK_BUDGET_ENABLED) | | `RANGE_BREAK_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` | `text` | NULL | NULL | 박스권돌파: 일일익절 RISK 한도 쿨다운 초 (RANGE_BREAK_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC) | | `RANGE_BREAK_TICK_SELL_ENABLED` | `text` | NULL | NULL | 박스권돌파: 틱매도 ON/OFF (RANGE_BREAK_TICK_SELL_ENABLED) |
DDL 원문 ```sql CREATE TABLE `config_range_break` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` varchar(30) NOT NULL, `STRATEGY_RANGE_BREAK_ENABLED` text DEFAULT NULL, `RANGE_BREAK_LIVE_BACKTEST_ALIGN` text DEFAULT NULL, `RANGE_BREAK_LIVE_SIGNAL_LOOKBACK_BARS` text DEFAULT NULL, `RANGE_BREAK_UNIVERSE_SOURCE` text DEFAULT NULL, `RANK_RANGE_BREAK_SORT` text DEFAULT NULL, `RANK_RANGE_BREAK_LIMIT` text DEFAULT NULL, `CONDITION_RANGE_BREAK_NAME` text DEFAULT NULL, `CONDITION_RANGE_BREAK_SEQ` text DEFAULT NULL, `RANGE_BREAK_CAND_LIMIT` text DEFAULT NULL, `RANGE_BREAK_BOX_LOOKBACK_MIN` text DEFAULT NULL, `RANGE_BREAK_BOX_MAX_WIDTH_PCT` text DEFAULT NULL, `RANGE_BREAK_BOX_MIN_WIDTH_PCT` text DEFAULT NULL, `RANGE_BREAK_SETUP_VOL_MAX_MULT` text DEFAULT NULL, `RANGE_BREAK_SETUP_BEAR_BARS_MIN` text DEFAULT NULL, `RANGE_BREAK_VOL_MULT` text DEFAULT NULL, `RANGE_BREAK_VOL_WIN` text DEFAULT NULL, `RANGE_BREAK_VOL_BASELINE_WIN` text DEFAULT NULL, `RANGE_BREAK_BREAK_MARGIN_PCT` text DEFAULT NULL, `RANGE_BREAK_BODY_MIN_PCT` text DEFAULT NULL, `RANGE_BREAK_TIME_START` text DEFAULT NULL, `RANGE_BREAK_TIME_END_HM` text DEFAULT NULL, `RANGE_BREAK_STOP_LOSS_PCT` text DEFAULT NULL, `RANGE_BREAK_TAKE_PROFIT_PCT` text DEFAULT NULL, `RANGE_BREAK_TRAIL_PCT` text DEFAULT NULL, `RANGE_BREAK_TRAIL_ARM_PCT` text DEFAULT NULL, `RANGE_BREAK_SHOULDER_MIN_HIGH_PCT` text DEFAULT NULL, `RANGE_BREAK_SHOULDER_CUT_PCT` text DEFAULT NULL, `RANGE_BREAK_MAX_HOLD_BARS` text DEFAULT NULL, `RANGE_BREAK_MAX_DAILY` text DEFAULT NULL, `RANGE_BREAK_COOLDOWN_SEC` text DEFAULT NULL, `RANGE_BREAK_MAX_DAILY_CHG` text DEFAULT NULL, `RANGE_BREAK_MIN_PRICE` text DEFAULT NULL, `RANGE_BREAK_HIGH_CHASE_THR` text DEFAULT NULL, `RANGE_BREAK_USE_HIGH_CHASE_FILTER` text DEFAULT NULL, `RANGE_BREAK_MAX_LOSS_PER_TRADE_KRW` text DEFAULT NULL, `RANGE_BREAK_SLOT_MONEY` text DEFAULT NULL, `RANGE_BREAK_MAX_BUY_AMOUNT` text DEFAULT NULL, `RANGE_BREAK_MIN_INVEST_RATIO_OF_SLOT` text DEFAULT NULL, `RANGE_BREAK_FORCE_EOD_EXIT` text DEFAULT NULL, `KIS_RANGE_BREAK_MM_CHANNEL` text DEFAULT NULL, `RANGE_BREAK_MAX_STOCKS` text DEFAULT NULL, `RANGE_BREAK_TOTAL_BUDGET_KRW` text DEFAULT NULL, `RANGE_BREAK_DAILY_PROFIT_TARGET_ENABLED` text DEFAULT NULL, `RANGE_BREAK_DAILY_PROFIT_TARGET_KRW` text DEFAULT NULL, `RANGE_BREAK_DAILY_PROFIT_TARGET_PCT` text DEFAULT NULL, `RANGE_BREAK_DAILY_PROFIT_HALT_NEW_BUYS` text DEFAULT NULL, `RANGE_BREAK_DAILY_PROFIT_MODE` text DEFAULT NULL, `RANGE_BREAK_DAILY_PROFIT_TRAIL_TIERS` text DEFAULT NULL, `RANGE_BREAK_DAILY_PROFIT_TRAIL_DROP_PCT` text DEFAULT NULL, `RANGE_BREAK_DAILY_PROFIT_TRAIL_ARM_KRW` text DEFAULT NULL, `RANGE_BREAK_DAILY_PROFIT_TRAIL_ARM_PCT` text DEFAULT NULL, `RANGE_BREAK_BACKTEST_USE_TICK_EXIT` text DEFAULT NULL, `RANGE_BREAK_BACKTEST_TICK_FALLBACK_OHLC` text DEFAULT NULL, `RANGE_BREAK_BACKTEST_POLL_MS` text DEFAULT NULL, `RANGE_BREAK_BACKTEST_SELL_SLIP_PCT` text DEFAULT NULL, `RANGE_BREAK_DAILY_PROFIT_RISK_BUDGET_ENABLED` text DEFAULT NULL, `RANGE_BREAK_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` text DEFAULT NULL, `RANGE_BREAK_TICK_SELL_ENABLED` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=307 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `config_dbband` **PK**: `id` | AUTO_INCREMENT=319 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `created_at` | `varchar(30)` | NOT NULL | | 설정행 생성시각 | | `DBBAND_BB_PERIOD` | `text` | NULL | NULL | 더블BB: BB 기간 (DBBAND_BB_PERIOD) | | `DBBAND_BB_INNER_STD` | `text` | NULL | NULL | 더블BB: BB INNER STD (DBBAND_BB_INNER_STD) | | `DBBAND_BB_OUTER_STD` | `text` | NULL | NULL | 더블BB: BB OUTER STD (DBBAND_BB_OUTER_STD) | | `DBBAND_TREND_MA_PERIOD` | `text` | NULL | NULL | 더블BB: TREND MA 기간 (DBBAND_TREND_MA_PERIOD) | | `DBBAND_USE_TREND_FILTER` | `text` | NULL | NULL | 더블BB: 사용_ TREND 필터 (DBBAND_USE_TREND_FILTER) | | `DBBAND_SIDE_MODE` | `text` | NULL | NULL | 더블BB: SIDE 모드 (DBBAND_SIDE_MODE) | | `DBBAND_ENTRY_VALID_BARS` | `text` | NULL | NULL | 더블BB: ENTRY VALID 봉수 (DBBAND_ENTRY_VALID_BARS) | | `DBBAND_ENTRY_MODE` | `text` | NULL | NULL | 더블BB: ENTRY 모드 (DBBAND_ENTRY_MODE) | | `DBBAND_STOP_MODE` | `text` | NULL | NULL | 더블BB: STOP 모드 (DBBAND_STOP_MODE) | | `DBBAND_STOP_BUFFER_PCT` | `text` | NULL | NULL | 더블BB: STOP BUFFER % (DBBAND_STOP_BUFFER_PCT) | | `DBBAND_STOP_LOSS_PCT` | `text` | NULL | NULL | 더블BB: 손절 % (DBBAND_STOP_LOSS_PCT) | | `DBBAND_TP_MODE` | `text` | NULL | NULL | 더블BB: TP 모드 (DBBAND_TP_MODE) | | `DBBAND_TAKE_PROFIT_PCT` | `text` | NULL | NULL | 더블BB: 익절 % (DBBAND_TAKE_PROFIT_PCT) | | `DBBAND_RR_RATIO` | `text` | NULL | NULL | 더블BB: RR RATIO (DBBAND_RR_RATIO) | | `DBBAND_SHOULDER_MIN_HIGH_PCT` | `text` | NULL | NULL | 더블BB: 어깨무장고점 % (DBBAND_SHOULDER_MIN_HIGH_PCT) | | `DBBAND_SHOULDER_CUT_PCT` | `text` | NULL | NULL | 더블BB: 어깨컷 % (DBBAND_SHOULDER_CUT_PCT) | | `DBBAND_TRAIL_PCT` | `text` | NULL | NULL | 더블BB: 트레일 % (DBBAND_TRAIL_PCT) | | `DBBAND_TRAIL_ARM_PCT` | `text` | NULL | NULL | 더블BB: 트레일무장 % (DBBAND_TRAIL_ARM_PCT) | | `DBBAND_TIME_START` | `text` | NULL | NULL | 더블BB: 매수시작 (DBBAND_TIME_START) | | `DBBAND_TIME_END` | `text` | NULL | NULL | 더블BB: 매수종료 (DBBAND_TIME_END) | | `DBBAND_COOLDOWN_SEC` | `text` | NULL | NULL | 더블BB: 쿨다운 초 (DBBAND_COOLDOWN_SEC) | | `DBBAND_MAX_DAILY` | `text` | NULL | NULL | 더블BB: 일일매수횟수상한 (DBBAND_MAX_DAILY) | | `DBBAND_MIN_PRICE` | `text` | NULL | NULL | 더블BB: 최소가격 (DBBAND_MIN_PRICE) | | `DBBAND_SLOT_MONEY` | `text` | NULL | NULL | 더블BB: 슬롯금액 (DBBAND_SLOT_MONEY) | | `DBBAND_MAX_STOCKS` | `text` | NULL | NULL | 더블BB: 동시보유상한 (DBBAND_MAX_STOCKS) | | `DBBAND_TOTAL_BUDGET_KRW` | `text` | NULL | NULL | 더블BB: 총운용한도 원 (DBBAND_TOTAL_BUDGET_KRW) | | `DBBAND_MAX_BUY_AMOUNT` | `text` | NULL | NULL | 더블BB: 1회최대매수금액 (DBBAND_MAX_BUY_AMOUNT) | | `DBBAND_MAX_HOLD_BARS` | `text` | NULL | NULL | 더블BB: 최대보유봉 (DBBAND_MAX_HOLD_BARS) | | `DBBAND_TIMEFRAME` | `text` | NULL | NULL | 더블BB: TIMEFRAME (DBBAND_TIMEFRAME) | | `DBBAND_MIN_INVEST_RATIO_OF_SLOT` | `text` | NULL | NULL | 더블BB: 최소 INVEST RATIO OF SLOT (DBBAND_MIN_INVEST_RATIO_OF_SLOT) | | `DBBAND_FORCE_EOD_EXIT` | `text` | NULL | NULL | 더블BB: FORCE 장마감 EXIT (DBBAND_FORCE_EOD_EXIT) | | `DBBAND_LIVE_MIN_CANDLES` | `text` | NULL | NULL | 더블BB: 실매최소봉수 (DBBAND_LIVE_MIN_CANDLES) | | `DBBAND_LIVE_SIGNAL_LOOKBACK_BARS` | `text` | NULL | NULL | 더블BB: LIVE SIGNAL LOOKBACK 봉수 (DBBAND_LIVE_SIGNAL_LOOKBACK_BARS) | | `DBBAND_UNIVERSE_SOURCE` | `text` | NULL | NULL | 더블BB: 유니버스소스 (DBBAND_UNIVERSE_SOURCE) | | `DBBAND_CANDLE_FETCH_N` | `text` | NULL | NULL | 더블BB: CANDLE FETCH N (DBBAND_CANDLE_FETCH_N) | | `STRATEGY_DBBAND_ENABLED` | `text` | NULL | NULL | 더블BB ON/OFF. 다음루프 신규매수중단(보유청산유지). WS구독해제 안함 | | `KIS_DBBAND_MM_CHANNEL` | `text` | NULL | NULL | 더블BB: KIS DBBAND MM CHANNEL (KIS_DBBAND_MM_CHANNEL) | | `RANK_DBBAND_SORT` | `text` | NULL | NULL | 더블BB: RANK DBBAND SORT (RANK_DBBAND_SORT) | | `RANK_DBBAND_LIMIT` | `text` | NULL | NULL | 더블BB: RANK DBBAND LIMIT (RANK_DBBAND_LIMIT) | | `CONDITION_DBBAND_NAME` | `text` | NULL | NULL | 더블BB: CONDITION DBBAND NAME (CONDITION_DBBAND_NAME) | | `CONDITION_DBBAND_SEQ` | `text` | NULL | NULL | 더블BB: CONDITION DBBAND SEQ (CONDITION_DBBAND_SEQ) | | `DBBAND_GRID_BB_PERIOD0` | `text` | NULL | NULL | 더블BB: GRID BB 기간 0 (DBBAND_GRID_BB_PERIOD0) | | `DBBAND_GRID_BB_PERIOD1` | `text` | NULL | NULL | 더블BB: GRID BB 기간 1 (DBBAND_GRID_BB_PERIOD1) | | `DBBAND_GRID_INNER_STD0` | `text` | NULL | NULL | 더블BB: GRID INNER STD0 (DBBAND_GRID_INNER_STD0) | | `DBBAND_GRID_INNER_STD1` | `text` | NULL | NULL | 더블BB: GRID INNER STD1 (DBBAND_GRID_INNER_STD1) | | `DBBAND_GRID_OUTER_STD0` | `text` | NULL | NULL | 더블BB: GRID OUTER STD0 (DBBAND_GRID_OUTER_STD0) | | `DBBAND_GRID_OUTER_STD1` | `text` | NULL | NULL | 더블BB: GRID OUTER STD1 (DBBAND_GRID_OUTER_STD1) | | `DBBAND_GRID_TREND_MA0` | `text` | NULL | NULL | 더블BB: GRID TREND MA0 (DBBAND_GRID_TREND_MA0) | | `DBBAND_GRID_TREND_MA1` | `text` | NULL | NULL | 더블BB: GRID TREND MA1 (DBBAND_GRID_TREND_MA1) | | `DBBAND_GRID_SL0` | `text` | NULL | NULL | 더블BB: GRID SL0 (DBBAND_GRID_SL0) | | `DBBAND_GRID_SL1` | `text` | NULL | NULL | 더블BB: GRID SL1 (DBBAND_GRID_SL1) | | `DBBAND_GRID_TP0` | `text` | NULL | NULL | 더블BB: GRID TP0 (DBBAND_GRID_TP0) | | `DBBAND_GRID_TP1` | `text` | NULL | NULL | 더블BB: GRID TP1 (DBBAND_GRID_TP1) | | `DBBAND_GRID_RR0` | `text` | NULL | NULL | 더블BB: GRID RR0 (DBBAND_GRID_RR0) | | `DBBAND_GRID_RR1` | `text` | NULL | NULL | 더블BB: GRID RR1 (DBBAND_GRID_RR1) | | `DBBAND_EXIT_MODE` | `text` | NULL | NULL | 더블BB: EXIT 모드 (DBBAND_EXIT_MODE) | | `DBBAND_DAILY_PROFIT_TARGET_ENABLED` | `text` | NULL | NULL | 더블BB: 일일익절 목표 ON/OFF (DBBAND_DAILY_PROFIT_TARGET_ENABLED) | | `DBBAND_DAILY_PROFIT_TARGET_KRW` | `text` | NULL | NULL | 더블BB: 일일익절 목표 원 (DBBAND_DAILY_PROFIT_TARGET_KRW) | | `DBBAND_DAILY_PROFIT_TARGET_PCT` | `text` | NULL | NULL | 더블BB: 일일익절 목표 % (DBBAND_DAILY_PROFIT_TARGET_PCT) | | `DBBAND_DAILY_PROFIT_HALT_NEW_BUYS` | `text` | NULL | NULL | 더블BB: 일일익절 중단 NEW BUYS (DBBAND_DAILY_PROFIT_HALT_NEW_BUYS) | | `DBBAND_DAILY_PROFIT_MODE` | `text` | NULL | NULL | 더블BB: 일일익절 모드 (DBBAND_DAILY_PROFIT_MODE) | | `DBBAND_DAILY_PROFIT_TRAIL_TIERS` | `text` | NULL | NULL | 더블BB: 일일익절 트레일 다단 (DBBAND_DAILY_PROFIT_TRAIL_TIERS) | | `DBBAND_DAILY_PROFIT_TRAIL_DROP_PCT` | `text` | NULL | NULL | 더블BB: 일일익절 트레일 되돌림/하락 % (DBBAND_DAILY_PROFIT_TRAIL_DROP_PCT) | | `DBBAND_DAILY_PROFIT_TRAIL_ARM_KRW` | `text` | NULL | NULL | 더블BB: 일일익절 트레일무장 원 (DBBAND_DAILY_PROFIT_TRAIL_ARM_KRW) | | `DBBAND_DAILY_PROFIT_TRAIL_ARM_PCT` | `text` | NULL | NULL | 더블BB: 일일익절 트레일무장 % (DBBAND_DAILY_PROFIT_TRAIL_ARM_PCT) | | `DBBAND_BACKTEST_USE_TICK_EXIT` | `text` | NULL | NULL | 더블BB 틱 청산 · ON=ws_ticks 시간순 청산 · OFF=봉 OHLC 1회 | | `DBBAND_BACKTEST_TICK_FALLBACK_OHLC` | `text` | NULL | NULL | ⚠ 더블BB OHLC 폴백 (정합위험·금지) · 절대금지 — 틱 청산 ON 시 엔진 무시 | | `DBBAND_BACKTEST_POLL_MS` | `text` | NULL | NULL | 더블BB 틱청산 폴링(ms) · 실매 폴링 정합 · 하한 50ms | | `DBBAND_BACKTEST_SELL_SLIP_PCT` | `text` | NULL | NULL | 더블BB: BACKTEST SELL SLIP % (DBBAND_BACKTEST_SELL_SLIP_PCT) | | `DBBAND_DAILY_PROFIT_RISK_BUDGET_ENABLED` | `text` | NULL | NULL | 더블BB: 일일익절 RISK 한도 ON/OFF (DBBAND_DAILY_PROFIT_RISK_BUDGET_ENABLED) | | `DBBAND_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` | `text` | NULL | NULL | 더블BB: 일일익절 RISK 한도 쿨다운 초 (DBBAND_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC) | | `DBBAND_TICK_SELL_ENABLED` | `text` | NULL | NULL | 더블BB: 틱매도 ON/OFF (DBBAND_TICK_SELL_ENABLED) |
DDL 원문 ```sql CREATE TABLE `config_dbband` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` varchar(30) NOT NULL, `DBBAND_BB_PERIOD` text DEFAULT NULL, `DBBAND_BB_INNER_STD` text DEFAULT NULL, `DBBAND_BB_OUTER_STD` text DEFAULT NULL, `DBBAND_TREND_MA_PERIOD` text DEFAULT NULL, `DBBAND_USE_TREND_FILTER` text DEFAULT NULL, `DBBAND_SIDE_MODE` text DEFAULT NULL, `DBBAND_ENTRY_VALID_BARS` text DEFAULT NULL, `DBBAND_ENTRY_MODE` text DEFAULT NULL, `DBBAND_STOP_MODE` text DEFAULT NULL, `DBBAND_STOP_BUFFER_PCT` text DEFAULT NULL, `DBBAND_STOP_LOSS_PCT` text DEFAULT NULL, `DBBAND_TP_MODE` text DEFAULT NULL, `DBBAND_TAKE_PROFIT_PCT` text DEFAULT NULL, `DBBAND_RR_RATIO` text DEFAULT NULL, `DBBAND_SHOULDER_MIN_HIGH_PCT` text DEFAULT NULL, `DBBAND_SHOULDER_CUT_PCT` text DEFAULT NULL, `DBBAND_TRAIL_PCT` text DEFAULT NULL, `DBBAND_TRAIL_ARM_PCT` text DEFAULT NULL, `DBBAND_TIME_START` text DEFAULT NULL, `DBBAND_TIME_END` text DEFAULT NULL, `DBBAND_COOLDOWN_SEC` text DEFAULT NULL, `DBBAND_MAX_DAILY` text DEFAULT NULL, `DBBAND_MIN_PRICE` text DEFAULT NULL, `DBBAND_SLOT_MONEY` text DEFAULT NULL, `DBBAND_MAX_STOCKS` text DEFAULT NULL, `DBBAND_TOTAL_BUDGET_KRW` text DEFAULT NULL, `DBBAND_MAX_BUY_AMOUNT` text DEFAULT NULL, `DBBAND_MAX_HOLD_BARS` text DEFAULT NULL, `DBBAND_TIMEFRAME` text DEFAULT NULL, `DBBAND_MIN_INVEST_RATIO_OF_SLOT` text DEFAULT NULL, `DBBAND_FORCE_EOD_EXIT` text DEFAULT NULL, `DBBAND_LIVE_MIN_CANDLES` text DEFAULT NULL, `DBBAND_LIVE_SIGNAL_LOOKBACK_BARS` text DEFAULT NULL, `DBBAND_UNIVERSE_SOURCE` text DEFAULT NULL, `DBBAND_CANDLE_FETCH_N` text DEFAULT NULL, `STRATEGY_DBBAND_ENABLED` text DEFAULT NULL, `KIS_DBBAND_MM_CHANNEL` text DEFAULT NULL, `RANK_DBBAND_SORT` text DEFAULT NULL, `RANK_DBBAND_LIMIT` text DEFAULT NULL, `CONDITION_DBBAND_NAME` text DEFAULT NULL, `CONDITION_DBBAND_SEQ` text DEFAULT NULL, `DBBAND_GRID_BB_PERIOD0` text DEFAULT NULL, `DBBAND_GRID_BB_PERIOD1` text DEFAULT NULL, `DBBAND_GRID_INNER_STD0` text DEFAULT NULL, `DBBAND_GRID_INNER_STD1` text DEFAULT NULL, `DBBAND_GRID_OUTER_STD0` text DEFAULT NULL, `DBBAND_GRID_OUTER_STD1` text DEFAULT NULL, `DBBAND_GRID_TREND_MA0` text DEFAULT NULL, `DBBAND_GRID_TREND_MA1` text DEFAULT NULL, `DBBAND_GRID_SL0` text DEFAULT NULL, `DBBAND_GRID_SL1` text DEFAULT NULL, `DBBAND_GRID_TP0` text DEFAULT NULL, `DBBAND_GRID_TP1` text DEFAULT NULL, `DBBAND_GRID_RR0` text DEFAULT NULL, `DBBAND_GRID_RR1` text DEFAULT NULL, `DBBAND_EXIT_MODE` text DEFAULT NULL, `DBBAND_DAILY_PROFIT_TARGET_ENABLED` text DEFAULT NULL, `DBBAND_DAILY_PROFIT_TARGET_KRW` text DEFAULT NULL, `DBBAND_DAILY_PROFIT_TARGET_PCT` text DEFAULT NULL, `DBBAND_DAILY_PROFIT_HALT_NEW_BUYS` text DEFAULT NULL, `DBBAND_DAILY_PROFIT_MODE` text DEFAULT NULL, `DBBAND_DAILY_PROFIT_TRAIL_TIERS` text DEFAULT NULL, `DBBAND_DAILY_PROFIT_TRAIL_DROP_PCT` text DEFAULT NULL, `DBBAND_DAILY_PROFIT_TRAIL_ARM_KRW` text DEFAULT NULL, `DBBAND_DAILY_PROFIT_TRAIL_ARM_PCT` text DEFAULT NULL, `DBBAND_BACKTEST_USE_TICK_EXIT` text DEFAULT NULL, `DBBAND_BACKTEST_TICK_FALLBACK_OHLC` text DEFAULT NULL, `DBBAND_BACKTEST_POLL_MS` text DEFAULT NULL, `DBBAND_BACKTEST_SELL_SLIP_PCT` text DEFAULT NULL, `DBBAND_DAILY_PROFIT_RISK_BUDGET_ENABLED` text DEFAULT NULL, `DBBAND_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` text DEFAULT NULL, `DBBAND_TICK_SELL_ENABLED` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=319 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `config_dart` **PK**: `id` | AUTO_INCREMENT=114 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `created_at` | `varchar(30)` | NOT NULL | | 설정행 생성시각 | | `STRATEGY_DART_ENABLED` | `text` | NULL | NULL | DART수주 ON/OFF. 다음루프 신규매수중단(보유청산유지). WS구독해제 안함 | | `KIS_DART_MM_CHANNEL` | `text` | NULL | NULL | KIS DART MM CHANNEL (KIS_DART_MM_CHANNEL) | | `DART_SCAN_ENABLED` | `text` | NULL | NULL | DART: SCAN ON/OFF (DART_SCAN_ENABLED) | | `DART_ENABLED` | `text` | NULL | NULL | DART: ON/OFF (DART_ENABLED) | | `DART_POLL_SEC` | `text` | NULL | NULL | DART: POLL 초 (DART_POLL_SEC) | | `DART_LOOKBACK_DAYS` | `text` | NULL | NULL | DART: LOOKBACK DAYS (DART_LOOKBACK_DAYS) | | `DART_MM_CHANNEL` | `text` | NULL | NULL | DART: MM CHANNEL (DART_MM_CHANNEL) | | `DART_SAVE_CANDIDATES` | `text` | NULL | NULL | DART: SAVE CANDIDATES (DART_SAVE_CANDIDATES) | | `DART_REPORT_NAME_KEYWORDS` | `text` | NULL | NULL | DART: REPORT NAME KEYWORDS (DART_REPORT_NAME_KEYWORDS) | | `DART_SKIP_CORRECTION` | `text` | NULL | NULL | DART: SKIP CORRECTION (DART_SKIP_CORRECTION) | | `DART_LISTED_ONLY` | `text` | NULL | NULL | DART: LISTED ONLY (DART_LISTED_ONLY) | | `DART_LIST_MAX_PAGES` | `text` | NULL | NULL | DART: LIST 최대 PAGES (DART_LIST_MAX_PAGES) | | `DART_SUBSCRIBE_ENABLED` | `text` | NULL | NULL | DART: SUBSCRIBE ON/OFF (DART_SUBSCRIBE_ENABLED) | | `DART_WATCH_TTL_HOURS` | `text` | NULL | NULL | DART: WATCH TTL HOURS (DART_WATCH_TTL_HOURS) | | `DART_WATCH_MAX` | `text` | NULL | NULL | DART: WATCH 최대 (DART_WATCH_MAX) | | `DART_TRADE_ENABLED` | `text` | NULL | NULL | DART: TRADE ON/OFF (DART_TRADE_ENABLED) | | `DART_SLOT_MONEY` | `text` | NULL | NULL | DART: 슬롯금액 (DART_SLOT_MONEY) | | `DART_MAX_STOCKS` | `text` | NULL | NULL | DART: 동시보유상한 (DART_MAX_STOCKS) | | `DART_TOTAL_BUDGET_KRW` | `text` | NULL | NULL | DART: 총운용한도 원 (DART_TOTAL_BUDGET_KRW) | | `DART_MAX_BUY_AMOUNT` | `text` | NULL | NULL | DART: 1회최대매수금액 (DART_MAX_BUY_AMOUNT) | | `DART_MIN_INVEST_RATIO_OF_SLOT` | `text` | NULL | NULL | DART: 최소 INVEST RATIO OF SLOT (DART_MIN_INVEST_RATIO_OF_SLOT) | | `DART_CAND_LIMIT` | `text` | NULL | NULL | DART: 후보상한 (DART_CAND_LIMIT) | | `DART_TIME_START` | `text` | NULL | NULL | DART: 매수시작 (DART_TIME_START) | | `DART_TIME_END` | `text` | NULL | NULL | DART: 매수종료 (DART_TIME_END) | | `DART_RSI_PERIOD` | `text` | NULL | NULL | DART: RSI 기간 (DART_RSI_PERIOD) | | `DART_RSI_OVERSOLD` | `text` | NULL | NULL | DART: RSI과매도 (DART_RSI_OVERSOLD) | | `DART_RSI_RECLAIM` | `text` | NULL | NULL | DART: RSI RECLAIM (DART_RSI_RECLAIM) | | `DART_STOP_LOSS_PCT` | `text` | NULL | NULL | DART: 손절 % (DART_STOP_LOSS_PCT) | | `DART_TAKE_PROFIT_PCT` | `text` | NULL | NULL | DART: 익절 % (DART_TAKE_PROFIT_PCT) | | `DART_TRAIL_PCT` | `text` | NULL | NULL | DART: 트레일 % (DART_TRAIL_PCT) | | `DART_TRAIL_ARM_PCT` | `text` | NULL | NULL | DART: 트레일무장 % (DART_TRAIL_ARM_PCT) | | `DART_MAX_HOLD_BARS` | `text` | NULL | NULL | DART: 최대보유봉 (DART_MAX_HOLD_BARS) | | `DART_EVENT_WINDOW_BARS` | `text` | NULL | NULL | DART: EVENT 윈도우 봉수 (DART_EVENT_WINDOW_BARS) | | `DART_MIN_PRICE` | `text` | NULL | NULL | DART: 최소가격 (DART_MIN_PRICE) | | `DART_VOL_MULT` | `text` | NULL | NULL | DART: 거래량배수 (DART_VOL_MULT) | | `DART_VOL_WINDOW` | `text` | NULL | NULL | DART: 거래량윈도우 DOW (DART_VOL_WINDOW) | | `DART_MAX_LOSS_PER_TRADE_KRW` | `text` | NULL | NULL | DART: 최대 LOSS PER TRADE 원 (DART_MAX_LOSS_PER_TRADE_KRW) | | `DART_FORCE_EOD_EXIT` | `text` | NULL | NULL | DART: FORCE 장마감 EXIT (DART_FORCE_EOD_EXIT) | | `DART_BACKTEST_USE_TICK_EXIT` | `text` | NULL | NULL | DART: BACKTEST 사용_ TICK EXIT (DART_BACKTEST_USE_TICK_EXIT) | | `DART_BACKTEST_TICK_FALLBACK_OHLC` | `text` | NULL | NULL | DART: BACKTEST 틱없을때OHLC폴백(위험) (DART_BACKTEST_TICK_FALLBACK_OHLC) | | `DART_QUALITY_FILTER_ENABLED` | `text` | NULL | NULL | DART: QUALITY 필터 ON/OFF (DART_QUALITY_FILTER_ENABLED) | | `DART_EXCLUDE_CORP_KEYWORDS` | `text` | NULL | NULL | DART: EXCLUDE CORP KEYWORDS (DART_EXCLUDE_CORP_KEYWORDS) | | `DART_EXCLUDE_CONTENT_KEYWORDS` | `text` | NULL | NULL | DART: EXCLUDE CONTENT KEYWORDS (DART_EXCLUDE_CONTENT_KEYWORDS) | | `DART_MIN_SALES_PCT` | `text` | NULL | NULL | DART: 최소 SALES % (DART_MIN_SALES_PCT) | | `DART_SKIP_IF_SALES_PCT_UNKNOWN` | `text` | NULL | NULL | DART: SKIP IF SALES % UNKNOWN (DART_SKIP_IF_SALES_PCT_UNKNOWN) | | `DART_THEME_KEYWORDS` | `text` | NULL | NULL | DART: THEME KEYWORDS (DART_THEME_KEYWORDS) | | `DART_REQUIRE_THEME` | `text` | NULL | NULL | DART: REQUIRE THEME (DART_REQUIRE_THEME) | | `DART_FETCH_DOCUMENT` | `text` | NULL | NULL | DART: FETCH DOCUMENT (DART_FETCH_DOCUMENT) |
DDL 원문 ```sql CREATE TABLE `config_dart` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` varchar(30) NOT NULL, `STRATEGY_DART_ENABLED` text DEFAULT NULL, `KIS_DART_MM_CHANNEL` text DEFAULT NULL, `DART_SCAN_ENABLED` text DEFAULT NULL, `DART_ENABLED` text DEFAULT NULL, `DART_POLL_SEC` text DEFAULT NULL, `DART_LOOKBACK_DAYS` text DEFAULT NULL, `DART_MM_CHANNEL` text DEFAULT NULL, `DART_SAVE_CANDIDATES` text DEFAULT NULL, `DART_REPORT_NAME_KEYWORDS` text DEFAULT NULL, `DART_SKIP_CORRECTION` text DEFAULT NULL, `DART_LISTED_ONLY` text DEFAULT NULL, `DART_LIST_MAX_PAGES` text DEFAULT NULL, `DART_SUBSCRIBE_ENABLED` text DEFAULT NULL, `DART_WATCH_TTL_HOURS` text DEFAULT NULL, `DART_WATCH_MAX` text DEFAULT NULL, `DART_TRADE_ENABLED` text DEFAULT NULL, `DART_SLOT_MONEY` text DEFAULT NULL, `DART_MAX_STOCKS` text DEFAULT NULL, `DART_TOTAL_BUDGET_KRW` text DEFAULT NULL, `DART_MAX_BUY_AMOUNT` text DEFAULT NULL, `DART_MIN_INVEST_RATIO_OF_SLOT` text DEFAULT NULL, `DART_CAND_LIMIT` text DEFAULT NULL, `DART_TIME_START` text DEFAULT NULL, `DART_TIME_END` text DEFAULT NULL, `DART_RSI_PERIOD` text DEFAULT NULL, `DART_RSI_OVERSOLD` text DEFAULT NULL, `DART_RSI_RECLAIM` text DEFAULT NULL, `DART_STOP_LOSS_PCT` text DEFAULT NULL, `DART_TAKE_PROFIT_PCT` text DEFAULT NULL, `DART_TRAIL_PCT` text DEFAULT NULL, `DART_TRAIL_ARM_PCT` text DEFAULT NULL, `DART_MAX_HOLD_BARS` text DEFAULT NULL, `DART_EVENT_WINDOW_BARS` text DEFAULT NULL, `DART_MIN_PRICE` text DEFAULT NULL, `DART_VOL_MULT` text DEFAULT NULL, `DART_VOL_WINDOW` text DEFAULT NULL, `DART_MAX_LOSS_PER_TRADE_KRW` text DEFAULT NULL, `DART_FORCE_EOD_EXIT` text DEFAULT NULL, `DART_BACKTEST_USE_TICK_EXIT` text DEFAULT NULL, `DART_BACKTEST_TICK_FALLBACK_OHLC` text DEFAULT NULL, `DART_QUALITY_FILTER_ENABLED` text DEFAULT NULL, `DART_EXCLUDE_CORP_KEYWORDS` text DEFAULT NULL, `DART_EXCLUDE_CONTENT_KEYWORDS` text DEFAULT NULL, `DART_MIN_SALES_PCT` text DEFAULT NULL, `DART_SKIP_IF_SALES_PCT_UNKNOWN` text DEFAULT NULL, `DART_THEME_KEYWORDS` text DEFAULT NULL, `DART_REQUIRE_THEME` text DEFAULT NULL, `DART_FETCH_DOCUMENT` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=114 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `config_updow` **PK**: `id` | AUTO_INCREMENT=388 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `created_at` | `varchar(30)` | NOT NULL | | 설정행 생성시각 | | `UPDOW_UNIVERSE_SOURCE` | `text` | NULL | NULL | UPDOWN 박스 유니버스 · ls_condition=LS 동명 AFR · 시세는 키움/한투 유지 · 매니저 최초 기동은 봇 재시작 필요할 수 있음 · 키움으로 자동 폴백 안 함 | | `RANK_UPDOW_SORT` | `text` | NULL | NULL | UPDOWN: RANK UPDOW SORT (RANK_UPDOW_SORT) | | `RANK_UPDOW_LIMIT` | `text` | NULL | NULL | UPDOWN: RANK UPDOW LIMIT (RANK_UPDOW_LIMIT) | | `CONDITION_UPDOW_NAME` | `text` | NULL | NULL | UPDOWN: CONDITION UPDOW NAME (CONDITION_UPDOW_NAME) | | `CONDITION_UPDOW_SEQ` | `text` | NULL | NULL | UPDOWN: CONDITION UPDOW SEQ (CONDITION_UPDOW_SEQ) | | `UPDOW_CAND_LIMIT` | `text` | NULL | NULL | UPDOWN 박스 후보 상한 · 0=무제한 · 조건검색/랭킹이 N개 줘도 상위 N개만 매수체크·WS구독 · 전 전략 합산이 키움 WS 100종 한도를 넘지 않게 조절 | | `UPDOW_TIME_START` | `text` | NULL | NULL | UPDOWN: 매수시작 (UPDOW_TIME_START) | | `UPDOW_TIME_END` | `text` | NULL | NULL | UPDOWN: 매수종료 (UPDOW_TIME_END) | | `UPDOW_REENTRY_COOLDOWN_SEC` | `text` | NULL | NULL | UPDOWN: REENTRY 쿨다운 초 (UPDOW_REENTRY_COOLDOWN_SEC) | | `UPDOW_MIN_CANDLE_LEN` | `text` | NULL | NULL | UPDOWN: 최소 CANDLE LEN (UPDOW_MIN_CANDLE_LEN) | | `MIN_CANDLE_LEN_UPDOW` | `text` | NULL | NULL | UPDOWN: 최소 CANDLE LEN UPDOW (MIN_CANDLE_LEN_UPDOW) | | `UPDOW_CANDLE_FETCH_N` | `text` | NULL | NULL | UPDOWN: CANDLE FETCH N (UPDOW_CANDLE_FETCH_N) | | `UPDOW_LIVE_MIN_CANDLES` | `text` | NULL | NULL | UPDOWN: 실매최소봉수 (UPDOW_LIVE_MIN_CANDLES) | | `UPDOW_MAX_LOSS_PER_TRADE_KRW` | `text` | NULL | NULL | UPDOWN: 최대 LOSS PER TRADE 원 (UPDOW_MAX_LOSS_PER_TRADE_KRW) | | `UPDOW_MAX_BUY_AMOUNT` | `text` | NULL | NULL | UPDOWN: 1회최대매수금액 (UPDOW_MAX_BUY_AMOUNT) | | `UPDOW_MAX_STOCKS` | `text` | NULL | NULL | UPDOWN 박스 동시 종목 | | `UPDOW_BODY_DROP_MIN_PCT` | `text` | NULL | NULL | UPDOWN: BODY 되돌림/하락 최소 % (UPDOW_BODY_DROP_MIN_PCT) | | `UPDOW_TP_PCT` | `text` | NULL | NULL | UPDOWN: TP % (UPDOW_TP_PCT) | | `UPDOW_STOP_LOSS_PCT` | `text` | NULL | NULL | UPDOWN: 손절 % (UPDOW_STOP_LOSS_PCT) | | `UPDOW_ATR_USE_DYNAMIC` | `text` | NULL | NULL | UPDOWN: ATR 사용_ DYNAMIC (UPDOW_ATR_USE_DYNAMIC) | | `UPDOW_ATR_PERIOD` | `text` | NULL | NULL | UPDOWN: ATR 기간 (UPDOW_ATR_PERIOD) | | `UPDOW_ATR_SL_MULT` | `text` | NULL | NULL | UPDOWN: ATR손절 배수 (UPDOW_ATR_SL_MULT) | | `UPDOW_ATR_TP_MULT` | `text` | NULL | NULL | UPDOWN: ATR익절 배수 (UPDOW_ATR_TP_MULT) | | `UPDOW_ATR_SL_MIN_PCT` | `text` | NULL | NULL | UPDOWN: ATR손절 최소 % (UPDOW_ATR_SL_MIN_PCT) | | `UPDOW_ATR_SL_MAX_PCT` | `text` | NULL | NULL | UPDOWN: ATR손절 최대 % (UPDOW_ATR_SL_MAX_PCT) | | `UPDOW_ATR_TP_MIN_PCT` | `text` | NULL | NULL | UPDOWN: ATR익절 최소 % (UPDOW_ATR_TP_MIN_PCT) | | `UPDOW_ATR_TP_MAX_PCT` | `text` | NULL | NULL | UPDOWN: ATR익절 최대 % (UPDOW_ATR_TP_MAX_PCT) | | `UPDOW_ATR_MULT_FLOOR` | `text` | NULL | NULL | UPDOWN: ATR 배수 FLOOR (UPDOW_ATR_MULT_FLOOR) | | `UPDOW_ATR_PCT_FLOOR` | `text` | NULL | NULL | UPDOWN: ATR % FLOOR (UPDOW_ATR_PCT_FLOOR) | | `UPDOW_EXIT_PCT_FLOOR` | `text` | NULL | NULL | UPDOWN: EXIT % FLOOR (UPDOW_EXIT_PCT_FLOOR) | | `UPDOW_MAX_HOLD_BARS` | `text` | NULL | NULL | UPDOWN: 최대보유봉 (UPDOW_MAX_HOLD_BARS) | | `UPDOW_EXIT_ON_GREEN` | `text` | NULL | NULL | UPDOWN: EXIT ON GREEN (UPDOW_EXIT_ON_GREEN) | | `UPDOW_SLOT_MONEY` | `text` | NULL | NULL | UPDOWN 박스 슬롯(원) | | `UPDOW_TF_MIN` | `text` | NULL | NULL | UPDOWN: TF 최소 (UPDOW_TF_MIN) | | `UPDOW_GRID_BODY0` | `text` | NULL | NULL | UPDOWN: GRID BODY0 (UPDOW_GRID_BODY0) | | `UPDOW_GRID_BODY1` | `text` | NULL | NULL | UPDOWN: GRID BODY1 (UPDOW_GRID_BODY1) | | `UPDOW_GRID_BODY2` | `text` | NULL | NULL | UPDOWN: GRID BODY2 (UPDOW_GRID_BODY2) | | `UPDOW_GRID_BODY3` | `text` | NULL | NULL | UPDOWN: GRID BODY3 (UPDOW_GRID_BODY3) | | `UPDOW_GRID_TP0` | `text` | NULL | NULL | UPDOWN: GRID TP0 (UPDOW_GRID_TP0) | | `UPDOW_GRID_TP1` | `text` | NULL | NULL | UPDOWN: GRID TP1 (UPDOW_GRID_TP1) | | `UPDOW_GRID_TP2` | `text` | NULL | NULL | UPDOWN: GRID TP2 (UPDOW_GRID_TP2) | | `UPDOW_GRID_TP3` | `text` | NULL | NULL | UPDOWN: GRID TP3 (UPDOW_GRID_TP3) | | `UPDOW_GRID_TP4` | `text` | NULL | NULL | UPDOWN: GRID TP4 (UPDOW_GRID_TP4) | | `UPDOW_GRID_SL0` | `text` | NULL | NULL | UPDOWN: GRID SL0 (UPDOW_GRID_SL0) | | `UPDOW_GRID_SL1` | `text` | NULL | NULL | UPDOWN: GRID SL1 (UPDOW_GRID_SL1) | | `UPDOW_GRID_SL2` | `text` | NULL | NULL | UPDOWN: GRID SL2 (UPDOW_GRID_SL2) | | `UPDOW_GRID_SL3` | `text` | NULL | NULL | UPDOWN: GRID SL3 (UPDOW_GRID_SL3) | | `UPDOW_GRID_HOLD0` | `text` | NULL | NULL | UPDOWN: GRID HOLD0 (UPDOW_GRID_HOLD0) | | `UPDOW_GRID_HOLD1` | `text` | NULL | NULL | UPDOWN: GRID HOLD1 (UPDOW_GRID_HOLD1) | | `UPDOW_GRID_HOLD2` | `text` | NULL | NULL | UPDOWN: GRID HOLD2 (UPDOW_GRID_HOLD2) | | `UPDOW_GRID_HOLD3` | `text` | NULL | NULL | UPDOWN: GRID HOLD3 (UPDOW_GRID_HOLD3) | | `UPDOW_GRID_HOLD4` | `text` | NULL | NULL | UPDOWN: GRID HOLD4 (UPDOW_GRID_HOLD4) | | `UPDOW_GRID_REGIME0` | `text` | NULL | NULL | UPDOWN: GRID REGIME0 (UPDOW_GRID_REGIME0) | | `UPDOW_GRID_REGIME1` | `text` | NULL | NULL | UPDOWN: GRID REGIME1 (UPDOW_GRID_REGIME1) | | `UPDOW_REGIME_MA_BARS` | `text` | NULL | NULL | UPDOWN: REGIME MA 봉수 (UPDOW_REGIME_MA_BARS) | | `UPDOW_REGIME_MA_EASE_PCT` | `text` | NULL | NULL | UPDOWN: REGIME MA EASE % (UPDOW_REGIME_MA_EASE_PCT) | | `UPDOW_REGIME_MA_EASE_CAP` | `text` | NULL | NULL | UPDOWN: REGIME MA EASE CAP (UPDOW_REGIME_MA_EASE_CAP) | | `UPDOW_GRID_REGIME_EASE0` | `text` | NULL | NULL | UPDOWN: GRID REGIME EASE0 (UPDOW_GRID_REGIME_EASE0) | | `UPDOW_GRID_REGIME_EASE1` | `text` | NULL | NULL | UPDOWN: GRID REGIME EASE1 (UPDOW_GRID_REGIME_EASE1) | | `UPDOW_KOSPI_1MIN_PROXY_CODE` | `text` | NULL | NULL | UPDOWN: KOSPI 1MIN PROXY CODE (UPDOW_KOSPI_1MIN_PROXY_CODE) | | `UPDOW_REGIME_PREFER_WS_CANDLES` | `text` | NULL | NULL | UPDOWN: REGIME PREFER WS CANDLES (UPDOW_REGIME_PREFER_WS_CANDLES) | | `UPDOW_REGIME_WS_CANDLE_MIN` | `text` | NULL | NULL | UPDOWN: REGIME WS CANDLE 최소 (UPDOW_REGIME_WS_CANDLE_MIN) | | `UPDOW_SHOULDER_MIN_HIGH_PCT` | `text` | NULL | NULL | UPDOWN: 어깨무장고점 % (UPDOW_SHOULDER_MIN_HIGH_PCT) | | `UPDOW_SHOULDER_CUT_PCT` | `text` | NULL | NULL | UPDOWN: 어깨컷 % (UPDOW_SHOULDER_CUT_PCT) | | `UPDOW_GRID_SHOULDER_SMIN0` | `text` | NULL | NULL | UPDOWN: GRID 어깨 SMIN0 (UPDOW_GRID_SHOULDER_SMIN0) | | `UPDOW_GRID_SHOULDER_SMIN1` | `text` | NULL | NULL | UPDOWN: GRID 어깨 SMIN1 (UPDOW_GRID_SHOULDER_SMIN1) | | `UPDOW_GRID_SHOULDER_SMIN2` | `text` | NULL | NULL | UPDOWN: GRID 어깨 SMIN2 (UPDOW_GRID_SHOULDER_SMIN2) | | `UPDOW_GRID_SHOULDER_CUT0` | `text` | NULL | NULL | UPDOWN: GRID 어깨컷 0 (UPDOW_GRID_SHOULDER_CUT0) | | `UPDOW_GRID_SHOULDER_CUT1` | `text` | NULL | NULL | UPDOWN: GRID 어깨컷 1 (UPDOW_GRID_SHOULDER_CUT1) | | `UPDOW_GRID_SHOULDER_CUT2` | `text` | NULL | NULL | UPDOWN: GRID 어깨컷 2 (UPDOW_GRID_SHOULDER_CUT2) | | `UPDOW_TOTAL_BUDGET_KRW` | `text` | NULL | NULL | UPDOWN 박스 총 한도(원) | | `STRATEGY_UPDOW_ENABLED` | `text` | NULL | NULL | UPDOWN박스 ON/OFF. 다음루프 신규매수중단(보유청산유지). WS구독해제 안함. 기동시OFF→켜려면재시작 | | `KIS_UPDOW_MM_CHANNEL` | `text` | NULL | NULL | UPDOWN: KIS UPDOW MM CHANNEL (KIS_UPDOW_MM_CHANNEL) | | `UPDOW_DAILY_PROFIT_TARGET_ENABLED` | `text` | NULL | NULL | UPDOWN 박스 손익 감시 켜기 · OFF = 해당 전략 일일익절 비활성 (매수 차단 없음) | | `UPDOW_DAILY_PROFIT_TARGET_KRW` | `text` | NULL | NULL | UPDOWN 박스 목표(원) | | `UPDOW_DAILY_PROFIT_TARGET_PCT` | `text` | NULL | NULL | UPDOWN 박스 목표(%) · 퍼센트 그대로 (예: 2.5 = 2.5%) · 0=미사용 | | `UPDOW_DAILY_PROFIT_HALT_NEW_BUYS` | `text` | NULL | NULL | UPDOWN 박스 신규매수 수동 중단 · 목표 무관 수동 잠금 · 비우면 마스터 상속 · OFF=정상 | | `UPDOW_DAILY_PROFIT_MODE` | `text` | NULL | NULL | UPDOWN 박스 익절방식 · 비우면 마스터 상속 · fixed/trailing/both | | `UPDOW_DAILY_PROFIT_TRAIL_TIERS` | `text` | NULL | NULL | UPDOWN 박스 다단 트레일 · 수익원:컷%,… · 비우면 마스터 상속 · 예: 30000:50,100000:35,300000:25 | | `UPDOW_DAILY_PROFIT_TRAIL_DROP_PCT` | `text` | NULL | NULL | UPDOWN 박스 단일 트레일 되돌림(%) · 다단 비었을 때만 · 고점 대비 % · 비우면 마스터 상속 · 0=미사용 | | `UPDOW_DAILY_PROFIT_TRAIL_ARM_KRW` | `text` | NULL | NULL | UPDOWN 박스 트레일 발동수익(원) · 이 이상 벌어야 트레일 감시 · 비우면 마스터 상속 | | `UPDOW_DAILY_PROFIT_TRAIL_ARM_PCT` | `text` | NULL | NULL | UPDOWN: 일일익절 트레일무장 % (UPDOW_DAILY_PROFIT_TRAIL_ARM_PCT) | | `UPDOW_DAILY_PROFIT_RISK_BUDGET_ENABLED` | `text` | NULL | NULL | UPDOWN 박스 리스크버짓(B) · ON=일일익절 hit 후 보유최악손절합>cushion 이면 전량정리 · 기본 OFF · 마스터 없음 | | `UPDOW_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` | `text` | NULL | NULL | UPDOWN 박스 리스크버짓 쿨다운(초) · 같은 날 재평가 최소 간격 · 0=당일 1회만 | | `UPDOW_TICK_SELL_ENABLED` | `text` | NULL | NULL | UPDOWN 박스 틱매도 · 비우면 공통 TICK_SELL_ENABLED · true/false 명시 시 전략만 덮어씀 · 기본 false |
DDL 원문 ```sql CREATE TABLE `config_updow` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` varchar(30) NOT NULL, `UPDOW_UNIVERSE_SOURCE` text DEFAULT NULL, `RANK_UPDOW_SORT` text DEFAULT NULL, `RANK_UPDOW_LIMIT` text DEFAULT NULL, `CONDITION_UPDOW_NAME` text DEFAULT NULL, `CONDITION_UPDOW_SEQ` text DEFAULT NULL, `UPDOW_CAND_LIMIT` text DEFAULT NULL, `UPDOW_TIME_START` text DEFAULT NULL, `UPDOW_TIME_END` text DEFAULT NULL, `UPDOW_REENTRY_COOLDOWN_SEC` text DEFAULT NULL, `UPDOW_MIN_CANDLE_LEN` text DEFAULT NULL, `MIN_CANDLE_LEN_UPDOW` text DEFAULT NULL, `UPDOW_CANDLE_FETCH_N` text DEFAULT NULL, `UPDOW_LIVE_MIN_CANDLES` text DEFAULT NULL, `UPDOW_MAX_LOSS_PER_TRADE_KRW` text DEFAULT NULL, `UPDOW_MAX_BUY_AMOUNT` text DEFAULT NULL, `UPDOW_MAX_STOCKS` text DEFAULT NULL, `UPDOW_BODY_DROP_MIN_PCT` text DEFAULT NULL, `UPDOW_TP_PCT` text DEFAULT NULL, `UPDOW_STOP_LOSS_PCT` text DEFAULT NULL, `UPDOW_ATR_USE_DYNAMIC` text DEFAULT NULL, `UPDOW_ATR_PERIOD` text DEFAULT NULL, `UPDOW_ATR_SL_MULT` text DEFAULT NULL, `UPDOW_ATR_TP_MULT` text DEFAULT NULL, `UPDOW_ATR_SL_MIN_PCT` text DEFAULT NULL, `UPDOW_ATR_SL_MAX_PCT` text DEFAULT NULL, `UPDOW_ATR_TP_MIN_PCT` text DEFAULT NULL, `UPDOW_ATR_TP_MAX_PCT` text DEFAULT NULL, `UPDOW_ATR_MULT_FLOOR` text DEFAULT NULL, `UPDOW_ATR_PCT_FLOOR` text DEFAULT NULL, `UPDOW_EXIT_PCT_FLOOR` text DEFAULT NULL, `UPDOW_MAX_HOLD_BARS` text DEFAULT NULL, `UPDOW_EXIT_ON_GREEN` text DEFAULT NULL, `UPDOW_SLOT_MONEY` text DEFAULT NULL, `UPDOW_TF_MIN` text DEFAULT NULL, `UPDOW_GRID_BODY0` text DEFAULT NULL, `UPDOW_GRID_BODY1` text DEFAULT NULL, `UPDOW_GRID_BODY2` text DEFAULT NULL, `UPDOW_GRID_BODY3` text DEFAULT NULL, `UPDOW_GRID_TP0` text DEFAULT NULL, `UPDOW_GRID_TP1` text DEFAULT NULL, `UPDOW_GRID_TP2` text DEFAULT NULL, `UPDOW_GRID_TP3` text DEFAULT NULL, `UPDOW_GRID_TP4` text DEFAULT NULL, `UPDOW_GRID_SL0` text DEFAULT NULL, `UPDOW_GRID_SL1` text DEFAULT NULL, `UPDOW_GRID_SL2` text DEFAULT NULL, `UPDOW_GRID_SL3` text DEFAULT NULL, `UPDOW_GRID_HOLD0` text DEFAULT NULL, `UPDOW_GRID_HOLD1` text DEFAULT NULL, `UPDOW_GRID_HOLD2` text DEFAULT NULL, `UPDOW_GRID_HOLD3` text DEFAULT NULL, `UPDOW_GRID_HOLD4` text DEFAULT NULL, `UPDOW_GRID_REGIME0` text DEFAULT NULL, `UPDOW_GRID_REGIME1` text DEFAULT NULL, `UPDOW_REGIME_MA_BARS` text DEFAULT NULL, `UPDOW_REGIME_MA_EASE_PCT` text DEFAULT NULL, `UPDOW_REGIME_MA_EASE_CAP` text DEFAULT NULL, `UPDOW_GRID_REGIME_EASE0` text DEFAULT NULL, `UPDOW_GRID_REGIME_EASE1` text DEFAULT NULL, `UPDOW_KOSPI_1MIN_PROXY_CODE` text DEFAULT NULL, `UPDOW_REGIME_PREFER_WS_CANDLES` text DEFAULT NULL, `UPDOW_REGIME_WS_CANDLE_MIN` text DEFAULT NULL, `UPDOW_SHOULDER_MIN_HIGH_PCT` text DEFAULT NULL, `UPDOW_SHOULDER_CUT_PCT` text DEFAULT NULL, `UPDOW_GRID_SHOULDER_SMIN0` text DEFAULT NULL, `UPDOW_GRID_SHOULDER_SMIN1` text DEFAULT NULL, `UPDOW_GRID_SHOULDER_SMIN2` text DEFAULT NULL, `UPDOW_GRID_SHOULDER_CUT0` text DEFAULT NULL, `UPDOW_GRID_SHOULDER_CUT1` text DEFAULT NULL, `UPDOW_GRID_SHOULDER_CUT2` text DEFAULT NULL, `UPDOW_TOTAL_BUDGET_KRW` text DEFAULT NULL, `STRATEGY_UPDOW_ENABLED` text DEFAULT NULL, `KIS_UPDOW_MM_CHANNEL` text DEFAULT NULL, `UPDOW_DAILY_PROFIT_TARGET_ENABLED` text DEFAULT NULL, `UPDOW_DAILY_PROFIT_TARGET_KRW` text DEFAULT NULL, `UPDOW_DAILY_PROFIT_TARGET_PCT` text DEFAULT NULL, `UPDOW_DAILY_PROFIT_HALT_NEW_BUYS` text DEFAULT NULL, `UPDOW_DAILY_PROFIT_MODE` text DEFAULT NULL, `UPDOW_DAILY_PROFIT_TRAIL_TIERS` text DEFAULT NULL, `UPDOW_DAILY_PROFIT_TRAIL_DROP_PCT` text DEFAULT NULL, `UPDOW_DAILY_PROFIT_TRAIL_ARM_KRW` text DEFAULT NULL, `UPDOW_DAILY_PROFIT_TRAIL_ARM_PCT` text DEFAULT NULL, `UPDOW_DAILY_PROFIT_RISK_BUDGET_ENABLED` text DEFAULT NULL, `UPDOW_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` text DEFAULT NULL, `UPDOW_TICK_SELL_ENABLED` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=388 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `config_us_momentum` **PK**: `id` | AUTO_INCREMENT=96 > **테이블 COMMENT**: 해외모멘텀 `US_MOMENTUM_*` · `STRATEGY_US_MOMENTUM_ENABLED`. 시세=한투 HDFSCNT0 · 유니버스=permanent US | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `created_at` | `varchar(30)` | NOT NULL | | 설정행 생성시각 | | `STRATEGY_US_MOMENTUM_ENABLED` | `text` | NULL | NULL | 해외모멘텀 ON/OFF. 다음루프 신규매수중단(보유청산유지). WS구독해제 안함. 기동시OFF→켜려면재시작 | | `US_MOMENTUM_TIME_START` | `text` | NULL | NULL | 해외모멘텀: 매수시작 (US_MOMENTUM_TIME_START) | | `US_MOMENTUM_TIME_END` | `text` | NULL | NULL | 해외모멘텀: 매수종료 (US_MOMENTUM_TIME_END) | | `US_MOMENTUM_SELL_TIME_END` | `text` | NULL | NULL | 해외모멘텀: 매도세션종료 (US_MOMENTUM_SELL_TIME_END) | | `US_MOMENTUM_DRY_RUN` | `text` | NULL | NULL | 해외모멘텀: 모의/페이퍼전용 (US_MOMENTUM_DRY_RUN) | | `US_MOMENTUM_MAX_STOCKS` | `text` | NULL | NULL | 해외모멘텀: 동시보유상한 (US_MOMENTUM_MAX_STOCKS) | | `US_MOMENTUM_SLOT_MONEY` | `text` | NULL | NULL | 해외모멘텀: 슬롯금액 (US_MOMENTUM_SLOT_MONEY) | | `US_MOMENTUM_FEE_RATE` | `text` | NULL | NULL | 해외모멘텀: 수수료율 (US_MOMENTUM_FEE_RATE) | | `US_MOMENTUM_SELL_TAX` | `text` | NULL | NULL | 해외모멘텀: 매도세금 (US_MOMENTUM_SELL_TAX) | | `US_MOMENTUM_MIN_PRICE` | `text` | NULL | NULL | 해외모멘텀: 최소가격 (US_MOMENTUM_MIN_PRICE) | | `US_MOMENTUM_LIVE_MIN_CANDLES` | `text` | NULL | NULL | 해외모멘텀: 실매최소봉수 (US_MOMENTUM_LIVE_MIN_CANDLES) | | `US_MOMENTUM_EOD_ENABLED` | `text` | NULL | NULL | 해외모멘텀: 장마감청산ON (US_MOMENTUM_EOD_ENABLED) | | `US_MOMENTUM_EOD_HM` | `text` | NULL | NULL | 해외모멘텀: 장마감시각HHMM (US_MOMENTUM_EOD_HM) | | `US_MOMENTUM_MAX_BUY_AMOUNT` | `text` | NULL | NULL | 해외모멘텀: 1회최대매수금액 (US_MOMENTUM_MAX_BUY_AMOUNT) | | `US_MOMENTUM_TOTAL_BUDGET` | `text` | NULL | NULL | 해외모멘텀: 총운용한도 (US_MOMENTUM_TOTAL_BUDGET) | | `US_MOMENTUM_RSI_MIN` | `text` | NULL | NULL | 해외모멘텀: RSI하한 (US_MOMENTUM_RSI_MIN) | | `US_MOMENTUM_RSI_MAX` | `text` | NULL | NULL | 해외모멘텀: RSI상한 (US_MOMENTUM_RSI_MAX) | | `US_MOMENTUM_VOL_MULT` | `text` | NULL | NULL | 해외모멘텀: 거래량배수 (US_MOMENTUM_VOL_MULT) | | `US_MOMENTUM_VOL_WIN` | `text` | NULL | NULL | 해외모멘텀: 거래량윈도우 (US_MOMENTUM_VOL_WIN) | | `US_MOMENTUM_MAX_FROM_OPEN_PCT` | `text` | NULL | NULL | 해외모멘텀: 최대 시가대비 % (US_MOMENTUM_MAX_FROM_OPEN_PCT) | | `US_MOMENTUM_MIN_FROM_OPEN_PCT` | `text` | NULL | NULL | 해외모멘텀: 최소 시가대비 % (US_MOMENTUM_MIN_FROM_OPEN_PCT) | | `US_MOMENTUM_STOP_LOSS_PCT` | `text` | NULL | NULL | 해외모멘텀: 손절 % (US_MOMENTUM_STOP_LOSS_PCT) | | `US_MOMENTUM_TAKE_PROFIT_PCT` | `text` | NULL | NULL | 해외모멘텀: 익절 % (US_MOMENTUM_TAKE_PROFIT_PCT) | | `US_MOMENTUM_TP_MAX_PCT` | `text` | NULL | NULL | 해외모멘텀: TP 최대 % (US_MOMENTUM_TP_MAX_PCT) | | `US_MOMENTUM_SHOULDER_MIN_HIGH_PCT` | `text` | NULL | NULL | 해외모멘텀: 어깨무장고점 % (US_MOMENTUM_SHOULDER_MIN_HIGH_PCT) | | `US_MOMENTUM_SHOULDER_CUT_PCT` | `text` | NULL | NULL | 해외모멘텀: 어깨컷 % (US_MOMENTUM_SHOULDER_CUT_PCT) | | `US_MOMENTUM_RATCHET_TIERS` | `text` | NULL | NULL | 해외모멘텀: 다단래칫 (US_MOMENTUM_RATCHET_TIERS) | | `US_MOMENTUM_TRAIL_PCT` | `text` | NULL | NULL | 해외모멘텀: 트레일 % (US_MOMENTUM_TRAIL_PCT) | | `US_MOMENTUM_TRAIL_ARM_PCT` | `text` | NULL | NULL | 해외모멘텀: 트레일무장 % (US_MOMENTUM_TRAIL_ARM_PCT) | | `US_MOMENTUM_MAX_HOLD_BARS` | `text` | NULL | NULL | 해외모멘텀: 최대보유봉 (US_MOMENTUM_MAX_HOLD_BARS) | | `US_MOMENTUM_MAX_DAILY` | `text` | NULL | NULL | 해외모멘텀: 일일매수횟수상한 (US_MOMENTUM_MAX_DAILY) | | `US_MOMENTUM_MAX_DAILY_CHG` | `text` | NULL | NULL | 해외모멘텀: 당일등락상한 (US_MOMENTUM_MAX_DAILY_CHG) | | `US_MOMENTUM_HIGH_CHASE_THR` | `text` | NULL | NULL | 해외모멘텀: 고점추격 THR (US_MOMENTUM_HIGH_CHASE_THR) | | `US_MOMENTUM_USE_DEFENSE_FILTERS` | `text` | NULL | NULL | 해외모멘텀: 사용_ 방어필터 필터 S (US_MOMENTUM_USE_DEFENSE_FILTERS) | | `US_MOMENTUM_USE_HIGH_CHASE_FILTER` | `text` | NULL | NULL | 해외모멘텀: 사용_ 고점추격 필터 (US_MOMENTUM_USE_HIGH_CHASE_FILTER) | | `US_MOMENTUM_USE_DAILY_RANGE_FILTER` | `text` | NULL | NULL | 해외모멘텀: 사용_ DAILY RANGE 필터 (US_MOMENTUM_USE_DAILY_RANGE_FILTER) | | `US_MOMENTUM_USE_EMA_FILTER` | `text` | NULL | NULL | 해외모멘텀: 사용_ EMA 필터 (US_MOMENTUM_USE_EMA_FILTER) | | `US_MOMENTUM_EMA_FAST_PERIOD` | `text` | NULL | NULL | 해외모멘텀: EMA단기 기간 (US_MOMENTUM_EMA_FAST_PERIOD) | | `US_MOMENTUM_EMA_SLOW_PERIOD` | `text` | NULL | NULL | 해외모멘텀: EMA장기 기간 (US_MOMENTUM_EMA_SLOW_PERIOD) | | `US_MOMENTUM_USE_RSI_MAX_FILTER` | `text` | NULL | NULL | 해외모멘텀: 사용_ RSI상한 필터 (US_MOMENTUM_USE_RSI_MAX_FILTER) | | `US_MOMENTUM_PATTERN_BREAKOUT` | `text` | NULL | NULL | 해외모멘텀: 패턴 돌파 (US_MOMENTUM_PATTERN_BREAKOUT) | | `US_MOMENTUM_PATTERN_PULLBACK` | `text` | NULL | NULL | 해외모멘텀: 패턴 되돌림 (US_MOMENTUM_PATTERN_PULLBACK) | | `US_MOMENTUM_CHASE_LOOKBACK_MIN` | `text` | NULL | NULL | 해외모멘텀: CHASE LOOKBACK 최소 (US_MOMENTUM_CHASE_LOOKBACK_MIN) | | `US_MOMENTUM_PULLBACK_LOOKBACK_MIN` | `text` | NULL | NULL | 해외모멘텀: 되돌림 LOOKBACK 최소 (US_MOMENTUM_PULLBACK_LOOKBACK_MIN) | | `US_MOMENTUM_PULLBACK_MIN_PCT` | `text` | NULL | NULL | 해외모멘텀: 되돌림 최소 % (US_MOMENTUM_PULLBACK_MIN_PCT) | | `US_MOMENTUM_PULLBACK_MAX_PCT` | `text` | NULL | NULL | 해외모멘텀: 되돌림 최대 % (US_MOMENTUM_PULLBACK_MAX_PCT) | | `US_MOMENTUM_SETUP_VOL_MAX_MULT` | `text` | NULL | NULL | 해외모멘텀: SETUP 거래량 최대 배수 (US_MOMENTUM_SETUP_VOL_MAX_MULT) | | `US_MOMENTUM_SETUP_BEAR_BARS_MIN` | `text` | NULL | NULL | 해외모멘텀: SETUP BEAR 봉수 최소 (US_MOMENTUM_SETUP_BEAR_BARS_MIN) | | `US_MOMENTUM_MAX_LOSS_PER_TRADE` | `text` | NULL | NULL | 해외모멘텀: 최대 LOSS PER TRADE (US_MOMENTUM_MAX_LOSS_PER_TRADE) | | `US_MOMENTUM_MIN_PROFIT_PCT` | `text` | NULL | NULL | 해외모멘텀: 최소 PROFIT % (US_MOMENTUM_MIN_PROFIT_PCT) | | `US_MOMENTUM_COOLDOWN_SEC` | `text` | NULL | NULL | 해외모멘텀: 쿨다운 초 (US_MOMENTUM_COOLDOWN_SEC) | | `US_MOMENTUM_DAILY_PROFIT_TARGET_ENABLED` | `text` | NULL | NULL | 해외모멘텀: 일일익절 목표 ON/OFF (US_MOMENTUM_DAILY_PROFIT_TARGET_ENABLED) | | `US_MOMENTUM_DAILY_PROFIT_TRAIL_TIERS` | `text` | NULL | NULL | 해외모멘텀: 일일익절 트레일 다단 (US_MOMENTUM_DAILY_PROFIT_TRAIL_TIERS) | | `US_MOMENTUM_DAILY_PROFIT_MODE` | `text` | NULL | NULL | 해외모멘텀: 일일익절 모드 (US_MOMENTUM_DAILY_PROFIT_MODE) | | `US_MOMENTUM_MAX_ORDER_QTY` | `text` | NULL | NULL | 해외모멘텀: 주문수량상한 (US_MOMENTUM_MAX_ORDER_QTY) | | `US_MOMENTUM_ORDER_FAIL_COOLDOWN_SEC` | `text` | NULL | NULL | 해외모멘텀: ORDER FAIL 쿨다운 초 (US_MOMENTUM_ORDER_FAIL_COOLDOWN_SEC) | | `US_MOMENTUM_RELOAD_INTERVAL_SEC` | `text` | NULL | NULL | 해외모멘텀: 설정리로드주기 초 (US_MOMENTUM_RELOAD_INTERVAL_SEC) | | `US_MOMENTUM_PSAMOUNT_CACHE_SEC` | `text` | NULL | NULL | 해외모멘텀: 매수가능수량 CACHE 초 (US_MOMENTUM_PSAMOUNT_CACHE_SEC) | | `US_MOMENTUM_LOOP_SLEEP_MIN` | `text` | NULL | NULL | 해외모멘텀: 루프대기 최소 (US_MOMENTUM_LOOP_SLEEP_MIN) | | `US_MOMENTUM_LOOP_SLEEP_MAX` | `text` | NULL | NULL | 해외모멘텀: 루프대기 최대 (US_MOMENTUM_LOOP_SLEEP_MAX) | | `US_MOMENTUM_SCAN_REJECT_SLEEP_MIN` | `text` | NULL | NULL | 해외모멘텀: 스캔탈락대기 SLEEP 최소 (US_MOMENTUM_SCAN_REJECT_SLEEP_MIN) | | `US_MOMENTUM_SCAN_REJECT_SLEEP_MAX` | `text` | NULL | NULL | 해외모멘텀: 스캔탈락대기 SLEEP 최대 (US_MOMENTUM_SCAN_REJECT_SLEEP_MAX) | | `US_MOMENTUM_PROFILE_BUY_SEC` | `text` | NULL | NULL | 해외모멘텀: PROFILE BUY 초 (US_MOMENTUM_PROFILE_BUY_SEC) | | `US_MOMENTUM_TRADES_CACHE_SEC` | `text` | NULL | NULL | 해외모멘텀: TRADES CACHE 초 (US_MOMENTUM_TRADES_CACHE_SEC) | | `US_MOMENTUM_CANDLE_LOCK_WAIT_SEC` | `text` | NULL | NULL | 해외모멘텀: CANDLE LOCK WAIT 초 (US_MOMENTUM_CANDLE_LOCK_WAIT_SEC) | | `US_MOMENTUM_DAILY_PROFIT_RISK_BUDGET_ENABLED` | `text` | NULL | NULL | 해외모멘텀: 일일익절 RISK 한도 ON/OFF (US_MOMENTUM_DAILY_PROFIT_RISK_BUDGET_ENABLED) | | `US_MOMENTUM_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` | `text` | NULL | NULL | 해외모멘텀: 일일익절 RISK 한도 쿨다운 초 (US_MOMENTUM_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC) | | `US_MOMENTUM_FORCE_BUY_QTY` | `text` | NULL | NULL | 해외모멘텀: 강제매수테스트 QTY (US_MOMENTUM_FORCE_BUY_QTY) | | `US_MOMENTUM_SESSION_START` | `text` | NULL | NULL | 해외모멘텀: 세션시작 (US_MOMENTUM_SESSION_START) | | `US_MOMENTUM_BUY_WAIT_LOG_SEC` | `text` | NULL | NULL | 해외모멘텀: 매수대기로그 초 (US_MOMENTUM_BUY_WAIT_LOG_SEC) | | `US_MOMENTUM_FX_FEE_RATE` | `text` | NULL | NULL | 해외모멘텀: 환전수수료 RATE (US_MOMENTUM_FX_FEE_RATE) |
DDL 원문 ```sql CREATE TABLE `config_us_momentum` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` varchar(30) NOT NULL, `STRATEGY_US_MOMENTUM_ENABLED` text DEFAULT NULL COMMENT '해외모멘텀 ON/OFF. 다음루프 신규매수중단(보유청산유지). WS구독해제 안함. 기동시OFF→켜려면재시작', `US_MOMENTUM_TIME_START` text DEFAULT NULL, `US_MOMENTUM_TIME_END` text DEFAULT NULL, `US_MOMENTUM_SELL_TIME_END` text DEFAULT NULL, `US_MOMENTUM_DRY_RUN` text DEFAULT NULL, `US_MOMENTUM_MAX_STOCKS` text DEFAULT NULL, `US_MOMENTUM_SLOT_MONEY` text DEFAULT NULL, `US_MOMENTUM_FEE_RATE` text DEFAULT NULL, `US_MOMENTUM_SELL_TAX` text DEFAULT NULL, `US_MOMENTUM_MIN_PRICE` text DEFAULT NULL, `US_MOMENTUM_LIVE_MIN_CANDLES` text DEFAULT NULL, `US_MOMENTUM_EOD_ENABLED` text DEFAULT NULL, `US_MOMENTUM_EOD_HM` text DEFAULT NULL, `US_MOMENTUM_MAX_BUY_AMOUNT` text DEFAULT NULL, `US_MOMENTUM_TOTAL_BUDGET` text DEFAULT NULL, `US_MOMENTUM_RSI_MIN` text DEFAULT NULL, `US_MOMENTUM_RSI_MAX` text DEFAULT NULL, `US_MOMENTUM_VOL_MULT` text DEFAULT NULL, `US_MOMENTUM_VOL_WIN` text DEFAULT NULL, `US_MOMENTUM_MAX_FROM_OPEN_PCT` text DEFAULT NULL, `US_MOMENTUM_MIN_FROM_OPEN_PCT` text DEFAULT NULL, `US_MOMENTUM_STOP_LOSS_PCT` text DEFAULT NULL, `US_MOMENTUM_TAKE_PROFIT_PCT` text DEFAULT NULL, `US_MOMENTUM_TP_MAX_PCT` text DEFAULT NULL, `US_MOMENTUM_SHOULDER_MIN_HIGH_PCT` text DEFAULT NULL, `US_MOMENTUM_SHOULDER_CUT_PCT` text DEFAULT NULL, `US_MOMENTUM_RATCHET_TIERS` text DEFAULT NULL, `US_MOMENTUM_TRAIL_PCT` text DEFAULT NULL, `US_MOMENTUM_TRAIL_ARM_PCT` text DEFAULT NULL, `US_MOMENTUM_MAX_HOLD_BARS` text DEFAULT NULL, `US_MOMENTUM_MAX_DAILY` text DEFAULT NULL, `US_MOMENTUM_MAX_DAILY_CHG` text DEFAULT NULL, `US_MOMENTUM_HIGH_CHASE_THR` text DEFAULT NULL, `US_MOMENTUM_USE_DEFENSE_FILTERS` text DEFAULT NULL, `US_MOMENTUM_USE_HIGH_CHASE_FILTER` text DEFAULT NULL, `US_MOMENTUM_USE_DAILY_RANGE_FILTER` text DEFAULT NULL, `US_MOMENTUM_USE_EMA_FILTER` text DEFAULT NULL, `US_MOMENTUM_EMA_FAST_PERIOD` text DEFAULT NULL, `US_MOMENTUM_EMA_SLOW_PERIOD` text DEFAULT NULL, `US_MOMENTUM_USE_RSI_MAX_FILTER` text DEFAULT NULL, `US_MOMENTUM_PATTERN_BREAKOUT` text DEFAULT NULL, `US_MOMENTUM_PATTERN_PULLBACK` text DEFAULT NULL, `US_MOMENTUM_CHASE_LOOKBACK_MIN` text DEFAULT NULL, `US_MOMENTUM_PULLBACK_LOOKBACK_MIN` text DEFAULT NULL, `US_MOMENTUM_PULLBACK_MIN_PCT` text DEFAULT NULL, `US_MOMENTUM_PULLBACK_MAX_PCT` text DEFAULT NULL, `US_MOMENTUM_SETUP_VOL_MAX_MULT` text DEFAULT NULL, `US_MOMENTUM_SETUP_BEAR_BARS_MIN` text DEFAULT NULL, `US_MOMENTUM_MAX_LOSS_PER_TRADE` text DEFAULT NULL, `US_MOMENTUM_MIN_PROFIT_PCT` text DEFAULT NULL, `US_MOMENTUM_COOLDOWN_SEC` text DEFAULT NULL, `US_MOMENTUM_DAILY_PROFIT_TARGET_ENABLED` text DEFAULT NULL, `US_MOMENTUM_DAILY_PROFIT_TRAIL_TIERS` text DEFAULT NULL, `US_MOMENTUM_DAILY_PROFIT_MODE` text DEFAULT NULL, `US_MOMENTUM_MAX_ORDER_QTY` text DEFAULT NULL, `US_MOMENTUM_ORDER_FAIL_COOLDOWN_SEC` text DEFAULT NULL, `US_MOMENTUM_RELOAD_INTERVAL_SEC` text DEFAULT NULL, `US_MOMENTUM_PSAMOUNT_CACHE_SEC` text DEFAULT NULL, `US_MOMENTUM_LOOP_SLEEP_MIN` text DEFAULT NULL, `US_MOMENTUM_LOOP_SLEEP_MAX` text DEFAULT NULL, `US_MOMENTUM_SCAN_REJECT_SLEEP_MIN` text DEFAULT NULL, `US_MOMENTUM_SCAN_REJECT_SLEEP_MAX` text DEFAULT NULL, `US_MOMENTUM_PROFILE_BUY_SEC` text DEFAULT NULL, `US_MOMENTUM_TRADES_CACHE_SEC` text DEFAULT NULL, `US_MOMENTUM_CANDLE_LOCK_WAIT_SEC` text DEFAULT NULL, `US_MOMENTUM_DAILY_PROFIT_RISK_BUDGET_ENABLED` text DEFAULT NULL, `US_MOMENTUM_DAILY_PROFIT_RISK_BUDGET_COOLDOWN_SEC` text DEFAULT NULL, `US_MOMENTUM_FORCE_BUY_QTY` text DEFAULT NULL, `US_MOMENTUM_SESSION_START` text DEFAULT NULL, `US_MOMENTUM_BUY_WAIT_LOG_SEC` text DEFAULT NULL, `US_MOMENTUM_FX_FEE_RATE` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=96 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
### 🌍 환경 설정 (Env Config) #### `env_config` **PK**: `id` | AUTO_INCREMENT=1060 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `created_at` | `varchar(30)` | NOT NULL | | 설정행 생성시각 | | `STOP_LOSS_PCT` | `text` | NULL | NULL | 공통env: 손절 % (STOP_LOSS_PCT) | | `MAX_POSITION_PCT` | `text` | NULL | NULL | 공통env: 최대 POSITION % (MAX_POSITION_PCT) | | `USE_SLOT_CAP` | `text` | NULL | NULL | 공통env: 사용_ SLOT CAP (USE_SLOT_CAP) | | `SLOT_CAP_PCT` | `text` | NULL | NULL | 공통env: SLOT CAP % (SLOT_CAP_PCT) | | `MAX_STOCKS` | `text` | NULL | NULL | 공통env: 동시보유상한 (MAX_STOCKS) | | `USE_KELLY` | `text` | NULL | NULL | 공통env: 사용_ KELLY (USE_KELLY) | | `RISK_PCT_PER_TRADE` | `text` | NULL | NULL | 공통env: RISK % PER TRADE (RISK_PCT_PER_TRADE) | | `MIN_POSITION_AMOUNT` | `text` | NULL | NULL | 공통env: 최소 POSITION AMOUNT (MIN_POSITION_AMOUNT) | | `USE_RISK_CHECK` | `text` | NULL | NULL | 리스크 체크 사용 | | `DAILY_STOP_LOSS_PCT` | `text` | NULL | NULL | 일일 손실 한도(분율, -0.05=-5%) | | `CONSECUTIVE_LOSS_LIMIT` | `text` | NULL | NULL | 연속 손실 제한(회) | | `DAILY_PROFIT_TARGET_KRW` | `text` | NULL | NULL | 목표 금액(원) | | `DAILY_PROFIT_TARGET_PCT` | `text` | NULL | NULL | 목표 수익률(%) · 퍼센트 그대로 (예: 2.5 = 2.5%) · 0=미사용 | | `DAILY_PROFIT_TARGET_BUDGET_KRW` | `text` | NULL | NULL | 분모 운용한도(원) · 0 = ON 전략 TOTAL_BUDGET 합 자동 | | `DAILY_PROFIT_HALT_NEW_BUYS` | `text` | NULL | NULL | 신규매수 수동 중단 · 목표·손익과 무관한 수동 매수 잠금. ON=즉시 신규매수 전면 차단 / OFF=정상 (기본) | | `DAILY_PROFIT_NOTIFY_MM` | `text` | NULL | NULL | 달성 시 MM 알림 | | `USE_BAN_SYSTEM` | `text` | NULL | NULL | 공통env: 사용_ BAN SYSTEM (USE_BAN_SYSTEM) | | `BAN_HOURS` | `text` | NULL | NULL | 공통env: BAN HOURS (BAN_HOURS) | | `USE_STOCK_FILTER` | `text` | NULL | NULL | 공통env: 사용_ STOCK 필터 (USE_STOCK_FILTER) | | `RSI_OVERHEAT_THRESHOLD` | `text` | NULL | NULL | 공통env: RSI OVERHEAT THRESHOLD (RSI_OVERHEAT_THRESHOLD) | | `MIN_RECOVERY_RATIO` | `text` | NULL | NULL | 공통env: 최소 RECOVERY RATIO (MIN_RECOVERY_RATIO) | | `MAX_RECOVERY_RATIO` | `text` | NULL | NULL | 공통env: 최대 RECOVERY RATIO (MAX_RECOVERY_RATIO) | | `USE_TWAP` | `text` | NULL | NULL | 공통env: 사용_ TWAP (USE_TWAP) | | `TWAP_MIN_SPLIT` | `text` | NULL | NULL | 공통env: TWAP 최소 SPLIT (TWAP_MIN_SPLIT) | | `TWAP_MAX_SPLIT` | `text` | NULL | NULL | 공통env: TWAP 최대 SPLIT (TWAP_MAX_SPLIT) | | `TWAP_MIN_DELAY` | `text` | NULL | NULL | 공통env: TWAP 최소 DELAY (TWAP_MIN_DELAY) | | `TWAP_MAX_DELAY` | `text` | NULL | NULL | 공통env: TWAP 최대 DELAY (TWAP_MAX_DELAY) | | `USE_ML_SIGNAL` | `text` | NULL | NULL | 공통env: 사용_ ML SIGNAL (USE_ML_SIGNAL) | | `ML_MIN_PROBABILITY` | `text` | NULL | NULL | 공통env: ML 최소 PROBABILITY (ML_MIN_PROBABILITY) | | `USE_NEWS_ANALYSIS` | `text` | NULL | NULL | 공통env: 사용_ NEWS ANALYSIS (USE_NEWS_ANALYSIS) | | `NEWS_ANALYSIS_HOUR` | `text` | NULL | NULL | 공통env: NEWS ANALYSIS HOUR (NEWS_ANALYSIS_HOUR) | | `NEWS_MAX_COUNT` | `text` | NULL | NULL | 공통env: NEWS 최대 COUNT (NEWS_MAX_COUNT) | | `USE_QUICK_PROFIT_PROTECTION` | `text` | NULL | NULL | 공통env: 사용_ QUICK PROFIT PROTECTION (USE_QUICK_PROFIT_PROTECTION) | | `HIGH_PRICE_CHASE_THRESHOLD` | `text` | NULL | NULL | 공통env: HIGH PRICE CHASE THRESHOLD (HIGH_PRICE_CHASE_THRESHOLD) | | `MAX_DAILY_CHANGE_PCT` | `text` | NULL | NULL | 공통env: 일일매수횟수상한 CHANGE % (MAX_DAILY_CHANGE_PCT) | | `MA20_MAX_ABOVE_PCT` | `text` | NULL | NULL | 공통env: MA20 최대 ABOVE % (MA20_MAX_ABOVE_PCT) | | `VOLUME_AVG_MULTIPLIER` | `text` | NULL | NULL | 공통env: 거래량 UME 평균 배수 IPLIER (VOLUME_AVG_MULTIPLIER) | | `CANDLE_OPEN_PRICE_BUFFER` | `text` | NULL | NULL | 공통env: CANDLE OPEN PRICE BUFFER (CANDLE_OPEN_PRICE_BUFFER) | | `MIN_CANDLE_LEN_TAIL` | `text` | NULL | NULL | 공통env: 최소 CANDLE LEN TAIL (MIN_CANDLE_LEN_TAIL) | | `MIN_PRICE_TAIL` | `text` | NULL | NULL | 공통env: 최소가격 TAIL (MIN_PRICE_TAIL) | | `INTRADAY_INVESTOR_NET_BUY_THRESHOLD` | `text` | NULL | NULL | 공통env: INTRADAY INVESTOR NET BUY THRESHOLD (INTRADAY_INVESTOR_NET_BUY_THRESHOLD) | | `SIZE_CLASS_LARGE_MIN` | `text` | NULL | NULL | 공통env: SIZE CLASS LARGE 최소 (SIZE_CLASS_LARGE_MIN) | | `SIZE_CLASS_MID_MIN` | `text` | NULL | NULL | 공통env: SIZE CLASS MID 최소 (SIZE_CLASS_MID_MIN) | | `SCAN_INVESTOR_NET_STRONG` | `text` | NULL | NULL | 공통env: SCAN INVESTOR NET STRONG (SCAN_INVESTOR_NET_STRONG) | | `SCAN_INVESTOR_SCORE_STRONG` | `text` | NULL | NULL | 공통env: SCAN INVESTOR SCORE STRONG (SCAN_INVESTOR_SCORE_STRONG) | | `SCAN_INVESTOR_SCORE_WEAK` | `text` | NULL | NULL | 공통env: SCAN INVESTOR SCORE WEAK (SCAN_INVESTOR_SCORE_WEAK) | | `SCAN_INVESTOR_BONUS_STRONG` | `text` | NULL | NULL | 공통env: SCAN INVESTOR BONUS STRONG (SCAN_INVESTOR_BONUS_STRONG) | | `SCAN_INVESTOR_BONUS_WEAK` | `text` | NULL | NULL | 공통env: SCAN INVESTOR BONUS WEAK (SCAN_INVESTOR_BONUS_WEAK) | | `SCAN_VOLUME_BONUS_MIN` | `text` | NULL | NULL | 공통env: SCAN 거래량 UME BONUS 최소 (SCAN_VOLUME_BONUS_MIN) | | `SCAN_VOLUME_BONUS_POINT` | `text` | NULL | NULL | 공통env: SCAN 거래량 UME BONUS POINT (SCAN_VOLUME_BONUS_POINT) | | `SCAN_EXEC_STRENGTH_HIGH` | `text` | NULL | NULL | 공통env: SCAN EXEC STRENGTH HIGH (SCAN_EXEC_STRENGTH_HIGH) | | `SCAN_EXEC_STRENGTH_MID` | `text` | NULL | NULL | 공통env: SCAN EXEC STRENGTH MID (SCAN_EXEC_STRENGTH_MID) | | `SCAN_EXEC_BONUS_HIGH` | `text` | NULL | NULL | 공통env: SCAN EXEC BONUS HIGH (SCAN_EXEC_BONUS_HIGH) | | `SCAN_EXEC_BONUS_MID` | `text` | NULL | NULL | 공통env: SCAN EXEC BONUS MID (SCAN_EXEC_BONUS_MID) | | `SCAN_SCORE_DROP_WEIGHT` | `text` | NULL | NULL | 공통env: SCAN SCORE 되돌림/하락 WEIGHT (SCAN_SCORE_DROP_WEIGHT) | | `SCAN_SCORE_RECOVERY_WEIGHT` | `text` | NULL | NULL | 공통env: SCAN SCORE RECOVERY WEIGHT (SCAN_SCORE_RECOVERY_WEIGHT) | | `MIN_SCORE_DISPLAY` | `text` | NULL | NULL | 공통env: 최소 SCORE DISPLAY (MIN_SCORE_DISPLAY) | | `MM_TOP_N` | `text` | NULL | NULL | 공통env: MM TOP N (MM_TOP_N) | | `SLOT_MONEY_DEFAULT` | `text` | NULL | NULL | 공통env: 슬롯금액 DEFAULT (SLOT_MONEY_DEFAULT) | | `SLOT_BASE_AMOUNT_CAP` | `text` | NULL | NULL | 공통env: SLOT BASE AMOUNT CAP (SLOT_BASE_AMOUNT_CAP) | | `SIZE_CLASS_SMALL_RATIO` | `text` | NULL | NULL | 공통env: SIZE CLASS SMALL RATIO (SIZE_CLASS_SMALL_RATIO) | | `SIZE_CLASS_MID_RATIO` | `text` | NULL | NULL | 공통env: SIZE CLASS MID RATIO (SIZE_CLASS_MID_RATIO) | | `SCAN_MIN_PREV_DAY_PCT` | `text` | NULL | NULL | 공통env: SCAN 최소 PREV DAY % (SCAN_MIN_PREV_DAY_PCT) | | `UPDATE_UNIVERSE_MIN_CANDIDATES` | `text` | NULL | NULL | 공통env: UPDATE 유니버스 최소 CANDIDATES (UPDATE_UNIVERSE_MIN_CANDIDATES) | | `UPDATE_UNIVERSE_MIN_SCORE` | `text` | NULL | NULL | 공통env: UPDATE 유니버스 최소 SCORE (UPDATE_UNIVERSE_MIN_SCORE) | | `UPDATE_UNIVERSE_FALLBACK_TOP_N` | `text` | NULL | NULL | 공통env: UPDATE 유니버스 FALLBACK TOP N (UPDATE_UNIVERSE_FALLBACK_TOP_N) | | `UPDATE_UNIVERSE_TOP_LOG` | `text` | NULL | NULL | 공통env: UPDATE 유니버스 TOP LOG (UPDATE_UNIVERSE_TOP_LOG) | | `UPDATE_UNIVERSE_TOP_N` | `text` | NULL | NULL | 공통env: UPDATE 유니버스 TOP N (UPDATE_UNIVERSE_TOP_N) | | `SCAN_INTERVAL_SEC` | `text` | NULL | NULL | 공통env: SCAN INTERVAL 초 (SCAN_INTERVAL_SEC) | | `USE_RANDOM_SPLIT` | `text` | NULL | NULL | 공통env: 사용_ RANDOM SPLIT (USE_RANDOM_SPLIT) | | `FORCE_MARKET_OPEN` | `text` | NULL | NULL | 공통env: FORCE MARKET OPEN (FORCE_MARKET_OPEN) | | `FORCE_BUY_TEST` | `text` | NULL | NULL | 공통env: 강제매수테스트 TEST (FORCE_BUY_TEST) | | `TOTAL_DEPOSIT` | `text` | NULL | NULL | 공통env: TOTAL DEPOSIT (TOTAL_DEPOSIT) | | `ROUND_TRIP_COST_PCT` | `text` | NULL | NULL | 공통env: ROUND TRIP COST % (ROUND_TRIP_COST_PCT) | | `POP_NET_PCT` | `text` | NULL | NULL | 공통env: POP NET % (POP_NET_PCT) | | `LOCK_NET_PCT` | `text` | NULL | NULL | 공통env: LOCK NET % (LOCK_NET_PCT) | | `MAX_LOSS_PER_TRADE_KRW` | `text` | NULL | NULL | 공통env: 최대 LOSS PER TRADE 원 (MAX_LOSS_PER_TRADE_KRW) | | `MIN_DROP_PCT_FOR_LOSS_CUT` | `text` | NULL | NULL | 공통env: 최소 되돌림/하락 % FOR LOSS CUT (MIN_DROP_PCT_FOR_LOSS_CUT) | | `KIS_APP_KEY_REAL` | `text` | NULL | NULL | 공통env: KIS APP KEY REAL (KIS_APP_KEY_REAL) | | `KIS_APP_SECRET_REAL` | `text` | NULL | NULL | 공통env: KIS APP 초 RET REAL (KIS_APP_SECRET_REAL) | | `KIS_APP_KEY_MOCK` | `text` | NULL | NULL | 공통env: KIS APP KEY MOCK (KIS_APP_KEY_MOCK) | | `KIS_APP_SECRET_MOCK` | `text` | NULL | NULL | 공통env: KIS APP 초 RET MOCK (KIS_APP_SECRET_MOCK) | | `KIS_ACCOUNT_NO_REAL` | `text` | NULL | NULL | 공통env: KIS ACCOUNT NO REAL (KIS_ACCOUNT_NO_REAL) | | `KIS_ACCOUNT_CODE_REAL` | `text` | NULL | NULL | 공통env: KIS ACCOUNT CODE REAL (KIS_ACCOUNT_CODE_REAL) | | `KIS_ACCOUNT_NO_MOCK` | `text` | NULL | NULL | 공통env: KIS ACCOUNT NO MOCK (KIS_ACCOUNT_NO_MOCK) | | `KIS_ACCOUNT_CODE_MOCK` | `text` | NULL | NULL | 공통env: KIS ACCOUNT CODE MOCK (KIS_ACCOUNT_CODE_MOCK) | | `KIS_MOCK` | `text` | NULL | NULL | 공통env: KIS MOCK (KIS_MOCK) | | `TAKE_PROFIT_PCT` | `text` | NULL | NULL | 공통env: 익절 % (TAKE_PROFIT_PCT) | | `MIN_DROP_RATE` | `text` | NULL | NULL | 공통env: 최소 되돌림/하락 RATE (MIN_DROP_RATE) | | `MIN_RECOVERY_RATIO_SHORT` | `text` | NULL | NULL | 공통env: 최소 RECOVERY RATIO SHORT (MIN_RECOVERY_RATIO_SHORT) | | `QUICK_PROFIT_PROTECT_HOURS` | `text` | NULL | NULL | 공통env: QUICK PROFIT PROTECT HOURS (QUICK_PROFIT_PROTECT_HOURS) | | `QUICK_PROFIT_MAX_RATIO` | `text` | NULL | NULL | 공통env: QUICK PROFIT 최대 RATIO (QUICK_PROFIT_MAX_RATIO) | | `QUICK_PROFIT_CURRENT_MIN` | `text` | NULL | NULL | 공통env: QUICK PROFIT CURRENT 최소 (QUICK_PROFIT_CURRENT_MIN) | | `MIN_HOLD_EARLY_TAKE_PCT` | `text` | NULL | NULL | 공통env: 최소보유 EARLY TAKE % (MIN_HOLD_EARLY_TAKE_PCT) | | `MIN_HOLD_HIGH_PCT` | `text` | NULL | NULL | 공통env: 최소보유 HIGH % (MIN_HOLD_HIGH_PCT) | | `MIN_HOLD_DROP_FROM_HIGH` | `text` | NULL | NULL | 공통env: 최소보유 되돌림/하락 FROM HIGH (MIN_HOLD_DROP_FROM_HIGH) | | `POST_HOLD_TAKE_PCT` | `text` | NULL | NULL | 공통env: POST HOLD TAKE % (POST_HOLD_TAKE_PCT) | | `POST_HOLD_DROP_FROM_HIGH` | `text` | NULL | NULL | 공통env: POST HOLD 되돌림/하락 FROM HIGH (POST_HOLD_DROP_FROM_HIGH) | | `MAX_PER` | `text` | NULL | NULL | 공통env: 최대 PER (MAX_PER) | | `MAX_PEG` | `text` | NULL | NULL | 공통env: 최대 PEG (MAX_PEG) | | `MIN_GROWTH_PCT` | `text` | NULL | NULL | 공통env: 최소 GROWTH % (MIN_GROWTH_PCT) | | `DCA_INTERVALS` | `text` | NULL | NULL | 공통env: DCA INTERVALS (DCA_INTERVALS) | | `DCA_AMOUNTS` | `text` | NULL | NULL | 공통env: DCA AMOUNTS (DCA_AMOUNTS) | | `MM_SERVER_URL` | `text` | NULL | NULL | 공통env: MM SERVER URL (MM_SERVER_URL) | | `MM_BOT_TOKEN_` | `text` | NULL | NULL | 공통env: MM BOT TOKEN (MM_BOT_TOKEN_) | | `MATTERMOST_CHANNEL` | `text` | NULL | NULL | 공통env: MATTERMOST CHANNEL (MATTERMOST_CHANNEL) | | `GEMINI_API_KEY` | `text` | NULL | NULL | 공통env: GEMINI API KEY (GEMINI_API_KEY) | | `AI_JOURNAL_LINES` | `text` | NULL | NULL | 공통env: AI JOURNAL LINES (AI_JOURNAL_LINES) | | `ANTHROPIC_API_KEY` | `text` | NULL | NULL | 공통env: ANTHROPIC API KEY (ANTHROPIC_API_KEY) | | `CLAUDE_MODEL_ID` | `text` | NULL | NULL | 공통env: CLAUDE 모드 L ID (CLAUDE_MODEL_ID) | | `CLAUDE_MAX_TOKENS` | `text` | NULL | NULL | 공통env: CLAUDE 최대 TOKENS (CLAUDE_MAX_TOKENS) | | `MM_BUTLER_CHANNEL` | `text` | NULL | NULL | 공통env: MM BUTLER CHANNEL (MM_BUTLER_CHANNEL) | | `MM_DUAL_CHANNEL_ENABLED` | `text` | NULL | NULL | 공통env: MM DUAL CHANNEL ON/OFF (MM_DUAL_CHANNEL_ENABLED) | | `OPENROUTER_API_KEY` | `text` | NULL | NULL | 공통env: OPENROUTER API KEY (OPENROUTER_API_KEY) | | `OPENROUTER_MODEL_ID` | `text` | NULL | NULL | 공통env: OPENROUTER 모드 L ID (OPENROUTER_MODEL_ID) | | `KIS_LONG_MM_CHANNEL` | `text` | NULL | NULL | 공통env: KIS LONG MM CHANNEL (KIS_LONG_MM_CHANNEL) | | `LONG_DAILY_LOOKBACK_DAYS` | `text` | NULL | NULL | 공통env: LONG DAILY LOOKBACK DAYS (LONG_DAILY_LOOKBACK_DAYS) | | `LONG_MA_SHORT_DAYS` | `text` | NULL | NULL | 공통env: LONG MA SHORT DAYS (LONG_MA_SHORT_DAYS) | | `LONG_MA_LONG_DAYS` | `text` | NULL | NULL | 공통env: LONG MA LONG DAYS (LONG_MA_LONG_DAYS) | | `LONG_REPORT_AM_HOUR` | `text` | NULL | NULL | 공통env: LONG REPORT AM HOUR (LONG_REPORT_AM_HOUR) | | `LONG_REPORT_AM_MIN` | `text` | NULL | NULL | 공통env: LONG REPORT AM 최소 (LONG_REPORT_AM_MIN) | | `LONG_REPORT_PM_HOUR` | `text` | NULL | NULL | 공통env: LONG REPORT PM HOUR (LONG_REPORT_PM_HOUR) | | `LONG_REPORT_PM_MIN` | `text` | NULL | NULL | 공통env: LONG REPORT PM 최소 (LONG_REPORT_PM_MIN) | | `LONG_NEWS_ENABLED` | `text` | NULL | NULL | 공통env: LONG NEWS ON/OFF (LONG_NEWS_ENABLED) | | `LONG_NEWS_INTERVAL_MIN` | `text` | NULL | NULL | 공통env: LONG NEWS INTERVAL 최소 (LONG_NEWS_INTERVAL_MIN) | | `LONG_NEWS_ACTIVE_START_HOUR` | `text` | NULL | NULL | 공통env: LONG NEWS ACTIVE START HOUR (LONG_NEWS_ACTIVE_START_HOUR) | | `LONG_NEWS_ACTIVE_END_HOUR` | `text` | NULL | NULL | 공통env: LONG NEWS ACTIVE END HOUR (LONG_NEWS_ACTIVE_END_HOUR) | | `LONG_ANALYSIS_DELAY_MIN_SEC` | `text` | NULL | NULL | 공통env: LONG ANALYSIS DELAY 최소 초 (LONG_ANALYSIS_DELAY_MIN_SEC) | | `LONG_ANALYSIS_DELAY_MAX_SEC` | `text` | NULL | NULL | 공통env: LONG ANALYSIS DELAY 최대 초 (LONG_ANALYSIS_DELAY_MAX_SEC) | | `RSI_PERIOD` | `text` | NULL | NULL | 공통env: RSI 기간 (RSI_PERIOD) | | `KIS_WS_URL_REAL` | `text` | NULL | NULL | 공통env: URL REAL (KIS_WS_URL_REAL) | | `KIS_WS_URL_MOCK` | `text` | NULL | NULL | 공통env: URL MOCK (KIS_WS_URL_MOCK) | | `KIS_WS_MOCK_ENABLED` | `text` | NULL | NULL | 공통env: MOCK ON/OFF (KIS_WS_MOCK_ENABLED) | | `REENTRY_COOLDOWN_SEC` | `text` | NULL | NULL | 공통env: REENTRY 쿨다운 초 (REENTRY_COOLDOWN_SEC) | | `TIME_START` | `text` | NULL | NULL | 공통env: 매수시작 (TIME_START) | | `TIME_END` | `text` | NULL | NULL | 공통env: 매수종료 (TIME_END) | | `SELL_FAILURE_BACKOFF_SEC` | `text` | NULL | NULL | 공통env: SELL FAILURE BACKOFF 초 (SELL_FAILURE_BACKOFF_SEC) | | `BROKER_HOLDINGS_CACHE_TTL_SEC` | `text` | NULL | NULL | 공통env: BROKER HOLDINGS CACHE TTL 초 (BROKER_HOLDINGS_CACHE_TTL_SEC) | | `GHOST_POSITION_COOLDOWN_SEC` | `text` | NULL | NULL | 공통env: GHOST POSITION 쿨다운 초 (GHOST_POSITION_COOLDOWN_SEC) | | `WS_TICK_SAVE_ENABLED` | `text` | NULL | NULL | 공통env: WS TICK SAVE ON/OFF (WS_TICK_SAVE_ENABLED) | | `WS_TICK_BUFFER_MAX_PER_CODE` | `text` | NULL | NULL | 공통env: WS TICK BUFFER 최대 PER CODE (WS_TICK_BUFFER_MAX_PER_CODE) | | `WS_TICK_DB_BATCH_SIZE` | `text` | NULL | NULL | 공통env: WS TICK DB BATCH SIZE (WS_TICK_DB_BATCH_SIZE) | | `WS_TICK_DB_FLUSH_SEC` | `text` | NULL | NULL | 공통env: WS TICK DB FLUSH 초 (WS_TICK_DB_FLUSH_SEC) | | `WS_TICK_WRITE_QUEUE_MAX` | `text` | NULL | NULL | 공통env: WS TICK WRITE QUEUE 최대 (WS_TICK_WRITE_QUEUE_MAX) | | `WS_TICK_KEEP_DAYS` | `text` | NULL | NULL | 공통env: WS TICK KEEP DAYS (WS_TICK_KEEP_DAYS) | | `WS_TICK_RECORD_SCOPE` | `text` | NULL | NULL | 공통env: WS TICK RECORD SCOPE (WS_TICK_RECORD_SCOPE) | | `WS_TICK_DEFAULT_MARKET` | `text` | NULL | NULL | 공통env: WS TICK DEFAULT MARKET (WS_TICK_DEFAULT_MARKET) | | `WS_TICK_DEFAULT_EXCHANGE` | `text` | NULL | NULL | 공통env: WS TICK DEFAULT EXCHANGE (WS_TICK_DEFAULT_EXCHANGE) | | `WS_TICK_DEFAULT_CURRENCY` | `text` | NULL | NULL | 공통env: WS TICK DEFAULT CURRENCY (WS_TICK_DEFAULT_CURRENCY) | | `WS_ORDERBOOK_SAVE_ENABLED` | `text` | NULL | NULL | 호가 시계열(KIWOOM_0D) — 구독후보 ~3초 덤프 · 틱처럼 후보·보유만 연속 저장(source=kiwoom_0d) · 파람서치 호가축용 · 봇 재시작 필요 · 필터와 무관 | | `WS_PROGRAM_SAVE_ENABLED` | `text` | NULL | NULL | 프로그램 시계열 — 구독후보 ~3초 덤프 · SAVE와 동일 Recorder · 봇 재시작 필요 · 필터와 무관 | | `WS_TRIGGER_SNAPSHOT_DB_INTERVAL_SEC` | `text` | NULL | NULL | 호가/프로그램 시계열 간격(초) · SAVE ON일 때만 · 종목당 최소 저장 간격 · 봇 재시작 필요 | | `WS_TRIGGER_SNAPSHOT_DB_BATCH_SIZE` | `text` | NULL | NULL | 공통env: WS TRIGGER SNAPSHOT DB BATCH SIZE (WS_TRIGGER_SNAPSHOT_DB_BATCH_SIZE) | | `WS_TRIGGER_SNAPSHOT_DB_FLUSH_SEC` | `text` | NULL | NULL | 공통env: WS TRIGGER SNAPSHOT DB FLUSH 초 (WS_TRIGGER_SNAPSHOT_DB_FLUSH_SEC) | | `WS_TRIGGER_SNAPSHOT_WRITE_QUEUE_MAX` | `text` | NULL | NULL | 공통env: WS TRIGGER SNAPSHOT WRITE QUEUE 최대 (WS_TRIGGER_SNAPSHOT_WRITE_QUEUE_MAX) | | `WS_ORDERBOOK_KEEP_DAYS` | `text` | NULL | NULL | 공통env: WS 호가 KEEP DAYS (WS_ORDERBOOK_KEEP_DAYS) | | `WS_PROGRAM_KEEP_DAYS` | `text` | NULL | NULL | 공통env: WS 프로그램매매 KEEP DAYS (WS_PROGRAM_KEEP_DAYS) | | `BACKTEST_USE_TRIGGER_SNAPSHOT_DB` | `text` | NULL | NULL | 공통env: BACKTEST 사용_ TRIGGER SNAPSHOT DB (BACKTEST_USE_TRIGGER_SNAPSHOT_DB) | | `WHIPSAW_FILTER_ENABLED` | `text` | NULL | NULL | 휩쏘 필터(글로벌) | | `WHIPSAW_BACKTEST_OHLC_FALLBACK` | `text` | NULL | NULL | 공통env: 휩쏘 BACKTEST OHLC FALLBACK (WHIPSAW_BACKTEST_OHLC_FALLBACK) | | `WHIPSAW_MODE` | `text` | NULL | NULL | 공통env: 휩쏘 모드 (WHIPSAW_MODE) | | `WHIPSAW_SUBBAR_SEC` | `text` | NULL | NULL | 휩쏘 미니봉(초) · 틱을 N초 봉으로 묶음 · 실매 기본 30 · Optuna 꼬리 TPE 탐색 | | `WHIPSAW_LOOKBACK_SEC` | `text` | NULL | NULL | 휩쏘 룩백(초) · 신호 직전 몇 초를 볼지 · 실매 기본 90 | | `WHIPSAW_DIP_PCT` | `text` | NULL | NULL | 휩쏘 하락폭(분율, 0.003=0.3%) | | `WHIPSAW_RECOVERY_TOL_PCT` | `text` | NULL | NULL | 휩쏘 회복 허용(분율, 0.001=0.1%) | | `WHIPSAW_MIN_SUBBARS` | `text` | NULL | NULL | 공통env: 휩쏘 최소 SUBBARS (WHIPSAW_MIN_SUBBARS) | | `WHIPSAW_TICK_BUFFER_LIMIT` | `text` | NULL | NULL | 공통env: 휩쏘 TICK BUFFER LIMIT (WHIPSAW_TICK_BUFFER_LIMIT) | | `USE_KELLY_FORMULA` | `text` | NULL | NULL | 공통env: 사용_ KELLY FORMULA (USE_KELLY_FORMULA) | | `KELLY_MULTIPLIER` | `text` | NULL | NULL | 공통env: KELLY 배수 IPLIER (KELLY_MULTIPLIER) | | `USE_MARKET_IOC` | `text` | NULL | NULL | 매수 시장가 IOC · 실전 매수 ORD_DVSN=13(IOC) · OFF=01 · 모의는 01 고정 | | `KIS_PRICE_CACHE_TTL_SEC` | `text` | NULL | NULL | 공통env: KIS PRICE CACHE TTL 초 (KIS_PRICE_CACHE_TTL_SEC) | | `MIN_HOLD_AFTER_BUY_SEC` | `text` | NULL | NULL | 공통env: 최소보유 AFTER BUY 초 (MIN_HOLD_AFTER_BUY_SEC) | | `MIN_HOLD_HOURS` | `text` | NULL | NULL | 공통env: 최소보유 HOURS (MIN_HOLD_HOURS) | | `MAX_RECOVERY_RATIO_3M` | `text` | NULL | NULL | 공통env: 최대 RECOVERY RATIO 3M (MAX_RECOVERY_RATIO_3M) | | `CANDIDATE_LIST_TOP_N_LIGHT` | `text` | NULL | NULL | 공통env: CANDIDATE LIST TOP N LIGHT (CANDIDATE_LIST_TOP_N_LIGHT) | | `SCAN_UNIVERSE_MAX_CODES` | `text` | NULL | NULL | 공통env: SCAN 유니버스 최대 CODES (SCAN_UNIVERSE_MAX_CODES) | | `KIS_APP_KEY` | `text` | NULL | NULL | 공통env: KIS APP KEY (KIS_APP_KEY) | | `KIS_APP_SECRET` | `text` | NULL | NULL | 공통env: KIS APP 초 RET (KIS_APP_SECRET) | | `KIS_ACCOUNT_NO` | `text` | NULL | NULL | 공통env: KIS ACCOUNT NO (KIS_ACCOUNT_NO) | | `KIS_ACCOUNT_CODE` | `text` | NULL | NULL | 공통env: KIS ACCOUNT CODE (KIS_ACCOUNT_CODE) | | `GEMINI_MODEL_ID` | `text` | NULL | NULL | 공통env: GEMINI 모드 L ID (GEMINI_MODEL_ID) | | `MM_BUTLER_POLL_SEC` | `text` | NULL | NULL | 공통env: MM BUTLER POLL 초 (MM_BUTLER_POLL_SEC) | | `AI_SOURCE_MAX_CHARS` | `text` | NULL | NULL | 공통env: AI SOURCE 최대 CHARS (AI_SOURCE_MAX_CHARS) | | `FEE_RATE_PCT` | `text` | NULL | NULL | 공통env: 수수료율 % (FEE_RATE_PCT) | | `SELL_TAX_RATE_PCT` | `text` | NULL | NULL | 공통env: 매도세금 RATE % (SELL_TAX_RATE_PCT) | | `KIWOOM_APP_KEY_REAL` | `text` | NULL | NULL | 공통env: KIWOOM APP KEY REAL (KIWOOM_APP_KEY_REAL) | | `KIWOOM_APP_SECRET_REAL` | `text` | NULL | NULL | 공통env: KIWOOM APP 초 RET REAL (KIWOOM_APP_SECRET_REAL) | | `KIWOOM_APP_KEY_MOCK` | `text` | NULL | NULL | 공통env: KIWOOM APP KEY MOCK (KIWOOM_APP_KEY_MOCK) | | `KIWOOM_APP_SECRET_MOCK` | `text` | NULL | NULL | 공통env: KIWOOM APP 초 RET MOCK (KIWOOM_APP_SECRET_MOCK) | | `KIWOOM_APP_KEY` | `text` | NULL | NULL | 공통env: KIWOOM APP KEY (KIWOOM_APP_KEY) | | `KIWOOM_APP_SECRET` | `text` | NULL | NULL | 공통env: KIWOOM APP 초 RET (KIWOOM_APP_SECRET) | | `PERMANENT_WS_CODES` | `text` | NULL | NULL | 공통env: PERMANENT WS CODES (PERMANENT_WS_CODES) | | `USE_MARKET_REGIME_FILTER` | `text` | NULL | NULL | 공통env: 사용_ MARKET REGIME 필터 (USE_MARKET_REGIME_FILTER) | | `MARKET_REGIME_MIN_RSI` | `text` | NULL | NULL | 공통env: MARKET REGIME 최소 RSI (MARKET_REGIME_MIN_RSI) | | `USE_THEME_HEAT_FILTER` | `text` | NULL | NULL | 공통env: 사용_ THEME HEAT 필터 (USE_THEME_HEAT_FILTER) | | `THEME_HEAT_RSI_MAX` | `text` | NULL | NULL | 공통env: THEME HEAT RSI상한 (THEME_HEAT_RSI_MAX) | | `STRATEGY_SAME_CODE_POLICY` | `text` | NULL | NULL | 공통env: 전략 SAME CODE POLICY (STRATEGY_SAME_CODE_POLICY) | | `ORDER_CASH_PCT` | `text` | NULL | NULL | 공통env: ORDER CASH % (ORDER_CASH_PCT) | | `ORDER_CASH_FEE_BUFFER` | `text` | NULL | NULL | 공통env: ORDER CASH FEE BUFFER (ORDER_CASH_FEE_BUFFER) | | `ORDER_CASH_DIVIDE_BY_MAX_STOCKS` | `text` | NULL | NULL | 공통env: ORDER CASH DIVIDE BY 동시보유상한 (ORDER_CASH_DIVIDE_BY_MAX_STOCKS) | | `ACCOUNT_CASH_PERSIST_SEC` | `text` | NULL | NULL | 공통env: ACCOUNT CASH PERSIST 초 (ACCOUNT_CASH_PERSIST_SEC) | | `BACKTEST_EXIT_CHECKS_PER_BAR` | `text` | NULL | NULL | 공통env: BACKTEST EXIT CHECKS PER BAR (BACKTEST_EXIT_CHECKS_PER_BAR) | | `RANKING_POLL_INTERVAL_SEC` | `text` | NULL | NULL | 공통env: RANKING POLL INTERVAL 초 (RANKING_POLL_INTERVAL_SEC) | | `KIS_HTS_ID` | `text` | NULL | NULL | 공통env: KIS HTS ID (KIS_HTS_ID) | | `CONDITION_POLL_INTERVAL_SEC` | `text` | NULL | NULL | 공통env: CONDITION POLL INTERVAL 초 (CONDITION_POLL_INTERVAL_SEC) | | `CONDITION_EXIT_GRACE_SEC` | `text` | NULL | NULL | 공통env: CONDITION EXIT GRACE 초 (CONDITION_EXIT_GRACE_SEC) | | `UNIVERSE_HISTORY_SAVE` | `text` | NULL | NULL | 공통env: 유니버스 HISTORY SAVE (UNIVERSE_HISTORY_SAVE) | | `WS_GAP_FILL_OFF_HOURS` | `text` | NULL | NULL | 공통env: WS GAP FILL OFF HOURS (WS_GAP_FILL_OFF_HOURS) | | `WS_GAP_FILL_LIMIT` | `text` | NULL | NULL | 공통env: WS GAP FILL LIMIT (WS_GAP_FILL_LIMIT) | | `WS_TIMEFRAMES` | `text` | NULL | NULL | 공통env: WS TIMEFRAMES (WS_TIMEFRAMES) | | `WS_GAP_FILL_KIS_FALLBACK` | `text` | NULL | NULL | 공통env: WS GAP FILL KIS FALLBACK (WS_GAP_FILL_KIS_FALLBACK) | | `MAX_BUY_AMOUNT_PER_STOCK` | `text` | NULL | NULL | 공통env: 1회최대매수금액 PER STOCK (MAX_BUY_AMOUNT_PER_STOCK) | | `KIS_MIN_INTERVAL_SEC` | `text` | NULL | NULL | 공통 폴백 최소간격(초) · 위 도메인별 키 미설정 시 폴백 | | `KIS_REST_MAX_RETRIES` | `text` | NULL | NULL | 공통env: KIS REST 최대 RETRIES (KIS_REST_MAX_RETRIES) | | `KIS_REST_BACKOFF_CAP_SEC` | `text` | NULL | NULL | 공통env: KIS REST BACKOFF CAP 초 (KIS_REST_BACKOFF_CAP_SEC) | | `KIS_REST_TIMEOUT_SEC` | `text` | NULL | NULL | 공통env: KIS REST TIMEOUT 초 (KIS_REST_TIMEOUT_SEC) | | `MARKET_GUARD_ENABLED` | `text` | NULL | NULL | 공통env: MARKET GUARD ON/OFF (MARKET_GUARD_ENABLED) | | `MARKET_GUARD_5MIN_DROP_PCT` | `text` | NULL | NULL | 공통env: MARKET GUARD 5MIN 되돌림/하락 % (MARKET_GUARD_5MIN_DROP_PCT) | | `MARKET_GUARD_DAILY_DROP_PCT` | `text` | NULL | NULL | 공통env: MARKET GUARD DAILY 되돌림/하락 % (MARKET_GUARD_DAILY_DROP_PCT) | | `MARKET_GUARD_RECOVERY_PCT` | `text` | NULL | NULL | 공통env: MARKET GUARD RECOVERY % (MARKET_GUARD_RECOVERY_PCT) | | `MARKET_GUARD_INDEX_CODE` | `text` | NULL | NULL | 공통env: MARKET GUARD INDEX CODE (MARKET_GUARD_INDEX_CODE) | | `MARKET_GUARD_POLL_SEC` | `text` | NULL | NULL | 공통env: MARKET GUARD POLL 초 (MARKET_GUARD_POLL_SEC) | | `MARKET_GUARD_INDEX_CANDLE_KEEP_MIN` | `text` | NULL | NULL | 공통env: MARKET GUARD INDEX CANDLE KEEP 최소 (MARKET_GUARD_INDEX_CANDLE_KEEP_MIN) | | `MARKET_GUARD_PERSIST_STATE` | `text` | NULL | NULL | 공통env: MARKET GUARD PERSIST STATE (MARKET_GUARD_PERSIST_STATE) | | `STOCK_SHARE_DENOM` | `text` | NULL | NULL | 공통env: STOCK SHARE DENOM (STOCK_SHARE_DENOM) | | `EXCLUDE_NON_STOCK` | `text` | NULL | NULL | 비본주(우선주·ETF·ETN) 매수 제외 · 후보 name==code 여도 코드 끝 5/7/9·K/L… 로 우선주 차단 | | `WS_PROVIDER` | `text` | NULL | NULL | 공통env: WS PROVIDER (WS_PROVIDER) | | `WS_SUBSCRIBE_KIS_MINIMAL` | `text` | NULL | NULL | 공통env: WS SUBSCRIBE KIS 최소 IMAL (WS_SUBSCRIBE_KIS_MINIMAL) | | `WS_VALIDATION_INTERVAL_SEC` | `text` | NULL | NULL | 공통env: WS VALIDATION INTERVAL 초 (WS_VALIDATION_INTERVAL_SEC) | | `WS_VALIDATION_DIFF_WARN_PCT` | `text` | NULL | NULL | 공통env: WS VALIDATION DIFF WARN % (WS_VALIDATION_DIFF_WARN_PCT) | | `KIWOOM_WS_FORCE_REAL` | `text` | NULL | NULL | 공통env: FORCE REAL (KIWOOM_WS_FORCE_REAL) | | `KIWOOM_WS_MAX_SUBSCRIPTIONS` | `text` | NULL | NULL | 키움WS 그룹당최대구독. 기본100. 0B체결·0D호가·0w프로그램. 한투41과별개 | | `KIWOOM_WS_REG_CHUNK_SIZE` | `text` | NULL | NULL | 공통env: REG CHUNK SIZE (KIWOOM_WS_REG_CHUNK_SIZE) | | `KIWOOM_WS_REG_GAP_SEC` | `text` | NULL | NULL | 공통env: REG GAP 초 (KIWOOM_WS_REG_GAP_SEC) | | `KIWOOM_WS_REG_DEBOUNCE_SEC` | `text` | NULL | NULL | 공통env: REG DEBOUNCE 초 (KIWOOM_WS_REG_DEBOUNCE_SEC) | | `KIWOOM_WS_ORDERBOOK_ENABLED` | `text` | NULL | NULL | 호가 WS(0D) 구독 · 키움 실시간 호가 수신(RAM) · 꺼면 필터·수집·시계열 모두 불가 | | `KIWOOM_WS_PROGRAM_ENABLED` | `text` | NULL | NULL | 프로그램 WS(0w) 구독 · 키움 프로그램매매 수신(RAM) | | `ORDERBOOK_FILTER_ENABLED` | `text` | NULL | NULL | 공통env: 호가 필터 ON/OFF (ORDERBOOK_FILTER_ENABLED) | | `ORDERBOOK_MAX_SPREAD_PCT` | `text` | NULL | NULL | 공통env: 호가 최대 SPREAD % (ORDERBOOK_MAX_SPREAD_PCT) | | `ORDERBOOK_ENTRY_BID_LEVELS` | `text` | NULL | NULL | 공통env: 호가 ENTRY BID LEVELS (ORDERBOOK_ENTRY_BID_LEVELS) | | `ORDERBOOK_ENTRY_BID_DEPTH_MULT` | `text` | NULL | NULL | 공통env: 호가 ENTRY BID DEPTH 배수 (ORDERBOOK_ENTRY_BID_DEPTH_MULT) | | `ORDERBOOK_ENTRY_ASK_MAX_MULT` | `text` | NULL | NULL | 공통env: 호가 ENTRY ASK 최대 배수 (ORDERBOOK_ENTRY_ASK_MAX_MULT) | | `ORDERBOOK_MIN_BID_ASK_RATIO` | `text` | NULL | NULL | 공통env: 호가 최소 BID ASK RATIO (ORDERBOOK_MIN_BID_ASK_RATIO) | | `ORDERBOOK_BREAKOUT_ASK_WALL_MAX_QTY` | `text` | NULL | NULL | 공통env: 호가 돌파 ASK WALL 최대 QTY (ORDERBOOK_BREAKOUT_ASK_WALL_MAX_QTY) | | `PROGRAM_FILTER_ENABLED` | `text` | NULL | NULL | 프로그램 필터(TRIGGER) — 실매 탈락 | | `PROGRAM_MIN_NET_BUY_QTY` | `text` | NULL | NULL | 공통env: 프로그램매매 최소 NET BUY QTY (PROGRAM_MIN_NET_BUY_QTY) | | `PROGRAM_MIN_NET_BUY_AMT` | `text` | NULL | NULL | 공통env: 프로그램매매 최소 NET BUY AMT (PROGRAM_MIN_NET_BUY_AMT) | | `PROGRAM_MAX_SELL_BUY_QTY_RATIO` | `text` | NULL | NULL | 공통env: 프로그램매매 최대 SELL BUY QTY RATIO (PROGRAM_MAX_SELL_BUY_QTY_RATIO) | | `PROGRAM_MIN_NET_DELTA_QTY` | `text` | NULL | NULL | 공통env: 프로그램매매 최소 NET DELTA QTY (PROGRAM_MIN_NET_DELTA_QTY) | | `PROGRAM_SNAPSHOT_MAX_AGE_SEC` | `text` | NULL | NULL | 공통env: 프로그램매매 SNAPSHOT 최대 AGE 초 (PROGRAM_SNAPSHOT_MAX_AGE_SEC) | | `STRICT_FILL_VERIFY` | `text` | NULL | NULL | 모의 엄격 체결 검증 · 모의 실매매만 영향 · ON=체결 API 필수(모의 API 한계로 매수 0건 가능) · 실전은 항상 엄격 | | `ORDER_FILL_WAIT_SEC` | `text` | NULL | NULL | 시장가 체결 대기(초) | | `LIMIT_ORDER_FILL_WAIT_SEC` | `text` | NULL | NULL | 지정가 체결 대기(초) | | `PENDING_FILL_POLL_INTERVAL_SEC` | `text` | NULL | NULL | 미체결 재조회 주기(초) | | `PENDING_FILL_POLL_SEC` | `text` | NULL | NULL | 재조회 1회 대기(초) | | `PENDING_FILL_MAX_AGE_SEC` | `text` | NULL | NULL | 공통env: PENDING FILL 최대 AGE 초 (PENDING_FILL_MAX_AGE_SEC) | | `PENDING_BUY_MAX_AGE_SEC` | `text` | NULL | NULL | 매수 미체결 만료(초) | | `PENDING_SELL_MAX_AGE_SEC` | `text` | NULL | NULL | 익절 매도 미체결 만료(초) | | `PENDING_SELL_STOP_MAX_AGE_SEC` | `text` | NULL | NULL | 손절 매도 미체결 만료(초) | | `SELL_PENDING_REORDER_ON_EXPIRE` | `text` | NULL | NULL | 손절 만료 후 즉시 재매도 | | `AUTO_CANCEL_PARTIAL_BUY_REMAINDER` | `text` | NULL | NULL | 부분체결 잔량 자동취소 | | `WS_TRIGGER_EVAL_SAVE_ENABLED` | `text` | NULL | NULL | TRIGGER 판정 DB 저장(마스터) · OFF면 아래 COLLECT(판정 스냅) 전부 안 씀 · SAVE(시계열)와 무관 | | `WS_TRIGGER_EVAL_DB_BATCH_SIZE` | `text` | NULL | NULL | 공통env: WS TRIGGER EVAL DB BATCH SIZE (WS_TRIGGER_EVAL_DB_BATCH_SIZE) | | `WS_TRIGGER_EVAL_DB_FLUSH_SEC` | `text` | NULL | NULL | 공통env: WS TRIGGER EVAL DB FLUSH 초 (WS_TRIGGER_EVAL_DB_FLUSH_SEC) | | `WS_TRIGGER_EVAL_WRITE_QUEUE_MAX` | `text` | NULL | NULL | 공통env: WS TRIGGER EVAL WRITE QUEUE 최대 (WS_TRIGGER_EVAL_WRITE_QUEUE_MAX) | | `BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT` | `text` | NULL | NULL | 공통env: BACKTEST 사용_ TRIGGER EVAL SNAPSHOT (BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT) | | `DAILY_PROFIT_MODE` | `text` | NULL | NULL | 익절 방식 · fixed=고정목표 / trailing=고점대비 되돌림 / both=둘 중 먼저 | | `DAILY_PROFIT_TRAIL_TIERS` | `text` | NULL | NULL | 다단 트레일(수익원:컷%,…) · 벌수록 타이트하게 사수 · 예: 30000:50,100000:35,300000:25 · 비우면 단일 되돌림 사용 | | `DAILY_PROFIT_TRAIL_DROP_PCT` | `text` | NULL | NULL | 단일 트레일 되돌림(%, 고점대비) · 다단 비었을 때만 · 예: 35 = 고점 대비 -35% 꺾이면 중단 · 0=미사용 | | `DAILY_PROFIT_TRAIL_ARM_KRW` | `text` | NULL | NULL | 트레일 발동 최소수익(원) · 이 이상 벌어야 트레일 감시 시작 · 0=트레일 비활성(과민발동 방지) | | `DAILY_PROFIT_TRAIL_ARM_PCT` | `text` | NULL | NULL | 트레일 발동 최소수익(%) · 운용한도 대비 % · KRW와 둘 중 큰 값 | | `BUY_DEDUP_PENDING` | `text` | NULL | NULL | 매수 미체결 중복주문 방지 · 동일 전략·종목 PENDING_FILL 있으면 재주문 스킵 | | `KIS_MIN_INTERVAL_SEC_MOCK` | `text` | NULL | NULL | 모의 REST 최소간격(초) · 모의 도메인(거래: 주문·체결·잔고) · 조회·랭킹·조건은 실키라 무관 · 429 로그 없으면 0.22 유지 · 한투 공지 1건/초 엄수 필요 시 1.0 · 재시작 없이 반영(1초 TTL) | | `KIS_MIN_INTERVAL_SEC_REAL` | `text` | NULL | NULL | 실전 REST 최소간격(초) · 실전 도메인(시세 · 운영 시 거래+조회+취소+재주문 통합 한 앱키) · 18건/초 한도 → 0.12=약8건/초 · 신규앱키 첫 3일은 0.34(3건/초) · 재시작 없이 반영 | | `PENDING_POLL_BATCH_FETCH` | `text` | NULL | NULL | 미체결 체결 일괄조회 · 실매 heartbeat 전용 · ON=poll 1회당 inquire-daily-ccld 1건(미체결 N건) · OFF=건별 조회 · 백테 무관 | | `SCAN_REJECT_SLEEP_MIN` | `text` | NULL | NULL | 탈락 후 sleep 최소(초) · check_buy 탈락 종목마다 · REST 0건 · 0.05~0.1 로 낮추면 한 바퀴 대폭 단축 | | `SCAN_REJECT_SLEEP_MAX` | `text` | NULL | NULL | 탈락 후 sleep 최대(초) | | `SCAN_BUY_OK_SLEEP_MIN` | `text` | NULL | NULL | 매수성공 후 sleep 최소(초) · 1루프 1매수 후 대기 · 포지션 과집중 방지 | | `SCAN_BUY_OK_SLEEP_MAX` | `text` | NULL | NULL | 매수성공 후 sleep 최대(초) | | `SCAN_BUY_FAIL_SLEEP_MIN` | `text` | NULL | NULL | 주문실패 후 sleep 최소(초) | | `SCAN_BUY_FAIL_SLEEP_MAX` | `text` | NULL | NULL | 주문실패 후 sleep 최대(초) | | `STRATEGY_LOOP_SLEEP_MIN` | `text` | NULL | NULL | 루프 끝 sleep 최소(초) · 한 바퀴 끝 대기 · WS 구독 캐시 폴링 · 0.1=실매 반응 빠르게 | | `STRATEGY_LOOP_SLEEP_MAX` | `text` | NULL | NULL | 루프 끝 sleep 최대(초) | | `BALANCE_MAX_PAGES` | `text` | NULL | NULL | 잔고 연속조회 최대 페이지 · 잔고조회는 1페이지에 실전 50종목/모의 20종목만 내려옴. 보유가 많으면 다음 페이지를 이어 조회(누적 병합). 20p=최대 약 1000종목. 보유 종목이 50개를 넘으면 필수 — 부족하면 51번째부터 매도 검증에서 누락됨 | | `KIS_SYSTEM_MM_CHANNEL` | `text` | NULL | NULL | 공통env: KIS SYSTEM MM CHANNEL (KIS_SYSTEM_MM_CHANNEL) | | `KIS_LIFECYCLE_MM_CHANNEL` | `text` | NULL | NULL | 공통env: KIS LIFECYCLE MM CHANNEL (KIS_LIFECYCLE_MM_CHANNEL) | | `BULK_SELL_INTERVAL_SEC` | `text` | NULL | NULL | 일괄매도 종목 간격(초) · 미등록 봇고아 일괄 시장가매도 시 REST 429 방지 · 종목마다 sleep | | `MANUAL_HOLD_CODES` | `text` | NULL | NULL | 수동 보유 보호 종목 · 쉼표(,) 구분 종목코드 예: 005930,000660 · HTS 직접 매수·장기 보유분 보호 · 일괄매도·고아복구 제외 | | `ORPHAN_RECONCILE_ENABLED` | `text` | NULL | NULL | 장마감 고아복구 · 매일 15:36~16:00 1회 · 실계좌 잔고↔active_trades 대조 · orders BUY 있는 미기록분만 복구 · 수동·MANUAL_HOLD 제외 | | `ORPHAN_RECONCILE_ON_STARTUP` | `text` | NULL | NULL | 봇 기동 직후 1회 · 매도 없음 · 고아복구+유령삭제+수량/평단 sync · 전략 쓰레드보다 먼저 | | `WS_GAP_FILL_MAX_RETRIES` | `text` | NULL | NULL | 공통env: WS GAP FILL 최대 RETRIES (WS_GAP_FILL_MAX_RETRIES) | | `WS_GAP_FILL_RETRY_DELAY_SEC` | `text` | NULL | NULL | 공통env: WS GAP FILL RETRY DELAY 초 (WS_GAP_FILL_RETRY_DELAY_SEC) | | `WS_GAP_BULK_REFILL_DEBOUNCE_SEC` | `text` | NULL | NULL | 공통env: WS GAP BULK REFILL DEBOUNCE 초 (WS_GAP_BULK_REFILL_DEBOUNCE_SEC) | | `WS_GAP_FILL_PRIORITY_TFS` | `text` | NULL | NULL | 공통env: WS GAP FILL PRIORITY TFS (WS_GAP_FILL_PRIORITY_TFS) | | `WS_GAP_FILL_TF_SLEEP_MIN_SEC` | `text` | NULL | NULL | 공통env: WS GAP FILL TF SLEEP 최소 초 (WS_GAP_FILL_TF_SLEEP_MIN_SEC) | | `WS_GAP_FILL_TF_SLEEP_MAX_SEC` | `text` | NULL | NULL | 공통env: WS GAP FILL TF SLEEP 최대 초 (WS_GAP_FILL_TF_SLEEP_MAX_SEC) | | `WS_GAP_FILL_CODE_SLEEP_MIN_SEC` | `text` | NULL | NULL | 공통env: WS GAP FILL CODE SLEEP 최소 초 (WS_GAP_FILL_CODE_SLEEP_MIN_SEC) | | `WS_GAP_FILL_CODE_SLEEP_MAX_SEC` | `text` | NULL | NULL | 공통env: WS GAP FILL CODE SLEEP 최대 초 (WS_GAP_FILL_CODE_SLEEP_MAX_SEC) | | `WS_GAP_FILL_PHASE_PAUSE_SEC` | `text` | NULL | NULL | 공통env: WS GAP FILL PHASE PAUSE 초 (WS_GAP_FILL_PHASE_PAUSE_SEC) | | `KIWOOM_CNSRREQ_GAP_MIN_SEC` | `text` | NULL | NULL | 공통env: KIWOOM CNSRREQ GAP 최소 초 (KIWOOM_CNSRREQ_GAP_MIN_SEC) | | `KIWOOM_CNSRREQ_GAP_MAX_SEC` | `text` | NULL | NULL | 공통env: KIWOOM CNSRREQ GAP 최대 초 (KIWOOM_CNSRREQ_GAP_MAX_SEC) | | `KIWOOM_CNSRREQ_MAX_RETRIES` | `text` | NULL | NULL | 공통env: KIWOOM CNSRREQ 최대 RETRIES (KIWOOM_CNSRREQ_MAX_RETRIES) | | `KIWOOM_CNSRREQ_RETRY_SEC` | `text` | NULL | NULL | 공통env: KIWOOM CNSRREQ RETRY 초 (KIWOOM_CNSRREQ_RETRY_SEC) | | `WS_GAP_FILL_WORKERS` | `text` | NULL | NULL | 공통env: WS GAP FILL WORKERS (WS_GAP_FILL_WORKERS) | | `KIS_WS_SUBSCRIBE_GAP_MIN_SEC` | `text` | NULL | NULL | 공통env: SUBSCRIBE GAP 최소 초 (KIS_WS_SUBSCRIBE_GAP_MIN_SEC) | | `KIS_WS_SUBSCRIBE_GAP_MAX_SEC` | `text` | NULL | NULL | 공통env: SUBSCRIBE GAP 최대 초 (KIS_WS_SUBSCRIBE_GAP_MAX_SEC) | | `KIS_WS_RECONNECT_SESSION_WAIT_SEC` | `text` | NULL | NULL | 공통env: RECONNECT SESSION WAIT 초 (KIS_WS_RECONNECT_SESSION_WAIT_SEC) | | `KIS_WS_RECONNECT_REFRESH_KEY` | `text` | NULL | NULL | 공통env: RECONNECT REFRESH KEY (KIS_WS_RECONNECT_REFRESH_KEY) | | `KIS_WS_APPROVAL_MIN_REISSUE_SEC` | `text` | NULL | NULL | approval_key 최소재발급간격(초). 기본21600=6h. REST재발급은기존키무효화 | | `KIS_WS_INSTANT_DROP_SEC` | `text` | NULL | NULL | 공통env: INSTANT 되돌림/하락 초 (KIS_WS_INSTANT_DROP_SEC) | | `KIS_WS_INSTANT_DROP_MAX` | `text` | NULL | NULL | 공통env: INSTANT 되돌림/하락 최대 (KIS_WS_INSTANT_DROP_MAX) | | `KIS_WS_INSTANT_DROP_COOLDOWN_SEC` | `text` | NULL | NULL | 공통env: INSTANT 되돌림/하락 쿨다운 초 (KIS_WS_INSTANT_DROP_COOLDOWN_SEC) | | `WS_CANDLE_RAM_BUFFER` | `text` | NULL | NULL | 공통env: WS CANDLE RAM BUFFER (WS_CANDLE_RAM_BUFFER) | | `KIS_WS_APPROVAL_MAX_VALID_SEC` | `text` | NULL | NULL | approval_key 최대유효(초). 기본82800≈23h. 파일캐시 kis_approval_manager | | `ENV_MERGED_CACHE_TTL_SEC` | `text` | NULL | NULL | 공통env: ENV MERGED CACHE TTL 초 (ENV_MERGED_CACHE_TTL_SEC) | | `WS_ORDERBOOK_COLLECT_ENABLED` | `text` | NULL | NULL | 호가 판정스냅(FILTER_EVAL) — 매수체크 순간 1장 · ≠ 연속시계열. TRIGGER 판정 때만 ws_orderbook source=filter_eval · 필터 OFF여도 저장 가능 | | `WS_ORDERBOOK_FILTER_MAX_AGE_SEC` | `text` | NULL | NULL | 진입 호가필터 RAM 나이(초). **0=마지막 RAM으로 검사**(B안). 양수=그보다 오래면 스냅없음. REST 없음. 저장 TTL과 분리. `ENV_CONFIG_KEYS` · ALTER 실패 시 `env_config_ext` | | `WS_PRICE_MAX_AGE_SEC` | `text` | NULL | NULL | 매수/조회 ``get_price()`` 기본 나이(초). 기본 **0=마지막 RAM**. 양수=그 초 넘으면 None. 매도 판정은 None(나이 무시). 체결 공백 ≠ 가격 삭제. `ENV_CONFIG_KEYS` | | `SELL_WS_STALE_REST_SEC` | `text` | NULL | NULL | 실매 매도 죽은선 감지(초). 기본 1. 손절·익절은 마지막 WS를 안 버림. 이보다 오래면 REST 1회(실패해도 WS 유지). EOD는 미적용. `ENV_CONFIG_KEYS` | | `SELL_WS_STALE_REST_COOLDOWN_SEC` | `text` | NULL | NULL | 매도 REST 확인 종목당 최소 간격(초). 기본 30. 유량 보호. `ENV_CONFIG_KEYS` | | `WS_ORDERBOOK_FILTER_REJECT_IF_EMPTY` | `text` | NULL | NULL | 필터 ON + 호가 사진 한 장도 없으면 안 삼. 기본 true. 만료 Fail-Open과 별개. `ENV_CONFIG_KEYS` · 주로 `env_config_ext` | | `WS_ORDERBOOK_TICK_MAX_AGE_SEC` | `text` | NULL | NULL | 호가 **저장** 유효(초). 0D 덤프·가짜 채움 방지. 코드 기본 30. **필터 판정에 쓰지 말 것**. 주로 `env_config_ext` | | `WS_PROGRAM_COLLECT_ENABLED` | `text` | NULL | NULL | 프로그램 판정스냅 — 매수체크 순간 1장 · ≠ 연속시계열. 판정 때만 ws_program · 필터 OFF여도 가능 | | `WS_CANDLE_FORCE_CONFIRM_ENABLED` | `text` | NULL | NULL | 공통env: WS CANDLE FORCE CONFIRM ON/OFF (WS_CANDLE_FORCE_CONFIRM_ENABLED) | | `WS_CANDLE_FORCE_CONFIRM_GRACE_SEC` | `text` | NULL | NULL | 공통env: WS CANDLE FORCE CONFIRM GRACE 초 (WS_CANDLE_FORCE_CONFIRM_GRACE_SEC) | | `WS_CANDLE_STALE_CHECK_INTERVAL_SEC` | `text` | NULL | NULL | 공통env: WS CANDLE STALE CHECK INTERVAL 초 (WS_CANDLE_STALE_CHECK_INTERVAL_SEC) | | `ORPHAN_RECONCILE_PRE_EOD_ENABLED` | `text` | NULL | NULL | Pre-EOD 고아복구 · 활성 전략 중 가장 이른 EOD − N분 1회 · EOD 청산 전 active_trades 반영 | | `ORPHAN_RECONCILE_PRE_EOD_LEAD_MIN` | `text` | NULL | NULL | Pre-EOD 선행(분) · 예: BREAKOUT EOD 15:15 → 15:08 실행 · REST 잔고 1회/일 | | `DUPLICATE_ORDER_FILL_RECOVERY_ENABLED` | `text` | NULL | NULL | 주문DB중복 체결복구 · insert 실패(주문DB중복) 시 inquire-daily-ccld 1회 → active_trades 복구 · 실패 시에만 REST | | `DUPLICATE_ORDER_RECOVERY_WAIT_SEC` | `text` | NULL | NULL | 중복복구 체결대기(초) · 주문DB중복 복구 전용 · 미설정 시 ORDER_FILL_WAIT_SEC 사용 | | `INTRADAY_HOLDINGS_DRIFT_ENABLED` | `text` | NULL | NULL | 장중 qty 드리프트 감시 · 기본 OFF · ON=N분마다 잔고 REST · 알림/자동복구는 별도 키 | | `INTRADAY_HOLDINGS_DRIFT_INTERVAL_SEC` | `text` | NULL | NULL | 드리프트 조회주기(초) · INTRADAY_HOLDINGS_DRIFT_ENABLED=ON 일 때만 | | `INTRADAY_HOLDINGS_DRIFT_AUTO_RECOVER` | `text` | NULL | NULL | 드리프트 자동복구 · OFF=알림만 · ON=active_trades qty 보정(기본 OFF) | | `GHOST_PURGE_ON_RECONCILE` | `text` | NULL | NULL | 고아복구 시 유령잔고 삭제 · ON=브로커 0주인데 active_trades 남은 종목 삭제(수동보호 제외) · Pre/Post EOD 동일 잔고조회에서 처리 | | `INQUIRE_PSBL_RVSECNCL_BEFORE_GHOST` | `text` | NULL | NULL | 유령정리 전 정정취소가능주문조회. 매도가능 0 ≠ 보유 0 | | `PSBL_RVSECNCL_CACHE_TTL_SEC` | `text` | NULL | NULL | 정정취소가능 조회 캐시(초). 기본 30 | | `CANCELABLE_CCLD_MAX_PAGES` | `text` | NULL | NULL | 모의 cancelable daily-ccld 페이지 상한. 기본 3 | | `SELL_LOCKED_ENQUEUE_COOLDOWN_SEC` | `text` | NULL | NULL | sell_locked enqueue 쿨다운(초). 기본 20 | | `CANCELABLE_RECONCILE_ENABLED` | `text` | NULL | NULL | cancelable_open DB↔브로커 reconcile ON/OFF | | `CANCELABLE_RECONCILE_CANCEL_RETRY` | `text` | NULL | NULL | reconcile 시 cancel_order 재시도 | | `PSBL_RVSECNCL_MAX_PAGES` | `text` | NULL | NULL | 정정취소가능 연속조회 최대 페이지. 기본 5 | | `WS_GAP_ROLLUP_3M_FROM_1M` | `text` | NULL | NULL | 공통env: WS GAP ROLLUP 3M FROM 1M (WS_GAP_ROLLUP_3M_FROM_1M) | | `WS_GAP_FILL_CANDIDATE_MODE` | `text` | NULL | NULL | 공통env: WS GAP FILL CANDIDATE 모드 (WS_GAP_FILL_CANDIDATE_MODE) | | `WS_TICK_GRACE_SEC` | `text` | NULL | NULL | 공통env: WS TICK GRACE 초 (WS_TICK_GRACE_SEC) | | `WS_TICK_GRACE_HEADROOM` | `text` | NULL | NULL | 공통env: WS TICK GRACE HEADROOM (WS_TICK_GRACE_HEADROOM) | | `WS_TICK_PREFER_KIWOOM` | `text` | NULL | NULL | 공통env: WS TICK PREFER KIWOOM (WS_TICK_PREFER_KIWOOM) | | `VOL_MULTIPLIER` | `text` | NULL | NULL | 공통env: 거래량배수 IPLIER (VOL_MULTIPLIER) | | `KIWOOM_CNSRCLR_BEFORE_REQ` | `text` | NULL | NULL | 공통env: KIWOOM CNSRCLR BEFORE REQ (KIWOOM_CNSRCLR_BEFORE_REQ) | | `KIWOOM_CNSRCLR_GAP_MIN_SEC` | `text` | NULL | NULL | 공통env: KIWOOM CNSRCLR GAP 최소 초 (KIWOOM_CNSRCLR_GAP_MIN_SEC) | | `KIWOOM_CNSRCLR_GAP_MAX_SEC` | `text` | NULL | NULL | 공통env: KIWOOM CNSRCLR GAP 최대 초 (KIWOOM_CNSRCLR_GAP_MAX_SEC) | | `KIWOOM_CNSRCLR_SETTLE_SEC` | `text` | NULL | NULL | 공통env: KIWOOM CNSRCLR SETTLE 초 (KIWOOM_CNSRCLR_SETTLE_SEC) | | `NON_STOCK_PREF_CODE_SUFFIXES` | `text` | NULL | NULL | 우선주 코드 끝자리(숫자) · KRX 구형 우선주. 콤마 구분 | | `NON_STOCK_EXCLUDE_ALPHA_SUFFIX` | `text` | NULL | NULL | 코드 끝 알파벳=우선주 제외 · 00088K·00781K 등 | | `NON_STOCK_NAME_KEYWORDS` | `text` | NULL | NULL | 공통env: NON STOCK NAME KEYWORDS (NON_STOCK_NAME_KEYWORDS) | | `ERROR_WATCH_ENABLED` | `text` | NULL | NULL | 오류감시 ON · 감시 프로세스 시작 시 읽음 · OFF면 감시자 즉시 종료 | | `ERROR_WATCH_UNIT` | `text` | NULL | NULL | 감시 systemd 유닛 · journalctl -u 대상 | | `ERROR_WATCH_MM_CHANNEL` | `text` | NULL | NULL | 알림 MM alias · 비우면 KIS_SYSTEM_MM_CHANNEL(default=키스명령봇) | | `ERROR_WATCH_COOLDOWN_SEC` | `text` | NULL | NULL | 동일오류 쿨다운(초) · 같은 Traceback 지문 재알림 간격 | | `ERROR_WATCH_CONTEXT_LINES` | `text` | NULL | NULL | 공통env: ERROR WATCH CONTEXT LINES (ERROR_WATCH_CONTEXT_LINES) | | `ERROR_WATCH_TRACEBACK_EXTRA_LINES` | `text` | NULL | NULL | Traceback 추가줄 · Traceback 이후 스택 수집 줄 수 | | `ERROR_WATCH_HEALTH_CHECK_SEC` | `text` | NULL | NULL | 유닛생존 점검(초) · systemctl is-active 주기 | | `ERROR_WATCH_GLOBAL_MIN_GAP_SEC` | `text` | NULL | NULL | 공통env: ERROR WATCH GLOBAL 최소 GAP 초 (ERROR_WATCH_GLOBAL_MIN_GAP_SEC) | | `ERROR_WATCH_MATCH_REGEX` | `text` | NULL | NULL | 공통env: ERROR WATCH MATCH REGEX (ERROR_WATCH_MATCH_REGEX) | | `ERROR_WATCH_IGNORE_REGEX` | `text` | NULL | NULL | 공통env: ERROR WATCH IGNORE REGEX (ERROR_WATCH_IGNORE_REGEX) | | `ERROR_WATCH_MM_JITTER` | `text` | NULL | NULL | MM jitter · 오류 알림은 즉시 권장(OFF) | | `ERROR_WATCH_STARTUP_NOTIFY` | `text` | NULL | NULL | 감시자 기동 MM · 감시 프로세스 시작 시 1회 알림 | | `POST_SELL_CANDLE_BACKFILL` | `text` | NULL | NULL | 공통env: POST SELL CANDLE BACKFILL (POST_SELL_CANDLE_BACKFILL) | | `POST_SELL_CANDLE_ROLLUP_3M` | `text` | NULL | NULL | 공통env: POST SELL CANDLE ROLLUP 3M (POST_SELL_CANDLE_ROLLUP_3M) | | `POST_SELL_CANDLE_MAX_BARS` | `text` | NULL | NULL | 공통env: POST SELL CANDLE 최대 봉수 (POST_SELL_CANDLE_MAX_BARS) | | `POST_SELL_CANDLE_SLEEP_MIN_SEC` | `text` | NULL | NULL | 공통env: POST SELL CANDLE SLEEP 최소 초 (POST_SELL_CANDLE_SLEEP_MIN_SEC) | | `POST_SELL_CANDLE_SLEEP_MAX_SEC` | `text` | NULL | NULL | 공통env: POST SELL CANDLE SLEEP 최대 초 (POST_SELL_CANDLE_SLEEP_MAX_SEC) | | `POST_SELL_CANDLE_FORCE_MOCK` | `text` | NULL | NULL | 공통env: POST SELL CANDLE FORCE MOCK (POST_SELL_CANDLE_FORCE_MOCK) | | `WS_GAP_FILL_SKIP_INCOMPLETE_BUCKET` | `text` | NULL | NULL | 공통env: WS GAP FILL SKIP INCOMPLETE BUCKET (WS_GAP_FILL_SKIP_INCOMPLETE_BUCKET) | | `WS_CANDLE_FREEZE_ON_CONFIRM` | `text` | NULL | NULL | 공통env: WS CANDLE FREEZE ON CONFIRM (WS_CANDLE_FREEZE_ON_CONFIRM) | | `WS_CANDLE_FREEZE_DB_LOOKUP_CHUNK` | `text` | NULL | NULL | 공통env: WS CANDLE FREEZE DB LOOKUP CHUNK (WS_CANDLE_FREEZE_DB_LOOKUP_CHUNK) | | `WS_GAP_FILL_GIVE_UP_SEC` | `text` | NULL | NULL | 공통env: WS GAP FILL GIVE UP 초 (WS_GAP_FILL_GIVE_UP_SEC) | | `WS_GAP_FILL_EMPTY_CIRCUIT_WINDOW_SEC` | `text` | NULL | NULL | 공통env: WS GAP FILL EMPTY CIRCUIT 윈도우 초 (WS_GAP_FILL_EMPTY_CIRCUIT_WINDOW_SEC) | | `WS_GAP_FILL_EMPTY_CIRCUIT_MAX` | `text` | NULL | NULL | 공통env: WS GAP FILL EMPTY CIRCUIT 최대 (WS_GAP_FILL_EMPTY_CIRCUIT_MAX) | | `WS_GAP_FILL_EMPTY_CIRCUIT_PAUSE_SEC` | `text` | NULL | NULL | 공통env: WS GAP FILL EMPTY CIRCUIT PAUSE 초 (WS_GAP_FILL_EMPTY_CIRCUIT_PAUSE_SEC) | | `WS_GAP_FILL_EMPTY_LOG_SEC` | `text` | NULL | NULL | 공통env: WS GAP FILL EMPTY LOG 초 (WS_GAP_FILL_EMPTY_LOG_SEC) | | `LS_APP_KEY_REAL` | `text` | NULL | NULL | 공통env: LS APP KEY REAL (LS_APP_KEY_REAL) | | `LS_APP_SECRET_REAL` | `text` | NULL | NULL | 공통env: LS APP 초 RET REAL (LS_APP_SECRET_REAL) | | `LS_APP_KEY_MOCK` | `text` | NULL | NULL | 공통env: LS APP KEY MOCK (LS_APP_KEY_MOCK) | | `LS_APP_SECRET_MOCK` | `text` | NULL | NULL | 공통env: LS APP 초 RET MOCK (LS_APP_SECRET_MOCK) | | `FORCE_BUY_TEST_CODE` | `text` | NULL | NULL | 공통env: 강제매수테스트 TEST CODE (FORCE_BUY_TEST_CODE) | | `KIS_WS_INVALID_APPROVAL_REISSUE_AFTER` | `text` | NULL | NULL | invalid approval 연속N회 후 응급재발급 허용. 6h가드우회조건 | | `KIS_WS_INVALID_APPROVAL_BYPASS_6H` | `text` | NULL | NULL | true면 invalid루프시 6h가드우회응급재발급. 남용금지 | | `KIS_WS_EMERGENCY_REISSUE_MIN_SEC` | `text` | NULL | NULL | 응급approval재발급 최소간격(초). 기본=정상6h와동일. 하드캡 | | `KIS_WS_KR_HOLD_START_HM` | `text` | NULL | NULL | 국내WS approval점유 시작 HHMM. 기본700. 갭·해외창에선 소켓양보(재발급없음) | | `KIS_WS_KR_HOLD_END_HM` | `text` | NULL | NULL | 국내WS approval점유 종료 HHMM. 기본2000. kis_ws_session_windows | | `KIS_WS_US_HOLD_START_HM` | `text` | NULL | NULL | 해외WS(HDFSCNT0) 점유 시작 HHMM. 기본2100. 국내와 동시점유금지(1키=1세션) | | `KIS_WS_US_HOLD_END_HM` | `text` | NULL | NULL | 해외WS 점유 종료 HHMM. 기본600(자정넘김). 세션전환시 approval재발급금지 |
DDL 원문 ```sql CREATE TABLE `env_config` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` varchar(30) NOT NULL, `STOP_LOSS_PCT` text DEFAULT NULL, `MAX_POSITION_PCT` text DEFAULT NULL, `USE_SLOT_CAP` text DEFAULT NULL, `SLOT_CAP_PCT` text DEFAULT NULL, `MAX_STOCKS` text DEFAULT NULL, `USE_KELLY` text DEFAULT NULL, `RISK_PCT_PER_TRADE` text DEFAULT NULL, `MIN_POSITION_AMOUNT` text DEFAULT NULL, `USE_RISK_CHECK` text DEFAULT NULL, `DAILY_STOP_LOSS_PCT` text DEFAULT NULL, `CONSECUTIVE_LOSS_LIMIT` text DEFAULT NULL, `DAILY_PROFIT_TARGET_KRW` text DEFAULT NULL, `DAILY_PROFIT_TARGET_PCT` text DEFAULT NULL, `DAILY_PROFIT_TARGET_BUDGET_KRW` text DEFAULT NULL, `DAILY_PROFIT_HALT_NEW_BUYS` text DEFAULT NULL, `DAILY_PROFIT_NOTIFY_MM` text DEFAULT NULL, `USE_BAN_SYSTEM` text DEFAULT NULL, `BAN_HOURS` text DEFAULT NULL, `USE_STOCK_FILTER` text DEFAULT NULL, `RSI_OVERHEAT_THRESHOLD` text DEFAULT NULL, `MIN_RECOVERY_RATIO` text DEFAULT NULL, `MAX_RECOVERY_RATIO` text DEFAULT NULL, `USE_TWAP` text DEFAULT NULL, `TWAP_MIN_SPLIT` text DEFAULT NULL, `TWAP_MAX_SPLIT` text DEFAULT NULL, `TWAP_MIN_DELAY` text DEFAULT NULL, `TWAP_MAX_DELAY` text DEFAULT NULL, `USE_ML_SIGNAL` text DEFAULT NULL, `ML_MIN_PROBABILITY` text DEFAULT NULL, `USE_NEWS_ANALYSIS` text DEFAULT NULL, `NEWS_ANALYSIS_HOUR` text DEFAULT NULL, `NEWS_MAX_COUNT` text DEFAULT NULL, `USE_QUICK_PROFIT_PROTECTION` text DEFAULT NULL, `HIGH_PRICE_CHASE_THRESHOLD` text DEFAULT NULL, `MAX_DAILY_CHANGE_PCT` text DEFAULT NULL, `MA20_MAX_ABOVE_PCT` text DEFAULT NULL, `VOLUME_AVG_MULTIPLIER` text DEFAULT NULL, `CANDLE_OPEN_PRICE_BUFFER` text DEFAULT NULL, `MIN_CANDLE_LEN_TAIL` text DEFAULT NULL, `MIN_PRICE_TAIL` text DEFAULT NULL, `INTRADAY_INVESTOR_NET_BUY_THRESHOLD` text DEFAULT NULL, `SIZE_CLASS_LARGE_MIN` text DEFAULT NULL, `SIZE_CLASS_MID_MIN` text DEFAULT NULL, `SCAN_INVESTOR_NET_STRONG` text DEFAULT NULL, `SCAN_INVESTOR_SCORE_STRONG` text DEFAULT NULL, `SCAN_INVESTOR_SCORE_WEAK` text DEFAULT NULL, `SCAN_INVESTOR_BONUS_STRONG` text DEFAULT NULL, `SCAN_INVESTOR_BONUS_WEAK` text DEFAULT NULL, `SCAN_VOLUME_BONUS_MIN` text DEFAULT NULL, `SCAN_VOLUME_BONUS_POINT` text DEFAULT NULL, `SCAN_EXEC_STRENGTH_HIGH` text DEFAULT NULL, `SCAN_EXEC_STRENGTH_MID` text DEFAULT NULL, `SCAN_EXEC_BONUS_HIGH` text DEFAULT NULL, `SCAN_EXEC_BONUS_MID` text DEFAULT NULL, `SCAN_SCORE_DROP_WEIGHT` text DEFAULT NULL, `SCAN_SCORE_RECOVERY_WEIGHT` text DEFAULT NULL, `MIN_SCORE_DISPLAY` text DEFAULT NULL, `MM_TOP_N` text DEFAULT NULL, `SLOT_MONEY_DEFAULT` text DEFAULT NULL, `SLOT_BASE_AMOUNT_CAP` text DEFAULT NULL, `SIZE_CLASS_SMALL_RATIO` text DEFAULT NULL, `SIZE_CLASS_MID_RATIO` text DEFAULT NULL, `SCAN_MIN_PREV_DAY_PCT` text DEFAULT NULL, `UPDATE_UNIVERSE_MIN_CANDIDATES` text DEFAULT NULL, `UPDATE_UNIVERSE_MIN_SCORE` text DEFAULT NULL, `UPDATE_UNIVERSE_FALLBACK_TOP_N` text DEFAULT NULL, `UPDATE_UNIVERSE_TOP_LOG` text DEFAULT NULL, `UPDATE_UNIVERSE_TOP_N` text DEFAULT NULL, `SCAN_INTERVAL_SEC` text DEFAULT NULL, `USE_RANDOM_SPLIT` text DEFAULT NULL, `FORCE_MARKET_OPEN` text DEFAULT NULL, `FORCE_BUY_TEST` text DEFAULT NULL, `TOTAL_DEPOSIT` text DEFAULT NULL, `ROUND_TRIP_COST_PCT` text DEFAULT NULL, `POP_NET_PCT` text DEFAULT NULL, `LOCK_NET_PCT` text DEFAULT NULL, `MAX_LOSS_PER_TRADE_KRW` text DEFAULT NULL, `MIN_DROP_PCT_FOR_LOSS_CUT` text DEFAULT NULL, `KIS_APP_KEY_REAL` text DEFAULT NULL, `KIS_APP_SECRET_REAL` text DEFAULT NULL, `KIS_APP_KEY_MOCK` text DEFAULT NULL, `KIS_APP_SECRET_MOCK` text DEFAULT NULL, `KIS_ACCOUNT_NO_REAL` text DEFAULT NULL, `KIS_ACCOUNT_CODE_REAL` text DEFAULT NULL, `KIS_ACCOUNT_NO_MOCK` text DEFAULT NULL, `KIS_ACCOUNT_CODE_MOCK` text DEFAULT NULL, `KIS_MOCK` text DEFAULT NULL, `TAKE_PROFIT_PCT` text DEFAULT NULL, `MIN_DROP_RATE` text DEFAULT NULL, `MIN_RECOVERY_RATIO_SHORT` text DEFAULT NULL, `QUICK_PROFIT_PROTECT_HOURS` text DEFAULT NULL, `QUICK_PROFIT_MAX_RATIO` text DEFAULT NULL, `QUICK_PROFIT_CURRENT_MIN` text DEFAULT NULL, `MIN_HOLD_EARLY_TAKE_PCT` text DEFAULT NULL, `MIN_HOLD_HIGH_PCT` text DEFAULT NULL, `MIN_HOLD_DROP_FROM_HIGH` text DEFAULT NULL, `POST_HOLD_TAKE_PCT` text DEFAULT NULL, `POST_HOLD_DROP_FROM_HIGH` text DEFAULT NULL, `MAX_PER` text DEFAULT NULL, `MAX_PEG` text DEFAULT NULL, `MIN_GROWTH_PCT` text DEFAULT NULL, `DCA_INTERVALS` text DEFAULT NULL, `DCA_AMOUNTS` text DEFAULT NULL, `MM_SERVER_URL` text DEFAULT NULL, `MM_BOT_TOKEN_` text DEFAULT NULL, `MATTERMOST_CHANNEL` text DEFAULT NULL, `GEMINI_API_KEY` text DEFAULT NULL, `AI_JOURNAL_LINES` text DEFAULT NULL, `ANTHROPIC_API_KEY` text DEFAULT NULL, `CLAUDE_MODEL_ID` text DEFAULT NULL, `CLAUDE_MAX_TOKENS` text DEFAULT NULL, `MM_BUTLER_CHANNEL` text DEFAULT NULL, `MM_DUAL_CHANNEL_ENABLED` text DEFAULT NULL, `OPENROUTER_API_KEY` text DEFAULT NULL, `OPENROUTER_MODEL_ID` text DEFAULT NULL, `KIS_LONG_MM_CHANNEL` text DEFAULT NULL, `LONG_DAILY_LOOKBACK_DAYS` text DEFAULT NULL, `LONG_MA_SHORT_DAYS` text DEFAULT NULL, `LONG_MA_LONG_DAYS` text DEFAULT NULL, `LONG_REPORT_AM_HOUR` text DEFAULT NULL, `LONG_REPORT_AM_MIN` text DEFAULT NULL, `LONG_REPORT_PM_HOUR` text DEFAULT NULL, `LONG_REPORT_PM_MIN` text DEFAULT NULL, `LONG_NEWS_ENABLED` text DEFAULT NULL, `LONG_NEWS_INTERVAL_MIN` text DEFAULT NULL, `LONG_NEWS_ACTIVE_START_HOUR` text DEFAULT NULL, `LONG_NEWS_ACTIVE_END_HOUR` text DEFAULT NULL, `LONG_ANALYSIS_DELAY_MIN_SEC` text DEFAULT NULL, `LONG_ANALYSIS_DELAY_MAX_SEC` text DEFAULT NULL, `RSI_PERIOD` text DEFAULT NULL, `KIS_WS_URL_REAL` text DEFAULT NULL, `KIS_WS_URL_MOCK` text DEFAULT NULL, `KIS_WS_MOCK_ENABLED` text DEFAULT NULL, `REENTRY_COOLDOWN_SEC` text DEFAULT NULL, `TIME_START` text DEFAULT NULL, `TIME_END` text DEFAULT NULL, `SELL_FAILURE_BACKOFF_SEC` text DEFAULT NULL, `BROKER_HOLDINGS_CACHE_TTL_SEC` text DEFAULT NULL, `GHOST_POSITION_COOLDOWN_SEC` text DEFAULT NULL, `WS_TICK_SAVE_ENABLED` text DEFAULT NULL, `WS_TICK_BUFFER_MAX_PER_CODE` text DEFAULT NULL, `WS_TICK_DB_BATCH_SIZE` text DEFAULT NULL, `WS_TICK_DB_FLUSH_SEC` text DEFAULT NULL, `WS_TICK_WRITE_QUEUE_MAX` text DEFAULT NULL, `WS_TICK_KEEP_DAYS` text DEFAULT NULL, `WS_TICK_RECORD_SCOPE` text DEFAULT NULL, `WS_TICK_DEFAULT_MARKET` text DEFAULT NULL, `WS_TICK_DEFAULT_EXCHANGE` text DEFAULT NULL, `WS_TICK_DEFAULT_CURRENCY` text DEFAULT NULL, `WS_ORDERBOOK_SAVE_ENABLED` text DEFAULT NULL, `WS_PROGRAM_SAVE_ENABLED` text DEFAULT NULL, `WS_TRIGGER_SNAPSHOT_DB_INTERVAL_SEC` text DEFAULT NULL, `WS_TRIGGER_SNAPSHOT_DB_BATCH_SIZE` text DEFAULT NULL, `WS_TRIGGER_SNAPSHOT_DB_FLUSH_SEC` text DEFAULT NULL, `WS_TRIGGER_SNAPSHOT_WRITE_QUEUE_MAX` text DEFAULT NULL, `WS_ORDERBOOK_KEEP_DAYS` text DEFAULT NULL, `WS_PROGRAM_KEEP_DAYS` text DEFAULT NULL, `BACKTEST_USE_TRIGGER_SNAPSHOT_DB` text DEFAULT NULL, `WHIPSAW_FILTER_ENABLED` text DEFAULT NULL, `WHIPSAW_BACKTEST_OHLC_FALLBACK` text DEFAULT NULL, `WHIPSAW_MODE` text DEFAULT NULL, `WHIPSAW_SUBBAR_SEC` text DEFAULT NULL, `WHIPSAW_LOOKBACK_SEC` text DEFAULT NULL, `WHIPSAW_DIP_PCT` text DEFAULT NULL, `WHIPSAW_RECOVERY_TOL_PCT` text DEFAULT NULL, `WHIPSAW_MIN_SUBBARS` text DEFAULT NULL, `WHIPSAW_TICK_BUFFER_LIMIT` text DEFAULT NULL, `USE_KELLY_FORMULA` text DEFAULT NULL, `KELLY_MULTIPLIER` text DEFAULT NULL, `USE_MARKET_IOC` text DEFAULT NULL, `KIS_PRICE_CACHE_TTL_SEC` text DEFAULT NULL, `MIN_HOLD_AFTER_BUY_SEC` text DEFAULT NULL, `MIN_HOLD_HOURS` text DEFAULT NULL, `MAX_RECOVERY_RATIO_3M` text DEFAULT NULL, `CANDIDATE_LIST_TOP_N_LIGHT` text DEFAULT NULL, `SCAN_UNIVERSE_MAX_CODES` text DEFAULT NULL, `KIS_APP_KEY` text DEFAULT NULL, `KIS_APP_SECRET` text DEFAULT NULL, `KIS_ACCOUNT_NO` text DEFAULT NULL, `KIS_ACCOUNT_CODE` text DEFAULT NULL, `GEMINI_MODEL_ID` text DEFAULT NULL, `MM_BUTLER_POLL_SEC` text DEFAULT NULL, `AI_SOURCE_MAX_CHARS` text DEFAULT NULL, `FEE_RATE_PCT` text DEFAULT NULL, `SELL_TAX_RATE_PCT` text DEFAULT NULL, `KIWOOM_APP_KEY_REAL` text DEFAULT NULL, `KIWOOM_APP_SECRET_REAL` text DEFAULT NULL, `KIWOOM_APP_KEY_MOCK` text DEFAULT NULL, `KIWOOM_APP_SECRET_MOCK` text DEFAULT NULL, `KIWOOM_APP_KEY` text DEFAULT NULL, `KIWOOM_APP_SECRET` text DEFAULT NULL, `PERMANENT_WS_CODES` text DEFAULT NULL, `USE_MARKET_REGIME_FILTER` text DEFAULT NULL, `MARKET_REGIME_MIN_RSI` text DEFAULT NULL, `USE_THEME_HEAT_FILTER` text DEFAULT NULL, `THEME_HEAT_RSI_MAX` text DEFAULT NULL, `STRATEGY_SAME_CODE_POLICY` text DEFAULT NULL, `ORDER_CASH_PCT` text DEFAULT NULL, `ORDER_CASH_FEE_BUFFER` text DEFAULT NULL, `ORDER_CASH_DIVIDE_BY_MAX_STOCKS` text DEFAULT NULL, `ACCOUNT_CASH_PERSIST_SEC` text DEFAULT NULL, `BACKTEST_EXIT_CHECKS_PER_BAR` text DEFAULT NULL, `RANKING_POLL_INTERVAL_SEC` text DEFAULT NULL, `KIS_HTS_ID` text DEFAULT NULL, `CONDITION_POLL_INTERVAL_SEC` text DEFAULT NULL, `CONDITION_EXIT_GRACE_SEC` text DEFAULT NULL, `UNIVERSE_HISTORY_SAVE` text DEFAULT NULL, `WS_GAP_FILL_OFF_HOURS` text DEFAULT NULL, `WS_GAP_FILL_LIMIT` text DEFAULT NULL, `WS_TIMEFRAMES` text DEFAULT NULL, `WS_GAP_FILL_KIS_FALLBACK` text DEFAULT NULL, `MAX_BUY_AMOUNT_PER_STOCK` text DEFAULT NULL, `KIS_MIN_INTERVAL_SEC` text DEFAULT NULL, `KIS_REST_MAX_RETRIES` text DEFAULT NULL, `KIS_REST_BACKOFF_CAP_SEC` text DEFAULT NULL, `KIS_REST_TIMEOUT_SEC` text DEFAULT NULL, `MARKET_GUARD_ENABLED` text DEFAULT NULL, `MARKET_GUARD_5MIN_DROP_PCT` text DEFAULT NULL, `MARKET_GUARD_DAILY_DROP_PCT` text DEFAULT NULL, `MARKET_GUARD_RECOVERY_PCT` text DEFAULT NULL, `MARKET_GUARD_INDEX_CODE` text DEFAULT NULL, `MARKET_GUARD_POLL_SEC` text DEFAULT NULL, `MARKET_GUARD_INDEX_CANDLE_KEEP_MIN` text DEFAULT NULL, `MARKET_GUARD_PERSIST_STATE` text DEFAULT NULL, `STOCK_SHARE_DENOM` text DEFAULT NULL, `EXCLUDE_NON_STOCK` text DEFAULT NULL, `WS_PROVIDER` text DEFAULT NULL, `WS_SUBSCRIBE_KIS_MINIMAL` text DEFAULT NULL, `WS_VALIDATION_INTERVAL_SEC` text DEFAULT NULL, `WS_VALIDATION_DIFF_WARN_PCT` text DEFAULT NULL, `KIWOOM_WS_FORCE_REAL` text DEFAULT NULL, `KIWOOM_WS_MAX_SUBSCRIPTIONS` text DEFAULT NULL, `KIWOOM_WS_REG_CHUNK_SIZE` text DEFAULT NULL, `KIWOOM_WS_REG_GAP_SEC` text DEFAULT NULL, `KIWOOM_WS_REG_DEBOUNCE_SEC` text DEFAULT NULL, `KIWOOM_WS_ORDERBOOK_ENABLED` text DEFAULT NULL, `KIWOOM_WS_PROGRAM_ENABLED` text DEFAULT NULL, `ORDERBOOK_FILTER_ENABLED` text DEFAULT NULL, `ORDERBOOK_MAX_SPREAD_PCT` text DEFAULT NULL, `ORDERBOOK_ENTRY_BID_LEVELS` text DEFAULT NULL, `ORDERBOOK_ENTRY_BID_DEPTH_MULT` text DEFAULT NULL, `ORDERBOOK_ENTRY_ASK_MAX_MULT` text DEFAULT NULL, `ORDERBOOK_MIN_BID_ASK_RATIO` text DEFAULT NULL, `ORDERBOOK_BREAKOUT_ASK_WALL_MAX_QTY` text DEFAULT NULL, `PROGRAM_FILTER_ENABLED` text DEFAULT NULL, `PROGRAM_MIN_NET_BUY_QTY` text DEFAULT NULL, `PROGRAM_MIN_NET_BUY_AMT` text DEFAULT NULL, `PROGRAM_MAX_SELL_BUY_QTY_RATIO` text DEFAULT NULL, `PROGRAM_MIN_NET_DELTA_QTY` text DEFAULT NULL, `PROGRAM_SNAPSHOT_MAX_AGE_SEC` text DEFAULT NULL, `STRICT_FILL_VERIFY` text DEFAULT NULL, `ORDER_FILL_WAIT_SEC` text DEFAULT NULL, `LIMIT_ORDER_FILL_WAIT_SEC` text DEFAULT NULL, `PENDING_FILL_POLL_INTERVAL_SEC` text DEFAULT NULL, `PENDING_FILL_POLL_SEC` text DEFAULT NULL, `PENDING_FILL_MAX_AGE_SEC` text DEFAULT NULL, `PENDING_BUY_MAX_AGE_SEC` text DEFAULT NULL, `PENDING_SELL_MAX_AGE_SEC` text DEFAULT NULL, `PENDING_SELL_STOP_MAX_AGE_SEC` text DEFAULT NULL, `SELL_PENDING_REORDER_ON_EXPIRE` text DEFAULT NULL, `AUTO_CANCEL_PARTIAL_BUY_REMAINDER` text DEFAULT NULL, `WS_TRIGGER_EVAL_SAVE_ENABLED` text DEFAULT NULL, `WS_TRIGGER_EVAL_DB_BATCH_SIZE` text DEFAULT NULL, `WS_TRIGGER_EVAL_DB_FLUSH_SEC` text DEFAULT NULL, `WS_TRIGGER_EVAL_WRITE_QUEUE_MAX` text DEFAULT NULL, `BACKTEST_USE_TRIGGER_EVAL_SNAPSHOT` text DEFAULT NULL, `DAILY_PROFIT_MODE` text DEFAULT NULL, `DAILY_PROFIT_TRAIL_TIERS` text DEFAULT NULL, `DAILY_PROFIT_TRAIL_DROP_PCT` text DEFAULT NULL, `DAILY_PROFIT_TRAIL_ARM_KRW` text DEFAULT NULL, `DAILY_PROFIT_TRAIL_ARM_PCT` text DEFAULT NULL, `BUY_DEDUP_PENDING` text DEFAULT NULL, `KIS_MIN_INTERVAL_SEC_MOCK` text DEFAULT NULL, `KIS_MIN_INTERVAL_SEC_REAL` text DEFAULT NULL, `PENDING_POLL_BATCH_FETCH` text DEFAULT NULL, `SCAN_REJECT_SLEEP_MIN` text DEFAULT NULL, `SCAN_REJECT_SLEEP_MAX` text DEFAULT NULL, `SCAN_BUY_OK_SLEEP_MIN` text DEFAULT NULL, `SCAN_BUY_OK_SLEEP_MAX` text DEFAULT NULL, `SCAN_BUY_FAIL_SLEEP_MIN` text DEFAULT NULL, `SCAN_BUY_FAIL_SLEEP_MAX` text DEFAULT NULL, `STRATEGY_LOOP_SLEEP_MIN` text DEFAULT NULL, `STRATEGY_LOOP_SLEEP_MAX` text DEFAULT NULL, `BALANCE_MAX_PAGES` text DEFAULT NULL, `KIS_SYSTEM_MM_CHANNEL` text DEFAULT NULL, `KIS_LIFECYCLE_MM_CHANNEL` text DEFAULT NULL, `BULK_SELL_INTERVAL_SEC` text DEFAULT NULL, `MANUAL_HOLD_CODES` text DEFAULT NULL, `ORPHAN_RECONCILE_ENABLED` text DEFAULT NULL, `ORPHAN_RECONCILE_ON_STARTUP` text DEFAULT NULL, `WS_GAP_FILL_MAX_RETRIES` text DEFAULT NULL, `WS_GAP_FILL_RETRY_DELAY_SEC` text DEFAULT NULL, `WS_GAP_BULK_REFILL_DEBOUNCE_SEC` text DEFAULT NULL, `WS_GAP_FILL_PRIORITY_TFS` text DEFAULT NULL, `WS_GAP_FILL_TF_SLEEP_MIN_SEC` text DEFAULT NULL, `WS_GAP_FILL_TF_SLEEP_MAX_SEC` text DEFAULT NULL, `WS_GAP_FILL_CODE_SLEEP_MIN_SEC` text DEFAULT NULL, `WS_GAP_FILL_CODE_SLEEP_MAX_SEC` text DEFAULT NULL, `WS_GAP_FILL_PHASE_PAUSE_SEC` text DEFAULT NULL, `KIWOOM_CNSRREQ_GAP_MIN_SEC` text DEFAULT NULL, `KIWOOM_CNSRREQ_GAP_MAX_SEC` text DEFAULT NULL, `KIWOOM_CNSRREQ_MAX_RETRIES` text DEFAULT NULL, `KIWOOM_CNSRREQ_RETRY_SEC` text DEFAULT NULL, `WS_GAP_FILL_WORKERS` text DEFAULT NULL, `KIS_WS_SUBSCRIBE_GAP_MIN_SEC` text DEFAULT NULL, `KIS_WS_SUBSCRIBE_GAP_MAX_SEC` text DEFAULT NULL, `KIS_WS_RECONNECT_SESSION_WAIT_SEC` text DEFAULT NULL, `KIS_WS_RECONNECT_REFRESH_KEY` text DEFAULT NULL, `KIS_WS_APPROVAL_MIN_REISSUE_SEC` text DEFAULT NULL, `KIS_WS_INSTANT_DROP_SEC` text DEFAULT NULL, `KIS_WS_INSTANT_DROP_MAX` text DEFAULT NULL, `KIS_WS_INSTANT_DROP_COOLDOWN_SEC` text DEFAULT NULL, `WS_CANDLE_RAM_BUFFER` text DEFAULT NULL, `KIS_WS_APPROVAL_MAX_VALID_SEC` text DEFAULT NULL, `ENV_MERGED_CACHE_TTL_SEC` text DEFAULT NULL, `WS_ORDERBOOK_COLLECT_ENABLED` text DEFAULT NULL, `WS_PROGRAM_COLLECT_ENABLED` text DEFAULT NULL, `WS_CANDLE_FORCE_CONFIRM_ENABLED` text DEFAULT NULL, `WS_CANDLE_FORCE_CONFIRM_GRACE_SEC` text DEFAULT NULL, `WS_CANDLE_STALE_CHECK_INTERVAL_SEC` text DEFAULT NULL, `ORPHAN_RECONCILE_PRE_EOD_ENABLED` text DEFAULT NULL, `ORPHAN_RECONCILE_PRE_EOD_LEAD_MIN` text DEFAULT NULL, `DUPLICATE_ORDER_FILL_RECOVERY_ENABLED` text DEFAULT NULL, `DUPLICATE_ORDER_RECOVERY_WAIT_SEC` text DEFAULT NULL, `INTRADAY_HOLDINGS_DRIFT_ENABLED` text DEFAULT NULL, `INTRADAY_HOLDINGS_DRIFT_INTERVAL_SEC` text DEFAULT NULL, `INTRADAY_HOLDINGS_DRIFT_AUTO_RECOVER` text DEFAULT NULL, `GHOST_PURGE_ON_RECONCILE` text DEFAULT NULL, `WS_GAP_ROLLUP_3M_FROM_1M` text DEFAULT NULL, `WS_GAP_FILL_CANDIDATE_MODE` text DEFAULT NULL, `WS_TICK_GRACE_SEC` text DEFAULT NULL, `WS_TICK_GRACE_HEADROOM` text DEFAULT NULL, `WS_TICK_PREFER_KIWOOM` text DEFAULT NULL, `VOL_MULTIPLIER` text DEFAULT NULL, `KIWOOM_CNSRCLR_BEFORE_REQ` text DEFAULT NULL, `KIWOOM_CNSRCLR_GAP_MIN_SEC` text DEFAULT NULL, `KIWOOM_CNSRCLR_GAP_MAX_SEC` text DEFAULT NULL, `KIWOOM_CNSRCLR_SETTLE_SEC` text DEFAULT NULL, `NON_STOCK_PREF_CODE_SUFFIXES` text DEFAULT NULL, `NON_STOCK_EXCLUDE_ALPHA_SUFFIX` text DEFAULT NULL, `NON_STOCK_NAME_KEYWORDS` text DEFAULT NULL, `ERROR_WATCH_ENABLED` text DEFAULT NULL, `ERROR_WATCH_UNIT` text DEFAULT NULL, `ERROR_WATCH_MM_CHANNEL` text DEFAULT NULL, `ERROR_WATCH_COOLDOWN_SEC` text DEFAULT NULL, `ERROR_WATCH_CONTEXT_LINES` text DEFAULT NULL, `ERROR_WATCH_TRACEBACK_EXTRA_LINES` text DEFAULT NULL, `ERROR_WATCH_HEALTH_CHECK_SEC` text DEFAULT NULL, `ERROR_WATCH_GLOBAL_MIN_GAP_SEC` text DEFAULT NULL, `ERROR_WATCH_MATCH_REGEX` text DEFAULT NULL, `ERROR_WATCH_IGNORE_REGEX` text DEFAULT NULL, `ERROR_WATCH_MM_JITTER` text DEFAULT NULL, `ERROR_WATCH_STARTUP_NOTIFY` text DEFAULT NULL, `POST_SELL_CANDLE_BACKFILL` text DEFAULT NULL, `POST_SELL_CANDLE_ROLLUP_3M` text DEFAULT NULL, `POST_SELL_CANDLE_MAX_BARS` text DEFAULT NULL, `POST_SELL_CANDLE_SLEEP_MIN_SEC` text DEFAULT NULL, `POST_SELL_CANDLE_SLEEP_MAX_SEC` text DEFAULT NULL, `POST_SELL_CANDLE_FORCE_MOCK` text DEFAULT NULL, `WS_GAP_FILL_SKIP_INCOMPLETE_BUCKET` text DEFAULT NULL, `WS_CANDLE_FREEZE_ON_CONFIRM` text DEFAULT NULL, `WS_CANDLE_FREEZE_DB_LOOKUP_CHUNK` text DEFAULT NULL, `WS_GAP_FILL_GIVE_UP_SEC` text DEFAULT NULL, `WS_GAP_FILL_EMPTY_CIRCUIT_WINDOW_SEC` text DEFAULT NULL, `WS_GAP_FILL_EMPTY_CIRCUIT_MAX` text DEFAULT NULL, `WS_GAP_FILL_EMPTY_CIRCUIT_PAUSE_SEC` text DEFAULT NULL, `WS_GAP_FILL_EMPTY_LOG_SEC` text DEFAULT NULL, `LS_APP_KEY_REAL` text DEFAULT NULL, `LS_APP_SECRET_REAL` text DEFAULT NULL, `LS_APP_KEY_MOCK` text DEFAULT NULL, `LS_APP_SECRET_MOCK` text DEFAULT NULL, `FORCE_BUY_TEST_CODE` text DEFAULT NULL, `KIS_WS_INVALID_APPROVAL_REISSUE_AFTER` text DEFAULT NULL, `KIS_WS_INVALID_APPROVAL_BYPASS_6H` text DEFAULT NULL, `KIS_WS_EMERGENCY_REISSUE_MIN_SEC` text DEFAULT NULL, `KIS_WS_KR_HOLD_START_HM` text DEFAULT NULL COMMENT '국내WS approval점유 시작 HHMM. 기본700. 갭·해외창에선 소켓양보(재발급없음)', `KIS_WS_KR_HOLD_END_HM` text DEFAULT NULL COMMENT '국내WS approval점유 종료 HHMM. 기본2000. kis_ws_session_windows', `KIS_WS_US_HOLD_START_HM` text DEFAULT NULL COMMENT '해외WS(HDFSCNT0) 점유 시작 HHMM. 기본2100. 국내와 동시점유금지(1키=1세션)', `KIS_WS_US_HOLD_END_HM` text DEFAULT NULL COMMENT '해외WS 점유 종료 HHMM. 기본600(자정넘김). 세션전환시 approval재발급금지', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1060 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC; ```
#### `env_config_ext` **PK**: `env_key` > **테이블 COMMENT**: env_config 확장 KV. `LS_WS_*`·`LS_TOKEN_*`·`OVERSEAS_WS_ENABLED`·워치독/hold 등 다수 키를 **컬럼 추가 없이** `env_key` 행으로 보관. > 참고: `docs/증권사_토큰_시세.md` · `scripts/sql/token_session_strategy_column_comments.sql` > 대표 키(행): `LS_WS_WATCHDOG_SESSION_GATE` / `LS_WS_WATCHDOG_SESSION_*_HM` / `LS_WS_KR_HOLD_*` / `LS_WS_US_HOLD_*` / `LS_WS_SESSION_HOLD_ENABLED` / `OVERSEAS_WS_ENABLED` / `LS_TOKEN_*` / `WS_ORDERBOOK_FILTER_MAX_AGE_SEC` / `WS_ORDERBOOK_FILTER_REJECT_IF_EMPTY` / `WS_ORDERBOOK_TICK_MAX_AGE_SEC` / `OPTUNA_OB_ENTRY_*` / `OPTUNA_OB_LOOKBACK_MIN` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `env_key` 🔑 | `varchar(80)` | NOT NULL | | 설정키. 예: LS_WS_WATCHDOG_SESSION_GATE, LS_WS_KR_HOLD_*, OVERSEAS_WS_ENABLED, LS_TOKEN_* | | `env_value` | `text` | NOT NULL | | 설정값 문자열. bool/int도 텍스트저장 | | `updated_at` | `varchar(30)` | NOT NULL | | 마지막갱신시각 |
DDL 원문 ```sql CREATE TABLE `env_config_ext` ( `env_key` varchar(80) NOT NULL COMMENT '설정키. 예: LS_WS_WATCHDOG_SESSION_GATE, LS_WS_KR_HOLD_*, OVERSEAS_WS_ENABLED, LS_TOKEN_*', `env_value` text NOT NULL COMMENT '설정값 문자열. bool/int도 텍스트저장', `updated_at` varchar(30) NOT NULL COMMENT '마지막갱신시각', PRIMARY KEY (`env_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='env_config 확장 KV. LS_WS_*·LS_TOKEN_*·OVERSEAS_WS_ENABLED·워치독/hold 등 다수키. 컬럼추가없이 env_key행'; ```
#### `env_auth_config` **PK**: `id` | 앱키/시크릿/HTS ID/계좌번호 **전용 컬럼 테이블** (키-값 행 아님). > `get_merged_env_snapshot()` 이 이 테이블 최신 행을 우선 반영. 저장은 `insert_env_snapshot()` → `_insert_env_auth_row()`. > 앱키를 읽는 코드는 `TradeDB.get_auth_env()` / `get_env_from_db()` 만 사용. `SELECT … FROM env_config` 로 앱키를 읽지 말 것. | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int` | NOT NULL | AUTO_INCREMENT | 스냅샷 행 | | `created_at` | `varchar(30)` | NOT NULL | | 저장 시각 | | `KIS_APP_KEY_REAL` / `_SECRET_REAL` / `_MOCK` | `text` | NULL | NULL | 한투 시세/주문 앱키 | | `KIS_APP_KEY_OB_REAL` / `_SECRET_OB_REAL` / `_MOCK` | `text` | NULL | NULL | 한투 **호가 전용 2번째 앱키** | | `KIS_ACCOUNT_NO_*` / `KIS_ACCOUNT_CODE_*` | `text` | NULL | NULL | 실전/모의 계좌 | | `KIS_HTS_ID` | `text` | NULL | NULL | 조건검색 HTS ID | | `KIWOOM_APP_KEY_*` / `_SECRET_*` | `text` | NULL | NULL | 키움 | | `LS_APP_KEY_*` / `_SECRET_*` | `text` | NULL | NULL | LS | #### `kv_store` **PK**: `k` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `k` 🔑 | `varchar(100)` | NOT NULL | | 키 | | `v` | `mediumtext` | NULL | NULL | 값 |
DDL 원문 ```sql CREATE TABLE `kv_store` ( `k` varchar(100) NOT NULL, `v` mediumtext DEFAULT NULL, PRIMARY KEY (`k`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
### 🔬 Optuna 스터디 결과 kis_optuna 의 `studies`/`trials` 와 분리. 웹 Top5·후처리 산출은 `kis_quant_db.optuna_study_result`. #### `optuna_study_result` **PK**: `study_name` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `study_name` 🔑 | `varchar(255)` | NOT NULL | | Optuna study 이름 (kis_optuna 과 동일) | | `strategy` | `varchar(32)` | NOT NULL | '' | tail\|momentum\|us_momentum\|breakout\|scalp | | `mode` | `varchar(32)` | NOT NULL | '' | tpe 등 | | `start_date` | `varchar(10)` | NULL | NULL | 백테 시작 YYYY-MM-DD | | `end_date` | `varchar(10)` | NULL | NULL | 백테 종료 YYYY-MM-DD | | `job_id` | `varchar(64)` | NULL | NULL | 웹 잡 id (참고) | | `symbol` | `varchar(16)` | NULL | NULL | 해외 종목핀일 때만 | | `study_trials` | `int` | NOT NULL | 0 | 스터디 총 완료 목표. 0이면 미설정 | | `n_complete` | `int` | NOT NULL | 0 | 완료 trial 수 캐시 | | `n_running` | `int` | NOT NULL | 0 | 진행 중 trial 수 캐시 | | `payload_json` | `longtext` | NULL | NULL | 웹 요약과 동일 키 (results_*/mode_combo/postprocess) | | `briefing_md` | `mediumtext` | NULL | NULL | 브리핑 마크다운 | | `pp_needed` | `tinyint` | NOT NULL | 0 | 1=목표 미달(이어 돌리기/확정) | | `pp_status` | `varchar(16)` | NOT NULL | idle | idle\|running\|done\|error | | `pp_for_n` | `int` | NOT NULL | 0 | 이 후처리가 반영한 n_complete | | `pp_lock_until` | `datetime` | NULL | NULL | 락 만료 | | `pp_lock_owner` | `varchar(64)` | NULL | NULL | 잠근 호스트/pid | | `pp_error` | `varchar(500)` | NULL | NULL | 후처리 실패 메시지 | | `leftover_note` | `varchar(200)` | NULL | NULL | 남은횟수 안내 | | `updated_at` | `datetime` | NOT NULL | CURRENT_TIMESTAMP | 행 갱신 | | `created_at` | `datetime` | NOT NULL | CURRENT_TIMESTAMP | 최초 생성 |
DDL 원문 ```sql CREATE TABLE IF NOT EXISTS optuna_study_result ( study_name VARCHAR(255) NOT NULL COMMENT 'Optuna study 이름 (kis_optuna 과 동일)', strategy VARCHAR(32) NOT NULL DEFAULT '' COMMENT 'tail|momentum|us_momentum|breakout|scalp', mode VARCHAR(32) NOT NULL DEFAULT '' COMMENT 'tpe 등', start_date VARCHAR(10) NULL COMMENT '백테 시작 YYYY-MM-DD', end_date VARCHAR(10) NULL COMMENT '백테 종료 YYYY-MM-DD', job_id VARCHAR(64) NULL COMMENT '웹 잡 id (참고)', symbol VARCHAR(16) NULL COMMENT '해외 종목핀일 때만', study_trials INT NOT NULL DEFAULT 0 COMMENT '스터디 총 완료 목표. 0이면 미설정', n_complete INT NOT NULL DEFAULT 0 COMMENT 'kis_optuna 완료 trial 수 캐시', n_running INT NOT NULL DEFAULT 0 COMMENT '진행 중 trial 수 캐시 (표시용)', payload_json LONGTEXT NULL COMMENT 'results_all/gated/stable, mode_combo, postprocess_topn, overfit', briefing_md MEDIUMTEXT NULL COMMENT '브리핑 마크다운', pp_needed TINYINT NOT NULL DEFAULT 0 COMMENT '1=목표 도달 전 후처리 대기', pp_status VARCHAR(16) NOT NULL DEFAULT 'idle' COMMENT 'idle|running|done|error', pp_for_n INT NOT NULL DEFAULT 0 COMMENT '이 후처리가 반영한 n_complete', pp_lock_until DATETIME NULL COMMENT '락 만료 (죽은 워커 복구)', pp_lock_owner VARCHAR(64) NULL COMMENT '잠근 호스트/pid', pp_error VARCHAR(500) NULL COMMENT '후처리 실패 메시지', leftover_note VARCHAR(200) NULL COMMENT '웹 남은횟수 안내 캐시', updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '행 갱신', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '최초 생성', PRIMARY KEY (study_name), KEY idx_pp_needed (pp_needed, pp_status), KEY idx_job (job_id), KEY idx_updated (updated_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Optuna 스터디별 웹 결과·후처리 산출 (파일 JSON 대체)'; ```
### 📡 실시간 마켓 데이터 (WebSocket / Market Data) #### `ws_candles` **PK**: `id` | AUTO_INCREMENT=55175852 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | 분봉: PK · AUTO_INCREMENT | | `code` | `varchar(20)` | NOT NULL | | 분봉: 종목코드 (KR 6자리 / US 티커) | | `market` | `varchar(8)` | NOT NULL | KR | KR/US | | `timeframe` | `tinyint(4)` | NOT NULL | | 분봉 주기(분) | | `candle_time` | `varchar(12)` | NOT NULL | | 분봉: 봉 시각 YYYYMMDDHHMM | | `open` | `double` | NOT NULL | | 분봉: 시가 | | `high` | `double` | NOT NULL | | 분봉: 고가 | | `low` | `double` | NOT NULL | | 분봉: 저가 | | `close` | `double` | NOT NULL | | 분봉: 종가 | | `volume` | `bigint(20)` | NOT NULL | 0 | 분봉: 거래량(체결량/봉거래량) | | `rsi_2` | `double` | NULL | NULL | RSI(2) materialized | | `rsi_3` | `double` | NULL | NULL | RSI(3) materialized | | `rsi_5` | `double` | NULL | NULL | RSI(5) materialized | | `is_confirmed` | `tinyint(4)` | NOT NULL | 1 | 분봉: 봉 확정 여부 (1=확정) | | `source` | `varchar(10)` | NOT NULL | kis | 증권사 (kis/kiwoom). 레거시 rest/kw_rest/ws 는 마이그 | | `channel` | `varchar(10)` | NOT NULL | ws | ws\|rest\|rollup | | `updated_at` | `varchar(30)` | NOT NULL | | 분봉: 마지막 갱신 시각 | | `holding_peak` | `double` | NULL | NULL COMMENT | 보유 중 트레일 고점(WS 틱 max_price 스냅샷) | | `rsi_14` | `double` | NULL | NULL COMMENT | RSI(14) materialized | | `ema_9` | `double` | NULL | NULL COMMENT | EMA(9) materialized | | `ema_21` | `double` | NULL | NULL COMMENT | EMA(21) materialized | | `rsi_7` | `double` | NULL | NULL COMMENT | RSI(7) materialized | | `rsi_21` | `double` | NULL | NULL COMMENT | RSI(21) materialized | | `ema_5` | `double` | NULL | NULL COMMENT | EMA(5) materialized | | `ema_12` | `double` | NULL | NULL COMMENT | EMA(12) materialized | | `ema_15` | `double` | NULL | NULL COMMENT | EMA(15) materialized | | `ema_34` | `double` | NULL | NULL COMMENT | EMA(34) materialized | **인덱스**: - `uq_candle`: (`code`, `timeframe`, `candle_time`, `source`, `channel`) - `idx_tf_time`: (`timeframe`, `candle_time`) - `idx_ws_candles_market`: (`market`, `code`, `timeframe`, `candle_time`)
DDL 원문 ```sql CREATE TABLE `ws_candles` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(20) NOT NULL, `market` varchar(8) NOT NULL DEFAULT 'KR' COMMENT 'KR|US', `timeframe` tinyint(4) NOT NULL, `candle_time` varchar(12) NOT NULL, `open` double NOT NULL, `high` double NOT NULL, `low` double NOT NULL, `close` double NOT NULL, `volume` bigint(20) NOT NULL DEFAULT 0, `rsi_2` double DEFAULT NULL, `rsi_3` double DEFAULT NULL, `rsi_5` double DEFAULT NULL, `is_confirmed` tinyint(4) NOT NULL DEFAULT 1, `source` varchar(10) NOT NULL DEFAULT 'kis', `channel` varchar(10) NOT NULL DEFAULT 'ws' COMMENT 'ws|rest|rollup', `updated_at` varchar(30) NOT NULL, `holding_peak` double DEFAULT NULL COMMENT '보유 중 트레일 고점(WS 틱 max_price 스냅샷)', `rsi_14` double DEFAULT NULL COMMENT 'RSI(14) materialized', `ema_9` double DEFAULT NULL COMMENT 'EMA(9) materialized', `ema_21` double DEFAULT NULL COMMENT 'EMA(21) materialized', `rsi_7` double DEFAULT NULL COMMENT 'RSI(7) materialized', `rsi_21` double DEFAULT NULL COMMENT 'RSI(21) materialized', `ema_5` double DEFAULT NULL COMMENT 'EMA(5) materialized', `ema_12` double DEFAULT NULL COMMENT 'EMA(12) materialized', `ema_15` double DEFAULT NULL COMMENT 'EMA(15) materialized', `ema_34` double DEFAULT NULL COMMENT 'EMA(34) materialized', PRIMARY KEY (`id`), UNIQUE KEY `uq_candle` (`code`,`timeframe`,`candle_time`,`source`,`channel`), KEY `idx_tf_time` (`timeframe`,`candle_time`), KEY `idx_ws_candles_market` (`market`,`code`,`timeframe`,`candle_time`) ) ENGINE=InnoDB AUTO_INCREMENT=55175852 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `ws_ticks` **PK**: `id` | AUTO_INCREMENT=54623571 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | 국장틱: PK · AUTO_INCREMENT | | `market` | `varchar(8)` | NOT NULL | KR | 국장틱: 시장 구분 (KR/US 등) | | `exchange` | `varchar(16)` | NULL | NULL | 국장틱: 거래소 (NASD/NYSE/AMEX/KRX 등) | | `code` | `varchar(32)` | NOT NULL | | 국장틱: 종목코드 (KR 6자리 / US 티커) | | `tick_time` | `varchar(14)` | NOT NULL | | 국장틱: 틱 시각 YYYYMMDDHHMMSS | | `price` | `double` | NOT NULL | | 국장틱: 주문/체결 가격 | | `volume` | `bigint(20)` | NOT NULL | 0 | 국장틱: 거래량(체결량/봉거래량) | | `tick_seq` | `bigint(20)` | NULL | NULL | 국장틱: 틱 일련번호 | | `session` | `varchar(8)` | NULL | NULL | 국장틱: 세션 태그 | | `currency` | `varchar(8)` | NOT NULL | KRW | 국장틱: 통화 (KRW/USD) | | `source` | `varchar(16)` | NOT NULL | kis | 국장틱: 증권사 (kis/kiwoom/ls). REST 현재가 아님 | | `channel` | `varchar(10)` | NOT NULL | ws | 국장틱: 경로 (ws\|rest). 체결 틱은 ws만 적재. ka10007 INSERT 금지 | | `recv_ts` | `varchar(30)` | NOT NULL | | 국장틱: 수신 시각 | **인덱스**: - `idx_ws_ticks_lookup`: (`market`, `code`, `tick_time`) - `idx_ws_ticks_recv`: (`recv_ts`)
DDL 원문 ```sql CREATE TABLE `ws_ticks` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `market` varchar(8) NOT NULL DEFAULT 'KR', `exchange` varchar(16) DEFAULT NULL, `code` varchar(32) NOT NULL, `tick_time` varchar(14) NOT NULL, `price` double NOT NULL, `volume` bigint(20) NOT NULL DEFAULT 0, `tick_seq` bigint(20) DEFAULT NULL, `session` varchar(8) DEFAULT NULL, `currency` varchar(8) NOT NULL DEFAULT 'KRW', `source` varchar(16) NOT NULL DEFAULT 'kis', `channel` varchar(10) NOT NULL DEFAULT 'ws', `recv_ts` varchar(30) NOT NULL, PRIMARY KEY (`id`), KEY `idx_ws_ticks_lookup` (`market`,`code`,`tick_time`), KEY `idx_ws_ticks_recv` (`recv_ts`) ) ENGINE=InnoDB AUTO_INCREMENT=54623571 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `ws_ticks_us` **PK**: `id` | AUTO_INCREMENT=1458013 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | 해외틱: PK · AUTO_INCREMENT | | `market` | `varchar(8)` | NOT NULL | US | 해외틱: 시장 구분 (KR/US 등) | | `exchange` | `varchar(16)` | NULL | NULL | 해외틱: 거래소 (NASD/NYSE/AMEX/KRX 등) | | `code` | `varchar(32)` | NOT NULL | | 해외틱: 종목코드 (KR 6자리 / US 티커) | | `tick_time` | `varchar(14)` | NOT NULL | | 해외틱: 틱 시각 YYYYMMDDHHMMSS | | `price` | `double` | NOT NULL | | 해외틱: 주문/체결 가격 | | `volume` | `bigint(20)` | NOT NULL | 0 | 해외틱: 거래량(체결량/봉거래량) | | `tick_seq` | `bigint(20)` | NULL | NULL | 해외틱: 틱 일련번호 | | `session` | `varchar(8)` | NULL | NULL | 해외틱: 세션 태그 | | `currency` | `varchar(8)` | NOT NULL | USD | 해외틱: 통화 (KRW/USD) | | `source` | `varchar(16)` | NOT NULL | kis_us | 해외틱: 증권사 (kis_us 등). REST 현재가 아님 | | `channel` | `varchar(10)` | NOT NULL | ws | 해외틱: 경로 (ws\|rest). 체결 틱은 ws만 적재 | | `recv_ts` | `varchar(30)` | NOT NULL | | 해외틱: 수신 시각 | **인덱스**: - `idx_ws_ticks_us_lookup`: (`market`, `code`, `tick_time`) - `idx_ws_ticks_us_recv`: (`recv_ts`)
DDL 원문 ```sql CREATE TABLE `ws_ticks_us` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `market` varchar(8) NOT NULL DEFAULT 'US', `exchange` varchar(16) DEFAULT NULL, `code` varchar(32) NOT NULL, `tick_time` varchar(14) NOT NULL, `price` double NOT NULL, `volume` bigint(20) NOT NULL DEFAULT 0, `tick_seq` bigint(20) DEFAULT NULL, `session` varchar(8) DEFAULT NULL, `currency` varchar(8) NOT NULL DEFAULT 'USD', `source` varchar(16) NOT NULL DEFAULT 'kis_us', `channel` varchar(10) NOT NULL DEFAULT 'ws', `recv_ts` varchar(30) NOT NULL, PRIMARY KEY (`id`), KEY `idx_ws_ticks_us_lookup` (`market`,`code`,`tick_time`), KEY `idx_ws_ticks_us_recv` (`recv_ts`) ) ENGINE=InnoDB AUTO_INCREMENT=1458013 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `ws_orderbook` **PK**: `id` | AUTO_INCREMENT=1777328 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | 호가스냅: PK · AUTO_INCREMENT | | `market` | `varchar(8)` | NOT NULL | KR | 호가스냅: 시장 구분 (KR/US 등) | | `code` | `varchar(32)` | NOT NULL | | 호가스냅: 종목코드 (KR 6자리 / US 티커) | | `snap_time` | `varchar(14)` | NOT NULL | | 호가스냅: 스냅샷 시각 YYYYMMDDHHMMSS | | `best_bid` | `bigint(20)` | NOT NULL | 0 | 호가스냅: 최우선 매수호가 | | `best_ask` | `bigint(20)` | NOT NULL | 0 | 호가스냅: 최우선 매도호가 | | `total_bid_qty` | `bigint(20)` | NOT NULL | 0 | 호가스냅: 총 매수잔량 | | `total_ask_qty` | `bigint(20)` | NOT NULL | 0 | 호가스냅: 총 매도잔량 | | `bid_qty_l3` | `bigint(20)` | NOT NULL | 0 | 호가스냅: 매수 1~3호가 잔량합 | | `ask_qty_l3` | `bigint(20)` | NOT NULL | 0 | 호가스냅: 매도 1~3호가 잔량합 | | `levels_json` | `mediumtext` | NULL | NULL | 호가스냅: 호가 단계 JSON | | `source` | `varchar(16)` | NOT NULL | kiwoom_0d | 호가스냅: 데이터 소스 (kis/kiwoom/ls 등) | | `recv_ts` | `varchar(30)` | NOT NULL | | 호가스냅: 수신 시각 | | `strategy` | `varchar(16)` | NULL | NULL | 호가스냅: 전략 ID (SHORT/MOMENTUM/BREAKOUT/US_MOMENTUM 등) | | `reject_code` | `varchar(64)` | NULL | NULL | 호가스냅: REJECT 종목코드 (reject_code) | | `reject_msg` | `varchar(255)` | NULL | NULL | 호가스냅: REJECT ms G (reject_msg) | | `eval_price` | `bigint(20)` | NOT NULL | 0 | 호가스냅: EVAL 가격 (eval_price) | **인덱스**: - `idx_ws_orderbook_lookup`: (`market`, `code`, `snap_time`) - `idx_ws_orderbook_recv`: (`recv_ts`)
DDL 원문 ```sql CREATE TABLE `ws_orderbook` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `market` varchar(8) NOT NULL DEFAULT 'KR', `code` varchar(32) NOT NULL, `snap_time` varchar(14) NOT NULL, `best_bid` bigint(20) NOT NULL DEFAULT 0, `best_ask` bigint(20) NOT NULL DEFAULT 0, `total_bid_qty` bigint(20) NOT NULL DEFAULT 0, `total_ask_qty` bigint(20) NOT NULL DEFAULT 0, `bid_qty_l3` bigint(20) NOT NULL DEFAULT 0, `ask_qty_l3` bigint(20) NOT NULL DEFAULT 0, `levels_json` mediumtext DEFAULT NULL, `source` varchar(16) NOT NULL DEFAULT 'kiwoom_0d', `recv_ts` varchar(30) NOT NULL, `strategy` varchar(16) DEFAULT NULL, `reject_code` varchar(64) DEFAULT NULL, `reject_msg` varchar(255) DEFAULT NULL, `eval_price` bigint(20) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `idx_ws_orderbook_lookup` (`market`,`code`,`snap_time`), KEY `idx_ws_orderbook_recv` (`recv_ts`) ) ENGINE=InnoDB AUTO_INCREMENT=1777328 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `ws_program` **PK**: `id` | AUTO_INCREMENT=134369 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | 프로그램매매: PK · AUTO_INCREMENT | | `market` | `varchar(8)` | NOT NULL | KR | 프로그램매매: 시장 구분 (KR/US 등) | | `code` | `varchar(32)` | NOT NULL | | 프로그램매매: 종목코드 (KR 6자리 / US 티커) | | `snap_time` | `varchar(14)` | NOT NULL | | 프로그램매매: 스냅샷 시각 YYYYMMDDHHMMSS | | `buy_qty` | `bigint(20)` | NOT NULL | 0 | 프로그램매매: BUY 수량 (buy_qty) | | `sell_qty` | `bigint(20)` | NOT NULL | 0 | 프로그램매매: SELL 수량 (sell_qty) | | `net_qty` | `bigint(20)` | NOT NULL | 0 | 프로그램매매: NET 수량 (net_qty) | | `buy_amt` | `bigint(20)` | NOT NULL | 0 | 프로그램매매: BUY AMT (buy_amt) | | `sell_amt` | `bigint(20)` | NOT NULL | 0 | 프로그램매매: SELL AMT (sell_amt) | | `net_amt` | `bigint(20)` | NOT NULL | 0 | 프로그램매매: NET AMT (net_amt) | | `source` | `varchar(16)` | NOT NULL | kiwoom_0w | 프로그램매매: 데이터 소스 (kis/kiwoom/ls 등) | | `recv_ts` | `varchar(30)` | NOT NULL | | 프로그램매매: 수신 시각 | | `strategy` | `varchar(16)` | NULL | NULL | 프로그램매매: 전략 ID (SHORT/MOMENTUM/BREAKOUT/US_MOMENTUM 등) | | `reject_code` | `varchar(64)` | NULL | NULL | 프로그램매매: REJECT 종목코드 (reject_code) | | `reject_msg` | `varchar(255)` | NULL | NULL | 프로그램매매: REJECT ms G (reject_msg) | | `eval_price` | `bigint(20)` | NOT NULL | 0 | 프로그램매매: EVAL 가격 (eval_price) | **인덱스**: - `idx_ws_program_lookup`: (`market`, `code`, `snap_time`) - `idx_ws_program_recv`: (`recv_ts`)
DDL 원문 ```sql CREATE TABLE `ws_program` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `market` varchar(8) NOT NULL DEFAULT 'KR', `code` varchar(32) NOT NULL, `snap_time` varchar(14) NOT NULL, `buy_qty` bigint(20) NOT NULL DEFAULT 0, `sell_qty` bigint(20) NOT NULL DEFAULT 0, `net_qty` bigint(20) NOT NULL DEFAULT 0, `buy_amt` bigint(20) NOT NULL DEFAULT 0, `sell_amt` bigint(20) NOT NULL DEFAULT 0, `net_amt` bigint(20) NOT NULL DEFAULT 0, `source` varchar(16) NOT NULL DEFAULT 'kiwoom_0w', `recv_ts` varchar(30) NOT NULL, `strategy` varchar(16) DEFAULT NULL, `reject_code` varchar(64) DEFAULT NULL, `reject_msg` varchar(255) DEFAULT NULL, `eval_price` bigint(20) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `idx_ws_program_lookup` (`market`,`code`,`snap_time`), KEY `idx_ws_program_recv` (`recv_ts`) ) ENGINE=InnoDB AUTO_INCREMENT=134369 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `ws_price_validation` **PK**: `id` | AUTO_INCREMENT=7869235 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | PK · AUTO_INCREMENT | | `ts` | `datetime(3)` | NOT NULL | | ws_price_validation: TS (ts) | | `code` | `varchar(20)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `kis_price` | `double` | NULL | NULL | ws_price_validation: KIS 가격 (kis_price) | | `kiwoom_price` | `double` | NULL | NULL | ws_price_validation: KIWOOM 가격 (kiwoom_price) | | `diff_pct` | `double` | NULL | NULL | ws_price_validation: DIFF % (diff_pct) | | `kis_age_ms` | `int(11)` | NULL | NULL | ws_price_validation: KIS AGE ms (kis_age_ms) | | `kiwoom_age_ms` | `int(11)` | NULL | NULL | ws_price_validation: KIWOOM AGE ms (kiwoom_age_ms) | **인덱스**: - `idx_ts`: (`ts`) - `idx_code`: (`code`) - `idx_diff`: (`diff_pct`)
DDL 원문 ```sql CREATE TABLE `ws_price_validation` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `ts` datetime(3) NOT NULL, `code` varchar(20) NOT NULL, `kis_price` double DEFAULT NULL, `kiwoom_price` double DEFAULT NULL, `diff_pct` double DEFAULT NULL, `kis_age_ms` int(11) DEFAULT NULL, `kiwoom_age_ms` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_ts` (`ts`), KEY `idx_code` (`code`), KEY `idx_diff` (`diff_pct`) ) ENGINE=InnoDB AUTO_INCREMENT=7869235 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `ws_price_validation_ls` **PK**: `id` | AUTO_INCREMENT=403761 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | PK · AUTO_INCREMENT | | `ts` | `datetime(3)` | NOT NULL | | ws_price_validation_ls: TS (ts) | | `code` | `varchar(20)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `kis_price` | `double` | NULL | NULL | ws_price_validation_ls: KIS 가격 (kis_price) | | `kiwoom_price` | `double` | NULL | NULL | ws_price_validation_ls: KIWOOM 가격 (kiwoom_price) | | `ls_price` | `double` | NULL | NULL | ws_price_validation_ls: LS 가격 (ls_price) | | `diff_kis_ls_pct` | `double` | NULL | NULL | ws_price_validation_ls: DIFF KIS LS % (diff_kis_ls_pct) | | `diff_kw_ls_pct` | `double` | NULL | NULL | ws_price_validation_ls: DIFF KW LS % (diff_kw_ls_pct) | | `kis_age_ms` | `int(11)` | NULL | NULL | ws_price_validation_ls: KIS AGE ms (kis_age_ms) | | `kiwoom_age_ms` | `int(11)` | NULL | NULL | ws_price_validation_ls: KIWOOM AGE ms (kiwoom_age_ms) | | `ls_age_ms` | `int(11)` | NULL | NULL | ws_price_validation_ls: LS AGE ms (ls_age_ms) | **인덱스**: - `idx_lsval_ts`: (`ts`) - `idx_lsval_code`: (`code`) - `idx_lsval_diff`: (`diff_kis_ls_pct`)
DDL 원문 ```sql CREATE TABLE `ws_price_validation_ls` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `ts` datetime(3) NOT NULL, `code` varchar(20) NOT NULL, `kis_price` double DEFAULT NULL, `kiwoom_price` double DEFAULT NULL, `ls_price` double DEFAULT NULL, `diff_kis_ls_pct` double DEFAULT NULL, `diff_kw_ls_pct` double DEFAULT NULL, `kis_age_ms` int(11) DEFAULT NULL, `kiwoom_age_ms` int(11) DEFAULT NULL, `ls_age_ms` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_lsval_ts` (`ts`), KEY `idx_lsval_code` (`code`), KEY `idx_lsval_diff` (`diff_kis_ls_pct`) ) ENGINE=InnoDB AUTO_INCREMENT=403761 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `ls_ws_candles` **PK**: `code`, `datetime`, `tf_min` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `code` 🔑 | `varchar(20)` | NOT NULL | | LS분봉: 종목코드 (KR 6자리 / US 티커) | | `datetime` 🔑 | `varchar(20)` | NOT NULL | | LS분봉: DATETIME (datetime) | | `tf_min` 🔑 | `int(11)` | NOT NULL | 1 | LS분봉: 분봉 주기(분) | | `open` | `double` | NOT NULL | | LS분봉: 시가 | | `high` | `double` | NOT NULL | | LS분봉: 고가 | | `low` | `double` | NOT NULL | | LS분봉: 저가 | | `close` | `double` | NOT NULL | | LS분봉: 종가 | | `volume` | `double` | NOT NULL | 0 | LS분봉: 거래량(체결량/봉거래량) | | `tick_count` | `int(11)` | NOT NULL | 0 | LS분봉: TICK COUNT (tick_count) | | `updated_at` | `datetime(3)` | NOT NULL | | LS분봉: 마지막 갱신 시각 | **인덱스**: - `idx_ls_cndl_dt`: (`datetime`)
DDL 원문 ```sql CREATE TABLE `ls_ws_candles` ( `code` varchar(20) NOT NULL, `datetime` varchar(20) NOT NULL, `tf_min` int(11) NOT NULL DEFAULT 1, `open` double NOT NULL, `high` double NOT NULL, `low` double NOT NULL, `close` double NOT NULL, `volume` double NOT NULL DEFAULT 0, `tick_count` int(11) NOT NULL DEFAULT 0, `updated_at` datetime(3) NOT NULL, PRIMARY KEY (`code`,`datetime`,`tf_min`), KEY `idx_ls_cndl_dt` (`datetime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `ls_ws_ticks` **PK**: `id` | AUTO_INCREMENT=8419294 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | LS틱: PK · AUTO_INCREMENT | | `ts` | `datetime(3)` | NOT NULL | | LS틱: TS (ts) | | `code` | `varchar(20)` | NOT NULL | | LS틱: 종목코드 (KR 6자리 / US 티커) | | `price` | `double` | NOT NULL | | LS틱: 주문/체결 가격 | | `volume` | `double` | NULL | NULL | LS틱: 거래량(체결량/봉거래량) | | `tot_volume` | `double` | NULL | NULL | LS틱: TOT 거래량 (tot_volume) | | `chetime` | `varchar(16)` | NULL | NULL | LS틱: CHETIME (chetime) | | `tr_cd` | `varchar(8)` | NULL | NULL | LS틱: TR CD (tr_cd) | **인덱스**: - `idx_ls_tick_ts`: (`ts`) - `idx_ls_tick_code_ts`: (`code`, `ts`)
DDL 원문 ```sql CREATE TABLE `ls_ws_ticks` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `ts` datetime(3) NOT NULL, `code` varchar(20) NOT NULL, `price` double NOT NULL, `volume` double DEFAULT NULL, `tot_volume` double DEFAULT NULL, `chetime` varchar(16) DEFAULT NULL, `tr_cd` varchar(8) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_ls_tick_ts` (`ts`), KEY `idx_ls_tick_code_ts` (`code`,`ts`) ) ENGINE=InnoDB AUTO_INCREMENT=8419294 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `ls_ws_orderbook` **PK**: `id` | AUTO_INCREMENT=23812 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | LS호가: PK · AUTO_INCREMENT | | `market` | `varchar(8)` | NOT NULL | KR | LS호가: 시장 구분 (KR/US 등) | | `code` | `varchar(32)` | NOT NULL | | LS호가: 종목코드 (KR 6자리 / US 티커) | | `snap_time` | `varchar(14)` | NOT NULL | | LS호가: 스냅샷 시각 YYYYMMDDHHMMSS | | `best_bid` | `bigint(20)` | NOT NULL | 0 | LS호가: 최우선 매수호가 | | `best_ask` | `bigint(20)` | NOT NULL | 0 | LS호가: 최우선 매도호가 | | `total_bid_qty` | `bigint(20)` | NOT NULL | 0 | LS호가: 총 매수잔량 | | `total_ask_qty` | `bigint(20)` | NOT NULL | 0 | LS호가: 총 매도잔량 | | `bid_qty_l3` | `bigint(20)` | NOT NULL | 0 | LS호가: 매수 1~3호가 잔량합 | | `ask_qty_l3` | `bigint(20)` | NOT NULL | 0 | LS호가: 매도 1~3호가 잔량합 | | `levels_json` | `mediumtext` | NULL | NULL | LS호가: 호가 단계 JSON | | `source` | `varchar(16)` | NOT NULL | ls_uh1 | LS호가: 데이터 소스 (kis/kiwoom/ls 등) | | `recv_ts` | `varchar(30)` | NOT NULL | | LS호가: 수신 시각 | **인덱스**: - `idx_ls_ob_lookup`: (`market`, `code`, `snap_time`) - `idx_ls_ob_recv`: (`recv_ts`) - `idx_ls_ob_code`: (`code`)
DDL 원문 ```sql CREATE TABLE `ls_ws_orderbook` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `market` varchar(8) NOT NULL DEFAULT 'KR', `code` varchar(32) NOT NULL, `snap_time` varchar(14) NOT NULL, `best_bid` bigint(20) NOT NULL DEFAULT 0, `best_ask` bigint(20) NOT NULL DEFAULT 0, `total_bid_qty` bigint(20) NOT NULL DEFAULT 0, `total_ask_qty` bigint(20) NOT NULL DEFAULT 0, `bid_qty_l3` bigint(20) NOT NULL DEFAULT 0, `ask_qty_l3` bigint(20) NOT NULL DEFAULT 0, `levels_json` mediumtext DEFAULT NULL, `source` varchar(16) NOT NULL DEFAULT 'ls_uh1', `recv_ts` varchar(30) NOT NULL, PRIMARY KEY (`id`), KEY `idx_ls_ob_lookup` (`market`,`code`,`snap_time`), KEY `idx_ls_ob_recv` (`recv_ts`), KEY `idx_ls_ob_code` (`code`) ) ENGINE=InnoDB AUTO_INCREMENT=23812 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `ls_ws_vi` **PK**: `id` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | LS VI: PK · AUTO_INCREMENT | | `ts` | `datetime(3)` | NOT NULL | | LS VI: TS (ts) | | `code` | `varchar(20)` | NOT NULL | | LS VI: 종목코드 (KR 6자리 / US 티커) | | `event_time` | `varchar(16)` | NULL | NULL | LS VI: EVENT TIME (event_time) | | `vi_gubun` | `varchar(4)` | NOT NULL | 0 | LS VI: VI GUBUN (vi_gubun) | | `krx_vi_gubun` | `varchar(4)` | NULL | NULL | LS VI: KRX VI GUBUN (krx_vi_gubun) | | `nxt_vi_gubun` | `varchar(4)` | NULL | NULL | LS VI: NXT VI GUBUN (nxt_vi_gubun) | | `svi_recprice` | `double` | NULL | NULL | LS VI: SVI RECPRICE (svi_recprice) | | `dvi_recprice` | `double` | NULL | NULL | LS VI: DVI RECPRICE (dvi_recprice) | | `vi_trgprice` | `double` | NULL | NULL | LS VI: VI TRGPRICE (vi_trgprice) | | `tr_cd` | `varchar(8)` | NULL | NULL | LS VI: TR CD (tr_cd) | | `exchname` | `varchar(8)` | NULL | NULL | LS VI: EXCHNAME (exchname) | **인덱스**: - `idx_ls_vi_ts`: (`ts`) - `idx_ls_vi_code_ts`: (`code`, `ts`) - `idx_ls_vi_gubun`: (`vi_gubun`)
DDL 원문 ```sql CREATE TABLE `ls_ws_vi` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `ts` datetime(3) NOT NULL, `code` varchar(20) NOT NULL, `event_time` varchar(16) DEFAULT NULL, `vi_gubun` varchar(4) NOT NULL DEFAULT '0', `krx_vi_gubun` varchar(4) DEFAULT NULL, `nxt_vi_gubun` varchar(4) DEFAULT NULL, `svi_recprice` double DEFAULT NULL, `dvi_recprice` double DEFAULT NULL, `vi_trgprice` double DEFAULT NULL, `tr_cd` varchar(8) DEFAULT NULL, `exchname` varchar(8) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_ls_vi_ts` (`ts`), KEY `idx_ls_vi_code_ts` (`code`,`ts`), KEY `idx_ls_vi_gubun` (`vi_gubun`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
### 🔍 종목 스캔 / 후보 (Universe & Candidates) #### `target_candidates` **PK**: `code` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `code` 🔑 | `varchar(20)` | NOT NULL | | 현재후보: 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | 현재후보: 종목명 | | `score` | `double` | NOT NULL | | 현재후보: 점수/랭크 | | `price` | `double` | NOT NULL | | 현재후보: 주문/체결 가격 | | `scan_time` | `varchar(30)` | NOT NULL | | 현재후보: 스캔 시각 | | `updated_at` | `varchar(30)` | NOT NULL | | 현재후보: 마지막 갱신 시각 | | `market` | `char(1)` | NULL | Q | 현재후보: 시장 구분 (KR/US 등) | | `sector` | `varchar(100)` | NULL | NULL | 현재후보: 섹터 | | `theme` | `varchar(100)` | NULL | NULL | 현재후보: 테마 |
DDL 원문 ```sql CREATE TABLE `target_candidates` ( `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL, `score` double NOT NULL, `price` double NOT NULL, `scan_time` varchar(30) NOT NULL, `updated_at` varchar(30) NOT NULL, `market` char(1) DEFAULT 'Q', `sector` varchar(100) DEFAULT NULL, `theme` varchar(100) DEFAULT NULL, PRIMARY KEY (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `target_candidates_history` **PK**: `id` | AUTO_INCREMENT=3718695 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | 후보이력: PK · AUTO_INCREMENT | | `slot_key` | `varchar(12)` | NOT NULL | | 후보이력: 슬롯/히스토리 키 | | `scan_time` | `varchar(30)` | NOT NULL | | 후보이력: 스캔 시각 | | `code` | `varchar(20)` | NOT NULL | | 후보이력: 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | 후보이력: 종목명 | | `score` | `double` | NOT NULL | 0 | 후보이력: 점수/랭크 | | `price` | `double` | NOT NULL | 0 | 후보이력: 주문/체결 가격 | | `market` | `char(1)` | NULL | Q | 후보이력: 시장 구분 (KR/US 등) | | `sector` | `varchar(100)` | NULL | NULL | 후보이력: 섹터 | | `theme` | `varchar(100)` | NULL | NULL | 후보이력: 테마 | | `strategy_id` | `varchar(30)` | NULL | NULL | 후보이력: 전략 ID | | `event_time` | `varchar(26)` | NULL | NULL | 후보이력: EVENT TIME (마이크로초 `YYYY-MM-DD HH:MM:SS.ffffff`) | **인덱스**: - `idx_slot`: (`slot_key`) - `idx_scan`: (`scan_time`) - `idx_strategy_event`: (`strategy_id`, `event_time`) - `idx_tch_slot_sid`: (`slot_key`, `strategy_id`) — 오늘 운영 당일 이력 집계. 기존 인덱스 유지.
DDL 원문 ```sql CREATE TABLE `target_candidates_history` ( `id` int(11) NOT NULL AUTO_INCREMENT, `slot_key` varchar(12) NOT NULL, `scan_time` varchar(30) NOT NULL, `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL DEFAULT '', `score` double NOT NULL DEFAULT 0, `price` double NOT NULL DEFAULT 0, `market` char(1) DEFAULT 'Q', `sector` varchar(100) DEFAULT NULL, `theme` varchar(100) DEFAULT NULL, `strategy_id` varchar(30) DEFAULT NULL, `event_time` varchar(26) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_slot` (`slot_key`), KEY `idx_scan` (`scan_time`), KEY `idx_strategy_event` (`strategy_id`,`event_time`), KEY `idx_tch_slot_sid` (`slot_key`,`strategy_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3718695 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `condition_job_events` 조건검색 **진입/재진입/이탈** 1이벤트 1행 (스냅샷 테이블과 분리). 공통 플래그 맵: `kis_trader/network/condition_common.py` (`JOB_KO`). | 컬럼 | 비고 | |------|------| | `job_flag` | LS `N`/`R`/`O` · 키움 `I`/`D` | | `job_ko` | 진입/재진입/이탈 | | `broker` | `ls` / `kiwoom` | | `broker_time` | 증권사 HHMMSS(초) | | `event_time` | 수신 시각(초) | | `source` | `ls_afr` / `kiwoom_real` 등 | **LS 시드 참고**: 유니버스 목록 본체는 `ls_candidates_history`(t1859/flush). t1859 공백(09000)은 history에 안 넣고, RAM0 시 `LS_T1859_EMPTY_RETRY_SEC` REST 재시드. #### `ls_candidates_history` **PK**: `id` | AUTO_INCREMENT=969087 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | LS후보이력: PK · AUTO_INCREMENT | | `slot_key` | `varchar(12)` | NOT NULL | | LS후보이력: 슬롯/히스토리 키 | | `scan_time` | `varchar(30)` | NOT NULL | | LS후보이력: 스캔 시각 | | `code` | `varchar(20)` | NOT NULL | | LS후보이력: 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | LS후보이력: 종목명 | | `score` | `double` | NOT NULL | 0 | LS후보이력: 점수/랭크 | | `price` | `double` | NOT NULL | 0 | LS후보이력: 주문/체결 가격 | | `market` | `char(1)` | NULL | Q | LS후보이력: 시장 구분 (KR/US 등) | | `sector` | `varchar(100)` | NULL | NULL | LS후보이력: 섹터 | | `theme` | `varchar(100)` | NULL | NULL | LS후보이력: 테마 | | `strategy_id` | `varchar(32)` | NOT NULL | | LS후보이력: 전략 ID | | `event_time` | `varchar(30)` | NOT NULL | | LS후보이력: EVENT TIME (event_time) | | `query_name` | `varchar(64)` | NOT NULL | | LS후보이력: QUERY 종목명 (query_name) | | `query_index` | `varchar(32)` | NOT NULL | | LS후보이력: QUERY INDEX (query_index) | | `source` | `varchar(16)` | NOT NULL | ls_afr | LS후보이력: 데이터 소스 (kis/kiwoom/ls 등) | **인덱스**: - `idx_ls_cand_slot`: (`slot_key`) - `idx_ls_cand_sid_evt`: (`strategy_id`, `event_time`) - `idx_ls_cand_code`: (`code`) - `idx_ls_cand_scan`: (`scan_time`)
DDL 원문 ```sql CREATE TABLE `ls_candidates_history` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `slot_key` varchar(12) NOT NULL, `scan_time` varchar(30) NOT NULL, `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL DEFAULT '', `score` double NOT NULL DEFAULT 0, `price` double NOT NULL DEFAULT 0, `market` char(1) DEFAULT 'Q', `sector` varchar(100) DEFAULT NULL, `theme` varchar(100) DEFAULT NULL, `strategy_id` varchar(32) NOT NULL DEFAULT '', `event_time` varchar(30) NOT NULL DEFAULT '', `query_name` varchar(64) NOT NULL DEFAULT '', `query_index` varchar(32) NOT NULL DEFAULT '', `source` varchar(16) NOT NULL DEFAULT 'ls_afr', PRIMARY KEY (`id`), KEY `idx_ls_cand_slot` (`slot_key`), KEY `idx_ls_cand_sid_evt` (`strategy_id`,`event_time`), KEY `idx_ls_cand_code` (`code`), KEY `idx_ls_cand_scan` (`scan_time`) ) ENGINE=InnoDB AUTO_INCREMENT=969087 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `ls_universe_history` **PK**: `id` | AUTO_INCREMENT=845 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | LS유니버스이력: PK · AUTO_INCREMENT | | `slot_key` | `varchar(12)` | NOT NULL | | LS유니버스이력: 슬롯/히스토리 키 | | `scan_time` | `varchar(30)` | NOT NULL | | LS유니버스이력: 스캔 시각 | | `code` | `varchar(20)` | NOT NULL | | LS유니버스이력: 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | LS유니버스이력: 종목명 | | `price` | `double` | NOT NULL | 0 | LS유니버스이력: 주문/체결 가격 | | `tick_count` | `int(11)` | NOT NULL | 0 | LS유니버스이력: TICK COUNT (tick_count) | | `candle_1m_count` | `int(11)` | NOT NULL | 0 | LS유니버스이력: CANDLE 1M COUNT (candle_1m_count) | | `last_tick_ts` | `datetime(3)` | NULL | NULL | LS유니버스이력: LAST TICK TS (last_tick_ts) | | `last_candle_dt` | `varchar(20)` | NULL | NULL | LS유니버스이력: LAST CANDLE DT (last_candle_dt) | | `gap_1m_missing` | `int(11)` | NOT NULL | 0 | LS유니버스이력: GAP 1M MISSING (gap_1m_missing) | | `source` | `varchar(16)` | NOT NULL | ls_ws | LS유니버스이력: 데이터 소스 (kis/kiwoom/ls 등) | | `note` | `varchar(200)` | NULL | NULL | LS유니버스이력: 메모 | **인덱스**: - `uq_ls_univ_slot_code`: (`slot_key`, `code`) - `idx_ls_univ_slot`: (`slot_key`) - `idx_ls_univ_code`: (`code`) - `idx_ls_univ_scan`: (`scan_time`)
DDL 원문 ```sql CREATE TABLE `ls_universe_history` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `slot_key` varchar(12) NOT NULL, `scan_time` varchar(30) NOT NULL, `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL DEFAULT '', `price` double NOT NULL DEFAULT 0, `tick_count` int(11) NOT NULL DEFAULT 0, `candle_1m_count` int(11) NOT NULL DEFAULT 0, `last_tick_ts` datetime(3) DEFAULT NULL, `last_candle_dt` varchar(20) DEFAULT NULL, `gap_1m_missing` int(11) NOT NULL DEFAULT 0, `source` varchar(16) NOT NULL DEFAULT 'ls_ws', `note` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uq_ls_univ_slot_code` (`slot_key`,`code`), KEY `idx_ls_univ_slot` (`slot_key`), KEY `idx_ls_univ_code` (`code`), KEY `idx_ls_univ_scan` (`scan_time`) ) ENGINE=InnoDB AUTO_INCREMENT=845 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `permanent_subscriptions` **PK**: `id` | AUTO_INCREMENT=16 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | 영구구독: PK · AUTO_INCREMENT | | `code` | `varchar(16)` | NOT NULL | | 영구구독: 종목코드 (KR 6자리 / US 티커) | | `market_type` | `varchar(8)` | NOT NULL | KR | 영구구독: 시장유형 (KR/US) | | `exchange` | `varchar(16)` | NOT NULL | KRX | 영구구독: 거래소 (NASD/NYSE/AMEX/KRX 등) | | `symbol` | `varchar(32)` | NOT NULL | | 영구구독: 심볼/티커 | | `tf_min` | `int(11)` | NOT NULL | 60 | 영구구독: 분봉 주기(분) | | `enabled` | `tinyint(4)` | NOT NULL | 1 | 영구구독: 활성 여부 (1=ON) | | `note` | `varchar(100)` | NOT NULL | | 영구구독: 메모 | | `alert_price` | `double` | NULL | | 목표가 알람 가격 (NULL=미설정) | | `alert_side` | `varchar(8)` | NOT NULL | gte | gte=이상 · lte=이하 | | `alert_armed` | `tinyint(4)` | NOT NULL | 1 | 1=감시중 · 0=발화 후 대기 | | `alert_fired_at` | `datetime` | NULL | | 마지막 알람 시각 | | `created_at` | `datetime` | NULL | current_timestamp() | 영구구독: 생성 시각 | **인덱스**: - `uq_perm_code`: (`code`)
DDL 원문 ```sql CREATE TABLE `permanent_subscriptions` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code` varchar(16) NOT NULL, `market_type` varchar(8) NOT NULL DEFAULT 'KR', `exchange` varchar(16) NOT NULL DEFAULT 'KRX', `symbol` varchar(32) NOT NULL DEFAULT '', `tf_min` int(11) NOT NULL DEFAULT 60, `enabled` tinyint(4) NOT NULL DEFAULT 1, `note` varchar(100) NOT NULL DEFAULT '', `created_at` datetime DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `uq_perm_code` (`code`) ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='영구구독(국내 WS + 해외 WS) 종목'; ```
#### `stock_meta` **PK**: `code` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `code` 🔑 | `varchar(20)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(100)` | NOT NULL | | 종목명 | | `market` | `char(1)` | NOT NULL | Q | 시장 구분 (KR/US 등) | | `sector_code` | `varchar(20)` | NULL | NULL | stock_meta: 초 TOR 종목코드 (sector_code) | | `sector` | `varchar(100)` | NULL | NULL | 섹터 | | `theme` | `varchar(100)` | NULL | NULL | 테마 | | `theme_rank` | `tinyint(4)` | NULL | 3 | stock_meta: THEME RANK (theme_rank) | | `updated_at` | `varchar(30)` | NOT NULL | | 마지막 갱신 시각 |
DDL 원문 ```sql CREATE TABLE `stock_meta` ( `code` varchar(20) NOT NULL, `name` varchar(100) NOT NULL DEFAULT '', `market` char(1) NOT NULL DEFAULT 'Q', `sector_code` varchar(20) DEFAULT NULL, `sector` varchar(100) DEFAULT NULL, `theme` varchar(100) DEFAULT NULL, `theme_rank` tinyint(4) DEFAULT 3, `updated_at` varchar(30) NOT NULL, PRIMARY KEY (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `stock_share_meta` **PK**: `code` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `code` 🔑 | `varchar(20)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `flo_stk` | `bigint(20)` | NOT NULL | 0 | stock_share_meta: FLO STK (flo_stk) | | `dstr_stk` | `bigint(20)` | NOT NULL | 0 | stock_share_meta: DSTR STK (dstr_stk) | | `dstr_rt` | `double` | NULL | NULL | stock_share_meta: DSTR RT (dstr_rt) | | `source` | `varchar(16)` | NOT NULL | ka10001 | 데이터 소스 (kis/kiwoom/ls 등) | | `updated_at` | `varchar(30)` | NOT NULL | | 마지막 갱신 시각 | **인덱스**: - `idx_share_updated`: (`updated_at`)
DDL 원문 ```sql CREATE TABLE `stock_share_meta` ( `code` varchar(20) NOT NULL, `flo_stk` bigint(20) NOT NULL DEFAULT 0, `dstr_stk` bigint(20) NOT NULL DEFAULT 0, `dstr_rt` double DEFAULT NULL, `source` varchar(16) NOT NULL DEFAULT 'ka10001', `updated_at` varchar(30) NOT NULL, PRIMARY KEY (`code`), KEY `idx_share_updated` (`updated_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
### 📈 전략별 종목 설정 (Per-Stock Config) #### `holding_stock_config` **PK**: `id` | AUTO_INCREMENT=17 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | PK · AUTO_INCREMENT | | `code` | `varchar(10)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(50)` | NULL | | 종목명 | | `created_at` | `datetime` | NULL | current_timestamp() | 생성 시각 | | `rsi_period` | `float` | NULL | 14 | holding_stock_config: RSI PERIOD (rsi_period) | | `rsi_buy1` | `float` | NULL | 35 | holding_stock_config: RSI BUY1 (rsi_buy1) | | `rsi_buy2` | `float` | NULL | 30 | holding_stock_config: RSI BUY2 (rsi_buy2) | | `rsi_buy3` | `float` | NULL | 25 | holding_stock_config: RSI BUY3 (rsi_buy3) | | `rsi_sell` | `float` | NULL | 70 | holding_stock_config: RSI SELL (rsi_sell) | | `take_profit_pct` | `float` | NULL | 4 | holding_stock_config: 익절 % (take_profit_pct) | | `stop_loss_pct` | `float` | NULL | 10 | holding_stock_config: 손절 % (stop_loss_pct) | | `buy1_ratio` | `float` | NULL | 30 | holding_stock_config: BUY1 RATIO (buy1_ratio) | | `buy2_ratio` | `float` | NULL | 30 | holding_stock_config: BUY2 RATIO (buy2_ratio) | | `buy3_ratio` | `float` | NULL | 40 | holding_stock_config: BUY3 RATIO (buy3_ratio) | | `slot_money` | `float` | NULL | 3000000 | holding_stock_config: SLOT MONEY (slot_money) | | `atr_period` | `float` | NULL | 14 | holding_stock_config: ATR PERIOD (atr_period) | | `ath_drop_min_pct` | `float` | NULL | 0 COMMENT | ATH 대비 최소 낙폭% (0=비활성) | | `year_drop_min_pct` | `float` | NULL | 0 COMMENT | 연도고점 대비 최소 낙폭% (0=비활성) | | `w52_drop_min_pct` | `float` | NULL | 0 COMMENT | 52주고점 대비 최소 낙폭% (0=비활성) | | `ma_fast` | `float` | NULL | 20 COMMENT | 단기 이동평균 기간 | | `ma_slow` | `float` | NULL | 60 COMMENT | 장기 이동평균 기간 | | `trail_stop_pct` | `float` | NULL | 8 COMMENT | 트레일링 스탑 % (0=비활성) | | `trend_filter` | `float` | NULL | 1 COMMENT | 추세 필터 (1=사용/0=미사용) | | `atr_mult` | `float` | NULL | 3 COMMENT | 샹들리에 엑시트 ATR 배수 | | `updow_body_drop_min_pct` | `double` | NULL | NULL COMMENT | UPDOW 직전봉 몸통하락% 하한, NULL=env UPDOW_BODY_DROP_MIN_PCT | | `updow_max_hold_bars` | `int(11)` | NULL | NULL COMMENT | UPDOW 최대 보유 봉 수, NULL=env UPDOW_MAX_HOLD_BARS | | `updow_exit_on_green` | `double` | NULL | NULL COMMENT | UPDOW 양봉청산 1=ON 0=OFF, NULL=env UPDOW_EXIT_ON_GREEN | | `updow_tf_min` | `int(11)` | NULL | NULL COMMENT | UPDOW 분봉 tf NULL·<1=env UPDOW_TF_MIN | | `updow_regime_ma_bars` | `int(11)` | NULL | NULL COMMENT | UPDOW KOSPI프록시 MA봉수 NULL=env | | `updow_atr_use_dynamic` | `double` | NULL | NULL COMMENT | UPDOW ATR 동적 청산 1=ON 0=OFF NULL=env UPDOW_ATR_USE_DYNAMIC | | `updow_atr_period` | `int(11)` | NULL | NULL COMMENT | UPDOW ATR 기간(봉), NULL=env UPDOW_ATR_PERIOD | | `updow_atr_sl_mult` | `double` | NULL | NULL COMMENT | UPDOW ATR 손절 배수, NULL=env UPDOW_ATR_SL_MULT | | `updow_atr_tp_mult` | `double` | NULL | NULL COMMENT | UPDOW ATR 익절 배수, NULL=env UPDOW_ATR_TP_MULT | | `updow_atr_sl_min_pct` | `double` | NULL | NULL | holding_stock_config: UPDOW ATR SL MIN % (updow_atr_sl_min_pct) | | `updow_atr_sl_max_pct` | `double` | NULL | NULL | holding_stock_config: UPDOW ATR SL MAX % (updow_atr_sl_max_pct) | | `updow_atr_tp_min_pct` | `double` | NULL | NULL | holding_stock_config: UPDOW ATR TP MIN % (updow_atr_tp_min_pct) | | `updow_atr_tp_max_pct` | `double` | NULL | NULL | holding_stock_config: UPDOW ATR TP MAX % (updow_atr_tp_max_pct) | | `updow_shoulder_min_high_pct` | `double` | NULL | NULL COMMENT | UPDOW 어깨 발동(%) NULL=env UPDOW_SHOULDER_MIN_HIGH_PCT | | `updow_shoulder_cut_pct` | `double` | NULL | NULL COMMENT | UPDOW 어깨 폭(%) NULL=env UPDOW_SHOULDER_CUT_PCT | **인덱스**: - `idx_holding_config_code`: (`code`)
DDL 원문 ```sql CREATE TABLE `holding_stock_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code` varchar(10) NOT NULL, `name` varchar(50) DEFAULT '', `created_at` datetime DEFAULT current_timestamp(), `rsi_period` float DEFAULT 14, `rsi_buy1` float DEFAULT 35, `rsi_buy2` float DEFAULT 30, `rsi_buy3` float DEFAULT 25, `rsi_sell` float DEFAULT 70, `take_profit_pct` float DEFAULT 4, `stop_loss_pct` float DEFAULT 10, `buy1_ratio` float DEFAULT 30, `buy2_ratio` float DEFAULT 30, `buy3_ratio` float DEFAULT 40, `slot_money` float DEFAULT 3000000, `atr_period` float DEFAULT 14, `ath_drop_min_pct` float DEFAULT 0 COMMENT 'ATH 대비 최소 낙폭% (0=비활성)', `year_drop_min_pct` float DEFAULT 0 COMMENT '연도고점 대비 최소 낙폭% (0=비활성)', `w52_drop_min_pct` float DEFAULT 0 COMMENT '52주고점 대비 최소 낙폭% (0=비활성)', `ma_fast` float DEFAULT 20 COMMENT '단기 이동평균 기간', `ma_slow` float DEFAULT 60 COMMENT '장기 이동평균 기간', `trail_stop_pct` float DEFAULT 8 COMMENT '트레일링 스탑 % (0=비활성)', `trend_filter` float DEFAULT 1 COMMENT '추세 필터 (1=사용/0=미사용)', `atr_mult` float DEFAULT 3 COMMENT '샹들리에 엑시트 ATR 배수', `updow_body_drop_min_pct` double DEFAULT NULL COMMENT 'UPDOW 직전봉 몸통하락% 하한, NULL=env UPDOW_BODY_DROP_MIN_PCT', `updow_max_hold_bars` int(11) DEFAULT NULL COMMENT 'UPDOW 최대 보유 봉 수, NULL=env UPDOW_MAX_HOLD_BARS', `updow_exit_on_green` double DEFAULT NULL COMMENT 'UPDOW 양봉청산 1=ON 0=OFF, NULL=env UPDOW_EXIT_ON_GREEN', `updow_tf_min` int(11) DEFAULT NULL COMMENT 'UPDOW 분봉 tf NULL·<1=env UPDOW_TF_MIN', `updow_regime_ma_bars` int(11) DEFAULT NULL COMMENT 'UPDOW KOSPI프록시 MA봉수 NULL=env', `updow_atr_use_dynamic` double DEFAULT NULL COMMENT 'UPDOW ATR 동적 청산 1=ON 0=OFF NULL=env UPDOW_ATR_USE_DYNAMIC', `updow_atr_period` int(11) DEFAULT NULL COMMENT 'UPDOW ATR 기간(봉), NULL=env UPDOW_ATR_PERIOD', `updow_atr_sl_mult` double DEFAULT NULL COMMENT 'UPDOW ATR 손절 배수, NULL=env UPDOW_ATR_SL_MULT', `updow_atr_tp_mult` double DEFAULT NULL COMMENT 'UPDOW ATR 익절 배수, NULL=env UPDOW_ATR_TP_MULT', `updow_atr_sl_min_pct` double DEFAULT NULL, `updow_atr_sl_max_pct` double DEFAULT NULL, `updow_atr_tp_min_pct` double DEFAULT NULL, `updow_atr_tp_max_pct` double DEFAULT NULL, `updow_shoulder_min_high_pct` double DEFAULT NULL COMMENT 'UPDOW 어깨 발동(%) NULL=env UPDOW_SHOULDER_MIN_HIGH_PCT', `updow_shoulder_cut_pct` double DEFAULT NULL COMMENT 'UPDOW 어깨 폭(%) NULL=env UPDOW_SHOULDER_CUT_PCT', PRIMARY KEY (`id`), KEY `idx_holding_config_code` (`code`) ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `holding_candles` **PK**: `id` | AUTO_INCREMENT=6077 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | PK · AUTO_INCREMENT | | `code` | `varchar(10)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `candle_date` | `date` | NOT NULL | | holding_candles: CANDLE DATE (candle_date) | | `open` | `float` | NOT NULL | 0 | 시가 | | `high` | `float` | NOT NULL | 0 | 고가 | | `low` | `float` | NOT NULL | 0 | 저가 | | `close` | `float` | NOT NULL | 0 | 종가 | | `volume` | `bigint(20)` | NOT NULL | 0 | 거래량(체결량/봉거래량) | | `updated_at` | `datetime` | NULL | current_timestamp() ON UPDATE current_timestamp() | 마지막 갱신 시각 | | `change_rate` | `float` | NOT NULL | 0 COMMENT | 전일대비등락률(%) | **인덱스**: - `uq_holding_candle`: (`code`, `candle_date`)
DDL 원문 ```sql CREATE TABLE `holding_candles` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code` varchar(10) NOT NULL, `candle_date` date NOT NULL, `open` float NOT NULL DEFAULT 0, `high` float NOT NULL DEFAULT 0, `low` float NOT NULL DEFAULT 0, `close` float NOT NULL DEFAULT 0, `volume` bigint(20) NOT NULL DEFAULT 0, `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(), `change_rate` float NOT NULL DEFAULT 0 COMMENT '전일대비등락률(%)', PRIMARY KEY (`id`), UNIQUE KEY `uq_holding_candle` (`code`,`candle_date`) ) ENGINE=InnoDB AUTO_INCREMENT=6077 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `holding_min_candles` **PK**: `id` | AUTO_INCREMENT=102318 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | PK · AUTO_INCREMENT | | `code` | `varchar(10)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `candle_dt` | `datetime` | NOT NULL | | 60분봉 기준 시작 시간(KST) | | `tf` | `smallint(6)` | NOT NULL | 60 COMMENT | 분봉 단위 (60=60분봉) | | `open` | `float` | NOT NULL | 0 | 시가 | | `high` | `float` | NOT NULL | 0 | 고가 | | `low` | `float` | NOT NULL | 0 | 저가 | | `close` | `float` | NOT NULL | 0 | 종가 | | `volume` | `bigint(20)` | NOT NULL | 0 | 거래량(체결량/봉거래량) | | `updated_at` | `datetime` | NULL | current_timestamp() ON UPDATE current_timestamp() | 마지막 갱신 시각 | **인덱스**: - `uq_holding_min`: (`code`, `tf`, `candle_dt`)
DDL 원문 ```sql CREATE TABLE `holding_min_candles` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code` varchar(10) NOT NULL, `candle_dt` datetime NOT NULL COMMENT '60분봉 기준 시작 시간(KST)', `tf` smallint(6) NOT NULL DEFAULT 60 COMMENT '분봉 단위 (60=60분봉)', `open` float NOT NULL DEFAULT 0, `high` float NOT NULL DEFAULT 0, `low` float NOT NULL DEFAULT 0, `close` float NOT NULL DEFAULT 0, `volume` bigint(20) NOT NULL DEFAULT 0, `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `uq_holding_min` (`code`,`tf`,`candle_dt`) ) ENGINE=InnoDB AUTO_INCREMENT=102318 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `dbband_stock_config` **PK**: `id` | AUTO_INCREMENT=5 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | PK · AUTO_INCREMENT | | `code` | `varchar(32)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `market_type` | `varchar(8)` | NOT NULL | KR | 시장유형 (KR/US) | | `exchange` | `varchar(16)` | NOT NULL | KRX | 거래소 (NASD/NYSE/AMEX/KRX 등) | | `symbol` | `varchar(32)` | NOT NULL | | 심볼/티커 | | `name` | `varchar(50)` | NULL | | 종목명 | | `created_at` | `datetime` | NULL | current_timestamp() | 생성 시각 | | `tf_min` | `int(11)` | NOT NULL | 15 | 분봉 주기(분) | | `bb_period` | `int(11)` | NOT NULL | 20 | dbband_stock_config: BB PERIOD (bb_period) | | `bb_inner_std` | `double` | NOT NULL | 2 | dbband_stock_config: BB INNER STD (bb_inner_std) | | `bb_outer_std` | `double` | NOT NULL | 3 | dbband_stock_config: BB OUTER STD (bb_outer_std) | | `trend_ma_period` | `int(11)` | NOT NULL | 200 | dbband_stock_config: TREND MA PERIOD (trend_ma_period) | | `use_trend_filter` | `double` | NOT NULL | 1 | dbband_stock_config: USE TREND FILTER (use_trend_filter) | | `side_mode` | `varchar(16)` | NOT NULL | long_only | dbband_stock_config: 매매방향 MODE (side_mode) | | `entry_valid_bars` | `int(11)` | NOT NULL | 3 | dbband_stock_config: ENTRY VALID BARS (entry_valid_bars) | | `entry_mode` | `varchar(16)` | NOT NULL | break_high | dbband_stock_config: ENTRY MODE (entry_mode) | | `stop_mode` | `varchar(16)` | NOT NULL | signal_low | dbband_stock_config: STOP MODE (stop_mode) | | `stop_buffer_pct` | `double` | NOT NULL | 0.1 | dbband_stock_config: STOP BUFFER % (stop_buffer_pct) | | `stop_loss_pct` | `double` | NOT NULL | 2 | dbband_stock_config: 손절 % (stop_loss_pct) | | `tp_mode` | `varchar(16)` | NOT NULL | opposite_band | dbband_stock_config: TP MODE (tp_mode) | | `take_profit_pct` | `double` | NOT NULL | 3 | dbband_stock_config: 익절 % (take_profit_pct) | | `rr_ratio` | `double` | NOT NULL | 2 | dbband_stock_config: RR RATIO (rr_ratio) | | `shoulder_min_high_pct` | `double` | NOT NULL | 0.3 | dbband_stock_config: 어깨 MIN HIGH % (shoulder_min_high_pct) | | `shoulder_cut_pct` | `double` | NOT NULL | 0.2 | dbband_stock_config: 어깨 CUT % (shoulder_cut_pct) | | `trail_pct` | `double` | NOT NULL | 0 | dbband_stock_config: 트레일 % (trail_pct) | | `trail_arm_pct` | `double` | NOT NULL | 0 | dbband_stock_config: 트레일 ARM % (trail_arm_pct) | | `max_hold_bars` | `int(11)` | NOT NULL | 16 | dbband_stock_config: MAX HOLD BARS (max_hold_bars) | | `slot_money` | `double` | NOT NULL | 3000000 | dbband_stock_config: SLOT MONEY (slot_money) | | `cooldown_min` | `double` | NOT NULL | 15 | dbband_stock_config: COOLDOWN MIN (cooldown_min) | | `max_daily` | `int(11)` | NOT NULL | 3 | dbband_stock_config: MAX DAILY (max_daily) | | `exit_mode` | `varchar(16)` | NOT NULL | classic | dbband_stock_config: EXIT MODE (exit_mode) | **인덱스**: - `idx_dbband_stock_code`: (`code`)
DDL 원문 ```sql CREATE TABLE `dbband_stock_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code` varchar(32) NOT NULL, `market_type` varchar(8) NOT NULL DEFAULT 'KR', `exchange` varchar(16) NOT NULL DEFAULT 'KRX', `symbol` varchar(32) NOT NULL DEFAULT '', `name` varchar(50) DEFAULT '', `created_at` datetime DEFAULT current_timestamp(), `tf_min` int(11) NOT NULL DEFAULT 15, `bb_period` int(11) NOT NULL DEFAULT 20, `bb_inner_std` double NOT NULL DEFAULT 2, `bb_outer_std` double NOT NULL DEFAULT 3, `trend_ma_period` int(11) NOT NULL DEFAULT 200, `use_trend_filter` double NOT NULL DEFAULT 1, `side_mode` varchar(16) NOT NULL DEFAULT 'long_only', `entry_valid_bars` int(11) NOT NULL DEFAULT 3, `entry_mode` varchar(16) NOT NULL DEFAULT 'break_high', `stop_mode` varchar(16) NOT NULL DEFAULT 'signal_low', `stop_buffer_pct` double NOT NULL DEFAULT 0.1, `stop_loss_pct` double NOT NULL DEFAULT 2, `tp_mode` varchar(16) NOT NULL DEFAULT 'opposite_band', `take_profit_pct` double NOT NULL DEFAULT 3, `rr_ratio` double NOT NULL DEFAULT 2, `shoulder_min_high_pct` double NOT NULL DEFAULT 0.3, `shoulder_cut_pct` double NOT NULL DEFAULT 0.2, `trail_pct` double NOT NULL DEFAULT 0, `trail_arm_pct` double NOT NULL DEFAULT 0, `max_hold_bars` int(11) NOT NULL DEFAULT 16, `slot_money` double NOT NULL DEFAULT 3000000, `cooldown_min` double NOT NULL DEFAULT 15, `max_daily` int(11) NOT NULL DEFAULT 3, `exit_mode` varchar(16) NOT NULL DEFAULT 'classic', PRIMARY KEY (`id`), KEY `idx_dbband_stock_code` (`code`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='DBBAND 더블볼린저 종목별 파라미터'; ```
#### `updow_stock_config` **PK**: `id` | AUTO_INCREMENT=17 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | PK · AUTO_INCREMENT | | `code` | `varchar(10)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `market_type` | `varchar(8)` | NOT NULL | KR | 시장유형 (KR/US) | | `exchange` | `varchar(16)` | NOT NULL | KRX | 거래소 (NASD/NYSE/AMEX/KRX 등) | | `symbol` | `varchar(32)` | NOT NULL | | 심볼/티커 | | `name` | `varchar(50)` | NULL | | 종목명 | | `created_at` | `datetime` | NULL | current_timestamp() | 생성 시각 | | `body_drop_min_pct` | `double` | NOT NULL | | updow_stock_config: BODY DROP MIN % (body_drop_min_pct) | | `body_drop_max_pct` | `double` | NOT NULL | 0 | updow_stock_config: BODY DROP MAX % (body_drop_max_pct) | | `tp_pct` | `double` | NOT NULL | | updow_stock_config: TP % (tp_pct) | | `stop_loss_pct` | `double` | NOT NULL | | updow_stock_config: 손절 % (stop_loss_pct) | | `max_hold_bars` | `int(11)` | NOT NULL | | updow_stock_config: MAX HOLD BARS (max_hold_bars) | | `exit_on_green` | `double` | NOT NULL | 0 | updow_stock_config: EXIT ON GREEN (exit_on_green) | | `tf_min` | `int(11)` | NOT NULL | 60 | 분봉 주기(분) | | `slot_money` | `double` | NOT NULL | 3000000 | updow_stock_config: SLOT MONEY (slot_money) | | `regime_ma_bars` | `int(11)` | NOT NULL | 0 | updow_stock_config: REGIME MA BARS (regime_ma_bars) | | `regime_ma_ease_pct` | `double` | NOT NULL | 0 | updow_stock_config: REGIME MA EASE % (regime_ma_ease_pct) | | `atr_use_dynamic` | `double` | NOT NULL | 0 | updow_stock_config: ATR USE DYNAMIC (atr_use_dynamic) | | `atr_period` | `int(11)` | NOT NULL | 14 | updow_stock_config: ATR PERIOD (atr_period) | | `atr_sl_mult` | `double` | NOT NULL | 2 | updow_stock_config: ATR SL MULT (atr_sl_mult) | | `atr_tp_mult` | `double` | NOT NULL | 4 | updow_stock_config: ATR TP MULT (atr_tp_mult) | | `atr_sl_min_pct` | `double` | NOT NULL | 0.8 | updow_stock_config: ATR SL MIN % (atr_sl_min_pct) | | `atr_sl_max_pct` | `double` | NOT NULL | 6 | updow_stock_config: ATR SL MAX % (atr_sl_max_pct) | | `atr_tp_min_pct` | `double` | NOT NULL | 1.5 | updow_stock_config: ATR TP MIN % (atr_tp_min_pct) | | `atr_tp_max_pct` | `double` | NOT NULL | 12 | updow_stock_config: ATR TP MAX % (atr_tp_max_pct) | | `shoulder_min_high_pct` | `double` | NOT NULL | 0.3 | updow_stock_config: 어깨 MIN HIGH % (shoulder_min_high_pct) | | `shoulder_cut_pct` | `double` | NOT NULL | 0.2 | updow_stock_config: 어깨 CUT % (shoulder_cut_pct) | | `limit_atr_mult` | `double` | NOT NULL | 1.5 | updow_stock_config: LIMIT ATR MULT (limit_atr_mult) | | `entry_mode` | `varchar(16)` | NOT NULL | | updow_stock_config: ENTRY MODE (entry_mode) | **인덱스**: - `idx_updow_stock_code`: (`code`)
DDL 원문 ```sql CREATE TABLE `updow_stock_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code` varchar(10) NOT NULL, `market_type` varchar(8) NOT NULL DEFAULT 'KR', `exchange` varchar(16) NOT NULL DEFAULT 'KRX', `symbol` varchar(32) NOT NULL DEFAULT '', `name` varchar(50) DEFAULT '', `created_at` datetime DEFAULT current_timestamp(), `body_drop_min_pct` double NOT NULL, `body_drop_max_pct` double NOT NULL DEFAULT 0, `tp_pct` double NOT NULL, `stop_loss_pct` double NOT NULL, `max_hold_bars` int(11) NOT NULL, `exit_on_green` double NOT NULL DEFAULT 0, `tf_min` int(11) NOT NULL DEFAULT 60, `slot_money` double NOT NULL DEFAULT 3000000, `regime_ma_bars` int(11) NOT NULL DEFAULT 0, `regime_ma_ease_pct` double NOT NULL DEFAULT 0, `atr_use_dynamic` double NOT NULL DEFAULT 0, `atr_period` int(11) NOT NULL DEFAULT 14, `atr_sl_mult` double NOT NULL DEFAULT 2, `atr_tp_mult` double NOT NULL DEFAULT 4, `atr_sl_min_pct` double NOT NULL DEFAULT 0.8, `atr_sl_max_pct` double NOT NULL DEFAULT 6, `atr_tp_min_pct` double NOT NULL DEFAULT 1.5, `atr_tp_max_pct` double NOT NULL DEFAULT 12, `shoulder_min_high_pct` double NOT NULL DEFAULT 0.3, `shoulder_cut_pct` double NOT NULL DEFAULT 0.2, `limit_atr_mult` double NOT NULL DEFAULT 1.5, `entry_mode` varchar(16) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `idx_updow_stock_code` (`code`) ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UPDOW 하락매수 종목별 파라미터'; ```
#### `updown_box_stock_cfg` **PK**: `id` | AUTO_INCREMENT=4 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | PK · AUTO_INCREMENT | | `code` | `varchar(20)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(50)` | NOT NULL | | 종목명 | | `near_low_pct` | `double` | NULL | NULL | updown_box_stock_cfg: NEAR LOW % (near_low_pct) | | `range_max_pct` | `double` | NULL | NULL | updown_box_stock_cfg: RANGE MAX % (range_max_pct) | | `bb_bw_max` | `double` | NULL | NULL | updown_box_stock_cfg: BB BW MAX (bb_bw_max) | | `ma_slope_tol_pct` | `double` | NULL | NULL | updown_box_stock_cfg: MA SLOPE TOL % (ma_slope_tol_pct) | | `body_drop_min_pct` | `double` | NULL | NULL | updown_box_stock_cfg: BODY DROP MIN % (body_drop_min_pct) | | `breach_buffer_pct` | `double` | NULL | NULL | updown_box_stock_cfg: BREACH BUFFER % (breach_buffer_pct) | | `panic_from_high_pct` | `double` | NULL | NULL | updown_box_stock_cfg: PANIC FROM HIGH % (panic_from_high_pct) | | `stop_loss_pct` | `double` | NULL | NULL | updown_box_stock_cfg: 손절 % (stop_loss_pct) | | `tp_pct` | `double` | NULL | NULL | updown_box_stock_cfg: TP % (tp_pct) | | `shoulder_min_high_pct` | `double` | NULL | NULL | updown_box_stock_cfg: 어깨 MIN HIGH % (shoulder_min_high_pct) | | `shoulder_cut_pct` | `double` | NULL | NULL | updown_box_stock_cfg: 어깨 CUT % (shoulder_cut_pct) | | `max_hold_bars` | `double` | NULL | NULL | updown_box_stock_cfg: MAX HOLD BARS (max_hold_bars) | | `lookback_bars` | `double` | NULL | NULL | updown_box_stock_cfg: LOOKBACK BARS (lookback_bars) | | `ratchet_tiers` | `varchar(64)` | NULL | NULL | updown_box_stock_cfg: 래칫 TIERS (ratchet_tiers) | | `updated_at` | `datetime` | NOT NULL | current_timestamp() ON UPDATE current_timestamp() | 마지막 갱신 시각 | | `breakout_follow` | `double` | NULL | NULL | updown_box_stock_cfg: BREAKOUT FOLLOW (breakout_follow) | **인덱스**: - `uq_updown_box_stock_code`: (`code`)
DDL 원문 ```sql CREATE TABLE `updown_box_stock_cfg` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code` varchar(20) NOT NULL, `name` varchar(50) NOT NULL DEFAULT '', `near_low_pct` double DEFAULT NULL, `range_max_pct` double DEFAULT NULL, `bb_bw_max` double DEFAULT NULL, `ma_slope_tol_pct` double DEFAULT NULL, `body_drop_min_pct` double DEFAULT NULL, `breach_buffer_pct` double DEFAULT NULL, `panic_from_high_pct` double DEFAULT NULL, `stop_loss_pct` double DEFAULT NULL, `tp_pct` double DEFAULT NULL, `shoulder_min_high_pct` double DEFAULT NULL, `shoulder_cut_pct` double DEFAULT NULL, `max_hold_bars` double DEFAULT NULL, `lookback_bars` double DEFAULT NULL, `ratchet_tiers` varchar(64) DEFAULT NULL, `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `breakout_follow` double DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uq_updown_box_stock_code` (`code`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UPDOWN 박스권 종목별 파라미터 오버라이드(NULL=글로벌 상속)'; ```
#### `updown_watchlist` **PK**: `id` | AUTO_INCREMENT=5 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | PK · AUTO_INCREMENT | | `code` | `varchar(20)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `name` | `varchar(50)` | NOT NULL | | 종목명 | | `market_type` | `varchar(8)` | NOT NULL | KR | 시장유형 (KR/US) | | `exchange` | `varchar(16)` | NOT NULL | KRX | 거래소 (NASD/NYSE/AMEX/KRX 등) | | `source` | `varchar(16)` | NOT NULL | manual | 데이터 소스 (kis/kiwoom/ls 등) | | `status` | `varchar(16)` | NOT NULL | active | 상태 | | `box_low` | `double` | NOT NULL | 0 | updown_watchlist: BOX LOW (box_low) | | `box_high` | `double` | NOT NULL | 0 | updown_watchlist: BOX HIGH (box_high) | | `box_score` | `double` | NOT NULL | 0 | updown_watchlist: BOX SCORE (box_score) | | `added_at` | `datetime` | NOT NULL | current_timestamp() | updown_watchlist: ADDED AT (added_at) | | `last_seen_at` | `datetime` | NULL | NULL | updown_watchlist: LAST SEEN AT (last_seen_at) | | `last_signal_at` | `datetime` | NULL | NULL | updown_watchlist: LAST SIGNAL AT (last_signal_at) | | `removed_at` | `datetime` | NULL | NULL | updown_watchlist: REMOVED AT (removed_at) | | `updated_at` | `datetime` | NOT NULL | current_timestamp() ON UPDATE current_timestamp() | 마지막 갱신 시각 | **인덱스**: - `uq_updown_watch_code`: (`code`) - `idx_updown_watch_status`: (`status`)
DDL 원문 ```sql CREATE TABLE `updown_watchlist` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code` varchar(20) NOT NULL, `name` varchar(50) NOT NULL DEFAULT '', `market_type` varchar(8) NOT NULL DEFAULT 'KR', `exchange` varchar(16) NOT NULL DEFAULT 'KRX', `source` varchar(16) NOT NULL DEFAULT 'manual', `status` varchar(16) NOT NULL DEFAULT 'active', `box_low` double NOT NULL DEFAULT 0, `box_high` double NOT NULL DEFAULT 0, `box_score` double NOT NULL DEFAULT 0, `added_at` datetime NOT NULL DEFAULT current_timestamp(), `last_seen_at` datetime DEFAULT NULL, `last_signal_at` datetime DEFAULT NULL, `removed_at` datetime DEFAULT NULL, `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `uq_updown_watch_code` (`code`), KEY `idx_updown_watch_status` (`status`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='UPDOWN 박스권 sticky 관심종목(멤버십)'; ```
#### `us_momentum_stock_config` **PK**: `id` | AUTO_INCREMENT=11 | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `bigint(20)` | NOT NULL | | PK · AUTO_INCREMENT | | `code` | `varchar(32)` | NOT NULL | | 종목코드 (KR 6자리 / US 티커) | | `exchange` | `varchar(16)` | NOT NULL | NASD | 거래소 (NASD/NYSE/AMEX/KRX 등) | | `symbol` | `varchar(32)` | NOT NULL | | 심볼/티커 | | `name` | `varchar(64)` | NULL | | 종목명 | | `stock_group` | `varchar(16)` | NOT NULL | STOCK | us_momentum_stock_config: STOCK GROUP (stock_group) | | `created_at` | `datetime` | NULL | current_timestamp() | 생성 시각 | | `updated_at` | `datetime` | NULL | current_timestamp() ON UPDATE current_timestamp() | 마지막 갱신 시각 | | `sl_pct` | `double` | NULL | NULL | us_momentum_stock_config: SL % (sl_pct) | | `tp_pct` | `double` | NULL | NULL | us_momentum_stock_config: TP % (tp_pct) | | `tp_max_pct` | `double` | NULL | NULL | us_momentum_stock_config: TP MAX % (tp_max_pct) | | `shoulder_min_high_pct` | `double` | NULL | NULL | us_momentum_stock_config: 어깨 MIN HIGH % (shoulder_min_high_pct) | | `shoulder_cut_pct` | `double` | NULL | NULL | us_momentum_stock_config: 어깨 CUT % (shoulder_cut_pct) | | `trail_pct` | `double` | NULL | NULL | us_momentum_stock_config: 트레일 % (trail_pct) | | `trail_arm_pct` | `double` | NULL | NULL | us_momentum_stock_config: 트레일 ARM % (trail_arm_pct) | | `ratchet_tiers` | `varchar(255)` | NULL | NULL | us_momentum_stock_config: 래칫 TIERS (ratchet_tiers) | | `max_hold_bars` | `int(11)` | NULL | NULL | us_momentum_stock_config: MAX HOLD BARS (max_hold_bars) | | `cooldown_sec` | `int(11)` | NULL | NULL | us_momentum_stock_config: COOLDOWN 초 (cooldown_sec) | | `max_daily` | `int(11)` | NULL | NULL | us_momentum_stock_config: MAX DAILY (max_daily) | | `slot_money` | `double` | NULL | NULL | us_momentum_stock_config: SLOT MONEY (slot_money) | | `rsi_min` | `double` | NULL | NULL | us_momentum_stock_config: RSI MIN (rsi_min) | | `rsi_max` | `double` | NULL | NULL | us_momentum_stock_config: RSI MAX (rsi_max) | | `vol_mult` | `double` | NULL | NULL | us_momentum_stock_config: VOL MULT (vol_mult) | | `vol_win` | `int(11)` | NULL | NULL | us_momentum_stock_config: VOL WIN (vol_win) | | `chase_lookback_min` | `int(11)` | NULL | NULL | us_momentum_stock_config: CHASE LOOKBACK MIN (chase_lookback_min) | | `pullback_lookback_min` | `int(11)` | NULL | NULL | us_momentum_stock_config: PULLBACK LOOKBACK MIN (pullback_lookback_min) | | `pullback_min_pct` | `double` | NULL | NULL | us_momentum_stock_config: PULLBACK MIN % (pullback_min_pct) | | `pullback_max_pct` | `double` | NULL | NULL | us_momentum_stock_config: PULLBACK MAX % (pullback_max_pct) | | `setup_vol_max_mult` | `double` | NULL | NULL | us_momentum_stock_config: SETUP VOL MAX MULT (setup_vol_max_mult) | | `setup_bear_bars_min` | `int(11)` | NULL | NULL | us_momentum_stock_config: SETUP BEAR BARS MIN (setup_bear_bars_min) | | `high_chase_thr` | `double` | NULL | NULL | us_momentum_stock_config: HIGH CHASE THR (high_chase_thr) | | `max_daily_chg` | `double` | NULL | NULL | us_momentum_stock_config: MAX DAILY CHG (max_daily_chg) | | `min_price` | `double` | NULL | NULL | us_momentum_stock_config: MIN 가격 (min_price) | | `ema_fast_period` | `int(11)` | NULL | NULL | us_momentum_stock_config: EMA FAST PERIOD (ema_fast_period) | | `ema_slow_period` | `int(11)` | NULL | NULL | us_momentum_stock_config: EMA SLOW PERIOD (ema_slow_period) | | `use_defense_filters` | `tinyint(4)` | NULL | NULL | us_momentum_stock_config: USE DEFENSE FILTERS (use_defense_filters) | | `use_high_chase_filter` | `tinyint(4)` | NULL | NULL | us_momentum_stock_config: USE HIGH CHASE FILTER (use_high_chase_filter) | | `use_daily_range_filter` | `tinyint(4)` | NULL | NULL | us_momentum_stock_config: USE DAILY RANGE FILTER (use_daily_range_filter) | | `use_ema_filter` | `tinyint(4)` | NULL | NULL | us_momentum_stock_config: USE EMA FILTER (use_ema_filter) | | `use_rsi_max_filter` | `tinyint(4)` | NULL | NULL | us_momentum_stock_config: USE RSI MAX FILTER (use_rsi_max_filter) | | `pattern_breakout` | `tinyint(4)` | NULL | NULL | us_momentum_stock_config: PATTERN BREAKOUT (pattern_breakout) | | `pattern_pullback` | `tinyint(4)` | NULL | NULL | us_momentum_stock_config: PATTERN PULLBACK (pattern_pullback) | **인덱스**: - `uk_usmom_code`: (`code`) - `idx_usmom_group`: (`stock_group`)
DDL 원문 ```sql CREATE TABLE `us_momentum_stock_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code` varchar(32) NOT NULL, `exchange` varchar(16) NOT NULL DEFAULT 'NASD', `symbol` varchar(32) NOT NULL DEFAULT '', `name` varchar(64) DEFAULT '', `stock_group` varchar(16) NOT NULL DEFAULT 'STOCK', `created_at` datetime DEFAULT current_timestamp(), `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(), `sl_pct` double DEFAULT NULL, `tp_pct` double DEFAULT NULL, `tp_max_pct` double DEFAULT NULL, `shoulder_min_high_pct` double DEFAULT NULL, `shoulder_cut_pct` double DEFAULT NULL, `trail_pct` double DEFAULT NULL, `trail_arm_pct` double DEFAULT NULL, `ratchet_tiers` varchar(255) DEFAULT NULL, `max_hold_bars` int(11) DEFAULT NULL, `cooldown_sec` int(11) DEFAULT NULL, `max_daily` int(11) DEFAULT NULL, `slot_money` double DEFAULT NULL, `rsi_min` double DEFAULT NULL, `rsi_max` double DEFAULT NULL, `vol_mult` double DEFAULT NULL, `vol_win` int(11) DEFAULT NULL, `chase_lookback_min` int(11) DEFAULT NULL, `pullback_lookback_min` int(11) DEFAULT NULL, `pullback_min_pct` double DEFAULT NULL, `pullback_max_pct` double DEFAULT NULL, `setup_vol_max_mult` double DEFAULT NULL, `setup_bear_bars_min` int(11) DEFAULT NULL, `high_chase_thr` double DEFAULT NULL, `max_daily_chg` double DEFAULT NULL, `min_price` double DEFAULT NULL, `ema_fast_period` int(11) DEFAULT NULL, `ema_slow_period` int(11) DEFAULT NULL, `use_defense_filters` tinyint(4) DEFAULT NULL, `use_high_chase_filter` tinyint(4) DEFAULT NULL, `use_daily_range_filter` tinyint(4) DEFAULT NULL, `use_ema_filter` tinyint(4) DEFAULT NULL, `use_rsi_max_filter` tinyint(4) DEFAULT NULL, `pattern_breakout` tinyint(4) DEFAULT NULL, `pattern_pullback` tinyint(4) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_usmom_code` (`code`), KEY `idx_usmom_group` (`stock_group`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='US_MOMENTUM 종목별 TRIGGER/청산 (NULL=전역 US_MOMENTUM_* 폴백)'; ```
### 📰 DART 공시 #### `dart_disclosures` **PK**: `rcept_no` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `rcept_no` 🔑 | `varchar(32)` | NOT NULL | | dart_disclosures: RCEPT NO (rcept_no) | | `corp_code` | `varchar(16)` | NOT NULL | | dart_disclosures: CORP 종목코드 (corp_code) | | `corp_name` | `varchar(100)` | NOT NULL | | dart_disclosures: CORP 종목명 (corp_name) | | `stock_code` | `varchar(20)` | NOT NULL | | dart_disclosures: STOCK 종목코드 (stock_code) | | `report_nm` | `varchar(255)` | NOT NULL | | dart_disclosures: REPORT NM (report_nm) | | `rcept_dt` | `varchar(8)` | NOT NULL | | dart_disclosures: RCEPT DT (rcept_dt) | | `url` | `varchar(255)` | NOT NULL | | dart_disclosures: URL (url) | | `first_seen_at` | `varchar(30)` | NOT NULL | | dart_disclosures: FIRST SEEN AT (first_seen_at) | | `mm_sent` | `tinyint(4)` | NOT NULL | 0 | dart_disclosures: MM SENT (mm_sent) | | `filter_ok` | `tinyint(4)` | NULL | NULL | dart_disclosures: FILTER OK (filter_ok) | | `sales_pct` | `double` | NULL | NULL | dart_disclosures: SALES % (sales_pct) | | `filter_reason` | `varchar(64)` | NULL | NULL | dart_disclosures: FILTER REASON (filter_reason) | **인덱스**: - `idx_dart_seen`: (`first_seen_at`) - `idx_dart_stock`: (`stock_code`)
DDL 원문 ```sql CREATE TABLE `dart_disclosures` ( `rcept_no` varchar(32) NOT NULL, `corp_code` varchar(16) NOT NULL DEFAULT '', `corp_name` varchar(100) NOT NULL DEFAULT '', `stock_code` varchar(20) NOT NULL DEFAULT '', `report_nm` varchar(255) NOT NULL DEFAULT '', `rcept_dt` varchar(8) NOT NULL DEFAULT '', `url` varchar(255) NOT NULL DEFAULT '', `first_seen_at` varchar(30) NOT NULL, `mm_sent` tinyint(4) NOT NULL DEFAULT 0, `filter_ok` tinyint(4) DEFAULT NULL, `sales_pct` double DEFAULT NULL, `filter_reason` varchar(64) DEFAULT NULL, PRIMARY KEY (`rcept_no`), KEY `idx_dart_seen` (`first_seen_at`), KEY `idx_dart_stock` (`stock_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
#### `dart_watchlist` **PK**: `stock_code` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `stock_code` 🔑 | `varchar(20)` | NOT NULL | | dart_watchlist: STOCK 종목코드 (stock_code) | | `corp_name` | `varchar(100)` | NOT NULL | | dart_watchlist: CORP 종목명 (corp_name) | | `rcept_no` | `varchar(32)` | NOT NULL | | dart_watchlist: RCEPT NO (rcept_no) | | `report_nm` | `varchar(255)` | NOT NULL | | dart_watchlist: REPORT NM (report_nm) | | `added_at` | `varchar(30)` | NOT NULL | | dart_watchlist: ADDED AT (added_at) | | `expires_at` | `varchar(30)` | NOT NULL | | dart_watchlist: EXPIRES AT (expires_at) | | `enabled` | `tinyint(4)` | NOT NULL | 1 | 활성 여부 (1=ON) | **인덱스**: - `idx_dart_watch_exp`: (`expires_at`)
DDL 원문 ```sql CREATE TABLE `dart_watchlist` ( `stock_code` varchar(20) NOT NULL, `corp_name` varchar(100) NOT NULL DEFAULT '', `rcept_no` varchar(32) NOT NULL DEFAULT '', `report_nm` varchar(255) NOT NULL DEFAULT '', `added_at` varchar(30) NOT NULL, `expires_at` varchar(30) NOT NULL, `enabled` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`stock_code`), KEY `idx_dart_watch_exp` (`expires_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
### 🤖 AI 분석 #### `ai_analysis_log` **PK**: `id` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `created_at` | `varchar(30)` | NOT NULL | | 생성 시각 | | `model` | `varchar(50)` | NOT NULL | | ai_analysis_log: MODEL (model) | | `context_summary` | `text` | NULL | NULL | ai_analysis_log: CONTEXT SUMMARY (context_summary) | | `response` | `mediumtext` | NULL | NULL | ai_analysis_log: RESPONSE (response) |
DDL 원문 ```sql CREATE TABLE `ai_analysis_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_at` varchar(30) NOT NULL, `model` varchar(50) NOT NULL, `context_summary` text DEFAULT NULL, `response` mediumtext DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```
### 📋 주문 실행 로그 #### `order_execution_history` **PK**: `id` | 컬럼 | 타입 | NULL | DEFAULT | 비고 | |------|------|------|---------|------| | `id` 🔑 | `int(11)` | NOT NULL | | PK · AUTO_INCREMENT | | `source` | `varchar(20)` | NOT NULL | | 데이터 소스 (kis/kiwoom/ls 등) | | `ord_no` | `varchar(30)` | NULL | NULL | 증권사 주문번호 | | `stk_cd` | `varchar(20)` | NULL | NULL | order_execution_history: STK CD (stk_cd) | | `stk_nm` | `varchar(100)` | NULL | NULL | order_execution_history: STK NM (stk_nm) | | `trde_tp` | `varchar(20)` | NULL | NULL | order_execution_history: TRDE TP (trde_tp) | | `ord_qty` | `varchar(20)` | NULL | NULL | order_execution_history: ORD 수량 (ord_qty) | | `ord_uv` | `varchar(20)` | NULL | NULL | order_execution_history: ORD UV (ord_uv) | | `cntr_qty` | `varchar(20)` | NULL | NULL | order_execution_history: CNTR 수량 (cntr_qty) | | `cntr_uv` | `varchar(20)` | NULL | NULL | order_execution_history: CNTR UV (cntr_uv) | | `ord_tm` | `varchar(20)` | NULL | NULL | order_execution_history: ORD TM (ord_tm) | | `cnfm_tm` | `varchar(20)` | NULL | NULL | order_execution_history: CNFM TM (cnfm_tm) | | `sell_tp` | `varchar(20)` | NULL | NULL | order_execution_history: SELL TP (sell_tp) | | `ord_dt` | `varchar(20)` | NULL | NULL | order_execution_history: ORD DT (ord_dt) | | `raw_json` | `text` | NULL | NULL | 원본 응답 JSON | | `fetched_at` | `varchar(30)` | NOT NULL | | order_execution_history: FETCHED AT (fetched_at) |
DDL 원문 ```sql CREATE TABLE `order_execution_history` ( `id` int(11) NOT NULL AUTO_INCREMENT, `source` varchar(20) NOT NULL, `ord_no` varchar(30) DEFAULT NULL, `stk_cd` varchar(20) DEFAULT NULL, `stk_nm` varchar(100) DEFAULT NULL, `trde_tp` varchar(20) DEFAULT NULL, `ord_qty` varchar(20) DEFAULT NULL, `ord_uv` varchar(20) DEFAULT NULL, `cntr_qty` varchar(20) DEFAULT NULL, `cntr_uv` varchar(20) DEFAULT NULL, `ord_tm` varchar(20) DEFAULT NULL, `cnfm_tm` varchar(20) DEFAULT NULL, `sell_tp` varchar(20) DEFAULT NULL, `ord_dt` varchar(20) DEFAULT NULL, `raw_json` text DEFAULT NULL, `fetched_at` varchar(30) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; ```