init
This commit is contained in:
@@ -341,8 +341,8 @@ class AnalyzerSqlite:
|
|||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
|
|
||||||
sql = 'SELECT ymd, close, open, high, low, volume, '
|
sql = 'SELECT ymd, close, open, high, low, volume, '
|
||||||
sql += ' avg3, avg4, avg5, avg6, avg10, avg12, avg20, avg36, avg40, avg48, avg60, avg120, avg200, avg240, avg300, '
|
sql += ' avg3, avg4, avg5, avg6, avg10, avg12, avg20, avg36, avg40, avg48, avg60, avg120, avg200, avg240, avg300, avg360, avg480, avg720, avg1440, '
|
||||||
sql += ' disparity_avg5, disparity_avg10, disparity_avg20, disparity_avg60, disparity_avg120, '
|
sql += ' disparity_avg5, disparity_avg10, disparity_avg20, disparity_avg60, disparity_avg120, disparity_avg240, disparity_avg480, '
|
||||||
sql += ' bolingerband_upper, bolingerband_lower, bolingerband_middle, '
|
sql += ' bolingerband_upper, bolingerband_lower, bolingerband_middle, '
|
||||||
sql += ' envelope_upper, envelope_lower, envelope_middle, '
|
sql += ' envelope_upper, envelope_lower, envelope_middle, '
|
||||||
sql += ' ichimokucloud_changeLine, ichimokucloud_baseLine, ichimokucloud_laggingSpan, ichimokucloud_leadingSpan1, ichimokucloud_leadingSpan2, '
|
sql += ' ichimokucloud_changeLine, ichimokucloud_baseLine, ichimokucloud_laggingSpan, ichimokucloud_leadingSpan1, ichimokucloud_leadingSpan2, '
|
||||||
@@ -358,8 +358,8 @@ class AnalyzerSqlite:
|
|||||||
|
|
||||||
ymd = []
|
ymd = []
|
||||||
close, open, high, low, volume = [], [], [], [], []
|
close, open, high, low, volume = [], [], [], [], []
|
||||||
avg3, avg4, avg5, avg6, avg10, avg12, avg20, avg36, avg40, avg48, avg60, avg120, avg200, avg240, avg300 = [], [], [], [], [], [], [], [], [], [], [], [], [], [], []
|
avg3, avg4, avg5, avg6, avg10, avg12, avg20, avg36, avg40, avg48, avg60, avg120, avg200, avg240, avg300, avg360, avg480, avg720, avg1440 = [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []
|
||||||
disparity_avg5, disparity_avg10, disparity_avg20, disparity_avg60, disparity_avg120 = [], [], [], [], []
|
disparity_avg5, disparity_avg10, disparity_avg20, disparity_avg60, disparity_avg120, disparity_avg240, disparity_avg480 = [], [], [], [], [], [], []
|
||||||
bolingerband_upper, bolingerband_lower, bolingerband_middle = [], [], []
|
bolingerband_upper, bolingerband_lower, bolingerband_middle = [], [], []
|
||||||
envelope_upper, envelope_lower, envelope_middle = [], [], []
|
envelope_upper, envelope_lower, envelope_middle = [], [], []
|
||||||
ichimokucloud_changeLine, ichimokucloud_baseLine, ichimokucloud_laggingSpan, ichimokucloud_leadingSpan1, ichimokucloud_leadingSpan2 = [], [], [], [], []
|
ichimokucloud_changeLine, ichimokucloud_baseLine, ichimokucloud_laggingSpan, ichimokucloud_leadingSpan1, ichimokucloud_leadingSpan2 = [], [], [], [], []
|
||||||
@@ -389,36 +389,42 @@ class AnalyzerSqlite:
|
|||||||
avg200.append(price[18])
|
avg200.append(price[18])
|
||||||
avg240.append(price[19])
|
avg240.append(price[19])
|
||||||
avg300.append(price[20])
|
avg300.append(price[20])
|
||||||
disparity_avg5.append(price[21])
|
avg360.append(price[21])
|
||||||
disparity_avg10.append(price[22])
|
avg480.append(price[22])
|
||||||
disparity_avg20.append(price[23])
|
avg720.append(price[23])
|
||||||
disparity_avg60.append(price[24])
|
avg1440.append(price[24])
|
||||||
disparity_avg120.append(price[25])
|
disparity_avg5.append(price[25])
|
||||||
bolingerband_upper.append(price[26])
|
disparity_avg10.append(price[26])
|
||||||
bolingerband_lower.append(price[27])
|
disparity_avg20.append(price[27])
|
||||||
bolingerband_middle.append(price[28])
|
disparity_avg60.append(price[28])
|
||||||
envelope_upper.append(price[29])
|
disparity_avg120.append(price[29])
|
||||||
envelope_lower.append(price[30])
|
disparity_avg240.append(price[30])
|
||||||
envelope_middle.append(price[31])
|
disparity_avg480.append(price[31])
|
||||||
ichimokucloud_changeLine.append(price[32])
|
bolingerband_upper.append(price[32])
|
||||||
ichimokucloud_baseLine.append(price[33])
|
bolingerband_lower.append(price[33])
|
||||||
ichimokucloud_laggingSpan.append(price[34])
|
bolingerband_middle.append(price[34])
|
||||||
ichimokucloud_leadingSpan1.append(price[35])
|
envelope_upper.append(price[35])
|
||||||
ichimokucloud_leadingSpan2.append(price[36])
|
envelope_lower.append(price[36])
|
||||||
stochastic_fast_k.append(price[37])
|
envelope_middle.append(price[37])
|
||||||
stochastic_slow_k.append(price[38])
|
ichimokucloud_changeLine.append(price[38])
|
||||||
stochastic_slow_d.append(price[39])
|
ichimokucloud_baseLine.append(price[39])
|
||||||
rsi.append(price[40])
|
ichimokucloud_laggingSpan.append(price[40])
|
||||||
rsis.append(price[41])
|
ichimokucloud_leadingSpan1.append(price[41])
|
||||||
macd.append(price[42])
|
ichimokucloud_leadingSpan2.append(price[42])
|
||||||
macds.append(price[43])
|
stochastic_fast_k.append(price[43])
|
||||||
macdo.append(price[44])
|
stochastic_slow_k.append(price[44])
|
||||||
|
stochastic_slow_d.append(price[45])
|
||||||
|
rsi.append(price[46])
|
||||||
|
rsis.append(price[47])
|
||||||
|
macd.append(price[48])
|
||||||
|
macds.append(price[49])
|
||||||
|
macdo.append(price[50])
|
||||||
|
|
||||||
stock = {
|
stock = {
|
||||||
"ymd": ymd,
|
"ymd": ymd,
|
||||||
"close": close, "open": open, "high": high, "low": low, "volume": volume,
|
"close": close, "open": open, "high": high, "low": low, "volume": volume,
|
||||||
"avg3": avg3, "avg4": avg4, "avg5": avg5, "avg6": avg6, "avg10": avg10, "avg12": avg12, "avg20": avg20, "avg36": avg36, "avg40": avg40, "avg48": avg48, "avg60": avg60, "avg120": avg120, "avg200": avg200, "avg240": avg240, "avg300": avg300,
|
"avg3": avg3, "avg4": avg4, "avg5": avg5, "avg6": avg6, "avg10": avg10, "avg12": avg12, "avg20": avg20, "avg36": avg36, "avg40": avg40, "avg48": avg48, "avg60": avg60, "avg120": avg120, "avg200": avg200, "avg240": avg240, "avg300": avg300, "avg360": avg360, "avg480": avg300, "avg720": avg720, "avg1440": avg1440,
|
||||||
"disparity_avg5": disparity_avg5, "disparity_avg10": disparity_avg10, "disparity_avg20": disparity_avg20, "disparity_avg60": disparity_avg60, "disparity_avg120": disparity_avg120,
|
"disparity_avg5": disparity_avg5, "disparity_avg10": disparity_avg10, "disparity_avg20": disparity_avg20, "disparity_avg60": disparity_avg60, "disparity_avg120": disparity_avg120, "disparity_avg240": disparity_avg240, "disparity_avg480": disparity_avg480,
|
||||||
"upper": bolingerband_upper, "lower": bolingerband_lower, "middle": bolingerband_middle,
|
"upper": bolingerband_upper, "lower": bolingerband_lower, "middle": bolingerband_middle,
|
||||||
"envelope_upper": envelope_upper, "envelope_lower": envelope_lower, "envelope_middle": envelope_middle,
|
"envelope_upper": envelope_upper, "envelope_lower": envelope_lower, "envelope_middle": envelope_middle,
|
||||||
"ichimokucloud_changeLine": ichimokucloud_changeLine, "ichimokucloud_baseLine": ichimokucloud_baseLine, "ichimokucloud_laggingSpan": ichimokucloud_laggingSpan, "ichimokucloud_leadingSpan1": ichimokucloud_leadingSpan1, "ichimokucloud_leadingSpan2": ichimokucloud_leadingSpan2,
|
"ichimokucloud_changeLine": ichimokucloud_changeLine, "ichimokucloud_baseLine": ichimokucloud_baseLine, "ichimokucloud_laggingSpan": ichimokucloud_laggingSpan, "ichimokucloud_leadingSpan1": ichimokucloud_leadingSpan1, "ichimokucloud_leadingSpan2": ichimokucloud_leadingSpan2,
|
||||||
@@ -565,6 +571,9 @@ class AnalyzerSqlite:
|
|||||||
q_200 = MovingAverage(200)
|
q_200 = MovingAverage(200)
|
||||||
q_240 = MovingAverage(240)
|
q_240 = MovingAverage(240)
|
||||||
q_300 = MovingAverage(300)
|
q_300 = MovingAverage(300)
|
||||||
|
q_360 = MovingAverage(360)
|
||||||
|
q_720 = MovingAverage(720)
|
||||||
|
q_1440 = MovingAverage(1440)
|
||||||
|
|
||||||
for i in range(len(stock)):
|
for i in range(len(stock)):
|
||||||
q_3.enqueue(stock[i]['close'])
|
q_3.enqueue(stock[i]['close'])
|
||||||
@@ -583,6 +592,9 @@ class AnalyzerSqlite:
|
|||||||
q_200.enqueue(stock[i]['close'])
|
q_200.enqueue(stock[i]['close'])
|
||||||
q_240.enqueue(stock[i]['close'])
|
q_240.enqueue(stock[i]['close'])
|
||||||
q_300.enqueue(stock[i]['close'])
|
q_300.enqueue(stock[i]['close'])
|
||||||
|
q_360.enqueue(stock[i]['close'])
|
||||||
|
q_720.enqueue(stock[i]['close'])
|
||||||
|
q_1440.enqueue(stock[i]['close'])
|
||||||
|
|
||||||
stock[i]['avg3'] = q_3.avg()
|
stock[i]['avg3'] = q_3.avg()
|
||||||
stock[i]['avg4'] = q_4.avg()
|
stock[i]['avg4'] = q_4.avg()
|
||||||
@@ -600,6 +612,10 @@ class AnalyzerSqlite:
|
|||||||
stock[i]['avg200'] = q_200.avg()
|
stock[i]['avg200'] = q_200.avg()
|
||||||
stock[i]['avg240'] = q_240.avg()
|
stock[i]['avg240'] = q_240.avg()
|
||||||
stock[i]['avg300'] = q_300.avg()
|
stock[i]['avg300'] = q_300.avg()
|
||||||
|
stock[i]['avg360'] = q_360.avg()
|
||||||
|
stock[i]['avg480'] = q_360.avg()
|
||||||
|
stock[i]['avg720'] = q_720.avg()
|
||||||
|
stock[i]['avg1440'] = q_1440.avg()
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -610,6 +626,8 @@ class AnalyzerSqlite:
|
|||||||
stock[i]['disparity_avg20'] = 100 * (stock[i]["open"] / stock[i]["avg20"])
|
stock[i]['disparity_avg20'] = 100 * (stock[i]["open"] / stock[i]["avg20"])
|
||||||
stock[i]['disparity_avg60'] = 100 * (stock[i]["open"] / stock[i]["avg60"])
|
stock[i]['disparity_avg60'] = 100 * (stock[i]["open"] / stock[i]["avg60"])
|
||||||
stock[i]['disparity_avg120'] = 100 * (stock[i]["open"] / stock[i]["avg120"])
|
stock[i]['disparity_avg120'] = 100 * (stock[i]["open"] / stock[i]["avg120"])
|
||||||
|
stock[i]['disparity_avg240'] = 100 * (stock[i]["open"] / stock[i]["avg240"])
|
||||||
|
stock[i]['disparity_avg480'] = 100 * (stock[i]["open"] / stock[i]["avg480"])
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -642,11 +660,17 @@ class AnalyzerSqlite:
|
|||||||
"avg200": -1,
|
"avg200": -1,
|
||||||
"avg240": -1,
|
"avg240": -1,
|
||||||
"avg300": -1,
|
"avg300": -1,
|
||||||
|
"avg360": -1,
|
||||||
|
"avg480": -1,
|
||||||
|
"avg720": -1,
|
||||||
|
"avg1440": -1,
|
||||||
"disparity_avg5": -1,
|
"disparity_avg5": -1,
|
||||||
"disparity_avg10": -1,
|
"disparity_avg10": -1,
|
||||||
"disparity_avg20": -1,
|
"disparity_avg20": -1,
|
||||||
"disparity_avg60": -1,
|
"disparity_avg60": -1,
|
||||||
"disparity_avg120": -1,
|
"disparity_avg120": -1,
|
||||||
|
"disparity_avg240": -1,
|
||||||
|
"disparity_avg480": -1,
|
||||||
"bolingerband_upper": -1,
|
"bolingerband_upper": -1,
|
||||||
"bolingerband_lower": -1,
|
"bolingerband_lower": -1,
|
||||||
"bolingerband_middle": -1,
|
"bolingerband_middle": -1,
|
||||||
@@ -675,7 +699,7 @@ class AnalyzerSqlite:
|
|||||||
stockAnalysisTableName = 'stock_analysis_' + type
|
stockAnalysisTableName = 'stock_analysis_' + type
|
||||||
|
|
||||||
# 테이블 생성
|
# 테이블 생성
|
||||||
cursor.execute("CREATE TABLE IF NOT EXISTS " + stockAnalysisTableName + " (CODE text, NAME text, ymd text, close REAL, diff REAL, open REAL, high REAL, low REAL, volume REAL, avg3 REAL, avg4 REAL, avg5 REAL, avg6 REAL, avg10 REAL, avg12 REAL, avg20 REAL, avg36 REAL, avg40 REAL, avg48 REAL, avg60 REAL, avg120 REAL, avg200 REAL, avg240 REAL, avg300 REAL, disparity_avg5 REAL, disparity_avg10 REAL, disparity_avg20 REAL, disparity_avg60 REAL, disparity_avg120, bolingerband_upper REAL, bolingerband_lower REAL, bolingerband_middle REAL, envelope_upper REAL, envelope_lower REAL, envelope_middle REAL, ichimokucloud_changeLine REAL, ichimokucloud_baseLine REAL, ichimokucloud_laggingSpan REAL, ichimokucloud_leadingSpan1 REAL, ichimokucloud_leadingSpan2 REAL, stochastic_fast_k REAL, stochastic_slow_k REAL, stochastic_slow_d REAL, rsi REAL, rsis REAL, macd REAL, macds REAL, macdo REAL, rp REAL)")
|
cursor.execute("CREATE TABLE IF NOT EXISTS " + stockAnalysisTableName + " (CODE text, NAME text, ymd text, close REAL, diff REAL, open REAL, high REAL, low REAL, volume REAL, avg3 REAL, avg4 REAL, avg5 REAL, avg6 REAL, avg10 REAL, avg12 REAL, avg20 REAL, avg36 REAL, avg40 REAL, avg48 REAL, avg60 REAL, avg120 REAL, avg200 REAL, avg240 REAL, avg300 REAL, avg360 REAL, avg720 REAL, avg1440 REAL, disparity_avg5 REAL, disparity_avg10 REAL, disparity_avg20 REAL, disparity_avg60 REAL, disparity_avg120, bolingerband_upper REAL, bolingerband_lower REAL, bolingerband_middle REAL, envelope_upper REAL, envelope_lower REAL, envelope_middle REAL, ichimokucloud_changeLine REAL, ichimokucloud_baseLine REAL, ichimokucloud_laggingSpan REAL, ichimokucloud_leadingSpan1 REAL, ichimokucloud_leadingSpan2 REAL, stochastic_fast_k REAL, stochastic_slow_k REAL, stochastic_slow_d REAL, rsi REAL, rsis REAL, macd REAL, macds REAL, macdo REAL, rp REAL)")
|
||||||
|
|
||||||
# 키 생성
|
# 키 생성
|
||||||
create_key = "CREATE INDEX IF NOT EXISTS " + stockAnalysisTableName + "_idx on " + stockAnalysisTableName + " (CODE, ymd) "
|
create_key = "CREATE INDEX IF NOT EXISTS " + stockAnalysisTableName + "_idx on " + stockAnalysisTableName + " (CODE, ymd) "
|
||||||
@@ -701,19 +725,19 @@ class AnalyzerSqlite:
|
|||||||
result = cursor.fetchone()
|
result = cursor.fetchone()
|
||||||
if result == None:
|
if result == None:
|
||||||
sql = "INSERT INTO " + stockAnalysisTableName + "(CODE, NAME, ymd, close, diff, open, high, low, volume, "
|
sql = "INSERT INTO " + stockAnalysisTableName + "(CODE, NAME, ymd, close, diff, open, high, low, volume, "
|
||||||
sql += " avg3, avg4, avg5, avg6, avg10, avg12, avg20, avg36, avg40, avg48, avg60, avg120, avg200, avg240, avg300, "
|
sql += " avg3, avg4, avg5, avg6, avg10, avg12, avg20, avg36, avg40, avg48, avg60, avg120, avg200, avg240, avg300, avg360, avg720, avg1440, "
|
||||||
sql += " disparity_avg5, disparity_avg10, disparity_avg20, disparity_avg60, disparity_avg120, "
|
sql += " disparity_avg5, disparity_avg10, disparity_avg20, disparity_avg60, disparity_avg120, disparity_avg240, disparity_avg480, "
|
||||||
sql += " bolingerband_upper, bolingerband_lower, bolingerband_middle, "
|
sql += " bolingerband_upper, bolingerband_lower, bolingerband_middle, "
|
||||||
sql += " envelope_upper, envelope_lower, envelope_middle, "
|
sql += " envelope_upper, envelope_lower, envelope_middle, "
|
||||||
sql += " ichimokucloud_changeLine, ichimokucloud_baseLine, ichimokucloud_laggingSpan, ichimokucloud_leadingSpan1, ichimokucloud_leadingSpan2, "
|
sql += " ichimokucloud_changeLine, ichimokucloud_baseLine, ichimokucloud_laggingSpan, ichimokucloud_leadingSpan1, ichimokucloud_leadingSpan2, "
|
||||||
sql += " stochastic_fast_k, stochastic_slow_k, stochastic_slow_d, "
|
sql += " stochastic_fast_k, stochastic_slow_k, stochastic_slow_d, "
|
||||||
sql += " rsi, rsis, macd, macds, macdo) "
|
sql += " rsi, rsis, macd, macds, macdo) "
|
||||||
sql += " VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
|
sql += " VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
|
||||||
|
|
||||||
cursor.execute(sql, (
|
cursor.execute(sql, (
|
||||||
stock["CODE"], stock["NAME"], price['ymd'], price['close'], price['diff'], price['open'], price['high'], price['low'], price['volume'],
|
stock["CODE"], stock["NAME"], price['ymd'], price['close'], price['diff'], price['open'], price['high'], price['low'], price['volume'],
|
||||||
price['avg3'], price['avg4'], price['avg5'], price['avg6'], price['avg10'], price['avg12'], price['avg20'], price['avg36'], price['avg40'], price['avg48'], price['avg60'], price['avg120'], price['avg200'], price['avg240'], price['avg300'],
|
price['avg3'], price['avg4'], price['avg5'], price['avg6'], price['avg10'], price['avg12'], price['avg20'], price['avg36'], price['avg40'], price['avg48'], price['avg60'], price['avg120'], price['avg200'], price['avg240'], price['avg300'], price['avg360'], price['avg720'], price['avg1440'],
|
||||||
price['disparity_avg5'], price['disparity_avg10'], price['disparity_avg20'], price['disparity_avg60'], price['disparity_avg120'],
|
price['disparity_avg5'], price['disparity_avg10'], price['disparity_avg20'], price['disparity_avg60'], price['disparity_avg120'], price['disparity_avg240'], price['disparity_avg480'],
|
||||||
price['bolingerband_upper'], price['bolingerband_lower'], price['bolingerband_middle'],
|
price['bolingerband_upper'], price['bolingerband_lower'], price['bolingerband_middle'],
|
||||||
price['envelope_upper'], price['envelope_lower'], price['envelope_middle'],
|
price['envelope_upper'], price['envelope_lower'], price['envelope_middle'],
|
||||||
price['ichimokucloud_changeLine'], price['ichimokucloud_baseLine'], price['ichimokucloud_laggingSpan'], price['ichimokucloud_leadingSpan1'], price['ichimokucloud_leadingSpan2'],
|
price['ichimokucloud_changeLine'], price['ichimokucloud_baseLine'], price['ichimokucloud_laggingSpan'], price['ichimokucloud_leadingSpan1'], price['ichimokucloud_leadingSpan2'],
|
||||||
@@ -722,8 +746,8 @@ class AnalyzerSqlite:
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
sql = "UPDATE " + stockAnalysisTableName + " SET close=?, diff=?, open=?, high=?, low=?, volume=?, "
|
sql = "UPDATE " + stockAnalysisTableName + " SET close=?, diff=?, open=?, high=?, low=?, volume=?, "
|
||||||
sql += " avg3=?, avg4=?, avg5=?, avg6=?, avg10=?, avg12=?, avg20=?, avg36=?, avg40=?, avg48=?, avg60=?, avg120=?, avg200=?, avg240=?, avg300=?, "
|
sql += " avg3=?, avg4=?, avg5=?, avg6=?, avg10=?, avg12=?, avg20=?, avg36=?, avg40=?, avg48=?, avg60=?, avg120=?, avg200=?, avg240=?, avg300=?, avg360=?, avg720=?, avg1440=?, "
|
||||||
sql += " disparity_avg5=?, disparity_avg10=?, disparity_avg20=?, disparity_avg60=?, disparity_avg120=?, "
|
sql += " disparity_avg5=?, disparity_avg10=?, disparity_avg20=?, disparity_avg60=?, disparity_avg120=?, disparity_avg240=?, disparity_avg480=?, "
|
||||||
sql += " bolingerband_upper=?, bolingerband_lower=?, bolingerband_middle=?, "
|
sql += " bolingerband_upper=?, bolingerband_lower=?, bolingerband_middle=?, "
|
||||||
sql += " envelope_upper=?, envelope_lower=?, envelope_middle=?, "
|
sql += " envelope_upper=?, envelope_lower=?, envelope_middle=?, "
|
||||||
sql += " ichimokucloud_changeLine=?, ichimokucloud_baseLine=?, ichimokucloud_laggingSpan=?, ichimokucloud_leadingSpan1=?, ichimokucloud_leadingSpan2=?, "
|
sql += " ichimokucloud_changeLine=?, ichimokucloud_baseLine=?, ichimokucloud_laggingSpan=?, ichimokucloud_leadingSpan1=?, ichimokucloud_leadingSpan2=?, "
|
||||||
@@ -734,8 +758,8 @@ class AnalyzerSqlite:
|
|||||||
|
|
||||||
cursor.execute(sql,
|
cursor.execute(sql,
|
||||||
(price['close'], price['diff'], price['open'], price['high'], price['low'], price['volume'],
|
(price['close'], price['diff'], price['open'], price['high'], price['low'], price['volume'],
|
||||||
price['avg3'], price['avg4'], price['avg5'], price['avg6'], price['avg10'], price['avg12'], price['avg20'], price['avg36'], price['avg40'], price['avg48'], price['avg60'], price['avg120'], price['avg200'], price['avg240'], price['avg300'],
|
price['avg3'], price['avg4'], price['avg5'], price['avg6'], price['avg10'], price['avg12'], price['avg20'], price['avg36'], price['avg40'], price['avg48'], price['avg60'], price['avg120'], price['avg200'], price['avg240'], price['avg300'], price['avg360'], price['avg720'], price['avg1440'],
|
||||||
price['disparity_avg5'], price['disparity_avg10'], price['disparity_avg20'], price['disparity_avg60'], price['disparity_avg120'],
|
price['disparity_avg5'], price['disparity_avg10'], price['disparity_avg20'], price['disparity_avg60'], price['disparity_avg120'], price['disparity_avg240'], price['disparity_avg480'],
|
||||||
price['bolingerband_upper'], price['bolingerband_lower'], price['bolingerband_middle'],
|
price['bolingerband_upper'], price['bolingerband_lower'], price['bolingerband_middle'],
|
||||||
price['envelope_upper'], price['envelope_lower'], price['envelope_middle'],
|
price['envelope_upper'], price['envelope_lower'], price['envelope_middle'],
|
||||||
price['ichimokucloud_changeLine'], price['ichimokucloud_baseLine'], price['ichimokucloud_laggingSpan'], price['ichimokucloud_leadingSpan1'], price['ichimokucloud_leadingSpan2'],
|
price['ichimokucloud_changeLine'], price['ichimokucloud_baseLine'], price['ichimokucloud_laggingSpan'], price['ichimokucloud_leadingSpan1'], price['ichimokucloud_leadingSpan2'],
|
||||||
@@ -772,11 +796,16 @@ class AnalyzerSqlite:
|
|||||||
"avg200": -1,
|
"avg200": -1,
|
||||||
"avg240": -1,
|
"avg240": -1,
|
||||||
"avg300": -1,
|
"avg300": -1,
|
||||||
|
"avg360": -1,
|
||||||
|
"avg720": -1,
|
||||||
|
"avg1440": -1,
|
||||||
"disparity_avg5": -1,
|
"disparity_avg5": -1,
|
||||||
"disparity_avg10": -1,
|
"disparity_avg10": -1,
|
||||||
"disparity_avg20": -1,
|
"disparity_avg20": -1,
|
||||||
"disparity_avg60": -1,
|
"disparity_avg60": -1,
|
||||||
"disparity_avg120": -1,
|
"disparity_avg120": -1,
|
||||||
|
"disparity_avg240": -1,
|
||||||
|
"disparity_avg480": -1,
|
||||||
"bolingerband_upper": -1,
|
"bolingerband_upper": -1,
|
||||||
"bolingerband_lower": -1,
|
"bolingerband_lower": -1,
|
||||||
"bolingerband_middle": -1,
|
"bolingerband_middle": -1,
|
||||||
@@ -894,9 +923,9 @@ if __name__ == "__main__":
|
|||||||
stockFileName = os.path.join(RESOURCE_PATH, 'stock.db')
|
stockFileName = os.path.join(RESOURCE_PATH, 'stock.db')
|
||||||
analyzer = AnalyzerSqlite(stockFileName)
|
analyzer = AnalyzerSqlite(stockFileName)
|
||||||
|
|
||||||
#analyzer.analyzeDaily()
|
analyzer.analyzeDaily()
|
||||||
#analyzer.analyzeGrouping("weekly")
|
analyzer.analyzeGrouping("weekly")
|
||||||
#analyzer.analyzeGrouping("monthly")
|
analyzer.analyzeGrouping("monthly")
|
||||||
|
|
||||||
# HTML 출력
|
# HTML 출력
|
||||||
outPath = os.path.join(PROJECT_HOME, "resources", "analysis")
|
outPath = os.path.join(PROJECT_HOME, "resources", "analysis")
|
||||||
|
|||||||
@@ -580,17 +580,15 @@ class Common:
|
|||||||
(stock['rsi'][-1:] < 33) or
|
(stock['rsi'][-1:] < 33) or
|
||||||
0.9 <= param['bull'][0] / param['bear'][0]
|
0.9 <= param['bull'][0] / param['bear'][0]
|
||||||
):
|
):
|
||||||
# trend 상승
|
# avg360 상승
|
||||||
if stock['trend'][i - 1] < stock['trend'][i]:
|
if stock['avg300'][i - 1] < stock['avg300'][i]:
|
||||||
# avg360 상승
|
# avg3 < trend
|
||||||
if stock['avg360'][i - 1] < stock['avg360'][i]:
|
if stock['avg3'][i] < stock['trend'][i]:
|
||||||
# avg3 < trend
|
# avg3 이전 3개 봉 위
|
||||||
if stock['avg3'][i] < stock['trend'][i]:
|
if np.max(stock['avg3'][i - 3:i]) < stock['avg3'][i]:
|
||||||
# avg3 이전 3개 봉 위
|
buy_type = "trend"
|
||||||
if np.max(stock['avg3'][i - 3:i]) < stock['avg3'][i]:
|
buy_weight = 1 # 8
|
||||||
buy_type = "trend"
|
check = True
|
||||||
buy_weight = 1 # 8
|
|
||||||
check = True
|
|
||||||
|
|
||||||
# 상승 추세일 때
|
# 상승 추세일 때
|
||||||
if (stock['macd'][-2] < stock['macd'][-1] and stock['macds'][-1] < stock['macd'][
|
if (stock['macd'][-2] < stock['macd'][-1] and stock['macds'][-1] < stock['macd'][
|
||||||
|
|||||||
Reference in New Issue
Block a user