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')
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')
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')
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.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_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_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_s_line = go.Scatter(x=data['date'], y=data["macds"], mode='lines', name='macds')
macd_o_line = go.Scatter(x=data['date'], y=data["macdo"], mode='lines', name='macdo')
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"], line=dict(dash='dashdot', color='black', width=2), name='macds')
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')
slow_d_line = go.Scatter(x=data['date'], y=data["slow_d"], mode='lines', name='slow_d')
# fast_k_line = go.Scatter(x=hts['date'], y=hts["fast_k"], mode='lines', name='fast_k')
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')
rsis_line = go.Scatter(x=data['date'], y=data["rsis"], mode='lines', name='rsis')
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"], 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]
volume_data = [volume_line]
@@ -127,21 +128,26 @@ class Simulation (HTS):
fig.show()
"""
fig = subplots.make_subplots(rows=6, cols=1,
subplot_titles=('캔들', "거래량", "이격도", "MACD", "스토캐스틱", "RSI"),
row_heights=[1200, 500, 500, 500, 500, 500])
for trace in candle_data:
fig.append_trace(trace, 1, 1)
for trace in volume_data:
fig.append_trace(trace, 2, 1)
for trace in disparity_data:
fig.append_trace(trace, 3, 1)
fig = subplots.make_subplots(
rows=6, cols=1,
subplot_titles=("MACD", "스토캐스틱", "RSI", "거래량", "이격도", '캔들'),
#specs=[[{}], [{}], [{}], [{}], [{}], [{}]],
shared_xaxes=True, horizontal_spacing=0.03, vertical_spacing=0.01,
row_heights=[200, 200, 200, 200, 200, 700]
)
for trace in macd_data:
fig.append_trace(trace, 4, 1)
fig.append_trace(trace, 1, 1)
for trace in stochastic_data:
fig.append_trace(trace, 5, 1)
fig.append_trace(trace, 2, 1)
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.update_xaxes(nticks=5)
#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])
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()
return

View File

@@ -198,6 +198,18 @@ class BuySellChecker:
avg20_list = close_df.rolling(window=20).mean().fillna(close[0]).values.tolist()
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)
max20 = df.rolling(window=20).mean()
@@ -251,6 +263,7 @@ class BuySellChecker:
"date": point_temp,
"open": open, "high": high, "low": low, "close": close, "volume": vol,
"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,
"macd": macd, "macds": macds, "macdo": macdo,
"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, 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]
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]
# macd
macd_line = go.Scatter(x=ymd, y=macd, mode='lines', name='macd')
macd_s_line = go.Scatter(x=ymd, y=macds, mode='lines', name='macds')
macd_o_line = go.Scatter(x=ymd, y=macdo, mode='lines', name='macdo')
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, line=dict(dash='dashdot', color='black', width=2), name='macds')
macd_o_line = go.Bar(x=ymd, y=macdo, marker_color='purple', name='macdo')
macd_data = [macd_line, macd_s_line, macd_o_line]
# stochastic
rsi = go.Scatter(x=ymd, y=rsi, name="rsi", line_color='#8B4513')
rsis = go.Scatter(x=ymd, y=rsis, name="rsis", line_color='#4169E1')
rsi_data = [rsi, rsis]
rsi_line = go.Scatter(x=ymd, y=rsi, line=dict(color='red', width=2), name='rsi')
rsis_line = go.Scatter(x=ymd, y=rsis, line=dict(dash='dashdot', color='black', width=2), name='rsis')
rsi_data = [rsi_line, rsis_line]
# stochastic
slow_k = go.Scatter(x=ymd, y=stochastic_slow_k, name="Slow%K", line_color='#8B4513')
slow_d = go.Scatter(x=ymd, y=stochastic_slow_d, name="Slow%D", line_color='#4169E1')
stochastic_data = [slow_k, slow_d]
stochastic_slow_k_line = go.Scatter(x=ymd, y=stochastic_slow_k, line=dict(color='red', width=2), name='slow_k')
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 = [stochastic_slow_k_line, stochastic_slow_d_line]
fig = subplots.make_subplots(rows=6, cols=1,
subplot_titles=('캔들', "거래량", "이격도", "MACD", "스토캐스틱", "RSI"),
row_heights=[1200, 500, 500, 500, 500, 500])
for trace in candle_data:
fig.append_trace(trace, 1, 1)
for trace in volume_data:
fig.append_trace(trace, 2, 1)
for trace in disparity_data:
fig.append_trace(trace, 3, 1)
fig = subplots.make_subplots(
rows=6, cols=1,
subplot_titles=("MACD", "스토캐스틱", "RSI", "거래량", "이격도", '캔들'),
# specs=[[{}], [{}], [{}], [{}], [{}], [{}]],
shared_xaxes=True, horizontal_spacing=0.03, vertical_spacing=0.01,
row_heights=[200, 200, 200, 200, 200, 700]
)
for trace in macd_data:
fig.append_trace(trace, 4, 1)
fig.append_trace(trace, 1, 1)
for trace in stochastic_data:
fig.append_trace(trace, 5, 1)
fig.append_trace(trace, 2, 1)
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.update_layout(height=2200, xaxis_rangeslider_visible=False)
fig.update_layout(height=1700, xaxis_rangeslider_visible=False)
return fig