From 5537db5b1e92d990f16abcba58e26ad1a0a3ab99 Mon Sep 17 00:00:00 2001 From: dosangyoon Date: Thu, 17 Feb 2022 23:30:59 +0900 Subject: [PATCH] init --- stockpredictor/analysis/AnalyzerSqlite.py | 30 +++++++++++++++++-- stockpredictor/crawler/sQLite/StockCrawler.py | 2 +- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/stockpredictor/analysis/AnalyzerSqlite.py b/stockpredictor/analysis/AnalyzerSqlite.py index 76fd78d..e8974f6 100644 --- a/stockpredictor/analysis/AnalyzerSqlite.py +++ b/stockpredictor/analysis/AnalyzerSqlite.py @@ -408,6 +408,8 @@ class AnalyzerSqlite: self.makeDir("-2_캔들_기준선_아래로_내려옴") self.makeDir("-3_후행스팬_캔들_아래로_내려옴") + self.makeDir("1_거래량_상승") + return def writeFile(self, type, CODE, NAME, stock, state): @@ -420,8 +422,27 @@ class AnalyzerSqlite: po.write_html(fig, file=fileName, auto_open=False) return + def checkVolume(self, p_volume, volume): + if p_volume < 10000 and p_volume * 50 < volume: + return True + if p_volume < 50000 and p_volume * 20 < volume: + return True + if p_volume < 100000 and p_volume * 15 < volume: + return True + if p_volume < 200000 and p_volume * 7 < volume: + return True + if p_volume < 700000 and p_volume * 5 < volume: + return True + if p_volume < 1000000 and p_volume * 4 < volume: + return True + if p_volume < 5000000 and p_volume * 3 < volume: + return True + if p_volume > 5000000 and p_volume * 2 < volume: + return True + return False + # 후보 찾기 - def findCandidate(self, outPath): + def findCandidate(self, outPath): self.makeDirectory(outPath) stockTableName = 'stock' @@ -663,7 +684,9 @@ class AnalyzerSqlite: type = "-3_후행스팬_캔들_아래로_내려옴" self.writeFile(type, CODE, NAME, stock, state) - + if self.checkVolume(volume[1], volume[0]): + type = "1_거래량_상승" + self.writeFile(type, CODE, NAME, stock, state) return @@ -760,7 +783,8 @@ class AnalyzerSqlite: self.stochastic.analyze(stock) self.bolingerBand.analyze(stock) - for price in stock["PRICE"]: + sorted_stock = sorted(stock["PRICE"], key=lambda x: x['ymd'], reverse=True) + for price in sorted_stock: cursor.execute('SELECT * FROM ' + stockAnalysisTableName + ' WHERE CODE=? and ymd=?', (stock['CODE'], price['ymd'],)) result = cursor.fetchone() if result == None: diff --git a/stockpredictor/crawler/sQLite/StockCrawler.py b/stockpredictor/crawler/sQLite/StockCrawler.py index ada02de..0ea99a8 100644 --- a/stockpredictor/crawler/sQLite/StockCrawler.py +++ b/stockpredictor/crawler/sQLite/StockCrawler.py @@ -232,7 +232,7 @@ class StockCrawler: break df = df.append(html[0], ignore_index=True) df = df.dropna() - if lastPage or len(df) < 1 or df.날짜[0]=='': + if (lastPage) or (len(df) < 1) or ("날짜" not in df) or (df.날짜[1]==''): print("\t- lastpage:", page) break