This commit is contained in:
dsyoon
2021-10-06 18:28:38 +09:00
parent 88bc56ea38
commit 1aadfb0bdc

View File

@@ -911,7 +911,7 @@ class HTS:
def buyRealTime(self, stock_code, given_day): def buyRealTime(self, stock_code, given_day):
PREVIOUS_PRICE = 0 PREVIOUS_PRICE = 0
BUY_COUNT = 200 BUY_COUNT = 300
TOTAL_BUY_AMT = 0 TOTAL_BUY_AMT = 0
logFp = open(given_day+".log", "w") logFp = open(given_day+".log", "w")
@@ -927,6 +927,9 @@ class HTS:
"low": [], "low": [],
"vol": []} "vol": []}
avg60_1 = 0
avg60_2 = 0
final_price = 0
print ("START...") print ("START...")
while datetime.strptime(given_day + " 083000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(given_day + " 151500", '%Y%m%d %H%M%S'): while datetime.strptime(given_day + " 083000", '%Y%m%d %H%M%S') < datetime.now() < datetime.strptime(given_day + " 151500", '%Y%m%d %H%M%S'):
second = datetime.now().strftime('%Y%m%d %H%M%S') second = datetime.now().strftime('%Y%m%d %H%M%S')
@@ -941,23 +944,25 @@ class HTS:
# 분석을 통해서 볼린저밴드 상/하단을 계산한다. # 분석을 통해서 볼린저밴드 상/하단을 계산한다.
data, upper, lower = self.analyze(result) data, upper, lower = self.analyze(result)
avg60_2 = data['avg60'][len(data['avg60']) - 2]
avg60_1 = data['avg60'][len(data['avg60']) - 1]
final_price = data["Close"][len(data["Close"])- 1]
# 사야 할 시점/가격과 팔아야 할 시점/가격을 체크한다. # 사야 할 시점/가격과 팔아야 할 시점/가격을 체크한다.
bs_buy_price, bs_sell_price = self.checkTransaction_Realtime(data, upper, lower) bs_buy_price, bs_sell_price = self.checkTransaction_Realtime(data, upper, lower)
if bs_buy_price > 0: if bs_buy_price > 0:
if PREVIOUS_PRICE > 0: if PREVIOUS_PRICE > 0:
if PREVIOUS_PRICE > bs_buy_price: if PREVIOUS_PRICE > bs_buy_price:
if BUY_COUNT > 240: if BUY_COUNT > 340:
BUY_COUNT = 340
if BUY_COUNT <= 240:
BUY_COUNT = 240 BUY_COUNT = 240
if BUY_COUNT <= 140:
BUY_COUNT = 140
BUY_COUNT += 10 BUY_COUNT += 10
elif PREVIOUS_PRICE < bs_buy_price: elif PREVIOUS_PRICE < bs_buy_price:
if BUY_COUNT > 250: if BUY_COUNT > 350:
BUY_COUNT = 360
if BUY_COUNT <= 250:
BUY_COUNT = 260 BUY_COUNT = 260
if BUY_COUNT <= 150:
BUY_COUNT = 160
BUY_COUNT -= 10 BUY_COUNT -= 10
PREVIOUS_PRICE = bs_buy_price PREVIOUS_PRICE = bs_buy_price
@@ -985,16 +990,15 @@ class HTS:
# 60일 선이 꺾여서 하락 중일 경우만 바로 매도를 한다. # 60일 선이 꺾여서 하락 중일 경우만 바로 매도를 한다.
size = len(data["avg60"]) if ((avg60_1 != 0 and avg60_2 != 0) and avg60_2 > avg60_1):
if data["avg60"][size-2] > data["avg60"][size-1]:
# 만약 잔고가 있으면 장부가보다 5원 높게 매도한다. # 만약 잔고가 있으면 장부가보다 5원 높게 매도한다.
jangoDic = self.requstJango() jangoDic = self.requstJango()
if jangoDic and len(jangoDic.keys()) > 0: if jangoDic and len(jangoDic.keys()) > 0:
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:
if data["Close"][size-1] > jangoDic[code]['장부가'] + 5: if final_price > jangoDic[code]['장부가'] + 5:
self.requestOrder("1", stock_code, jangoDic[code]['매도가능'], data["Close"][size-1]) 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