This commit is contained in:
dosangyoon
2021-10-11 16:03:48 +09:00
parent 0f48dab0b3
commit eee82945cc

View File

@@ -350,6 +350,41 @@ class HTS:
return orderList return orderList
# 미체결 취소하기
def cancelOrderList(self):
#주문 리스트를 가져온다.
orderList = self.requestOrderList()
#if len(orderList) < 1:
# return
objTrade = win32com.client.Dispatch("CpTrade.CpTdUtil")
initCheck = objTrade.TradeInit(0)
if (initCheck != 0):
print("주문 초기화 실패")
exit()
acc = objTrade.AccountNumber[0] # 계좌번호
accFlag = objTrade.GoodsList(acc, 1) # 주식상품 구분
objCancel = win32com.client.Dispatch("CpTrade.CpTdNew9064")
for item in orderList:
objCancel.SetInputValue(0, item.orderNum)
objCancel.SetInputValue(1, acc)
objCancel.SetInputValue(2, accFlag[0])
objCancel.SetInputValue(3, item.code)
# 예약 취소 주문 요청
objCancel.BlockRequest()
if objCancel.GetDibStatus() != 0:
print("예약 취소 실패")
return False
print("예약주문 취소 ", item.orderNum, objCancel.GetDibMsg1())
return
# 주식 현재가 조회 # 주식 현재가 조회
def writeStockData(self, stock_codes, given_day): def writeStockData(self, stock_codes, given_day):
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos") objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
@@ -995,7 +1030,7 @@ class HTS:
# 매수 주문 # 매수 주문
# 현재까지 매입금액이 7백만원 이하일 때만 매수를 한다. # 현재까지 매입금액이 7백만원 이하일 때만 매수를 한다.
if TOTAL_BUY_AMT < 7000000: if TOTAL_BUY_AMT < 7000000:
self.requestOrder("2", stock_code, BUY_COUNT , bs_buy_price) orderNum = self.requestOrder("2", stock_code, BUY_COUNT , bs_buy_price)
print("BUY", second, bs_buy_price) print("BUY", second, bs_buy_price)
logFp.write("%s,%s, %d\n" % ("BUY", second, bs_buy_price)) logFp.write("%s,%s, %d\n" % ("BUY", second, bs_buy_price))
@@ -1007,7 +1042,7 @@ class HTS:
for code in jangoDic: for code in jangoDic:
TOTAL_BUY_AMT = jangoDic[code]['매입금액'] TOTAL_BUY_AMT = jangoDic[code]['매입금액']
if jangoDic[code]['매도가능'] > 0: if jangoDic[code]['매도가능'] > 0:
self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], bs_sell_price) orderNum = self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], bs_sell_price)
timecheck[second] = True timecheck[second] = True
else: else:
@@ -1017,8 +1052,7 @@ class HTS:
else: else:
# 15:19:00 이후라면 모든 매수/매도 주문 취소하고 현재가-5원으로 매도한다. # 15:19:00 이후라면 모든 매수/매도 주문 취소하고 현재가-5원으로 매도한다.
self.cancelOrderList();
orderList = self.requestOrderList()
# 만약 잔고가 있으면 장부가보다 5원 높게 매도한다. # 만약 잔고가 있으면 장부가보다 5원 높게 매도한다.
jangoDic = self.requstJango() jangoDic = self.requstJango()
@@ -1027,7 +1061,7 @@ class HTS:
TOTAL_BUY_AMT = jangoDic[code]['매입금액'] TOTAL_BUY_AMT = jangoDic[code]['매입금액']
if jangoDic[code]['매도가능'] > 0: if jangoDic[code]['매도가능'] > 0:
if final_price > jangoDic[code]['장부가'] + 5: if final_price > jangoDic[code]['장부가'] + 5:
self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], final_price) orderNum = self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], final_price)
else: else:
# 장부가 가격의 마지막 자리를 0으로 만든다. (2090 -> 2090, 2092 -> 2090, 2098 -> 2090) # 장부가 가격의 마지막 자리를 0으로 만든다. (2090 -> 2090, 2092 -> 2090, 2098 -> 2090)
sell_price = int(jangoDic[code]['장부가'] / 10) * 10 sell_price = int(jangoDic[code]['장부가'] / 10) * 10
@@ -1035,13 +1069,13 @@ class HTS:
last_number = int(jangoDic[code]['장부가']) % 10 last_number = int(jangoDic[code]['장부가']) % 10
if last_number in [0, 1, 2]: if last_number in [0, 1, 2]:
# 장부가의 마지막 자리수가 0,1,2 라면 (2090, 2091, 2092 -> 2095 에 매도) # 장부가의 마지막 자리수가 0,1,2 라면 (2090, 2091, 2092 -> 2095 에 매도)
self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], sell_price + 5) orderNum = self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], sell_price + 5)
elif last_number in [3, 4, 5, 6]: elif last_number in [3, 4, 5, 6]:
# 장부가의 마지막 자리수가 3,4,5,6 라면 (2093, 2094, 2095, 2096 -> 2100 에 매도) # 장부가의 마지막 자리수가 3,4,5,6 라면 (2093, 2094, 2095, 2096 -> 2100 에 매도)
self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], sell_price + 10) orderNum = self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], sell_price + 10)
else: else:
# 장부가의 마지막 자리수가 7,8,9 라면 (2097, 2098, 2099 -> 2105 에 매도) # 장부가의 마지막 자리수가 7,8,9 라면 (2097, 2098, 2099 -> 2105 에 매도)
self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], sell_price + 15) orderNum = self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], sell_price + 15)
break break
time.sleep(0.9) time.sleep(0.9)