소스리뷰 버전 적용

This commit is contained in:
2026-03-06 19:10:39 +09:00
parent ab75dc66f8
commit 2b9a90a03f
6 changed files with 528 additions and 95 deletions

View File

@@ -29,6 +29,24 @@ def _ma(values: list, window: int) -> Optional[float]:
return None
def _ema(values: list, window: int) -> Optional[float]:
"""EMA(Exponential Moving Average) 계산.
SMA 시드 → 이후 지수 가중 평균 순차 적용.
values 길이가 window 미만이면 None 반환.
"""
try:
if len(values) < window:
return None
k = 2.0 / (window + 1)
ema = sum(values[:window]) / window
for v in values[window:]:
ema = v * k + ema * (1 - k)
return ema
except Exception:
return None
def _passes_uptrend(closes: list, ma_short: int = TREND_MA_SHORT, ma_long: int = TREND_MA_LONG, tol: float = TREND_TOLERANCE_PCT) -> Optional[bool]:
if not closes or len(closes) < max(ma_short, ma_long):
return None