This commit is contained in:
dsyoon
2024-02-14 02:08:40 +09:00
parent d5c85a9fae
commit e1ea28ab8a

View File

@@ -122,54 +122,57 @@ class AnalyzerSqlite:
def draw(self, stock): def draw(self, stock):
# 참고) https://sjblog1.tistory.com/45 # 참고) https://sjblog1.tistory.com/45
ymd = list(reversed(stock['ymd'])) ymd = list(stock['ymd'])
open = list(reversed(stock['open'])) open = list(stock['open'])
close = list(reversed(stock['close'])) close = list(stock['close'])
high = list(reversed(stock['high'])) high = list(stock['high'])
low = list(reversed(stock['low'])) low = list(stock['low'])
volume = list(reversed(stock['volume'])) volume = list(stock['volume'])
avg3 = list(reversed(stock['avg3'])) avg3 = list(stock['avg3'])
avg4 = list(reversed(stock['avg4'])) avg4 = list(stock['avg4'])
avg5 = list(reversed(stock['avg5'])) avg5 = list(stock['avg5'])
avg6 = list(reversed(stock['avg6'])) avg6 = list(stock['avg6'])
avg10 = list(reversed(stock['avg10'])) avg10 = list(stock['avg10'])
avg12 = list(reversed(stock['avg12'])) avg12 = list(stock['avg12'])
avg20 = list(reversed(stock['avg20'])) avg20 = list(stock['avg20'])
avg36 = list(reversed(stock['avg36'])) avg36 = list(stock['avg36'])
avg40 = list(reversed(stock['avg40'])) avg40 = list(stock['avg40'])
avg48 = list(reversed(stock['avg48'])) avg48 = list(stock['avg48'])
avg60 = list(reversed(stock['avg60'])) avg60 = list(stock['avg60'])
avg120 = list(reversed(stock['avg120'])) avg120 = list(stock['avg120'])
avg240 = list(reversed(stock['avg240'])) avg240 = list(stock['avg240'])
avg480 = list(reversed(stock['avg480'])) avg480 = list(stock['avg480'])
disparity_avg5 = list(reversed(stock['disparity_avg5'])) disparity_avg5 = list(stock['disparity_avg5'])
disparity_avg10 = list(reversed(stock['disparity_avg10'])) disparity_avg10 = list(stock['disparity_avg10'])
disparity_avg20 = list(reversed(stock['disparity_avg20'])) disparity_avg20 = list(stock['disparity_avg20'])
disparity_avg60 = list(reversed(stock['disparity_avg60'])) disparity_avg60 = list(stock['disparity_avg60'])
disparity_avg120 = list(reversed(stock['disparity_avg120'])) disparity_avg120 = list(stock['disparity_avg120'])
disparity_avg240 = list(reversed(stock['disparity_avg240'])) disparity_avg240 = list(stock['disparity_avg240'])
disparity_avg480 = list(reversed(stock['disparity_avg480'])) disparity_avg480 = list(stock['disparity_avg480'])
macd = list(reversed(stock['macd'])) macd = list(stock['macd'])
macdo = list(reversed(stock['macdo'])) macdo = list(stock['macdo'])
macds = list(reversed(stock['macds'])) macds = list(stock['macds'])
rsi = list(reversed(stock['rsi'])) rsi = list(stock['rsi'])
rsis = list(reversed(stock['rsis'])) rsis = list(stock['rsis'])
stochastic_slow_k = list(reversed(stock['slow_k'])) stochastic_slow_k = list(stock['slow_k'])
stochastic_slow_d = list(reversed(stock['slow_d'])) stochastic_slow_d = list(stock['slow_d'])
bolingerband_upper = list(reversed(stock['upper'])) bolingerband_upper = list(stock['upper'])
bolingerband_lower = list(reversed(stock['lower'])) bolingerband_lower = list(stock['lower'])
bolingerband_middle = list(reversed(stock['middle'])) bolingerband_middle = list(stock['middle'])
envelope_upper = list(reversed(stock['envelope_upper'])) envelope_upper = list(stock['envelope_upper'])
envelope_lower = list(reversed(stock['envelope_lower'])) envelope_lower = list(stock['envelope_lower'])
ichimokucloud_changeLine = list(reversed(stock['ichimokucloud_changeLine'])) ichimokucloud_changeLine = list(stock['ichimokucloud_changeLine'])
ichimokucloud_baseLine = list(reversed(stock['ichimokucloud_baseLine'])) ichimokucloud_baseLine = list(stock['ichimokucloud_baseLine'])
ichimokucloud_laggingSpan = [laggingSpan if -1 < laggingSpan else None for laggingSpan in stock['ichimokucloud_laggingSpan']] ichimokucloud_laggingSpan = [laggingSpan if -1 < laggingSpan else None for laggingSpan in stock['ichimokucloud_laggingSpan']]
ichimokucloud_laggingSpan = list(reversed(ichimokucloud_laggingSpan)) ichimokucloud_laggingSpan = list(ichimokucloud_laggingSpan)
ichimokucloud_leadingSpan1 = list(reversed(stock['ichimokucloud_leadingSpan1'])) ichimokucloud_leadingSpan1 = list(stock['ichimokucloud_leadingSpan1'])
ichimokucloud_leadingSpan2 = list(reversed(stock['ichimokucloud_leadingSpan2'])) ichimokucloud_leadingSpan2 = list(stock['ichimokucloud_leadingSpan2'])
trend = list(reversed(stock['trend'])) trend = list(stock['trend'])
trend_s = list(reversed(stock['trend_s'])) trend_s = list(stock['trend_s'])
trend_k = list(reversed(stock['trend_k'])) trend_k = list(stock['trend_k'])
last_min = list(stock['last_min'])
last_middle = list(stock['last_middle'])
last_max = list(stock['last_max'])
# general # general
candle_stick = go.Candlestick(x=ymd, candle_stick = go.Candlestick(x=ymd,
@@ -201,9 +204,12 @@ class AnalyzerSqlite:
trend = go.Scatter(x=ymd, y=trend, name="trend", line_color='#574e4c') trend = go.Scatter(x=ymd, y=trend, name="trend", line_color='#574e4c')
trend_k = go.Scatter(x=ymd, y=trend_k, name="trend_k", line_color='#ff0000') trend_k = go.Scatter(x=ymd, y=trend_k, name="trend_k", line_color='#ff0000')
trend_s = go.Scatter(x=ymd, y=trend_s, name="trend_s", line_color='#0000ff') trend_s = go.Scatter(x=ymd, y=trend_s, name="trend_s", line_color='#0000ff')
last_min = go.Scatter(x=ymd, y=last_min, name="last_min", line_color='#ff0000')
last_middle = go.Scatter(x=ymd, y=last_middle, name="last_middle", line_color='#574e4c')
last_max = go.Scatter(x=ymd, y=last_max, name="last_max", line_color='#0000ff')
candle_data = [trend, trend_k, trend_s, avg5, avg20, avg60, avg120, avg240, avg480, bolinger_upper, bolinger_lower, changeLine, baseLine, laggingSpan, candle_stick] candle_data = [trend, trend_k, trend_s, avg5, avg20, avg60, avg120, avg240, avg480, bolinger_upper, bolinger_lower, changeLine, baseLine, laggingSpan, last_min, last_max, last_middle, candle_stick]
#candle_data = [candle_stick, trend, trend_k, trend_s, avg5, avg10, avg20, avg60, avg120, avg240, bolinger_upper, bolinger_lower, env_upper, env_lower, changeLine, baseLine] #candle_data = [candle_stick, trend, trend_k, trend_s, avg5, avg10, avg20, avg60, avg120, avg240, bolinger_upper, bolinger_lower, env_upper, env_lower, changeLine, baseLine]
#candle_data = [avg5, avg20, trend, trend_k, trend_s, changeLine, baseLine, laggingSpan, candle_stick] #candle_data = [avg5, avg20, trend, trend_k, trend_s, changeLine, baseLine, laggingSpan, candle_stick]
@@ -236,7 +242,7 @@ class AnalyzerSqlite:
fig = subplots.make_subplots( fig = subplots.make_subplots(
rows=6, cols=1, rows=6, cols=1,
subplot_titles=("MACD", "스토캐스틱", "RSI", "이격도", "거래량", '캔들'), subplot_titles=("MACD", "스토캐스틱", "RSI", "이격도", "거래량", '캔들', ),
# specs=[[{}], [{}], [{}], [{}], [{}], [{}]], # specs=[[{}], [{}], [{}], [{}], [{}], [{}]],
shared_xaxes=True, horizontal_spacing=0.03, vertical_spacing=0.01, shared_xaxes=True, horizontal_spacing=0.03, vertical_spacing=0.01,
row_heights=[200, 200, 200, 200, 200, 800] row_heights=[200, 200, 200, 200, 200, 800]
@@ -286,9 +292,9 @@ class AnalyzerSqlite:
return energy1, energy2 return energy1, energy2
def writeSummary(self, param): def writeSummary(self, param):
bull = list(reversed(param['bull'])) bull = list(param['bull'])
bear = list(reversed(param['bear'])) bear = list(param['bear'])
even = list(reversed(param['even'])) even = list(param['even'])
ymd = [i for i in range(len(bull))] ymd = [i for i in range(len(bull))]
bull_line = go.Scatter(x=ymd, y=bull, name="bull", line_color='#FF33A2') bull_line = go.Scatter(x=ymd, y=bull, name="bull", line_color='#FF33A2')
@@ -967,13 +973,12 @@ class AnalyzerSqlite:
stock = {"CODE": item[0], "NAME": item[1], "PRICE":[]} stock = {"CODE": item[0], "NAME": item[1], "PRICE":[]}
print("Daily # :", rowid, ", CODE: ", stock['CODE'], ", NAME: ", stock['NAME']) print("Daily # :", rowid, ", CODE: ", stock['CODE'], ", NAME: ", stock['NAME'])
sql = 'SELECT ymd, close, diff, open, high, low, volume FROM ' + stockTableName + ' where CODE=? order by ymd desc ' sql = 'SELECT ymd, close, diff, open, high, low, volume FROM ' + stockTableName + ' where CODE=? order by ymd '
sql += ' limit 500' sql += ' limit 500'
cursor.execute(sql, (stock['CODE'],)) cursor.execute(sql, (stock['CODE'],))
items = cursor.fetchall() items = cursor.fetchall()
items_reverse = reversed(items) for item in items:
for item in items_reverse:
stock['PRICE'].append( self.setItem(item) ) stock['PRICE'].append( self.setItem(item) )
self.analyzeAdditionalInfo(stock, cursor) self.analyzeAdditionalInfo(stock, cursor)
@@ -998,13 +1003,12 @@ class AnalyzerSqlite:
stock = {"CODE": item[0], "NAME": item[1], "PRICE": []} stock = {"CODE": item[0], "NAME": item[1], "PRICE": []}
print(type, "# :", rowid, ", CODE: ", stock['CODE'], ", NAME: ", stock['NAME']) print(type, "# :", rowid, ", CODE: ", stock['CODE'], ", NAME: ", stock['NAME'])
sql = 'SELECT ymd, close, diff, open, high, low, volume FROM ' + stockTableName + ' where CODE=? order by ymd desc ' sql = 'SELECT ymd, close, diff, open, high, low, volume FROM ' + stockTableName + ' where CODE=? order by ymd '
#sql += ' limit 350' #sql += ' limit 350'
cursor.execute(sql, (stock['CODE'],)) cursor.execute(sql, (stock['CODE'],))
items = cursor.fetchall() items = cursor.fetchall()
items_reverse = reversed(items) for item in items:
for item in items_reverse:
stock['PRICE'].append( stock['PRICE'].append(
self.setItem(item) self.setItem(item)
) )