From 820e557a978c785636529d2092e39a43480f0eec Mon Sep 17 00:00:00 2001 From: dsyoon Date: Sun, 7 May 2023 22:48:43 +0900 Subject: [PATCH] init --- stock/analysis/AnalyzerSqlite.py | 22 +++++++++++++++++++--- stock/analysis/Common.py | 17 +++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/stock/analysis/AnalyzerSqlite.py b/stock/analysis/AnalyzerSqlite.py index 199782d..816a365 100644 --- a/stock/analysis/AnalyzerSqlite.py +++ b/stock/analysis/AnalyzerSqlite.py @@ -409,13 +409,15 @@ class AnalyzerSqlite: os.mkdir(outPath) self.makeDir("monthly_env_하단_rsi_50") - self.makeDir("monthly_env_상단") + self.makeDir("monthly_env_상단_volume") self.makeDir("monthly_mv_5_20") self.makeDir("monthly_mv_20_60") + self.makeDir("weekly_env_상단_volume") self.makeDir("weekly_mv_5_20") self.makeDir("weekly_mv_20_60") + self.makeDir("daily_env_상단_volume") self.makeDir("daily_이전에_없던_거래량") self.makeDir("daily_이격도") #self.makeDir("daily_EV하단_내려옴") @@ -472,9 +474,9 @@ class AnalyzerSqlite: self.writeFile(dir_name, CODE, NAME, top, stock_monthly, log) # ENV 상단 상향 돌파 - check = self.common.check_env_upper(stock_monthly) + check = self.common.check_env_upper_volume(stock_monthly) if check: - dir_name = "monthly_env_상단" + dir_name = "monthly_env_상단_volume" log = "RSI_" + "{:.2f}".format(stock_monthly['rsi'][0]) self.writeFile(dir_name, CODE, NAME, top, stock_monthly, log) @@ -495,6 +497,13 @@ class AnalyzerSqlite: # Weekly 체크 if len(stock_weekly['volume']) > 40: + # ENV 상단 상향 돌파 + check = self.common.check_env_upper_volume(stock_weekly) + if check: + dir_name = "Weekly_env_상단_volume" + log = "RSI_" + "{:.2f}".format(stock_weekly['rsi'][0]) + self.writeFile(dir_name, CODE, NAME, top, stock_weekly, log) + # 5주 check = self.common.check_mv_5_20(stock_weekly) if check: @@ -512,6 +521,13 @@ class AnalyzerSqlite: # 2) daily if len(stock_daily['volume']) > 100: + # ENV 상단 상향 돌파 + check = self.common.check_env_upper_volume(stock_daily) + if check: + dir_name = "Daily_env_상단_volume" + log = "RSI_" + "{:.2f}".format(stock_daily['rsi'][0]) + self.writeFile(dir_name, CODE, NAME, top, stock_daily, log) + # 52주 200일 기준 평균 + 50% 보다 높은 거래량의 경우 check, log = self.common.check_volume(stock_daily) if check: diff --git a/stock/analysis/Common.py b/stock/analysis/Common.py index c508db4..815f548 100644 --- a/stock/analysis/Common.py +++ b/stock/analysis/Common.py @@ -506,6 +506,23 @@ class Common: return True return False + def check_env_upper_volume(self, stock): + c_index = 200 + check = True + max_volume = max(stock['volume'][1:c_index + 1]) + if 0 < max_volume < stock['volume'][0] and stock['close'][1] < stock['close'][0]: + check = True + + c_index = 20 + sum_volume = sum(stock['volume'][1:c_index + 1]) + avg_volume = sum_volume / c_index + if (avg_volume * 5) < stock['volume'][0] and stock['close'][1] < stock['close'][0]: + check = True + + if check and stock['close'][1] < stock['envelope_upper'][1] and stock['envelope_upper'][0] < stock['close'][0]: + return True + return False + def check_mv_5_20(self, stock): if stock['avg5'][1] < stock['avg20'][1] and stock['avg20'][0] < stock['avg5'][0]: return True