From d595b53416db4fb5c066c7b964759e5a7b5a8db5 Mon Sep 17 00:00:00 2001 From: dsyoon Date: Thu, 7 Aug 2025 11:44:30 +0900 Subject: [PATCH] init --- stock_simulation.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/stock_simulation.py b/stock_simulation.py index ba2e675..78f48ed 100644 --- a/stock_simulation.py +++ b/stock_simulation.py @@ -10,7 +10,27 @@ plt.rcParams['font.family'] ='AppleGothic' plt.rcParams['axes.unicode_minus'] =False from config import * -from stock_monitor import calculate_technical_indicators, detect_turnaround_signal, get_coin_more_data, check_buy_point +from stock_monitor import calculate_technical_indicators, get_coin_more_data, check_buy_point + +def detect_turnaround_signal(symbol, data, interval=0, params=None): + """매수 신호 감지 함수 - stock_simulation.py에서 사용""" + if len(data) < 7: + return None + + # 현재 매수 조건 확인 + current_data = data.iloc[-1] + + # 매수 신호가 있는지 확인 + if current_data.get('buy_point', 0) == 1: + return { + 'alert': True, + 'details': f"매수신호: {current_data.get('buy_signal', 'unknown')}" + } + + return { + 'alert': False, + 'details': "매수신호 없음" + } # 비트/알트코인 KRW 마켓 식별: 문자열 "-KRW" 포함 여부로 간단 구분 @@ -118,6 +138,7 @@ def analyze_bottom_period(symbol: str, interval_minutes: int, days: int = 90): for i in range(len(bottom_data)): slice_df = data.iloc[:data.index.get_loc(bottom_data.index[i]) + 1] + slice_df = check_buy_point(slice_df, simulation=True) info = detect_turnaround_signal(symbol, slice_df, interval=interval_minutes) if info: @@ -161,6 +182,7 @@ def run_simulation(symbol: str, interval_minutes: int, days: int = 30): alerts.clear() for i in range(len(data)): slice_df = data.iloc[: i + 1] + slice_df = check_buy_point(slice_df, simulation=True) info = detect_turnaround_signal(symbol, slice_df, interval=interval_minutes, params=params) if info and info['alert']: alerts.append((slice_df.index[-1], slice_df['Close'].iloc[-1]))