This commit is contained in:
dsyoon
2023-10-28 14:06:56 +09:00
parent d81456ff77
commit a240bf0a52

View File

@@ -221,60 +221,58 @@ class BuySellChecker:
def getBuyPriceAndWeight(self, stock_code, i, data):
buy, weight = -1, -1
if i < 40:
return buy, weight
if i > 40:
"""
up, up_volume, down, down_volume = 0, 0, 0, 0
for c in range(i-26, i):
if data['open'][c] < data['close'][c]:
up += 1
up_volume += data['volume'][c]
if data['close'][c] < data['open'][c]:
down += 1
down_volume += data['volume'][c]
if down_volume < up_volume * 0.75:
buy, weight = data['close'][i], 1
"""
max_vol_5 = max(data['volume'].to_list()[i - 4: i + 1])
max_vol_30 = max(data['volume'].to_list()[i - 24: i - 4])
if max_vol_30 < max_vol_5:
if data['open'][i-1] < data['close'][i-1] and data['volume'][i-1] < data['volume'][i]:
#if data['open'][i - 1] < data['close'][i - 1] and data['volume'][i - 1] < data['volume'][i]:
# 1) 스토캐스틱 과매도
slow_k_buy = False
for idx in range(i, i-10, -1):
if data['slow_k'][idx] < 20:
slow_k_buy = True
if data['macd'][i] < 0 and data['macd'][i - 1] < data['macd'][i] and data['macds'][i] < data['macd'][i]:
check = True
for c in range(2, 5):
if data['macds'][i - c] < data['macd'][i - c]:
check = False
break
# 2) macd 교차 신호
macd_buy = False
if slow_k_buy:
for idx in range(i, i-10, -1):
if data['macd'][idx - 1] < 0 and data['macds'][idx - 1] < 0 and data['macd'][idx] < 0 and data['macds'][idx] < 0:
if data['macd'][idx-1] < data['macds'][idx-1] and data['macd'][idx] > data['macds'][idx]:
macd_buy = True
if check:
up, middle, down = 0, 0, 0
for c in range(i - 26, i):
if data['open'][c] < data['close'][c]:
min_value = min(data['open'][c], data['close'][c])
if data['laggingSpan'][c] < min_value:
down += 1
elif min_value < data['laggingSpan'][c]:
up += 1
else:
middle += 1
if middle < 10:
check = True
for c in range(i - 56, i - 26):
if min(data['open'][c], data['close'][c]) < data['laggingSpan'][c]:
check = False
break
if check:
if max(data['low'][i - 5:i].tolist() + data['high'][i - 5:i].tolist()) < data['close'][i]:
buy, weight = data['close'][i], 1
# 3) RSI 지수가 50위로 올라갈 때
if macd_buy:
if data['rsi'][i-1] < 40 and data['rsi'][i] > 40:
buy, weight = data['close'][i] , 1
if stock_code in ("233740"):
if data['macd'][i-1] < -30:
if data['macd'][i-1] < data['macds'][i-1] and data['macds'][i] < data['macd'][i]:
buy, weight = data['close'][i], 3
if stock_code in ("122630"):
if data['macd'][i-1] < -30:
if data['macd'][i-1] < data['macds'][i-1] and data['macds'][i] < data['macd'][i]:
buy, weight = data['close'][i], 2
if stock_code in ("251340"):
if data['macd'][i-1] < -7:
if data['macd'][i-1] < data['macds'][i-1] and data['macds'][i] < data['macd'][i]:
buy, weight = data['close'][i], 3
if stock_code in ("252670"):
if data['macd'][i-1] < -4:
if data['macd'][i-1] < data['macds'][i-1] and data['macds'][i] < data['macd'][i]:
buy, weight = data['close'][i], 3
check = True
for c in range(i - 40 - 26, i - 26):
if min(data['open'][c], data['close'][c]) < data['laggingSpan'][c]:
check = False
break
if check:
if max(data['low'][i - 5:i].tolist() + data['high'][i - 5:i].tolist()) < data['close'][i]:
buy, weight = data['close'][i], 1
return buy, weight
def getSellPriceAndWeight(self, stock_code, i, data):
sell, weight = -1, -1