This commit is contained in:
dosangyoon
2022-05-20 15:52:09 +09:00
parent 7e55d4d696
commit 35a9ad4dbc
2 changed files with 27 additions and 41 deletions

View File

@@ -369,13 +369,6 @@ class BuySellChecker:
def analyze(self, result):
df = pd.DataFrame(result["close"])
max20 = df.rolling(window=10).mean()
stddev20 = df.rolling(window=10).std()
upper_df = max20 + (stddev20 * 2) # 상단 볼린저 밴드
lower_df = max20 - (stddev20 * 2) # 하단 볼린저 밴드
window = 5
open = result["open"]
close = result["close"]
@@ -383,31 +376,27 @@ class BuySellChecker:
low = result["low"]
vol = result["vol"]
close_df = pd.DataFrame(close)
avg1_list = close_df.rolling(window=1).mean().fillna(close[0]).values.tolist()
avg1 = [item[0] for item in avg1_list]
avg2_list = close_df.rolling(window=2).mean().fillna(close[0]).values.tolist()
avg2 = [item[0] for item in avg2_list]
avg3_list = close_df.rolling(window=3).mean().fillna(close[0]).values.tolist()
avg3 = [item[0] for item in avg3_list]
avg5_list = close_df.rolling(window=5).mean().fillna(close[0]).values.tolist()
open_list = open[:-window+1]
close_list = close[window-1:]
high_list = [max(high[i + window - 1:i + 2 * window - 1]) for i in range(len(high) - window + 1)]
low_list = [min(low[i + window - 1:i + 2 * window - 1]) for i in range(len(low) - window + 1)]
vol_list = [sum(vol[i + window - 1:i + 2 * window - 1]) for i in range(len(vol) - window + 1)]
close_df = pd.DataFrame(close_list)
avg5_list = close_df.rolling(window=5).mean().fillna(close_list[0]).values.tolist()
avg5 = [item[0] for item in avg5_list]
avg10_list = close_df.rolling(window=10).mean().fillna(close[0]).values.tolist()
avg10_list = close_df.rolling(window=10).mean().fillna(close_list[0]).values.tolist()
avg10 = [item[0] for item in avg10_list]
avg20_list = close_df.rolling(window=20).mean().fillna(close[0]).values.tolist()
avg20 = [item[0] for item in avg20_list]
avg30_list = close_df.rolling(window=30).mean().fillna(close[0]).values.tolist()
avg30_list = close_df.rolling(window=30).mean().fillna(close_list[0]).values.tolist()
avg30 = [item[0] for item in avg30_list]
avg40_list = close_df.rolling(window=40).mean().fillna(close[0]).values.tolist()
avg40 = [item[0] for item in avg40_list]
avg50_list = close_df.rolling(window=50).mean().fillna(close[0]).values.tolist()
avg50 = [item[0] for item in avg50_list]
avg60_list = close_df.rolling(window=60).mean().fillna(close[0]).values.tolist()
avg60_list = close_df.rolling(window=60).mean().fillna(close_list[0]).values.tolist()
avg60 = [item[0] for item in avg60_list]
avg120_list = close_df.rolling(window=120).mean().fillna(close[0]).values.tolist()
avg120 = [item[0] for item in avg120_list]
avg240_list = close_df.rolling(window=240).mean().fillna(close[0]).values.tolist()
avg240 = [item[0] for item in avg240_list]
df = pd.DataFrame(close_list)
max20 = df.rolling(window=10).mean()
stddev20 = df.rolling(window=10).std()
upper_df = max20 + (stddev20 * 2) # 상단 볼린저 밴드
lower_df = max20 - (stddev20 * 2) # 하단 볼린저 밴드
upper, lower = [], []
for i in range(len(upper_df)):
@@ -421,10 +410,9 @@ class BuySellChecker:
point_temp = result["time"]
STOCK = []
for i in range(len(result["open"])):
STOCK.append({'volume': vol[i], 'close': close[i], 'open': open[i], 'high': high[i], 'low': low[i],
'avg1': avg1[i],'avg2': avg2[i],'avg3': avg3[i],'avg5': avg5[i],'avg10': avg10[i],
'avg20': avg20[i], 'avg60': avg60[i], 'avg120': avg120[i],'avg240': avg240[i]})
for i in range(len(open_list)):
STOCK.append({'volume': vol_list[i], 'close': close_list[i], 'open': open_list[i], 'high': high_list[i], 'low': low_list[i],
'avg5': avg5[i],'avg10': avg10[i],'avg30': avg30[i],'avg60': avg60[i]})
# stochastic 계산
stochastic_df = self.stochastic.apply(STOCK, n=12, m=5, t=5)
@@ -439,12 +427,12 @@ class BuySellChecker:
rsi = rsi_df['rsi'].values.tolist()
rsis = rsi_df['rsis'].values.tolist()
temp = {"date": point_temp,
"open": open, "high": high, "low": low, "close": close, "volume": vol, "upper": upper, "lower": lower,
"avg1": avg1, "avg2": avg2, "avg3": avg3, "avg5": avg5, "avg10": avg10, "avg20": avg20, "avg30": avg30, "avg40": avg40, "avg50": avg50, "avg60": avg60, "avg120": avg120, "avg240": avg240,
temp = {"date": point_temp[:-window+1],
"open": open_list, "high": high_list, "low": low_list, "close": close_list, "volume": vol_list, "upper": upper, "lower": lower,
"avg5": avg5, "avg10": avg10, "avg30": avg30, "avg60": avg60,
"fast_k": fast_k, "slow_k": slow_k, "slow_d": slow_d, "rsi": rsi, "rsis": rsis}
data = pd.DataFrame(temp)
df_final_time = pd.DatetimeIndex(point_temp)
df_final_time = pd.DatetimeIndex(point_temp[:-window+1])
data.index = df_final_time
return data

View File

@@ -101,12 +101,10 @@ class Simulation:
sell_check = go.Scatter(x=data['date'], y=sell_line, mode='markers', name="sell", marker=dict(size=14, color=sell_colors, line_width=0))
bolinger_upper = go.Scatter(x=data['date'], y=data["upper"], name="upper", line_color='#8B4513')
bolinger_lower = go.Scatter(x=data['date'], y=data["lower"], name="lower", line_color='#8B4513')
avg2 = go.Scatter(x=data['date'], y=data["avg2"], name="avg2", line_color='#000000')
avg3 = go.Scatter(x=data['date'], y=data["avg3"], name="avg3", line_color='#c0c0c0')
avg5 = go.Scatter(x=data['date'], y=data["avg5"], name="avg5", line_color='#800080')
avg10 = go.Scatter(x=data['date'], y=data["avg10"], name="avg10", line_color='#ff00ff')
avg20 = go.Scatter(x=data['date'], y=data["avg20"], name="avg20", line_color='#00ffff')
avg30 = go.Scatter(x=data['date'], y=data["avg30"], name="avg30", line_color='#008000')
avg30 = go.Scatter(x=data['date'], y=data["avg30"], name="avg30", line_color='#00ffff')
avg60 = go.Scatter(x=data['date'], y=data["avg60"], name="avg60", line_color='#008000')
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')
@@ -117,7 +115,7 @@ class Simulation:
rsis_line = go.Scatter(x=data['date'], y=data["rsis"], mode='lines', name='rsis')
#candle_data = [candle_stick, bolinger_upper, bolinger_lower, buy_check, sell_check, avg1, avg2, avg5, avg10, avg20, avg30, avg40, avg50, avg60]
candle_data = [candle_stick, bolinger_upper, bolinger_lower, avg2, avg3, avg5, avg10, buy_check, sell_check]
candle_data = [candle_stick, bolinger_upper, bolinger_lower, avg5, avg10, avg30, avg60, buy_check, sell_check]
volume_data = [volume_line]
stochastic_data = [slow_k_line, slow_d_line]
rsi_data = [rsi_line, rsis_line]