This commit is contained in:
dsyoon
2023-10-21 11:22:13 +09:00
parent fbe9987b27
commit 5b474213a0

View File

@@ -37,8 +37,7 @@ class Simulation (HTS):
data = data.loc[pd.DatetimeIndex(data.index).day == int(given_day[6:])] data = data.loc[pd.DatetimeIndex(data.index).day == int(given_day[6:])]
buy_line = bsLine['buy'][len(bsLine['buy'])-len(data):] buy_line = bsLine['buy'][len(bsLine['buy'])-len(data):]
buy_weight_line = bsLine['buy_weight'][len(bsLine['buy'])-len(data):] buy_weight_line = bsLine['buy_weight'][len(bsLine['buy'])-len(data):]
sell_line = bsLine['sell'][len(bsLine['sell'])-len(data):] sell_line = bsLine['sell'][len(bsLine['buy'])-len(data):]
sell_weight_line = bsLine['sell_weight'][len(bsLine['sell']) - len(data):]
# 그래프 설정을 위한 변수를 생성한다. # 그래프 설정을 위한 변수를 생성한다.
data = data.astype({'open': 'int', data = data.astype({'open': 'int',
@@ -74,16 +73,13 @@ class Simulation (HTS):
buy_colors.append("#0C752E") buy_colors.append("#0C752E")
buy_size.append(10 + (5 * buy_weight_line[i])) buy_size.append(10 + (5 * buy_weight_line[i]))
sell_size = []
sell_colors = [] sell_colors = []
for i in range(len(sell_line)): for i in range(len(sell_line)):
if sell_line[i] < 0: if sell_line[i] < 0:
sell_colors.append("#ffffff") sell_colors.append("#ffffff")
sell_line[i] = nan sell_line[i] = nan
sell_size.append(0)
else: else:
sell_colors.append("#00ced1") sell_colors.append("#00ced1")
sell_size.append(10 + (5 * sell_weight_line[i]))
volume_colors = [] volume_colors = []
for i in range(len(buy_line)): for i in range(len(buy_line)):
@@ -97,19 +93,7 @@ class Simulation (HTS):
# 그래프를 설정한다. # 그래프를 설정한다.
buy_check = go.Scatter(x=data['date'], y=buy_line, mode='markers', name="buy", marker=dict(size=buy_size, color=buy_colors, line_width=0)) buy_check = go.Scatter(x=data['date'], y=buy_line, mode='markers', name="buy", marker=dict(size=buy_size, color=buy_colors, line_width=0))
sell_check = go.Scatter(x=data['date'], y=sell_line, mode='markers', name="sell", marker=dict(size=14, color=sell_colors, line_width=0)) sell_check = go.Scatter(x=data['date'], y=sell_line, mode='markers', name="sell", marker=dict(size=14, color=sell_colors, line_width=0))
upper = go.Scatter(x=data['date'], y=data["upper"], name="upper", line_color='#000000')
lower = go.Scatter(x=data['date'], y=data["lower"], name="lower", line_color='#000000')
avg5 = go.Scatter(x=data['date'], y=data["avg5"], name="avg5", line_color='#F81191')
avg20 = go.Scatter(x=data['date'], y=data["avg20"], name="avg20", line_color='#097F19')
avg30 = go.Scatter(x=data['date'], y=data["avg30"], name="avg30", line_color='#097F19')
avg60 = go.Scatter(x=data['date'], y=data["avg60"], name="avg60", line_color='#671BEA')
avg120 = go.Scatter(x=data['date'], y=data["avg120"], name="avg120", line_color='#DFB809')
avg200 = go.Scatter(x=data['date'], y=data["avg200"], name="avg200", line_color='#000000')
laggingSpan = go.Scatter(x=data['date'], y=data["laggingSpan"], name='laggingSpan', line_color='#B50ABB')
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', 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')
volume_line = go.Bar(x=data['date'], y=data["volume"], marker_color=volume_colors, name='volume') volume_line = go.Bar(x=data['date'], y=data["volume"], marker_color=volume_colors, name='volume')
@@ -131,9 +115,45 @@ class Simulation (HTS):
rsi_line = go.Scatter(x=data['date'], y=data["rsi"], line=dict(color='red', width=2), 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"], line=dict(dash='dashdot', color='black', width=2), name='rsis') rsis_line = go.Scatter(x=data['date'], y=data["rsis"], line=dict(dash='dashdot', color='black', width=2), name='rsis')
upper = go.Scatter(x=data['date'], y=data["upper"], name="upper", line_color='#000000')
lower = go.Scatter(x=data['date'], y=data["lower"], name="lower", line_color='#000000')
avg5 = go.Scatter(x=data['date'], y=data["avg5"], name="avg5", line_color='#F81191')
avg20 = go.Scatter(x=data['date'], y=data["avg20"], name="avg20", line_color='#097F19')
avg30 = go.Scatter(x=data['date'], y=data["avg30"], name="avg30", line_color='#097F19')
avg60 = go.Scatter(x=data['date'], y=data["avg60"], name="avg60", line_color='#671BEA')
avg120 = go.Scatter(x=data['date'], y=data["avg120"], name="avg120", line_color='#DFB809')
avg200 = go.Scatter(x=data['date'], y=data["avg200"], name="avg200", line_color='#000000')
laggingSpan = go.Scatter(x=data['date'], y=data["laggingSpan"], name='laggingSpan', line_color='#B50ABB')
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')
text_list = []
for i in range(len(data['macd'])):
text = "open: {}<br>close: {}<br>high: {}<br>low: {}<br>volume: {}<br><br>avg5: {:.2f}<br>avg20: {:.2f}<br>avg60: {:.2f}<br>avg200: {:.2f}<br><br>d_avg5: {:.6f}<br>d_avg20: {:.6f}<br>d_avg60: {:.6f}<br>d_avg200: {:.6f}<br>d_avg5_60: {:.6f}<br>d_avg5_200: {:.6f}<br><br>macd: {:.2f}<br>slow_k: {:.2f}<br>rsi: {:.2f}".format(
data['open'][i],data['close'][i],data['high'][i],data['low'][i],data['volume'][i],
data['avg5'][i],data['avg20'][i],data['avg60'][i],data['avg200'][i],
data['disparity_avg5'][i], data['disparity_avg20'][i], data['disparity_avg60'][i], data['disparity_avg200'][i],
max(data['disparity_avg5'][i], data['disparity_avg20'][i], data['disparity_avg60'][i]) - min(data['disparity_avg5'][i], data['disparity_avg20'][i], data['disparity_avg60'][i]),
max(data['disparity_avg5'][i], data['disparity_avg20'][i], data['disparity_avg60'][i], data['disparity_avg200'][i]) - min(data['disparity_avg5'][i], data['disparity_avg20'][i], data['disparity_avg60'][i], data['disparity_avg200'][i]),
data['macd'][i],data['slow_k'][i],data['rsi'][i]
)
text_list.append(text)
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,
text=text_list,
hoverinfo="text"
)
#candle_data = [candle_stick, upper, lower, avg5, avg20, avg30, avg60, avg120, avg200, buy_check, sell_check, laggingSpan, changeLine, baseLine] #candle_data = [candle_stick, upper, lower, avg5, avg20, avg30, avg60, avg120, avg200, buy_check, sell_check, laggingSpan, changeLine, baseLine]
candle_data = [candle_stick, avg5, avg20, avg30, avg60, avg200, buy_check, sell_check] candle_data = [candle_stick, avg5, avg20, avg30, avg60, avg200, buy_check, sell_check]
#candle_data = [candle_stick, avg200, buy_check, sell_check] #candle_data = [candle_stick, avg5, avg200, buy_check, sell_check]
volume_data = [volume_line] volume_data = [volume_line]
disparity_data = [disparity_avg5, disparity_avg20, disparity_avg30, disparity_avg60, disparity_avg120, disparity_avg200] disparity_data = [disparity_avg5, disparity_avg20, disparity_avg30, disparity_avg60, disparity_avg120, disparity_avg200]
macd_data = [macd_line, macd_s_line, macd_o_line] macd_data = [macd_line, macd_s_line, macd_o_line]
@@ -149,20 +169,20 @@ class Simulation (HTS):
fig = subplots.make_subplots( fig = subplots.make_subplots(
rows=6, cols=1, rows=6, cols=1,
subplot_titles=("이격도", "스토캐스틱", "RSI", "MACD", "거래량", '캔들'), subplot_titles=("거래량", "이격도", "스토캐스틱", "RSI", "MACD", '캔들'),
#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, 700] row_heights=[200, 200, 200, 200, 200, 700]
) )
for trace in disparity_data:
fig.append_trace(trace, 1, 1)
for trace in stochastic_data:
fig.append_trace(trace, 2, 1)
for trace in rsi_data:
fig.append_trace(trace, 3, 1)
for trace in macd_data:
fig.append_trace(trace, 4, 1)
for trace in volume_data: for trace in volume_data:
fig.append_trace(trace, 1, 1)
for trace in disparity_data:
fig.append_trace(trace, 2, 1)
for trace in stochastic_data:
fig.append_trace(trace, 3, 1)
for trace in rsi_data:
fig.append_trace(trace, 4, 1)
for trace in macd_data:
fig.append_trace(trace, 5, 1) fig.append_trace(trace, 5, 1)
for trace in candle_data: for trace in candle_data:
fig.append_trace(trace, 6, 1) fig.append_trace(trace, 6, 1)