init
This commit is contained in:
@@ -262,7 +262,7 @@ class AnalyzerSqlite:
|
|||||||
|
|
||||||
return energy1, energy2
|
return energy1, energy2
|
||||||
|
|
||||||
def writeFile(self, dir_name, CODE, NAME, top, stock, state, final_status_count=-1):
|
def writeFile(self, dir_name, CODE, NAME, top, stock, state):
|
||||||
# 3년 이내 한번이라도 영업이익이 났는지 체크를 함
|
# 3년 이내 한번이라도 영업이익이 났는지 체크를 함
|
||||||
fnguide = None
|
fnguide = None
|
||||||
if CODE in self.fnguide:
|
if CODE in self.fnguide:
|
||||||
@@ -459,9 +459,6 @@ class AnalyzerSqlite:
|
|||||||
stock_weekly = self.getStockData(stockAnalysisWeeklyTableName, CODE)
|
stock_weekly = self.getStockData(stockAnalysisWeeklyTableName, CODE)
|
||||||
stock_monthly = self.getStockData(stockAnalysisMonthlyTableName, CODE)
|
stock_monthly = self.getStockData(stockAnalysisMonthlyTableName, CODE)
|
||||||
|
|
||||||
final_status = ""
|
|
||||||
final_status_count = 0
|
|
||||||
|
|
||||||
# 거래량이 10만 이상이고, 종가가 1천원 이상인지 체크 (https://happpy-rich.tistory.com/94)
|
# 거래량이 10만 이상이고, 종가가 1천원 이상인지 체크 (https://happpy-rich.tistory.com/94)
|
||||||
if stock_daily['volume'][0] > 100000 and stock_daily['close'][0] > 1000:
|
if stock_daily['volume'][0] > 100000 and stock_daily['close'][0] > 1000:
|
||||||
|
|
||||||
@@ -474,7 +471,6 @@ class AnalyzerSqlite:
|
|||||||
check = self.common.check_macd(stock_monthly, -300)
|
check = self.common.check_macd(stock_monthly, -300)
|
||||||
if check:
|
if check:
|
||||||
dir_name = "monthly_macd_n이하"
|
dir_name = "monthly_macd_n이하"
|
||||||
final_status_count += 1
|
|
||||||
log = "{:.2f}".format(stock_monthly['macd'][0])
|
log = "{:.2f}".format(stock_monthly['macd'][0])
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_monthly, log)
|
self.writeFile(dir_name, CODE, NAME, top, stock_monthly, log)
|
||||||
|
|
||||||
@@ -482,7 +478,6 @@ class AnalyzerSqlite:
|
|||||||
check = self.common.check_rsi(stock_monthly, 20)
|
check = self.common.check_rsi(stock_monthly, 20)
|
||||||
if check:
|
if check:
|
||||||
dir_name = "monthly_rsi_n이하"
|
dir_name = "monthly_rsi_n이하"
|
||||||
final_status_count += 1
|
|
||||||
log = "{:.2f}".format(stock_monthly['rsi'][0])
|
log = "{:.2f}".format(stock_monthly['rsi'][0])
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_monthly, log)
|
self.writeFile(dir_name, CODE, NAME, top, stock_monthly, log)
|
||||||
|
|
||||||
@@ -493,7 +488,6 @@ class AnalyzerSqlite:
|
|||||||
check = self.common.check_macd(stock_weekly, -300)
|
check = self.common.check_macd(stock_weekly, -300)
|
||||||
if check:
|
if check:
|
||||||
dir_name = "weekly_macd_n이하"
|
dir_name = "weekly_macd_n이하"
|
||||||
final_status_count += 1
|
|
||||||
log = "{:.2f}".format(stock_weekly['macd'][0])
|
log = "{:.2f}".format(stock_weekly['macd'][0])
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_weekly, log)
|
self.writeFile(dir_name, CODE, NAME, top, stock_weekly, log)
|
||||||
|
|
||||||
@@ -501,7 +495,6 @@ class AnalyzerSqlite:
|
|||||||
check = self.common.check_rsi(stock_weekly, 20)
|
check = self.common.check_rsi(stock_weekly, 20)
|
||||||
if check:
|
if check:
|
||||||
dir_name = "weekly_rsi_n이하"
|
dir_name = "weekly_rsi_n이하"
|
||||||
final_status_count += 1
|
|
||||||
log = "{:.2f}".format(stock_weekly['rsi'][0])
|
log = "{:.2f}".format(stock_weekly['rsi'][0])
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_weekly, log)
|
self.writeFile(dir_name, CODE, NAME, top, stock_weekly, log)
|
||||||
|
|
||||||
@@ -511,7 +504,6 @@ class AnalyzerSqlite:
|
|||||||
check = self.common.check_macd(stock_daily, -1000)
|
check = self.common.check_macd(stock_daily, -1000)
|
||||||
if check:
|
if check:
|
||||||
dir_name = "daily_macd_n이하"
|
dir_name = "daily_macd_n이하"
|
||||||
final_status_count += 1
|
|
||||||
log = "{:.2f}".format(stock_daily['macd'][0])
|
log = "{:.2f}".format(stock_daily['macd'][0])
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
||||||
|
|
||||||
@@ -519,7 +511,6 @@ class AnalyzerSqlite:
|
|||||||
check = self.common.check_rsi(stock_daily, 10)
|
check = self.common.check_rsi(stock_daily, 10)
|
||||||
if check:
|
if check:
|
||||||
dir_name = "daily_rsi_n이하"
|
dir_name = "daily_rsi_n이하"
|
||||||
final_status_count += 1
|
|
||||||
log = "{:.2f}".format(stock_daily['macd'][0])
|
log = "{:.2f}".format(stock_daily['macd'][0])
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
||||||
|
|
||||||
@@ -528,7 +519,6 @@ class AnalyzerSqlite:
|
|||||||
check, log = self.common.check_volume(stock_daily)
|
check, log = self.common.check_volume(stock_daily)
|
||||||
if check:
|
if check:
|
||||||
dir_name = "daily_이전에_없던_거래량"
|
dir_name = "daily_이전에_없던_거래량"
|
||||||
final_status_count += 1
|
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
||||||
|
|
||||||
# daily_이격도
|
# daily_이격도
|
||||||
@@ -536,14 +526,12 @@ class AnalyzerSqlite:
|
|||||||
if check:
|
if check:
|
||||||
dir_name = "daily_이격도"
|
dir_name = "daily_이격도"
|
||||||
log = str(top)
|
log = str(top)
|
||||||
final_status_count += 1
|
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
||||||
|
|
||||||
# daily_낙폭과대 (60% 이상 하락)
|
# daily_낙폭과대 (60% 이상 하락)
|
||||||
check, log = self.common.check_excessive_drop(stock_daily)
|
check, log = self.common.check_excessive_drop(stock_daily)
|
||||||
if check:
|
if check:
|
||||||
dir_name = "daily_낙폭과대"
|
dir_name = "daily_낙폭과대"
|
||||||
final_status_count += 1
|
|
||||||
log = log + "_" + str(top)
|
log = log + "_" + str(top)
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
||||||
|
|
||||||
@@ -552,21 +540,14 @@ class AnalyzerSqlite:
|
|||||||
if check:
|
if check:
|
||||||
dir_name = "daily_EV하단_내려옴"
|
dir_name = "daily_EV하단_내려옴"
|
||||||
log = str(top)
|
log = str(top)
|
||||||
final_status_count += 1
|
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
||||||
|
|
||||||
check = self.common.check_under_BB_Low(stock_daily)
|
check = self.common.check_under_BB_Low(stock_daily)
|
||||||
if check:
|
if check:
|
||||||
dir_name = "daily_BB하단_내려옴"
|
dir_name = "daily_BB하단_내려옴"
|
||||||
log = str(top)
|
log = str(top)
|
||||||
final_status_count += 1
|
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
self.writeFile(dir_name, CODE, NAME, top, stock_daily, log)
|
||||||
|
|
||||||
|
|
||||||
if final_status_count >= 5:
|
|
||||||
dir_name = "final"
|
|
||||||
self.writeFile(dir_name, CODE, NAME, top, stock_daily, final_status, final_status_count)
|
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
def get_moving_average(self, stock):
|
def get_moving_average(self, stock):
|
||||||
|
|||||||
@@ -501,14 +501,15 @@ class Common:
|
|||||||
c_index = 200
|
c_index = 200
|
||||||
|
|
||||||
max_volume = max(stock['volume'][1:c_index+1])
|
max_volume = max(stock['volume'][1:c_index+1])
|
||||||
if max_volume < stock['volume'][0]:
|
if max_volume < stock['volume'][0] and stock['close'][1] < stock['close'][0]:
|
||||||
log = "{:.2f}".format((stock['volume'][0] - max_volume)/max_volume)
|
log = "{:.2f}".format(stock['volume'][0]/max_volume)
|
||||||
return True, log
|
return True, log
|
||||||
|
|
||||||
|
c_index = 20
|
||||||
sum_volume = sum(stock['volume'][1:c_index + 1])
|
sum_volume = sum(stock['volume'][1:c_index + 1])
|
||||||
avg_volume = sum_volume / c_index
|
avg_volume = sum_volume / c_index
|
||||||
if (avg_volume + avg_volume*0.75) < stock['volume'][0]:
|
if (avg_volume * 5) < stock['volume'][0] and stock['close'][1] < stock['close'][0]:
|
||||||
log = "{:.2f}".format(max_volume/stock['volume'][0])
|
log = "{:.2f}".format(stock['volume'][0]/max_volume)
|
||||||
return True, log
|
return True, log
|
||||||
|
|
||||||
return False, ""
|
return False, ""
|
||||||
@@ -526,7 +527,7 @@ class Common:
|
|||||||
c_index = 200
|
c_index = 200
|
||||||
if len(stock['close']) > c_index:
|
if len(stock['close']) > c_index:
|
||||||
max_value = max(stock['close'][1:c_index+1])
|
max_value = max(stock['close'][1:c_index+1])
|
||||||
if stock['close'][0] < max_value * 0.6:
|
if max_value * 0.4 < stock['close'][0] < max_value * 0.6:
|
||||||
return True, "{:.2f}".format(stock['close'][0]/max_value)
|
return True, "{:.2f}".format(stock['close'][0]/max_value)
|
||||||
return False, ""
|
return False, ""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user