| ์ ๋ต | ON | ๋งค์๋๊ธ | ๋งค๋๋๊ธ | ๊ฑฐ๋๋๊ธํฉ | ์ฒญ์ฐ | ๋ณด์ | ์คํ์์ต | ์ด์ฉํ๋ | ๋น์ผ๋ฝ์ฐ(ํผํฌ) | ํ์ฌํฌ์ | ์ฌ์ฉ๋ฅ | ์์ต๋ฅ | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ํฉ๊ณ (ON ํ๋ ๊ธฐ์ค) | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ | โ |
| ์ข ๋ชฉ | ๋งค์์๊ฐ | ๋งค๋์๊ฐ | ๋งค์๊ฐ | ๋งค๋๊ฐ | ์๋ | ์์ต(์) | ์์ต๋ฅ % | ๋์ ์์ต | ๋์ % | ๋ณด์ (๋ถ) | ์ฒด๊ฒฐ๋๋ฒ๊ทธ | ๋งค๋์ฌ์ |
|---|
insert_env_snapshot ์ฆ์ ์ ์ฅ โ ๋ด ์ฌ์์ ์์ด ๋ค์ ๋ฃจํ๋ถํฐ ๋ฐ์.
๋ง์คํฐ ํค๋ env_config, ์ ๋ต ํค๋ config_{์ ๋ต} ํ
์ด๋ธ๋ก ์๋ ๋ถ๋ฆฌ๋ฉ๋๋ค.
| ์ ๋ต | ์ข ๋ชฉ | ๋งค์์๊ฐ | DB์๋ | ์ค๊ณ์ข | ๋๊ธฐ | DB๋งค์๊ฐ | ์คํ๋จ | ํ์ฌ๊ฐ | ์์ต๋ฅ | ํ๊ฐ๊ธ | ๋งค๋ |
|---|
kis_trader/main.py = ScalpingStrategy + scalping_engine ๊ธฐ์ค โ ๋ผ์ด๋ธ์ 100% ๋์ผ ํจ์ ํธ์ถ)
| RSI ๊ธฐ๊ฐ | RSI ๊ณ์ฐ ์บ๋ค ์ โ ๋ผ์ด๋ธ ๋ด ์์ง ๊ธฐ๋ณธ 3 (scalping_engine ``rsi_period`` ๊ธฐ๋ณธ 3, ๋ฐฑํ ์ ๋ ฅ์ผ๋ก ๊ทธ๋ฆฌ๋ ๊ฐ๋ฅ) |
| RSI ๊ณผ๋งค๋ | ์ด ๊ฐ ์ดํ์ผ ๋ ๋งค์ ์ ํธ โ ๋ด DB: SCALP_RSI_OVERSOLD (๊ธฐ๋ณธ 25) |
| RSI ๊ณผ์ด | ์ด ๊ฐ ์ด๊ณผ๋ฉด ์ง์ ๊ธ์ง (๊ณ ์ ์ถ๊ฒฉ ๋ฐฉ์ง) โ ๋ด DB: SCALP_RSI_OVERBOUGHT (๊ธฐ๋ณธ 75) |
| ์์ (%) | ๋งค์๊ฐ ๋๋น ํ๋ฝ ์ ์์ โ ๋ด DB: SCALP_STOP_LOSS_PCT (๊ธฐ๋ณธ 1.5%) |
| ์ต์ (%) | ๋งค์๊ฐ ๋๋น ์์น ์ ์ต์ (2์์) โ ๋ด DB: SCALP_TAKE_PROFIT_PCT |
| ์ต์ ์ํ(%) | ๋ชฉํ๊ฐ ์ฒ์ฅ โ min(์ต์ , ์ํ) โ DB: SCALP_TP_MAX_PCT (๊ธฐ๋ณธ 2%, 0=OFF) |
| ๋ํญํํฐ(%) | ๋น์ผ ์๊ฐโ์ ๊ฐ ๋ํญ์ด ์ด ๊ฐ ์ด์์ด์ด์ผ ์ง์ โ ๋ด DB: SCALP_MIN_DROP_RATE (๊ธฐ๋ณธ 1.5%) |
| ํฌ์๊ธ(์) | 1ํ ์ต๋ ํฌ์๊ธ โ ๋ด: SCALP_MAX_LOSS_PER_TRADE_KRW รท SCALP_STOP_LOSS_PCT ๊ณต์ ์ ์ฉ (์์ผ๋ฉด MAX_LOSS_PER_TRADE_KRW), ์ํ์ SCALP_MAX_BUY_AMOUNT(์์ผ๋ฉด MAX_BUY_AMOUNT_PER_STOCK) ์) 200,000รท0.015 = 13,333,333์ |
| ์ฟจ๋ค์ด(๋ถ) | ์ฒญ์ฐ ํ ๊ฐ์ ์ข ๋ชฉ ์ฌ์ง์ ๊ธ์ง(๋ถ) โ ๋ด DB: REENTRY_COOLDOWN_SEC(์ด) รท60 ์๋ ๋ณํ (scalping_engine.py) |
| ๊ฑฐ๋๋๋ฐฐ์ | ์ ํธ๋ด ๊ฑฐ๋๋ โฅ 20๋ด ํ๊ท ร N๋ฐฐ. 0=๋นํ์ฑ โ ๋ด DB: VOL_MULTIPLIER (๋ผ์ด๋ธยท๋ฐฑํ ๋์ผ) |
| ์ด๊นจ๋ฐ๋% | ์ง์ ๊ฐ ๋๋น ์ด % ์ด์ ์์ต ํ max_price ์ถ์ ์์ โ DB: SCALP_SHOULDER_MIN_HIGH_PCT (์์ผ๋ฉด SHOULDER_MIN_HIGH_PCT) |
| ์ด๊นจํญ% | ๊ณ ์ ๋๋น ์ด % ํ๋ฝ ์ 1์์ ์ด๊นจ์ปท โ DB: SCALP_SHOULDER_CUT_PCT (๊ผฌ๋ฆฌ์ก๊ธฐ์ ๋์ผ ๋ก์ง) |
| ๋งค์์์/์ข ๋ฃ | ๋งค์ ๊ฐ๋ฅ ์๊ฐ๋ (HHMM) โ ๋ด DB: SCALP_TIME_START / SCALP_TIME_END (์์ผ๋ฉด ๊ธ๋ก๋ฒ TIME_START/TIME_END) |
| ์ผ์ผ์ต๋๋งค์ | ์ข ๋ชฉ๋น ํ๋ฃจ ์ต๋ ๊ฑฐ๋ํ์ โ ๋ด DB: SCALP_MAX_DAILY (์์ผ๋ฉด ์์ง ๊ธฐ๋ณธ 3) |
| ์ข ๋ชฉ | ๋งค์์๊ฐ | ๋งค๋์๊ฐ | ๋งค์๊ฐ | ๋งค๋๊ฐ | ์๋ | ์์ต(์) | ์์ต๋ฅ % | ๋ณด์ (๋ถ) | ๋งค๋์ฌ์ | ์ง์ RSI |
|---|
TAIL_PATTERN_*)| ๋ถ๋ด(TF) | ๋ฐฑํ ยทํ๋ผ์์น์ ์ฐ๋ ws_candles.timeframe (3ยท5ยท15ยท60). DB์ ํด๋น ๋ถ๋ด ๋ด์ด ์์ด์ผ ํจ. |
| ๋ํญํํฐ(%) | ๋น์ผ ์๊ฐโ์ ๊ฐ ํ๋ฝํญ โ DB: MIN_DROP_RATE (config_short) |
| ํ๋ณต๋ฅ (%) | ๋น์ผ ์ ์ ๋๋น ํ๋ณต ํํ โ MIN_RECOVERY_RATIO_SHORT |
| 3๋ถ์ต๋ํ๋ณต(%) | 3๋ถ๋ด ํ๋ณต ์์น ์ํ โ MAX_RECOVERY_RATIO_3M |
| ๊ผฌ๋ฆฌ/๋ชธํต | ๋ง hammer โ TAIL_RATIO_MIN ยท ํจํด OR โ TAIL_PATTERN_* |
| ์ฒญ์ฐ์์ | 1)์ด๊นจ(max_price) โ 2)ATR์ต์ โ 3)ATR์์ โ 4)๊ธ์ก์์ค์ปท |
| ์ด๊นจ๋ฐ๋(%) | ์ง์ ๊ฐ ๋๋น ์ด ์์ต% ์ด์์ด๋ฉด max_price ์ถ์ โ SHOULDER_MIN_HIGH_PCT (์: 0.3%) |
| ์ด๊นจ์ปท(%) | ๊ฐฑ์ ๋ max_price ร (1โcut) โ SHOULDER_CUT_PCT (์: 0.2%) |
| ATR์บก | TAIL_ATR_*_MIN/MAX_PCT ยท ๋ฐฐ์ STOP/TARGET_ATR_MULTIPLIER_TAIL |
| 1ํํฌ์๊ธ | ์ค๋งค SLOT_MONEY_DEFAULT / SHORT_MAX_BUY_AMOUNT (์ข ๋ชฉ๋น ์ํ) |
| ์ด ์ด์ฉํ๋ | ๋์ ๋ณด์ ๋งค์ ๊ธ ํฉ โค SHORT_TOTAL_BUDGET_KRW (0=๋์๋ณด์ ร1ํํฌ์๊ธ) |
| ๋์๋ณด์ | SHORT_MAX_STOCKS / MAX_STOCKS โ ์๊ฐ์ ํฌํธํด๋ฆฌ์ค, 1๋ด 1๋งค์ |
| ๋ด์ ์ฅ | insert_env_snapshot โ config_short + env_config ์๋ ๋ถ๋ฆฌ |
| RSI๊ณผ์ด๊ธฐ์ค | RSI_OVERHEAT_THRESHOLD ยท ์ฟจ๋ค์ด REENTRY_COOLDOWN_SEC |
| - |
|---|
| ์ข ๋ชฉ | ๋งค์์๊ฐ | ๋งค๋์๊ฐ | ๋งค์๊ฐ | ๋งค๋๊ฐ | ์๋ | ์์ต(์) | ์์ต๋ฅ % | ๋์ ์์ต | ๋์ % | ๋ณด์ (๋ถ) | ์ฒด๊ฒฐ๋๋ฒ๊ทธ | ๋งค๋์ฌ์ |
|---|
์ข
๋ชฉ 1๊ฐ์ฉ ํ๋ผ๋ฏธํฐยท๋ฐฑํ
ยทํ์ (QQQMยท379810 ๋ฑ ์๋ก ๋ค๋ฅธ BB/MA).
๋ฐฑํ
ยทํ๋ผ์์น ๋ฐ์ดํฐ: holding_min_candles (์๋ ํค์/KIS ๋ถ๋ด ์์ง์ผ๋ก DB ์ ์ฅ).
์ค๋งค ๋ผ์ด๋ธ ๋ด: ws_candles (์๊ตฌ๊ตฌ๋
WS) โ ๋ฐฑํ
์ ๋ณ๊ฐ.
์ ์ฅ: dbband_stock_config ยท ๊ทธ๋ฆฌ๋ DBBAND_GRID_* env.
| ๋ฐฉํฅ | ๋งค์ | ๋งค๋ | ์ง์ | ์ฒญ์ฐ | ์์ต | ๋ถ | ์ฌ์ |
|---|
| # | ์์ต | ์น๋ฅ | ๊ฑฐ๋ | Inner/Outer | MA | ์ ์ฉ |
|---|
| ์ง์ ๋ชจ๋ B | intrabar=๋ด ์ ์ ํญ ๋ํยทํ์ฌ๊ฐ (์ค๋งคยทHTS E) ยท align=ํ์ ๋ด ํ ๋ค์๋ด ์๊ฐ (๊ตฌ A์) |
| Lookback / VolWin | ๋ ๋ค 1์ด๋ฉด ํค์ 'breakout' ์กฐ๊ฑด๊ณผ 100% ๋์ผ (์ง์ 1๋ด ๊ธฐ์ค) |
| 1๋ถํ์ ์จ / ๊ฑฐ๋๋๋ฐฐ์ | ํ์ ์จ=์ ํต์ฃผ์ ๋๋น 1๋ถ ์ฒด๊ฒฐ%(ka10001) 1์ฐจ ยท ๊ฑฐ๋๋๋ฐฐ์=์ง์ N๋ด ํ๊ท ร๋ฐฐ์(0=OFF, HTS 300%=3) |
| ์ง์ ๋ด ๋ฑ๋ฝ๋ฅ | ํค์ ์กฐ๊ฑด์ 1~10%. 0.5~15% ๋ฒ์์์ ํ๋ ๊ฐ๋ฅ. |
| ๋งค์์์/์ข ๋ฃ | ํ๋ผ์์น fast๋ 10:30ยท11:30 ์ข ๋ฃ ํ์. ์น์์ 15:30์ด๋ฉด 1์ ์กฐํฉ๊ณผ ๋ถ์ผ์นยท์์ต ์ ํ. |
| ์ด์ฉํ๋ | ์ด์์ต๋ฅ ยท์ผํ๊ท % ๋ถ๋ชจ. ํ๋ผ์์น --total-budget ์ ๋์ผํด์ผ ๋น๊ต ๊ฐ๋ฅ. |
| ์์ /์ต์ /ํธ๋ ์ผ | ๋ด BREAKOUT_STOP_LOSS_PCT=-2% / TAKE_PROFIT=+5% / TRAIL=1.5% ๊ธฐ๋ณธ |
| ํธ๋ ์ผ๋ฌด์ฅ(%) | ๊ณ ์ ์ด ์ง์ ๊ฐร(1+๋ฌด์ฅ%) ๋๋ฌ ํ์๋ง ๋ณด์กฐ ํธ๋ ์ผ ์๋. 0=์ฆ์ ยท ๋ฐฑํ 1.5% ๊ถ์ฅ(๋ณธ์ ์ฒญ์ฐโ) |
| ๊ธ๋ฑ์ฃผ(%) | ๋น์ผ ์๊ฐ ๋๋น ๋์ ์์น๋ฅ . ์ด ๊ฐ ์ด๊ณผ ์ข ๋ชฉ์ ์ด๊ฒฉ ๊ณผ์ด๋ก ์ง์ ๊ธ์ง. |
| ์ผ์ผ์ต๋ / ์ฟจ๋ค์ด | ๋ํ๋ ์ข ๋ชฉ๋น 1๋ฒ/์ผ ๊ถ์ฅ. ์์ ํ 30๋ถ ์ฌ์ง์ ๊ธ์ง๋ก ํฉ์ ํํผ. |
| ์ข ๋ชฉ | ๋งค์์๊ฐ | ๋งค๋์๊ฐ | ๋งค์๊ฐ | ๋งค๋๊ฐ | ์๋ | ์์ต(์) | ์์ต๋ฅ % | ๋ณด์ (๋ถ) | ๋งค๋์ฌ์ |
|---|
| ์ข ๋ชฉ | ๋งค์์๊ฐ | ๋งค๋์๊ฐ | ๋งค์๊ฐ | ๋งค๋๊ฐ | ์๋ | ์์ต(์) | ์์ต๋ฅ % | ๋ณด์ (๋ถ) | ๋งค๋์ฌ์ |
|---|
scalp ์กฐ๊ฑด๊ฒ์(๊ฐญ์์น+์ ๊ณ ๊ฐ+๊ฑฐ๋๋ ํญ์ฆ) โ ๋ด ์์ฒด RSI ๊ฐ์ธ/๊ฑฐ๋๋ spike/์๋ด ๊ฒ์ฆmomentum_engine โ ๋์นซ/์ด๊นจยทํธ๋ ์ผ ์ฐ์ , ์ต์ %๋ tp_max ์ํ(๋ง์ง๋ง) ยท ์์ /EODSTRATEGY_MOMENTUM_ENABLED=true + CONDITION_MOMENTUM_NAME/SEQ ์ค์ MOMENTUM_* ๋ฏธ์ค์ ์ ๊ธฐ์กด SCALP_MOM_* ์๋ fallback (์ด์ ๋ฐ์ดํฐ ๊ทธ๋๋ก ์น๊ณ)
MOMENTUM_PATTERN_*)mom_max_from_open=999 ์ด๋ฉด ๋นํ์ฑ.
์ฒญ์ฐ ์์: ๋์นซ/์ด๊นจ โ ํธ๋ ์ผ โ ์์ โ ์๊ฐ์ปท โ ๊ธ์ก์์ค์ปท โ ์ต์ (tp_max ์ํ) โ ์ฅ๋ง๊ฐ (์ค๋งค MomentumStrategy ยท param_search ์ ๋์ผ. SCALP reversal V์ ์ฒญ์ฐ๊ณผ ๋ณ๋)
| - |
|---|
| ์ข ๋ชฉ | ๋งค์์๊ฐ | ๋งค๋์๊ฐ | ๋งค์๊ฐ | ๋งค๋๊ฐ | ์๋ | ์์ต(์) | ์์ต๋ฅ % | ๋์ ์์ต | ๋์ % | ๋ณด์ (๋ถ) | ์ฒด๊ฒฐ๋๋ฒ๊ทธ | ๋งค๋์ฌ์ |
|---|
ํ๋ผ๋ฏธํฐ ๊ทธ๋ฆฌ๋ ํ์์ CLI param_search_momentum.py โ ์น์ ํ์ด์ง ๋ก๋ ์
/api/env/params โ config_momentum + env_config ๋ณํฉ๊ฐ์ผ๋ก ์
๋ ฅ๋ ์๋ ์ฑ์.
holding_candles DB ์ฌ์ฉlong_term_watchlist.json (items[] ์ codeยทname) ์์ ๋ถ๋ฌ์ต๋๋ค. ํธ์ง ํ ์ข
๋ชฉ ๋ชฉ๋ก ๊ฐฑ์ ์ ๋๋ฅด์ธ์.
| ์ผ์ | ์๊ฐ | ๊ณ ๊ฐ | ์ ๊ฐ | ์ข ๊ฐ | ์ ์ผ๋น(์) | ์ ์ผ๋น(%) |
|---|
| - | ์์ต(์) | ์น๋ฅ | ๊ฑฐ๋ | PF | ๋ณด์ (์ผ) | ์ ์ฉ |
|---|
| ์ข ๋ชฉ | ๋งค์์ผ | ๋งค๋์ผ | ๋งค์๊ฐ | ๋งค๋๊ฐ | ์๋ | ์์ต(์) | ์์ต๋ฅ % | ๋ณด์ (์ผ) | ๋งค๋์ฌ์ |
|---|
updown_watchlist(sticky, ์ต๋ 30) โ ํ๋จ ๊ทผ์ ๋งค์ ยท
์ฒญ์ฐ ์คํ ๋ฐ์ค์ดํ โ ํจ๋(๊ณ ์ -%) โ ๋์นซ(์ด๊นจ์ปท) โ ์ต์ โ ์์ .UPDOWN_BOX_*)๋ ์ด์์ค์ ํญ์์ ์ ์ฅ โ ์ฌ๊ธฐ์ ๋ฐฑํ
/ํ๋ผ์์น๋ก ๊ฒ์ฆ ํ 1์๋ฅผ ENV์ ์ ์ฉ.
๋ฐฑํ
=์ค๋งค ๋์ผ ์์ง(run_backtest_box). ๋ฐ์ดํฐ: holding_min_candles(๊ธฐ๋ณธ 15๋ถ).
| ์ฝ๋ | ์ด๋ฆ | ์ํ | ์์ค | ๋ฐ์คํ๋จ | ๋ฐ์ค์๋จ | ์ ์ | ์ถ๊ฐ์ผ | ์ต๊ทผ์ ํธ | |
|---|---|---|---|---|---|---|---|---|---|
| ๋ก๋ฉโฆ | |||||||||
| # | ์ด๊ณผ์์ต ฮฑ% | ํฉ์ฐ์์ต% | B&H% | PF | ์น๋ฅ % | ๊ฑฐ๋ | ํ๋ผ๋ฏธํฐ |
|---|
| ์ข ๋ชฉ | ๋งค์์๊ฐ | ๋งค๋์๊ฐ | ๋งค์๊ฐ | ๋งค๋๊ฐ | ์๋ | ์์ต(์) | ์์ต๋ฅ % | ๋ณด์ (๋ด) | ์ฒญ์ฐ์ฌ์ |
|---|
| ์ฝ๋ | ์์ฅ | ๊ฑฐ๋์ | ์ฌ๋ณผ | TF | tr_key | ON | ๋ฉ๋ชจ | |
|---|---|---|---|---|---|---|---|---|
| ๋ก๋ฉโฆ | ||||||||