init
This commit is contained in:
@@ -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,9 +243,9 @@ 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)
|
||||
|
||||
|
||||
|
||||
# 최근 양봉 3개가 나오면,
|
||||
# 9시 3분이나 4분에 장 시작 양봉 연속 3개면 매수
|
||||
@@ -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,26 +293,9 @@ class BuySellChecker:
|
||||
break
|
||||
if valid and same_count < 2:
|
||||
buy = data["close"][i] - 5
|
||||
weight = 1
|
||||
weight = 3
|
||||
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
|
||||
return self.getBuyCheck(data, i, buy, weight)
|
||||
|
||||
|
||||
# MACD를 이용한 다이버젼스
|
||||
# lower를 하단으로 깼을 때, 5분선 기준으로 이전 저점보다 낮거나 같은데, MACD는 더 높은 경우 매수한다.
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user