init
This commit is contained in:
@@ -118,6 +118,7 @@ class AnalyzerSqlite:
|
|||||||
high = list(reversed(stock['high']))
|
high = list(reversed(stock['high']))
|
||||||
low = list(reversed(stock['low']))
|
low = list(reversed(stock['low']))
|
||||||
volume = list(reversed(stock['volume']))
|
volume = list(reversed(stock['volume']))
|
||||||
|
avg3 = list(reversed(stock['avg3']))
|
||||||
avg4 = list(reversed(stock['avg4']))
|
avg4 = list(reversed(stock['avg4']))
|
||||||
avg5 = list(reversed(stock['avg5']))
|
avg5 = list(reversed(stock['avg5']))
|
||||||
avg6 = list(reversed(stock['avg6']))
|
avg6 = list(reversed(stock['avg6']))
|
||||||
@@ -142,6 +143,7 @@ class AnalyzerSqlite:
|
|||||||
|
|
||||||
# general
|
# general
|
||||||
candle_stick = go.Candlestick(x=ymd, open=open, high=high, low=low, close=close, increasing_line_color='red', decreasing_line_color='blue')
|
candle_stick = go.Candlestick(x=ymd, open=open, high=high, low=low, close=close, increasing_line_color='red', decreasing_line_color='blue')
|
||||||
|
avg3 = go.Scatter(x=ymd, y=avg3, name="avg3", line_color='#085F1B')
|
||||||
avg4 = go.Scatter(x=ymd, y=avg4, name="avg4", line_color='#085F1B')
|
avg4 = go.Scatter(x=ymd, y=avg4, name="avg4", line_color='#085F1B')
|
||||||
avg5 = go.Scatter(x=ymd, y=avg5, name="avg5", line_color='#000000')
|
avg5 = go.Scatter(x=ymd, y=avg5, name="avg5", line_color='#000000')
|
||||||
avg6 = go.Scatter(x=ymd, y=avg6, name="avg6", line_color='#698D09')
|
avg6 = go.Scatter(x=ymd, y=avg6, name="avg6", line_color='#698D09')
|
||||||
@@ -160,7 +162,7 @@ class AnalyzerSqlite:
|
|||||||
changeLine = go.Scatter(x=ymd, y=ichimokucloud_changeLine, name="changeLine", line_color='#000000')
|
changeLine = go.Scatter(x=ymd, y=ichimokucloud_changeLine, name="changeLine", line_color='#000000')
|
||||||
baseLine = go.Scatter(x=ymd, y=ichimokucloud_baseLine, name="baseLine", line_color='#FF0000')
|
baseLine = go.Scatter(x=ymd, y=ichimokucloud_baseLine, name="baseLine", line_color='#FF0000')
|
||||||
|
|
||||||
candle_data = [candle_stick, avg4, avg5, avg6, avg10, avg12, avg20, avg36, avg40, avg48, avg60, avg120, avg240, avg300, bolinger_upper, bolinger_lower, changeLine, baseLine]
|
candle_data = [candle_stick, avg3, avg4, avg5, avg6, avg10, avg12, avg20, avg36, avg40, avg48, avg60, avg120, avg240, avg300, bolinger_upper, bolinger_lower, changeLine, baseLine]
|
||||||
#candle_data = [candle_stick, bolinger_upper, bolinger_lower, changeLine, baseLine]
|
#candle_data = [candle_stick, bolinger_upper, bolinger_lower, changeLine, baseLine]
|
||||||
|
|
||||||
volume = go.Bar(x=ymd, y=volume, name="volume")
|
volume = go.Bar(x=ymd, y=volume, name="volume")
|
||||||
@@ -297,7 +299,7 @@ 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 += ' 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, '
|
||||||
sql += ' bolingerband_upper, bolingerband_lower, bolingerband_middle, '
|
sql += ' bolingerband_upper, bolingerband_lower, bolingerband_middle, '
|
||||||
sql += ' ichimokucloud_changeLine, ichimokucloud_baseLine, ichimokucloud_leadingSpan1, ichimokucloud_leadingSpan2, '
|
sql += ' ichimokucloud_changeLine, ichimokucloud_baseLine, ichimokucloud_leadingSpan1, ichimokucloud_leadingSpan2, '
|
||||||
sql += ' stochastic_fast_k, stochastic_slow_k, stochastic_slow_d, '
|
sql += ' stochastic_fast_k, stochastic_slow_k, stochastic_slow_d, '
|
||||||
@@ -311,7 +313,7 @@ class AnalyzerSqlite:
|
|||||||
|
|
||||||
ymd = []
|
ymd = []
|
||||||
close, open, high, low, volume = [], [], [], [], []
|
close, open, high, low, volume = [], [], [], [], []
|
||||||
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 = [], [], [], [], [], [], [], [], [], [], [], [], [], [], []
|
||||||
bolingerband_upper, bolingerband_lower, bolingerband_middle = [], [], []
|
bolingerband_upper, bolingerband_lower, bolingerband_middle = [], [], []
|
||||||
ichimokucloud_changeLine, ichimokucloud_baseLine, ichimokucloud_leadingSpan1, ichimokucloud_leadingSpan2 = [], [], [], []
|
ichimokucloud_changeLine, ichimokucloud_baseLine, ichimokucloud_leadingSpan1, ichimokucloud_leadingSpan2 = [], [], [], []
|
||||||
stochastic_fast_k, stochastic_slow_k, stochastic_slow_d = [], [], []
|
stochastic_fast_k, stochastic_slow_k, stochastic_slow_d = [], [], []
|
||||||
@@ -324,37 +326,38 @@ class AnalyzerSqlite:
|
|||||||
high.append(price[3])
|
high.append(price[3])
|
||||||
low.append(price[4])
|
low.append(price[4])
|
||||||
volume.append(price[5])
|
volume.append(price[5])
|
||||||
avg4.append(price[6])
|
avg3.append(price[6])
|
||||||
avg5.append(price[7])
|
avg4.append(price[7])
|
||||||
avg6.append(price[8])
|
avg5.append(price[8])
|
||||||
avg10.append(price[9])
|
avg6.append(price[9])
|
||||||
avg12.append(price[10])
|
avg10.append(price[10])
|
||||||
avg20.append(price[11])
|
avg12.append(price[11])
|
||||||
avg36.append(price[12])
|
avg20.append(price[12])
|
||||||
avg40.append(price[13])
|
avg36.append(price[13])
|
||||||
avg48.append(price[14])
|
avg40.append(price[14])
|
||||||
avg60.append(price[15])
|
avg48.append(price[15])
|
||||||
avg120.append(price[16])
|
avg60.append(price[16])
|
||||||
avg200.append(price[17])
|
avg120.append(price[17])
|
||||||
avg240.append(price[18])
|
avg200.append(price[18])
|
||||||
avg300.append(price[19])
|
avg240.append(price[19])
|
||||||
bolingerband_upper.append(price[20])
|
avg300.append(price[20])
|
||||||
bolingerband_lower.append(price[21])
|
bolingerband_upper.append(price[21])
|
||||||
bolingerband_middle.append(price[22])
|
bolingerband_lower.append(price[22])
|
||||||
ichimokucloud_changeLine.append(price[23])
|
bolingerband_middle.append(price[23])
|
||||||
ichimokucloud_baseLine.append(price[24])
|
ichimokucloud_changeLine.append(price[24])
|
||||||
ichimokucloud_leadingSpan1.append(price[25])
|
ichimokucloud_baseLine.append(price[25])
|
||||||
ichimokucloud_leadingSpan2.append(price[26])
|
ichimokucloud_leadingSpan1.append(price[26])
|
||||||
stochastic_fast_k.append(price[27])
|
ichimokucloud_leadingSpan2.append(price[27])
|
||||||
stochastic_slow_k.append(price[28])
|
stochastic_fast_k.append(price[28])
|
||||||
stochastic_slow_d.append(price[29])
|
stochastic_slow_k.append(price[29])
|
||||||
rsi.append(price[30])
|
stochastic_slow_d.append(price[30])
|
||||||
rsis.append(price[31])
|
rsi.append(price[31])
|
||||||
|
rsis.append(price[32])
|
||||||
|
|
||||||
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,
|
||||||
"avg4": avg4, "avg5": avg5, "avg6": avg6, "avg10": avg10, "avg12": avg12, "avg20": avg20, "avg36": avg36, "avg40": avg40, "avg48": avg48, "avg60": avg60, "avg120": avg120, "avg200": avg200, "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, "avg300": avg300,
|
||||||
"avg240": avg240,
|
"avg240": avg240,
|
||||||
"bolingerband_upper": bolingerband_upper, "bolingerband_lower": bolingerband_lower,
|
"bolingerband_upper": bolingerband_upper, "bolingerband_lower": bolingerband_lower,
|
||||||
"bolingerband_middle": bolingerband_middle,
|
"bolingerband_middle": bolingerband_middle,
|
||||||
@@ -564,6 +567,7 @@ class AnalyzerSqlite:
|
|||||||
return
|
return
|
||||||
|
|
||||||
def get_moving_average(self, stock):
|
def get_moving_average(self, stock):
|
||||||
|
q_3 = MovingAverage(3)
|
||||||
q_4 = MovingAverage(4)
|
q_4 = MovingAverage(4)
|
||||||
q_5 = MovingAverage(5)
|
q_5 = MovingAverage(5)
|
||||||
q_6 = MovingAverage(6)
|
q_6 = MovingAverage(6)
|
||||||
@@ -580,6 +584,7 @@ class AnalyzerSqlite:
|
|||||||
q_300 = MovingAverage(300)
|
q_300 = MovingAverage(300)
|
||||||
|
|
||||||
for i in range(len(stock)):
|
for i in range(len(stock)):
|
||||||
|
q_3.enqueue(stock[i]['close'])
|
||||||
q_4.enqueue(stock[i]['close'])
|
q_4.enqueue(stock[i]['close'])
|
||||||
q_5.enqueue(stock[i]['close'])
|
q_5.enqueue(stock[i]['close'])
|
||||||
q_6.enqueue(stock[i]['close'])
|
q_6.enqueue(stock[i]['close'])
|
||||||
@@ -595,6 +600,7 @@ class AnalyzerSqlite:
|
|||||||
q_240.enqueue(stock[i]['close'])
|
q_240.enqueue(stock[i]['close'])
|
||||||
q_300.enqueue(stock[i]['close'])
|
q_300.enqueue(stock[i]['close'])
|
||||||
|
|
||||||
|
stock[i]['avg3'] = q_3.avg()
|
||||||
stock[i]['avg4'] = q_4.avg()
|
stock[i]['avg4'] = q_4.avg()
|
||||||
stock[i]['avg5'] = q_5.avg()
|
stock[i]['avg5'] = q_5.avg()
|
||||||
stock[i]['avg6'] = q_6.avg()
|
stock[i]['avg6'] = q_6.avg()
|
||||||
@@ -625,6 +631,7 @@ class AnalyzerSqlite:
|
|||||||
"high": weekDict['high'][ts],
|
"high": weekDict['high'][ts],
|
||||||
"low": weekDict['low'][ts],
|
"low": weekDict['low'][ts],
|
||||||
"volume": weekDict['volume'][ts],
|
"volume": weekDict['volume'][ts],
|
||||||
|
"avg3": -1,
|
||||||
"avg4": -1,
|
"avg4": -1,
|
||||||
"avg5": -1,
|
"avg5": -1,
|
||||||
"avg6": -1,
|
"avg6": -1,
|
||||||
@@ -664,7 +671,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, 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, bolingerband_upper REAL, bolingerband_lower REAL, bolingerband_middle REAL, ichimokucloud_changeLine REAL, ichimokucloud_baseLine REAL, ichimokucloud_leadingSpan1 REAL, ichimokucloud_leadingSpan2 REAL, stochastic_fast_k REAL, stochastic_slow_k REAL, stochastic_slow_d REAL, rsi REAL, rsis 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, bolingerband_upper REAL, bolingerband_lower REAL, bolingerband_middle REAL, ichimokucloud_changeLine REAL, ichimokucloud_baseLine REAL, ichimokucloud_leadingSpan1 REAL, ichimokucloud_leadingSpan2 REAL, stochastic_fast_k REAL, stochastic_slow_k REAL, stochastic_slow_d REAL, rsi REAL, rsis 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) "
|
||||||
@@ -685,16 +692,16 @@ 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 += " 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, "
|
||||||
sql += " bolingerband_upper, bolingerband_lower, bolingerband_middle, "
|
sql += " bolingerband_upper, bolingerband_lower, bolingerband_middle, "
|
||||||
sql += " ichimokucloud_changeLine, ichimokucloud_baseLine, ichimokucloud_leadingSpan1, ichimokucloud_leadingSpan2, "
|
sql += " ichimokucloud_changeLine, ichimokucloud_baseLine, 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) "
|
sql += " rsi, rsis) "
|
||||||
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['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['bolingerband_upper'], price['bolingerband_lower'], price['bolingerband_middle'],
|
price['bolingerband_upper'], price['bolingerband_lower'], price['bolingerband_middle'],
|
||||||
price['ichimokucloud_changeLine'], price['ichimokucloud_baseLine'], price['ichimokucloud_leadingSpan1'],
|
price['ichimokucloud_changeLine'], price['ichimokucloud_baseLine'], price['ichimokucloud_leadingSpan1'],
|
||||||
price['ichimokucloud_leadingSpan2'],
|
price['ichimokucloud_leadingSpan2'],
|
||||||
@@ -703,7 +710,7 @@ 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 += " 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=?, "
|
||||||
sql += " bolingerband_upper=?, bolingerband_lower=?, bolingerband_middle=?, "
|
sql += " bolingerband_upper=?, bolingerband_lower=?, bolingerband_middle=?, "
|
||||||
sql += " ichimokucloud_changeLine=?, ichimokucloud_baseLine=?, ichimokucloud_leadingSpan1=?, ichimokucloud_leadingSpan2=?, "
|
sql += " ichimokucloud_changeLine=?, ichimokucloud_baseLine=?, ichimokucloud_leadingSpan1=?, ichimokucloud_leadingSpan2=?, "
|
||||||
sql += " stochastic_fast_k=?, stochastic_slow_k=?, stochastic_slow_d=?, "
|
sql += " stochastic_fast_k=?, stochastic_slow_k=?, stochastic_slow_d=?, "
|
||||||
@@ -712,7 +719,7 @@ 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['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['bolingerband_upper'], price['bolingerband_lower'], price['bolingerband_middle'], price['ichimokucloud_changeLine'], price['ichimokucloud_baseLine'],
|
price['bolingerband_upper'], price['bolingerband_lower'], price['bolingerband_middle'], price['ichimokucloud_changeLine'], price['ichimokucloud_baseLine'],
|
||||||
price['ichimokucloud_leadingSpan1'], price['ichimokucloud_leadingSpan2'],
|
price['ichimokucloud_leadingSpan1'], price['ichimokucloud_leadingSpan2'],
|
||||||
price['stochastic_fast_k'], price['stochastic_slow_k'], price['stochastic_slow_d'],
|
price['stochastic_fast_k'], price['stochastic_slow_k'], price['stochastic_slow_d'],
|
||||||
@@ -752,6 +759,7 @@ class AnalyzerSqlite:
|
|||||||
"high": item[4],
|
"high": item[4],
|
||||||
"low": item[5],
|
"low": item[5],
|
||||||
"volume": item[6],
|
"volume": item[6],
|
||||||
|
"avg3": -1,
|
||||||
"avg4": -1,
|
"avg4": -1,
|
||||||
"avg5": -1,
|
"avg5": -1,
|
||||||
"avg6": -1,
|
"avg6": -1,
|
||||||
@@ -815,6 +823,7 @@ class AnalyzerSqlite:
|
|||||||
"high": item[4],
|
"high": item[4],
|
||||||
"low": item[5],
|
"low": item[5],
|
||||||
"volume": item[6],
|
"volume": item[6],
|
||||||
|
"avg3": -1,
|
||||||
"avg4": -1,
|
"avg4": -1,
|
||||||
"avg5": -1,
|
"avg5": -1,
|
||||||
"avg6": -1,
|
"avg6": -1,
|
||||||
|
|||||||
Reference in New Issue
Block a user