init
This commit is contained in:
@@ -363,30 +363,23 @@ class BuySellChecker:
|
|||||||
|
|
||||||
|
|
||||||
def analyze(self, result):
|
def analyze(self, result):
|
||||||
window = 5
|
|
||||||
open = result["open"]
|
open = result["open"]
|
||||||
close = result["close"]
|
close = result["close"]
|
||||||
high = result["high"]
|
high = result["high"]
|
||||||
low = result["low"]
|
low = result["low"]
|
||||||
vol = result["vol"]
|
vol = result["vol"]
|
||||||
|
|
||||||
open_list = open[:-window+1]
|
close_df = pd.DataFrame(close)
|
||||||
close_list = close[window-1:]
|
avg5_list = close_df.rolling(window=5).mean().fillna(close[0]).values.tolist()
|
||||||
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]
|
avg5 = [item[0] for item in avg5_list]
|
||||||
avg10_list = close_df.rolling(window=10).mean().fillna(close_list[0]).values.tolist()
|
avg10_list = close_df.rolling(window=10).mean().fillna(close[0]).values.tolist()
|
||||||
avg10 = [item[0] for item in avg10_list]
|
avg10 = [item[0] for item in avg10_list]
|
||||||
avg30_list = close_df.rolling(window=30).mean().fillna(close_list[0]).values.tolist()
|
avg30_list = close_df.rolling(window=30).mean().fillna(close[0]).values.tolist()
|
||||||
avg30 = [item[0] for item in avg30_list]
|
avg30 = [item[0] for item in avg30_list]
|
||||||
avg60_list = close_df.rolling(window=60).mean().fillna(close_list[0]).values.tolist()
|
avg60_list = close_df.rolling(window=60).mean().fillna(close[0]).values.tolist()
|
||||||
avg60 = [item[0] for item in avg60_list]
|
avg60 = [item[0] for item in avg60_list]
|
||||||
|
|
||||||
df = pd.DataFrame(close_list)
|
df = pd.DataFrame(close)
|
||||||
max20 = df.rolling(window=10).mean()
|
max20 = df.rolling(window=10).mean()
|
||||||
stddev20 = df.rolling(window=10).std()
|
stddev20 = df.rolling(window=10).std()
|
||||||
upper_df = max20 + (stddev20 * 2) # 상단 볼린저 밴드
|
upper_df = max20 + (stddev20 * 2) # 상단 볼린저 밴드
|
||||||
@@ -394,9 +387,9 @@ class BuySellChecker:
|
|||||||
|
|
||||||
upper, lower = [], []
|
upper, lower = [], []
|
||||||
for i in range(len(upper_df)):
|
for i in range(len(upper_df)):
|
||||||
if i < window:
|
if i < 10:
|
||||||
upper.append(upper_df.values[window - 1][0])
|
upper.append(upper_df.values[0][0])
|
||||||
lower.append(lower_df.values[window - 1][0])
|
lower.append(lower_df.values[0][0])
|
||||||
else:
|
else:
|
||||||
upper.append(upper_df.values[i][0])
|
upper.append(upper_df.values[i][0])
|
||||||
lower.append(lower_df.values[i][0])
|
lower.append(lower_df.values[i][0])
|
||||||
@@ -404,8 +397,8 @@ class BuySellChecker:
|
|||||||
point_temp = result["time"]
|
point_temp = result["time"]
|
||||||
|
|
||||||
STOCK = []
|
STOCK = []
|
||||||
for i in range(len(open_list)):
|
for i in range(len(open)):
|
||||||
STOCK.append({'volume': vol_list[i], 'close': close_list[i], 'open': open_list[i], 'high': high_list[i], 'low': low_list[i],
|
STOCK.append({'volume': vol[i], 'close': close[i], 'open': open[i], 'high': high[i], 'low': low[i],
|
||||||
'avg5': avg5[i],'avg10': avg10[i],'avg30': avg30[i],'avg60': avg60[i]})
|
'avg5': avg5[i],'avg10': avg10[i],'avg30': avg30[i],'avg60': avg60[i]})
|
||||||
|
|
||||||
# stochastic 계산
|
# stochastic 계산
|
||||||
@@ -421,12 +414,12 @@ class BuySellChecker:
|
|||||||
rsi = rsi_df['rsi'].values.tolist()
|
rsi = rsi_df['rsi'].values.tolist()
|
||||||
rsis = rsi_df['rsis'].values.tolist()
|
rsis = rsi_df['rsis'].values.tolist()
|
||||||
|
|
||||||
temp = {"date": point_temp[window-1:],
|
temp = {"date": point_temp,
|
||||||
"open": open_list, "high": high_list, "low": low_list, "close": close_list, "volume": vol_list, "upper": upper, "lower": lower,
|
"open": open, "high": high, "low": low, "close": close, "volume": vol, "upper": upper, "lower": lower,
|
||||||
"avg5": avg5, "avg10": avg10, "avg30": avg30, "avg60": avg60,
|
"avg5": avg5, "avg10": avg10, "avg30": avg30, "avg60": avg60,
|
||||||
"fast_k": fast_k, "slow_k": slow_k, "slow_d": slow_d, "rsi": rsi, "rsis": rsis}
|
"fast_k": fast_k, "slow_k": slow_k, "slow_d": slow_d, "rsi": rsi, "rsis": rsis}
|
||||||
data = pd.DataFrame(temp)
|
data = pd.DataFrame(temp)
|
||||||
df_final_time = pd.DatetimeIndex(point_temp[window-1:])
|
df_final_time = pd.DatetimeIndex(point_temp)
|
||||||
data.index = df_final_time
|
data.index = df_final_time
|
||||||
|
|
||||||
return data
|
return data
|
||||||
@@ -44,9 +44,9 @@ metaCrawler.crawl_meterials(stockFileName)
|
|||||||
|
|
||||||
print("\n[종목 다운로드]")
|
print("\n[종목 다운로드]")
|
||||||
stockCrawler = StockCrawler(START_DATE)
|
stockCrawler = StockCrawler(START_DATE)
|
||||||
|
#stockCrawler.crawl_etf_stocks(stockFileName)
|
||||||
|
#stockCrawler.crawl_stocks(stockFileName)
|
||||||
stockCrawler.crawl_us_stocks(stockFileName)
|
stockCrawler.crawl_us_stocks(stockFileName)
|
||||||
stockCrawler.crawl_etf_stocks(stockFileName)
|
|
||||||
stockCrawler.crawl_stocks(stockFileName)
|
|
||||||
|
|
||||||
|
|
||||||
print("\n[종목 분석]")
|
print("\n[종목 분석]")
|
||||||
|
|||||||
Reference in New Issue
Block a user