This commit is contained in:
dosangyoon
2022-07-26 03:18:17 +09:00
parent b3dfdf19f7
commit f27aafa363
23 changed files with 71 additions and 44 deletions

View File

@@ -204,7 +204,7 @@ class BuySellChecker:
if data["open"][i] < data["avg10"][i] < data["avg20"][i] < data["avg30"][i] < data["close"][i]:
if data["avg20"][i - 2] <= data["avg20"][i - 1] <= data["avg20"][i]:
buy = int((data["close"][i] + data["low"][i])/2)
weight = 1
weight = 2
return self.getBuyCheck(data, i, buy, weight)
# 30일 이전부터 모든 선이 좁혀졌다 녋혀지면서 다시 상승하며 좁혀짐
@@ -227,8 +227,8 @@ class BuySellChecker:
break
if check1 and check2:
buy = int((data["close"][i] + data["low"][i]) / 2)
weight = 1
return self.getBuyCheck(data, i, buy, weight)
weight = 7
return buy, weight
# 최근 양봉 3개가 나오면,
# 최근 10개 중에서 9개가 음봉이었음. 이 상태에서 양봉 3개가 나오면, 중간값에서 매수한다.
@@ -243,7 +243,7 @@ class BuySellChecker:
if umbong >= 8:
if data["open"][i] < data["open"][i-10]:
buy = data["open"][i]
weight = 1
weight = 7
return self.getBuyCheck(data, i, buy, weight)
@@ -255,26 +255,19 @@ class BuySellChecker:
if data["low"][i - 1] <= data["open"][i - 1] < data["close"][i - 1] <= data["high"][i - 1]:
if data["low"][i] <= data["open"][i] < data["close"][i] <= data["high"][i]:
buy = data["high"][i] + 5
weight = 1
return self.getBuyCheck(data, i, buy, weight)
weight = 5
return buy, weight
# 장시작 5개 high가 볼린져 상단 위에 있을 때 중간 값에서 매수
if data.index[i].strftime("%H:%M") == "09:05":
if data["upper"][i-4] < data["high"][i-4] and data["upper"][i-3] < data["high"][i-3] and data["upper"][i-2] < data["high"][i-2] and data["upper"][i-1] < data["high"][i-1] and data["upper"][i] < data["high"][i]:
buy = (data["open"][i]+data["close"][i])/2
weight = 1
weight = 5
return self.getBuyCheck(data, i, buy, weight)
# 장 초기 (시작 9분 이내), 볼린져 하단에서 시작하여 이병선을 모두 상승하여 마감한 경우 high 값에서 매수한다.
# (2022-07-15 09:08 09:09)
if i <= 381 + 10:
# 최근 저점이 이전 저점보다 avg3는 크지만, rsi는 높은 경우
if data['high'][381] < data['lower'][381] or data['high'][382] < data['lower'][382]:
if data['upper'][i] < data['high'][i] and data['open'][i] < data['close'][i]:
buy = data["close"][i]
weight = 1
return buy, weight
if data["close"][i] > max(data["avg3"][i], data["avg5"][i], data["avg10"][i], data["avg20"][i], data["avg30"][i]):
c = 382
# 장 시작 역배열 상태임
@@ -283,7 +276,7 @@ class BuySellChecker:
buy = data["close"][i]
else:
buy = data["high"][i]
weight = 1
weight = 7
return buy, weight
# 이동선을 이용한 매매
@@ -300,24 +293,7 @@ class BuySellChecker:
break
if valid and same_count < 2:
buy = data["close"][i] - 5
weight = 1
return self.getBuyCheck(data, i, buy, weight)
# 이동선을 이용한 매매
# 20분선이 30분선에 돌파 후 지지하는지 확인하고 해당 시점이 양봉이면 매수함
if data['avg20'][i] > data['avg30'][i]:
diff1 = data['avg20'][i] - data['avg30'][i]
diff2 = data['avg20'][i-1] - data['avg30'][i-1]
diff3 = data['avg20'][i-2] - data['avg30'][i-2]
diff4 = data['avg20'][i-3] - data['avg30'][i-3]
diff5 = data['avg20'][i-4] - data['avg30'][i-4]
if 0 < diff3 < diff2 < diff1:
if data['high'][i-2] <= data['high'][i-1] <= data['high'][i]:
if data['open'][i - 2] <= data['close'][i - 2] and data['open'][i-1] <= data['close'][i-1] and data['open'][i] <= data['close'][i]:
if diff5 < diff4 < 0:
if data["rsi"][i] < 30:
buy = (data["open"][i]+data["close"][i])/2
weight = 1
weight = 3
return self.getBuyCheck(data, i, buy, weight)
@@ -341,11 +317,51 @@ class BuySellChecker:
if data['macd'][idx] < data['macd'][i] and data['low'][i] <= data['low'][idx] and high-data['high'][i] > 20:
buy = (data["open"][i]+data["close"][i])/2
weight = 1
weight = 7
return self.getBuyCheck(data, i, buy, weight)
# 10분선이 30분 이상 20분선 아래에 있다가 20분선 위로 올라옴
# 이때 3, 5, 10, 20분선의 max-min이 5원 미만이다.
if i > 381 + 20:
vaild = True
max_price = 0
if i > 381 + 30:
last = 30
else:
last = i - 381
for c in range(4, last):
if data["avg10"][i - c] >= data["avg20"][i - c]:
vaild = False
if max_price < data["high"][i - c]:
max_price = data["high"][i - c]
if vaild:
if ((data["avg10"][i-3] > data["avg20"][i-3] and data["avg10"][i-2] > data["avg20"][i-2] and data["avg10"][i-1] > data["avg20"][i-1] and data["avg10"][i] > data["avg20"][i]) or
(abs(data["avg10"][i-3] - data["avg20"][i-3]) < 2 and abs(data["avg10"][i-2] - data["avg20"][i-2]) < 2 and abs(data["avg10"][i-1] - data["avg20"][i-1]) < 2 and abs(data["avg10"][i] - data["avg20"][i])<2)) :
if max(data["avg3"][i], data["avg5"][i], data["avg10"][i], data["avg20"][i]) - min(data["avg3"][i], data["avg5"][i], data["avg10"][i], data["avg20"][i]) <= 5:
if max_price - data["close"][i] >= 30:
buy = data["high"][i]
weight = 10
return self.getBuyCheck(data, i, buy, weight)
"""
# 이동선을 이용한 매매
# 20분선이 30분선에 돌파 후 지지하는지 확인하고 해당 시점이 양봉이면 매수함
if data['avg20'][i] > data['avg30'][i]:
diff1 = data['avg20'][i] - data['avg30'][i]
diff2 = data['avg20'][i-1] - data['avg30'][i-1]
diff3 = data['avg20'][i-2] - data['avg30'][i-2]
diff4 = data['avg20'][i-3] - data['avg30'][i-3]
diff5 = data['avg20'][i-4] - data['avg30'][i-4]
if 0 < diff3 < diff2 < diff1:
if data['high'][i-2] <= data['high'][i-1] <= data['high'][i]:
if data['open'][i - 2] <= data['close'][i - 2] and data['open'][i-1] <= data['close'][i-1] and data['open'][i] <= data['close'][i]:
if diff5 < diff4 < 0:
if data["rsi"][i] < 30:
buy = (data["open"][i]+data["close"][i])/2
weight = 7
return self.getBuyCheck(data, i, buy, weight)
# 이동선을 이용한 매매
# 3분선과 5분선이 10분 이상 내려오다가 3분선이 5분선을 넘어 서는 순간 매수
# (2022-07-04 09:22) (2022-07-05 09:38) (2022-07-07 09:35) (2022-07-08 09:06) (2022-07-11 09:25) (2022-07-13 10:12) (2022-07-15 14:48)
@@ -630,15 +646,30 @@ class BuySellChecker:
weight = 1
return self.getBuyCheck(data, i, buy, weight)
if data.index[i].strftime("%Y-%m-%d %H:%M:%S") == "2022-07-22 09:02:00":
print (1)
if data['close'][i] - data['open'][i] >= 90 and data['close'][i] == data['high'][i]:
buy = int((data["open"][i] + data["close"][i]) / 2)
weight = 1
return buy, weight
# 장 초기 (시작 9분 이내), 볼린져 하단에서 시작하여 이병선을 모두 상승하여 마감한 경우 high 값에서 매수한다.
# (2022-07-15 09:08 09:09)
if i <= 381 + 4:
if data["close"][381] < min(data["lower"][381], data["avg3"][381], data["avg5"][381], data["avg10"][381], data["avg20"][381], data["avg30"][381]):
for c in range(1, 4):
if i-c < 382:
break
if data["close"][i-c] > max(data["upper"][i-c], data["avg3"][i-c], data["avg5"][i-c], data["avg10"][i-c], data["avg20"][i-c], data["avg30"][i-c]):
buy = data["high"][i]
weight = 3
return buy, weight
return buy, weight
def getSellPriceAndWeight_15000(self, data, i):
sell, weight = -1, -1

View File

@@ -188,7 +188,7 @@ if __name__ == "__main__":
# KODEX 인버스 * 2
stock_code = "252670"
buy_count = 700
buy_count = 100
hts = HTS_252670(stock_code, buy_count)
today_str = today.strftime('%Y%m%d')

View File

@@ -189,12 +189,8 @@ if __name__ == "__main__":
# 252670
# 122630
"122630": [
('20220714', '20220715'),
('20220715', '20220718'),
('20220718', '20220719'),
('20220719', '20220720'),
('20220720', '20220721'),
('20220721', '20220722')
('20220722', '20220725')
],
}
path = './hts/data'