This commit is contained in:
dsyoon
2022-09-12 21:04:10 +09:00
parent 833271e699
commit 9c556f07d9
3 changed files with 68 additions and 44 deletions

View File

@@ -93,9 +93,9 @@ class Simulation (HTS):
changeLine = go.Scatter(x=data['date'], y=data["changeLine"], name='changeLine', line_color='#14A200') changeLine = go.Scatter(x=data['date'], y=data["changeLine"], name='changeLine', line_color='#14A200')
baseLine = go.Scatter(x=data['date'], y=data["baseLine"], name='baseLine', line_color='#CF6E0D') baseLine = go.Scatter(x=data['date'], y=data["baseLine"], name='baseLine', line_color='#CF6E0D')
candle_stick = go.Candlestick(x=data['date'], open=data['open'], high=data['high'], low=data['low'], close=data['close'], increasing_line_color='red', decreasing_line_color='blue') candle_stick = go.Candlestick(x=data['date'], open=data['open'], high=data['high'], low=data['low'], close=data['close'], increasing_line_color='red', decreasing_line_color='blue', showlegend=False)
volume_line = go.Scatter(x=data['date'], y=data["volume"], mode='lines', name='volume') #volume_line = go.Scatter(x=data['date'], y=data["volume"], mode='lines', name='volume')
#fast_k_line = go.Scatter(x=hts['date'], y=hts["fast_k"], mode='lines', name='fast_k') volume_line = go.Bar(x=data['date'], y=data["volume"], marker_color='red', name='volume')
disparity_avg5 = go.Scatter(x=data['date'], y=data["disparity_avg5"], name="disparity_avg5", line_color='#8F8203') disparity_avg5 = go.Scatter(x=data['date'], y=data["disparity_avg5"], name="disparity_avg5", line_color='#8F8203')
disparity_avg10 = go.Scatter(x=data['date'], y=data["disparity_avg10"], name="disparity_avg10", line_color='#089B5B') disparity_avg10 = go.Scatter(x=data['date'], y=data["disparity_avg10"], name="disparity_avg10", line_color='#089B5B')
@@ -103,15 +103,16 @@ class Simulation (HTS):
disparity_avg60 = go.Scatter(x=data['date'], y=data["disparity_avg60"], name="disparity_avg60", line_color='#1469F4') disparity_avg60 = go.Scatter(x=data['date'], y=data["disparity_avg60"], name="disparity_avg60", line_color='#1469F4')
disparity_avg120 = go.Scatter(x=data['date'], y=data["disparity_avg120"], name="disparity_avg120", line_color='#000000') disparity_avg120 = go.Scatter(x=data['date'], y=data["disparity_avg120"], name="disparity_avg120", line_color='#000000')
macd_line = go.Scatter(x=data['date'], y=data["macd"], mode='lines', name='macd') macd_line = go.Scatter(x=data['date'], y=data["macd"], line=dict(color='red', width=2), name='macd')
macd_s_line = go.Scatter(x=data['date'], y=data["macds"], mode='lines', name='macds') macd_s_line = go.Scatter(x=data['date'], y=data["macds"], line=dict(dash='dashdot', color='black', width=2), name='macds')
macd_o_line = go.Scatter(x=data['date'], y=data["macdo"], mode='lines', name='macdo') macd_o_line = go.Bar(x=data['date'], y=data["macdo"], marker_color='purple', name='macdo')
slow_k_line = go.Scatter(x=data['date'], y=data["slow_k"], mode='lines', name='slow_k') # fast_k_line = go.Scatter(x=hts['date'], y=hts["fast_k"], mode='lines', name='fast_k')
slow_d_line = go.Scatter(x=data['date'], y=data["slow_d"], mode='lines', name='slow_d') slow_k_line = go.Scatter(x=data['date'], y=data["slow_k"], line=dict(color='red', width=2), name='slow_k')
slow_d_line = go.Scatter(x=data['date'], y=data["slow_d"], line=dict(dash='dashdot', color='black', width=2), name='slow_d')
rsi_line = go.Scatter(x=data['date'], y=data["rsi"], mode='lines', name='rsi') rsi_line = go.Scatter(x=data['date'], y=data["rsi"], line=dict(color='red', width=2), name='rsi')
rsis_line = go.Scatter(x=data['date'], y=data["rsis"], mode='lines', name='rsis') rsis_line = go.Scatter(x=data['date'], y=data["rsis"], line=dict(dash='dashdot', color='black', width=2), name='rsis')
candle_data = [candle_stick, upper, lower, avg3, avg6, avg9, avg12, avg20, buy_check, sell_check, laggingSpan, changeLine, baseLine] candle_data = [candle_stick, upper, lower, avg3, avg6, avg9, avg12, avg20, buy_check, sell_check, laggingSpan, changeLine, baseLine]
volume_data = [volume_line] volume_data = [volume_line]
@@ -127,21 +128,26 @@ class Simulation (HTS):
fig.show() fig.show()
""" """
fig = subplots.make_subplots(rows=6, cols=1, fig = subplots.make_subplots(
subplot_titles=('캔들', "거래량", "이격도", "MACD", "스토캐스틱", "RSI"), rows=6, cols=1,
row_heights=[1200, 500, 500, 500, 500, 500]) subplot_titles=("MACD", "스토캐스틱", "RSI", "거래량", "이격도", '캔들'),
for trace in candle_data: #specs=[[{}], [{}], [{}], [{}], [{}], [{}]],
fig.append_trace(trace, 1, 1) shared_xaxes=True, horizontal_spacing=0.03, vertical_spacing=0.01,
for trace in volume_data: row_heights=[200, 200, 200, 200, 200, 700]
fig.append_trace(trace, 2, 1) )
for trace in disparity_data:
fig.append_trace(trace, 3, 1)
for trace in macd_data: for trace in macd_data:
fig.append_trace(trace, 4, 1) fig.append_trace(trace, 1, 1)
for trace in stochastic_data: for trace in stochastic_data:
fig.append_trace(trace, 5, 1) fig.append_trace(trace, 2, 1)
for trace in rsi_data: for trace in rsi_data:
fig.append_trace(trace, 3, 1)
for trace in volume_data:
fig.append_trace(trace, 4, 1)
for trace in disparity_data:
fig.append_trace(trace, 5, 1)
for trace in candle_data:
fig.append_trace(trace, 6, 1) fig.append_trace(trace, 6, 1)
#fig.update_xaxes(nticks=5) #fig.update_xaxes(nticks=5)
#fig.update_layout(height=1800, title=stock_code + "_" + given_day, xaxis_rangeslider_visible=False) #fig.update_layout(height=1800, title=stock_code + "_" + given_day, xaxis_rangeslider_visible=False)
@@ -150,7 +156,8 @@ class Simulation (HTS):
buy_count = len(df.loc[df["buy"] > 0]) buy_count = len(df.loc[df["buy"] > 0])
sell_count = len(df.loc[df["sell"] > 0]) sell_count = len(df.loc[df["sell"] > 0])
fig.update_layout(height=5000, title=stock_code + "_" + given_day + "_" + str(buy_count)+","+str(sell_count)) fig.update_layout(height=1700, title=stock_code + "_" + given_day + "_" + str(buy_count)+","+str(sell_count))
#fig.update_layout(title=stock_code + "_" + given_day + "_" + str(buy_count) + "," + str(sell_count))
fig.show() fig.show()
return return

View File

@@ -198,6 +198,18 @@ class BuySellChecker:
avg20_list = close_df.rolling(window=20).mean().fillna(close[0]).values.tolist() avg20_list = close_df.rolling(window=20).mean().fillna(close[0]).values.tolist()
avg20 = [item[0] for item in avg20_list] avg20 = [item[0] for item in avg20_list]
open_df = pd.DataFrame(close)
disparity_avg5_list = (open_df / close_df.rolling(window=5).mean()).values.tolist()
disparity_avg5 = [item[0] for item in disparity_avg5_list]
disparity_avg10_list = (open_df / close_df.rolling(window=10).mean()).values.tolist()
disparity_avg10 = [item[0] for item in disparity_avg10_list]
disparity_avg20_list = (open_df / close_df.rolling(window=20).mean()).values.tolist()
disparity_avg20 = [item[0] for item in disparity_avg20_list]
disparity_avg60_list = (open_df / close_df.rolling(window=60).mean()).values.tolist()
disparity_avg60 = [item[0] for item in disparity_avg60_list]
disparity_avg120_list = (open_df / close_df.rolling(window=120).mean()).values.tolist()
disparity_avg120 = [item[0] for item in disparity_avg120_list]
# 볼린져 밴드 # 볼린져 밴드
df = pd.DataFrame(close) df = pd.DataFrame(close)
max20 = df.rolling(window=20).mean() max20 = df.rolling(window=20).mean()
@@ -251,6 +263,7 @@ class BuySellChecker:
"date": point_temp, "date": point_temp,
"open": open, "high": high, "low": low, "close": close, "volume": vol, "open": open, "high": high, "low": low, "close": close, "volume": vol,
"avg3": avg3,"avg6": avg6,"avg9": avg9,"avg12": avg12, "avg20": avg20, "avg3": avg3,"avg6": avg6,"avg9": avg9,"avg12": avg12, "avg20": avg20,
"disparity_avg5": disparity_avg5, "disparity_avg10": disparity_avg10, "disparity_avg20": disparity_avg20, "disparity_avg60": disparity_avg60, "disparity_avg120": disparity_avg120,
"upper": upper, "lower": lower, "upper": upper, "lower": lower,
"macd": macd, "macds": macds, "macdo": macdo, "macd": macd, "macds": macds, "macdo": macdo,
"fast_k": fast_k, "slow_k": slow_k, "slow_d": slow_d, "fast_k": fast_k, "slow_k": slow_k, "slow_d": slow_d,

View File

@@ -176,7 +176,7 @@ class AnalyzerSqlite:
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, 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, marker_color='red', name="volume")
volume_data = [volume] volume_data = [volume]
disparity_avg5 = go.Scatter(x=ymd, y=disparity_avg5, name="disparity_avg5", line_color='#8F8203') disparity_avg5 = go.Scatter(x=ymd, y=disparity_avg5, name="disparity_avg5", line_color='#8F8203')
@@ -187,38 +187,42 @@ class AnalyzerSqlite:
disparity_data = [disparity_avg5, disparity_avg10, disparity_avg20, disparity_avg60, disparity_avg120] disparity_data = [disparity_avg5, disparity_avg10, disparity_avg20, disparity_avg60, disparity_avg120]
# macd # macd
macd_line = go.Scatter(x=ymd, y=macd, mode='lines', name='macd') macd_line = go.Scatter(x=ymd, y=macd, line=dict(color='red', width=2), name='macd')
macd_s_line = go.Scatter(x=ymd, y=macds, mode='lines', name='macds') macd_s_line = go.Scatter(x=ymd, y=macds, line=dict(dash='dashdot', color='black', width=2), name='macds')
macd_o_line = go.Scatter(x=ymd, y=macdo, mode='lines', name='macdo') macd_o_line = go.Bar(x=ymd, y=macdo, marker_color='purple', name='macdo')
macd_data = [macd_line, macd_s_line, macd_o_line] macd_data = [macd_line, macd_s_line, macd_o_line]
# stochastic # stochastic
rsi = go.Scatter(x=ymd, y=rsi, name="rsi", line_color='#8B4513') rsi_line = go.Scatter(x=ymd, y=rsi, line=dict(color='red', width=2), name='rsi')
rsis = go.Scatter(x=ymd, y=rsis, name="rsis", line_color='#4169E1') rsis_line = go.Scatter(x=ymd, y=rsis, line=dict(dash='dashdot', color='black', width=2), name='rsis')
rsi_data = [rsi, rsis] rsi_data = [rsi_line, rsis_line]
# stochastic # stochastic
slow_k = go.Scatter(x=ymd, y=stochastic_slow_k, name="Slow%K", line_color='#8B4513') stochastic_slow_k_line = go.Scatter(x=ymd, y=stochastic_slow_k, line=dict(color='red', width=2), name='slow_k')
slow_d = go.Scatter(x=ymd, y=stochastic_slow_d, name="Slow%D", line_color='#4169E1') stochastic_slow_d_line = go.Scatter(x=ymd, y=stochastic_slow_d, line=dict(dash='dashdot', color='black', width=2), name='slow_d')
stochastic_data = [slow_k, slow_d] stochastic_data = [stochastic_slow_k_line, stochastic_slow_d_line]
fig = subplots.make_subplots(rows=6, cols=1, fig = subplots.make_subplots(
subplot_titles=('캔들', "거래량", "이격도", "MACD", "스토캐스틱", "RSI"), rows=6, cols=1,
row_heights=[1200, 500, 500, 500, 500, 500]) subplot_titles=("MACD", "스토캐스틱", "RSI", "거래량", "이격도", '캔들'),
for trace in candle_data: # specs=[[{}], [{}], [{}], [{}], [{}], [{}]],
fig.append_trace(trace, 1, 1) shared_xaxes=True, horizontal_spacing=0.03, vertical_spacing=0.01,
for trace in volume_data: row_heights=[200, 200, 200, 200, 200, 700]
fig.append_trace(trace, 2, 1) )
for trace in disparity_data:
fig.append_trace(trace, 3, 1)
for trace in macd_data: for trace in macd_data:
fig.append_trace(trace, 4, 1) fig.append_trace(trace, 1, 1)
for trace in stochastic_data: for trace in stochastic_data:
fig.append_trace(trace, 5, 1) fig.append_trace(trace, 2, 1)
for trace in rsi_data: for trace in rsi_data:
fig.append_trace(trace, 3, 1)
for trace in volume_data:
fig.append_trace(trace, 4, 1)
for trace in disparity_data:
fig.append_trace(trace, 5, 1)
for trace in candle_data:
fig.append_trace(trace, 6, 1) fig.append_trace(trace, 6, 1)
fig.update_layout(height=2200, xaxis_rangeslider_visible=False) fig.update_layout(height=1700, xaxis_rangeslider_visible=False)
return fig return fig