feat: add market regime filter and compound reinvestment
- Add market_regime.py: BTC/ETH/SOL/XRP weighted 2h trend score Bull(≥+1.5%) / Neutral / Bear(<-1%) regime detection with 10min cache - strategy.py: dynamic TREND/VOL thresholds based on current regime Bull: 3%/1.5x, Neutral: 5%/2.0x, Bear: 8%/3.5x - price_collector.py: always include leader coins in price history - trader.py: compound reinvestment (profit added to budget, floor at initial) - notify.py: regime info in hourly report, P&L icons (✅/❌, 💚/🔴) - main.py: hourly status at top-of-hour, filter positions held 1h+ - backtest.py: timestop/combo comparison modes Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@ import pyupbit
|
||||
import requests
|
||||
|
||||
from .market import get_top_tickers
|
||||
from .market_regime import LEADERS
|
||||
from .price_db import cleanup_old_prices, insert_prices, insert_prices_with_time
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -27,6 +28,10 @@ def backfill_prices(hours: int = 48) -> None:
|
||||
if not tickers:
|
||||
logger.warning("[백필] 종목 목록 없음, 스킵")
|
||||
return
|
||||
# 대장 코인 항상 포함
|
||||
for leader in LEADERS:
|
||||
if leader not in tickers:
|
||||
tickers = tickers + [leader]
|
||||
|
||||
count = hours + 2 # 여유 있게 요청
|
||||
total_rows = 0
|
||||
@@ -59,6 +64,10 @@ def run_collector(interval: int = COLLECT_INTERVAL) -> None:
|
||||
tickers = get_top_tickers()
|
||||
if not tickers:
|
||||
continue
|
||||
# 대장 코인은 top20 밖이어도 항상 포함
|
||||
for leader in LEADERS:
|
||||
if leader not in tickers:
|
||||
tickers = tickers + [leader]
|
||||
resp = requests.get(
|
||||
"https://api.upbit.com/v1/ticker",
|
||||
params={"markets": ",".join(tickers)},
|
||||
|
||||
Reference in New Issue
Block a user