From 6bca00ae62e4702115276f222c4c27f17dfce46f Mon Sep 17 00:00:00 2001 From: dsyoon Date: Thu, 14 Oct 2021 16:34:50 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8A=A4=ED=86=A0=EC=BA=90=EC=8A=A4=ED=8B=B1,?= =?UTF-8?q?=20RSI=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hts/HTS.py | 46 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) 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...")