32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
'''
|
|
strategy_engine/templates/basic_strategy.py
|
|
|
|
기본 전략 템플릿:
|
|
- 매수 신호가 있는 tradable 종목에 대해 TP(목표가), SL(손절가)를 자동 계산
|
|
- 단순 비율 방식으로 설정 (예: +5%, -3%)
|
|
- Buy 여부 결정 포함
|
|
'''
|
|
|
|
import pandas as pd
|
|
|
|
def apply_basic_strategy(df: pd.DataFrame, tp_ratio: float = 0.05, sl_ratio: float = 0.03) -> pd.DataFrame:
|
|
"""
|
|
전략 종목에 대해 TP/SL 조건 및 액션(Buy) 설정
|
|
|
|
Parameters:
|
|
df (pd.DataFrame): selector에서 필터링된 종목 DataFrame (최소: symbol, close 컬럼 포함)
|
|
tp_ratio (float): 목표 수익률 비율 (기본 5%)
|
|
sl_ratio (float): 손절 비율 (기본 3%)
|
|
|
|
Returns:
|
|
pd.DataFrame: 전략 조건이 부여된 종목 테이블
|
|
"""
|
|
df = df.copy()
|
|
|
|
df['entry_price'] = df['close'] # 현재 종가를 진입가로 가정
|
|
df['target_price'] = df['entry_price'] * (1 + tp_ratio)
|
|
df['stop_loss'] = df['entry_price'] * (1 - sl_ratio)
|
|
df['action'] = 'Buy' # 현재는 모두 매수 대상으로 판단
|
|
|
|
return df[['symbol', 'entry_price', 'target_price', 'stop_loss', 'action']]
|