diff --git a/hts/HTS.py b/hts/HTS.py index 78c6a5c..31d479c 100644 --- a/hts/HTS.py +++ b/hts/HTS.py @@ -1,12 +1,15 @@ -import win32com.client +#import win32com.client import time import os from datetime import datetime, timedelta import pandas as pd from enum import Enum -#import plotly.graph_objects as go +import plotly.graph_objects as go from stockpredictor.analysis.Common import Common +from stockpredictor.analysis.Stochastic import Stochastic +from stockpredictor.analysis.RSI import RSI + # enum 주문 상태 세팅용 class EorderBS(Enum): buy = 1 # 매수 @@ -32,10 +35,14 @@ class HTS: objCpCodeMgr = None common = None - stock = [] + stochastic = None + rsi = None def __init__(self): self.common = Common() + self.stochastic = Stochastic() + self.rsi = RSI() + #self.connect() return @@ -558,7 +565,6 @@ class HTS: upper_df = max20 + (stddev20 * 2) # 상단 볼린저 밴드 lower_df = max20 - (stddev20 * 2) # 하단 볼린저 밴드 - size = len(result["open"]) window = 5 open = result["open"] close = result["close"] @@ -597,7 +603,31 @@ class HTS: point_temp = result["time"] - temp = {"Date": point_temp, "Open": open, "High": high, "Low": low, "Close": close, "Volume": vol, "avg1": avg1, "avg2": avg2, "avg5": avg5, "avg10": avg10, "avg20": avg20, "avg30": avg30, "avg40": avg40, "avg50": avg50, "avg60": avg60} + 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], 'avg5': avg2[i], + 'avg20': avg5[i], 'avg60': avg10[i], 'avg120': avg20[i], + 'avg240': avg30[i]}) + + # stochastic 계산 + stochastic_df = self.stochastic.apply(pd.DataFrame(STOCK)) + stochastic_df = stochastic_df.fillna(0) + fast_k = stochastic_df['fast_k'].values.tolist() + slow_k = stochastic_df['slow_k'].values.tolist() + slow_d = stochastic_df['slow_d'].values.tolist() + + # rsi 계산 + rsi_df = self.rsi.apply(pd.DataFrame(STOCK)) + rsi_df = rsi_df.fillna(0) + 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, + "avg1": avg1, "avg2": avg2, "avg5": avg5, "avg10": avg10, "avg20": avg20, "avg30": avg30, "avg40": avg40, "avg50": avg50, "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) data.index = df_final_time @@ -1115,9 +1145,9 @@ if __name__ == "__main__": #for stock_code in stock_codes: #hts.simulate(stock_code, given_day) - given_day = datetime.today().strftime('%Y%m%d') + #given_day = datetime.today().strftime('%Y%m%d') #hts.writeStockData(stock_codes, given_day) - #hts.simulate(stock_codes[0], given_day) - hts.buyRealTime(stock_codes[0], given_day) + hts.simulate(stock_codes[0], given_days[0]) + #hts.buyRealTime(stock_codes[0], given_day) print ("done...")