diff --git a/hts/BuySellChecker.py b/hts/BuySellChecker.py index e4cb97e..009bac6 100644 --- a/hts/BuySellChecker.py +++ b/hts/BuySellChecker.py @@ -195,55 +195,47 @@ class BuySellChecker: # 3. 2시 이후에는 최고가가 볼린져밴드 상단 위에 있으면 매도한다. if i > 300 and data["High"][i] > data["upper"][i]: sell = data["High"][i] - - ################ - ### buy 분석 ### - ################ - # 1. slow_k가 10 아래 있으면 매수한다. - if i < 30: + ########################## + ### STOCHASTIC buy 분석 ### + ########################## + if i < 40: if data["slow_k"][i] <= 10: - if data["Close"][i] < data["avg5"][i]: - buy = data["Close"][i] - else: - buy = data["Low"][i] - elif 30 <= i < 60: - if data["slow_k"][i] <= 15: - if data["Close"][i] < data["avg5"][i]: - buy = data["Close"][i] - else: - buy = data["Low"][i] + if data["slow_k"][i - 1] < data["slow_d"][i - 1] and data["slow_d"][i] < data["slow_k"][i]: + if data["Close"][i] < data["avg5"][i]: + buy = data["Close"][i] + else: + buy = data["Low"][i] else: - if data["slow_k"][i] <= 20: - if data["Close"][i] < data["avg5"][i]: - buy = data["Close"][i] - else: - buy = data["Low"][i] - - if data["rsi"][i-1] < 10 and data["rsi"][i-1] < data["rsis"][i-1] and data["rsis"][i] < data["rsi"][i]: - if data["Close"][i] < data["avg5"][i]: - buy = data["Close"][i] - else: - buy = data["Low"][i] - - ################## - ### weight 분석 ### - ################## - # rsi가 rsis 위로 올라오며 15 이하일 경우 10배로 주문함 (14:30 이전) - if data["rsi"][i] < 15 and data["rsis"][i] < 15 and data["rsi"][i - 1] < data["rsis"][i - 1] and data["rsis"][i] < data["rsi"][i]: - buy = data["Low"][i] - weight = 4 - if data["rsi"][i] < 10: - weight = 4 + if data["slow_k"][i] <= 35: + if data["slow_k"][i-1] < data["slow_d"][i-1] and data["slow_d"][i] < data["slow_k"][i]: + if data["Close"][i] < data["avg5"][i]: + buy = data["Close"][i] + else: + buy = data["Low"][i] + ############################# + ### STOCHASTIC weight 분석 ### + ############################# if data["slow_k"][i] in (0, 1, 2, 3): weight = 4 - if data["slow_k"][i] in (4, 5, 6, 7): + if data["slow_k"][i] in (4, 5, 6, 7, 8): weight = 3 - elif data["slow_k"][i] in (8, 9, 10, 11, 12, 13): + elif data["slow_k"][i] in (9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20): weight = 2 - elif data["slow_k"][i] in (14, 15, 16, 17, 18, 19, 20): + elif data["slow_k"][i] in (21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35): weight = 1 + ################### + ### RSI buy 분석 ### + ################### + if data["rsi"][i - 1] < data["rsis"][i - 1] and data["rsis"][i] < data["rsi"][i]: + if data["Close"][i] < data["avg5"][i]: + buy = data["Close"][i] + else: + buy = data["Low"][i] + weight = 3 + + return buy, weight, sell def getPriceAndWeight2(self, data, i): diff --git a/hts/Simulation.py b/hts/Simulation.py index f6335ec..c0ee678 100644 --- a/hts/Simulation.py +++ b/hts/Simulation.py @@ -169,6 +169,7 @@ if __name__ == "__main__": '20210930','20211001', '20211005','20211006', '20211007','20211008', '20211012','20211013', '20211014'] simulation = Simulation() + given_days = sorted(given_days, reverse=True) for given_day in given_days: simulation.simulate(stock_codes[0], given_day)