init
This commit is contained in:
@@ -192,19 +192,48 @@ class BuySellChecker:
|
||||
START_TIME_INDEX = c
|
||||
break
|
||||
|
||||
if i >= START_TIME_INDEX:
|
||||
if i > START_TIME_INDEX:
|
||||
# 매수 분석
|
||||
|
||||
if i > 740:
|
||||
# "15:00" 까지만 매수
|
||||
return buy, weight
|
||||
|
||||
# 20분과 30분 아래에서, 3분선이 5분선 위로 올라오면 매수,
|
||||
# 20분과 30분 위에서, 3분선이 5분선 아래로 내려오면 매도,
|
||||
if data["avg3"][i - 1] <= data["avg5"][i - 1] and data["avg3"][i] > data["avg5"][i]:
|
||||
if max(data["avg3"][i], data["avg5"][i]) < min(data["avg20"][i], data["avg30"][i]):
|
||||
if min(data["avg3"][i], data["avg5"][i]) > data["avg60"][i]:
|
||||
buy = int((data["high"][i] + data["low"][i]) / 2)
|
||||
if data["macd"][i] < -25:
|
||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||
buy = data["high"][i]
|
||||
if i < 381 + 30:
|
||||
weight = 1
|
||||
else:
|
||||
weight = 5
|
||||
return buy, weight
|
||||
|
||||
if data["macd"][i] < -5 and data["rsi"][i] < 30:
|
||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||
weight = 2
|
||||
return buy, weight
|
||||
|
||||
if data["slow_k"][i] < 10 and data["rsi"][i] < 30:
|
||||
if data["slow_k"][i - 1] < min(data["slow_k"][i - 2], data["slow_k"][i]):
|
||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||
weight = 2
|
||||
return buy, weight
|
||||
|
||||
# 3분선이 5분선이 돌파가 이전보다 높은 경우 매수
|
||||
if data["avg3"][i - 1] < data["avg5"][i - 1] and data["avg3"][i] > data["avg5"][i]:
|
||||
p_avg3 = 999999
|
||||
for c in range(1, 50):
|
||||
if data["avg3"][i-c-1] < data["avg5"][i-c-1] and data["avg3"][i-c] > data["avg5"][i-c]:
|
||||
p_avg3 = data["avg3"][i-c]
|
||||
break
|
||||
if data["avg3"][i] > p_avg3:
|
||||
if i == 382 or i == 383:
|
||||
if data["close"][i] != data["high"][i]:
|
||||
return -1, -1
|
||||
if data["slow_k"][i] < 30 or i < 381 + 10:
|
||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||
weight = 1
|
||||
return buy, weight
|
||||
|
||||
@@ -411,13 +440,13 @@ class BuySellChecker:
|
||||
if i >= START_TIME_INDEX:
|
||||
# 매도 분석
|
||||
|
||||
# 20분과 30분 아래에서, 3분선이 5분선 위로 올라오면 매수,
|
||||
# 20분과 30분 위에서, 3분선이 5분선 아래로 내려오면 매도,
|
||||
# 10분선 위에서 3분선이 5분선을 하향 돌파 하는 경우 매도
|
||||
if data["avg3"][i - 1] >= data["avg5"][i - 1] and data["avg3"][i] < data["avg5"][i]:
|
||||
if min(data["avg3"][i], data["avg5"][i]) > max(data["avg20"][i], data["avg30"][i]):
|
||||
sell = int((data["high"][i] + data["low"][i]) / 2)
|
||||
weight = 1
|
||||
return sell, weight
|
||||
if min(data["avg3"][i], data["avg5"][i]) > data["avg10"][i]:
|
||||
if data["slow_k"][i] > 80:
|
||||
sell = int((data["high"][i] + data["low"][i]) / 2)
|
||||
weight = 1
|
||||
return sell, weight
|
||||
"""
|
||||
# 3분선이 5분 이상 5분선 위에 있다가 5분선 아래로 내려옴
|
||||
if i >= 381 + 5:
|
||||
@@ -519,12 +548,38 @@ class BuySellChecker:
|
||||
# "15:00" 까지만 매수
|
||||
return buy, weight
|
||||
|
||||
# 20분과 30분 아래에서, 3분선이 5분선 위로 올라오면 매수,
|
||||
# 20분과 30분 위에서, 3분선이 5분선 아래로 내려오면 매도,
|
||||
if data["avg3"][i - 1] <= data["avg5"][i - 1] and data["avg3"][i] > data["avg5"][i]:
|
||||
if max(data["avg3"][i], data["avg5"][i]) < min(data["avg20"][i], data["avg30"][i]):
|
||||
if min(data["avg3"][i], data["avg5"][i]) > data["avg60"][i]:
|
||||
buy = int((data["high"][i] + data["low"][i]) / 2)
|
||||
if data["macd"][i] < -25:
|
||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||
buy = data["high"][i]
|
||||
if i < 381 + 30:
|
||||
weight = 1
|
||||
else:
|
||||
weight = 5
|
||||
return buy, weight
|
||||
|
||||
if data["macd"][i] < -5 and data["rsi"][i] < 30:
|
||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||
weight = 2
|
||||
return buy, weight
|
||||
|
||||
if data["slow_k"][i] < 10 and data["rsi"][i] < 30:
|
||||
if data["slow_k"][i - 1] < min(data["slow_k"][i - 2], data["slow_k"][i]):
|
||||
if data["avg3"][i] > min(data["avg5"][i], data["avg10"][i], data["avg20"][i]):
|
||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||
weight = 2
|
||||
return buy, weight
|
||||
|
||||
# 3분선이 5분선이 돌파가 이전보다 높은 경우 매수
|
||||
if data["avg3"][i - 1] < data["avg5"][i - 1] and data["avg3"][i] > data["avg5"][i]:
|
||||
p_avg3 = 999999
|
||||
for c in range(1, 50):
|
||||
if data["avg3"][i-c-1] < data["avg5"][i-c-1] and data["avg3"][i-c] > data["avg5"][i-c]:
|
||||
p_avg3 = data["avg3"][i-c]
|
||||
break
|
||||
if data["avg3"][i] > p_avg3:
|
||||
if data["slow_k"][i] < 30 or i < 381 + 10:
|
||||
buy = int((data["open"][i] + data["close"][i]) / 2)
|
||||
weight = 1
|
||||
return buy, weight
|
||||
"""
|
||||
@@ -731,13 +786,13 @@ class BuySellChecker:
|
||||
if i >= START_TIME_INDEX:
|
||||
# 매도 분석
|
||||
|
||||
# 20분과 30분 아래에서, 3분선이 5분선 위로 올라오면 매수,
|
||||
# 20분과 30분 위에서, 3분선이 5분선 아래로 내려오면 매도,
|
||||
# 10분선 위에서 3분선이 5분선을 하향 돌파 하는 경우 매도
|
||||
if data["avg3"][i - 1] >= data["avg5"][i - 1] and data["avg3"][i] < data["avg5"][i]:
|
||||
if min(data["avg3"][i], data["avg5"][i]) > max(data["avg20"][i], data["avg30"][i]):
|
||||
sell = int((data["high"][i] + data["low"][i]) / 2)
|
||||
weight = 1
|
||||
return sell, weight
|
||||
if min(data["avg3"][i], data["avg5"][i]) > data["avg10"][i]:
|
||||
if data["slow_k"][i] > 80:
|
||||
sell = int((data["high"][i] + data["low"][i]) / 2)
|
||||
weight = 1
|
||||
return sell, weight
|
||||
"""
|
||||
# 3분선이 5분 이상 5분선 위에 있다가 5분선 아래로 내려옴
|
||||
if i >= 381 + 5:
|
||||
|
||||
@@ -36,16 +36,16 @@ class OrderChecker:
|
||||
# 1) 종목 코드를 찾는다.
|
||||
stock_df = order_df.loc[order_df["stock_code"] == stock_code]
|
||||
|
||||
# 2) 2 시간 전 계산
|
||||
before_two_hour = datetime.now() - timedelta(hours=2)
|
||||
# 2) 5분 전 계산
|
||||
before_two_hour = datetime.now() - timedelta(minutes=5)
|
||||
|
||||
# 3) 만약 2 시간 전 주문을 찾는다.
|
||||
# 3) 만약 5분 전 주문을 찾는다.
|
||||
stock_twohour_df = stock_df.loc[stock_df["datetime"] <= before_two_hour]
|
||||
|
||||
# 4) 2 시간 전 주문 중에서 매수 데이터만 찾는다.
|
||||
# 4) 5분 전 주문 중에서 매수 데이터만 찾는다.
|
||||
orderNum_df = stock_twohour_df.loc[stock_twohour_df["type"] == OrderType.buy.value]
|
||||
|
||||
# 5) 2시간 전 매수 항목을 별도로 추출한다.
|
||||
# 5) 5분 전 매수 항목을 별도로 추출한다.
|
||||
orderNumSet = set(list(orderNum_df["orderNum"]))
|
||||
for item in orderList:
|
||||
if item.orderNum in orderNumSet:
|
||||
|
||||
Reference in New Issue
Block a user