From ef1c9dcfa70af3f5dc2add1d710a304f0ab69e2e Mon Sep 17 00:00:00 2001 From: dsyoon Date: Thu, 25 Jan 2024 10:19:20 +0900 Subject: [PATCH] init --- stock/analysis/Common.py | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/stock/analysis/Common.py b/stock/analysis/Common.py index f675930..1bf20d0 100644 --- a/stock/analysis/Common.py +++ b/stock/analysis/Common.py @@ -573,48 +573,45 @@ class Common: return False def check_optimal_buy_timeing(self, param, stock): - + check = False + rise_rate = param['bull'][0] / (param['bull'][0]+param['bear'][0]+param['bull'][0]) + if ( (stock['macd'][-2] < stock['macd'][-1] and stock['rsi'][-1]) < 80 or (stock['rsi'][-2] < stock['rsi'][-1] and np.min(stock['rsi'][-3:]) < 35) or (stock['rsi'][-1:] < 33) or - 0.9 <= param['bull'][0] / param['bull'][0] + 0.7 <= rise_rate ): - # avg360 상승 + # avg300 상승 if stock['avg300'][i - 1] < stock['avg300'][i]: - # avg3 < trend - if stock['avg3'][i] < stock['trend'][i]: - # avg3 이전 3개 봉 위 - if np.max(stock['avg3'][i - 3:i]) < stock['avg3'][i]: + # avg5 < trend + if stock['avg5'][i] < stock['trend'][i]: + # avg5 이전 3개 봉 위 + if np.max(stock['avg5'][i - 3:i]) < stock['avg5'][i]: buy_type = "trend" - buy_weight = 1 # 8 check = True # 상승 추세일 때 - if (stock['macd'][-2] < stock['macd'][-1] and stock['macds'][-1] < stock['macd'][ - -1] or + if (stock['macd'][-2] < stock['macd'][-1] and stock['macds'][-1] < stock['macd'][-1] or stock['rsi'][-2] < stock['rsi'][-1]): # rsi가 50을 상향 돌파할 때 - if 0.9 <= ticker['rise_rate'] and np.max(stock['rsi'][i - 5:i]) < 50 and 50 < stock['rsi'][i]: + if 0.9 <= rise_rate and np.max(stock['rsi'][i - 5:i]) < 50 and 50 < stock['rsi'][i]: buy_type = "rsi" - buy_weight = 0.5 # 1 check = True # golden & 거래량 - if stock['avg120'][i] < stock['avg30'][i] < stock['avg15'][i] < stock['avg10'][i] < stock['avg3'][i]: + if stock['avg120'][i] < stock['avg60'][i] < stock['avg20'][i] < stock['avg5'][i]: buy_type = "golden" - buy_weight = 0.5 # 6 check = True # rsi가 30보다 작은 후에 상승일 때 if np.min(stock['rsi'][i - 5:i]) < 30: if stock['rsi'][i - 1] < stock['rsi'][i]: buy_type = "rsi" - buy_weight = 0.8 # 4 check = True - return False + return check # 낙폭 과대 체크