From b72f6c0f5509623c94b2758b20cbbb406ec1d41a Mon Sep 17 00:00:00 2001 From: dsyoon Date: Fri, 4 Feb 2022 12:08:03 +0900 Subject: [PATCH] init --- hts/BuySellChecker.py | 8 ++++---- hts/HTS_252670.py | 13 ++++++++----- stockpredictor/analysis/RSI.py | 4 ++-- stockpredictor/analysis/Stochastic.py | 2 +- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/hts/BuySellChecker.py b/hts/BuySellChecker.py index 7947681..1c52191 100644 --- a/hts/BuySellChecker.py +++ b/hts/BuySellChecker.py @@ -208,15 +208,15 @@ class BuySellChecker: if i < 40: if data["low"][i] < data["lower"][i]+5: if data["slow_k"][i] <= 20: - if data["slow_k"][i] < data["slow_k"][i-1] and data["slow_k"][i-1] < data["slow_k"][i]: + if data["slow_k"][i-1] < data["slow_d"][i-1] and data["slow_d"][i] < data["slow_k"][i] and data["slow_k"][i-1] <= data["slow_k"][i]: if data["close"][i] < data["avg5"][i]: buy = data["close"][i] else: buy = data["low"][i] else: if data["low"][i] < data["lower"][i]+5: - if data["slow_k"][i-1] <= 30 and data["slow_k"][i] <= 30: - if data["slow_k"][i] < data["slow_k"][i-1] and data["slow_k"][i-1] < data["slow_k"][i]: + if data["slow_k"][i-1] < 30 and data["slow_k"][i] < 30: + if data["slow_k"][i-1] < data["slow_d"][i-1] and data["slow_d"][i] < data["slow_k"][i] and data["slow_k"][i-1] <= data["slow_k"][i]: if data["close"][i] < data["avg5"][i]: buy = data["close"][i] else: @@ -366,7 +366,7 @@ class BuySellChecker: 'avg20': avg20[i], 'avg60': avg60[i], 'avg120': avg120[i],'avg240': avg240[i]}) # stochastic 계산 - stochastic_df = self.stochastic.apply(STOCK) + stochastic_df = self.stochastic.apply(STOCK, n=12, m=5, t=5) stochastic_df = stochastic_df.fillna(100) fast_k = stochastic_df['fast_k'].values.tolist() slow_k = stochastic_df['slow_k'].values.tolist() diff --git a/hts/HTS_252670.py b/hts/HTS_252670.py index 1d3d5f1..7a8a788 100644 --- a/hts/HTS_252670.py +++ b/hts/HTS_252670.py @@ -584,17 +584,20 @@ class HTS_252670: #BUY_COUNT = int(BASE_COUNT * bs_weight) BUY_COUNT = int(BASE_COUNT * 1) + # 매수를 주문한다. - orderNum = self.requestOrder(OrderType.buy, self.stock_code, BUY_COUNT , bs_buy_price) + """""" + ###orderNum = self.requestOrder(OrderType.buy, self.stock_code, BUY_COUNT , bs_buy_price) # 미체결 기록을 가져온다. - ORDER_LIST = self.requestOrderList() + ###ORDER_LIST = self.requestOrderList() # 매수 주문을 기록한다. - orderListToCancel = orderChecker.add(self.stock_code, OrderType.buy, orderNum, BUY_COUNT, bs_buy_price, ORDER_LIST) + ###orderListToCancel = orderChecker.add(self.stock_code, OrderType.buy, orderNum, BUY_COUNT, bs_buy_price, ORDER_LIST) # 두 시간 이전 미체결을 모두 취소한다. - self.cancelOrderList(orderListToCancel) + ###self.cancelOrderList(orderListToCancel) # 로그 출력 - print("BUY", THIS_TIME.strftime('%Y%m%d %H%M%S'), BUY_COUNT, bs_buy_price, len(orderListToCancel), len(ORDER_LIST)) + ###print("BUY", THIS_TIME.strftime('%Y%m%d %H%M%S'), BUY_COUNT, bs_buy_price, len(orderListToCancel), len(ORDER_LIST)) + print("BUY", THIS_TIME.strftime('%Y%m%d %H%M%S'), BUY_COUNT, bs_buy_price) """ if bs_sell_price > 0: diff --git a/stockpredictor/analysis/RSI.py b/stockpredictor/analysis/RSI.py index ed792b2..d738fe1 100644 --- a/stockpredictor/analysis/RSI.py +++ b/stockpredictor/analysis/RSI.py @@ -17,7 +17,7 @@ class RSI: self.common = Common() return - def apply(sefl, df, period=10): + def apply(sefl, df, period=14, window=9): df = pd.DataFrame(df) # df.diff를 통해 (기준일 종가 - 기준일 전일 종가)를 계산하여 0보다 크면 증가분을 감소했으면 0을 넣어줌 @@ -33,7 +33,7 @@ class RSI: AD = pd.DataFrame(D).rolling(window=period, min_periods=period).mean() rsi = AU.div(AD + AU) * 100 - rsis = rsi.rolling(window=9).mean() + rsis = rsi.rolling(window=window).mean() df = df.assign(rsi=rsi, rsis=rsis) return df diff --git a/stockpredictor/analysis/Stochastic.py b/stockpredictor/analysis/Stochastic.py index 1f2a1dd..2d35a1d 100644 --- a/stockpredictor/analysis/Stochastic.py +++ b/stockpredictor/analysis/Stochastic.py @@ -17,7 +17,7 @@ class Stochastic: # n=15 (%k), m=5 (%d), t=3 # n=5 (%k), m=3 (%d), t=3 # n=14 (%k), m=3 (%d), t=3 - def apply(self, df, n=14, m=3, t=3): + def apply(self, df, n=12, m=5, t=5): # 입력받은 값이 dataframe이라는 것을 정의해줌 df = pd.DataFrame(df)