refactor: Git에서 데이터 제거, 설정·코드만 유지

파이프라인 산출물(data/, docs/)을 Git 추적에서 제외하고
히스토리를 단일 커밋으로 재구성해 저장소 용량을 경량화한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-12 10:01:43 +09:00
commit 741c949470
92 changed files with 12230 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
"""RSI 다이버전스 기법."""
from __future__ import annotations
import pandas as pd
from deepcoin.techniques.base import BaseTechnique, TechniqueParams, TechniqueSignal
from deepcoin.techniques.helpers import (
dedupe_signals,
detect_bearish_divergence,
detect_bullish_divergence,
find_confirmed_pivots,
make_signal,
)
from deepcoin.techniques.indicators import rsi
class RsiDivergenceTechnique(BaseTechnique):
"""RSI 상승·하락 다이버전스 매수·매도."""
technique_id = "rsi_divergence"
technique_name = "RSI 다이버전스"
category = "divergence"
causal = True
description = "RSI 상승(Bd)·하락(Sd) 다이버전스"
def default_extra_params(self) -> dict:
return {"period": 14, "order": 12, "min_bars_between": 15, "max_bars_between": 400}
def generate_signals(self, df: pd.DataFrame, params: TechniqueParams) -> list[TechniqueSignal]:
period = int(params.extra.get("period", 14))
order = int(params.extra.get("order", 12))
min_bars = int(params.extra.get("min_bars_between", 15))
max_bars = int(params.extra.get("max_bars_between", 400))
close = df["close"].astype(float)
low = df["low"].astype(float)
high = df["high"].astype(float)
rsi_vals = rsi(close, period=period)
low_pivots = find_confirmed_pivots(low, order, "low")
high_pivots = find_confirmed_pivots(high, order, "high")
signals: list[TechniqueSignal] = []
for pivot_idx, _ in detect_bullish_divergence(
low_pivots, rsi_vals, min_bars_between=min_bars, max_bars_between=max_bars,
):
confirm_idx = pivot_idx + order
if confirm_idx >= len(df):
continue
signals.append(
make_signal(
df, confirm_idx, float(close.iloc[confirm_idx]), "buy",
"rsi_bull_divergence", pivot_bar_index=pivot_idx, confidence=0.78,
)
)
for pivot_idx, _ in detect_bearish_divergence(
high_pivots, rsi_vals, min_bars_between=min_bars, max_bars_between=max_bars,
):
confirm_idx = pivot_idx + order
if confirm_idx >= len(df):
continue
signals.append(
make_signal(
df, confirm_idx, float(close.iloc[confirm_idx]), "sell",
"rsi_bear_divergence", pivot_bar_index=pivot_idx, confidence=0.78,
)
)
return dedupe_signals(signals, min_bars=min_bars)