This commit is contained in:
dsyoon
2022-01-23 13:30:55 +09:00
parent 3d73089c0f
commit 02c7ae73e9
7 changed files with 395 additions and 675 deletions

View File

@@ -1,661 +0,0 @@
import win32com.client
import time
import os
from datetime import datetime
import pandas as pd
from OrderType import OrderType
from OrderItem import OrderItem
from BuySellChecker import BuySellChecker
from OrderChecker import OrderChecker
class DataCollector_252670:
objCpCybos = None
objCpCodeMgr = None
buySellChecker = None
stock_code = None
def __init__(self, stock_code):
self.buySellChecker = BuySellChecker()
self.stock_code = stock_code
#self.connect()
return
def connect(self):
# 연결 여부 체크
self.objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = self.objCpCybos.IsConnect
if (bConnect == 0):
print("PLUS가 정상적으로 연결되지 않음. ")
exit()
return
def all_stocks(self):
# 종목코드 리스트 구하기
self.objCpCodeMgr = win32com.client.Dispatch("CpUtil.CpCodeMgr")
codeList = self.objCpCodeMgr.GetStockListByMarket(1) # 거래소
codeList2 = self.objCpCodeMgr.GetStockListByMarket(2) # 코스닥
print("거래소 종목코드", len(codeList))
for i, code in enumerate(codeList):
secondCode = self.objCpCodeMgr.GetStockSectionKind(code)
name = self.objCpCodeMgr.CodeToName(code)
stdPrice = self.objCpCodeMgr.GetStockStdPrice(code)
print(i, code, secondCode, stdPrice, name)
print("코스닥 종목코드", len(codeList2))
for i, code in enumerate(codeList2):
secondCode = self.objCpCodeMgr.GetStockSectionKind(code)
name = self.objCpCodeMgr.CodeToName(code)
stdPrice = self.objCpCodeMgr.GetStockStdPrice(code)
print(i, code, secondCode, stdPrice, name)
print("거래소 + 코스닥 종목코드 ", len(codeList) + len(codeList2))
return
# 차트 데이터 구하기
def getChartData(self, stock_code):
# 차트 객체 구하기
objStockChart = win32com.client.Dispatch("CpSysDib.StockChart")
objStockChart.SetInputValue(0, 'A'+stock_code) # 종목 코드 - 삼성전자
objStockChart.SetInputValue(1, ord('2')) # 개수로 조회
objStockChart.SetInputValue(4, 100) # 최근 100일 치
objStockChart.SetInputValue(5, [0, 2, 3, 4, 5, 8]) # 날짜,시가,고가,저가,종가,거래량
objStockChart.SetInputValue(6, ord('D')) # '차트 주가 - 일간 차트 요청
objStockChart.SetInputValue(9, ord('1')) # 수정주가 사용
objStockChart.BlockRequest()
len = objStockChart.GetHeaderValue(3)
print("날짜", "시가", "고가", "저가", "종가", "거래량")
print("==============================================-")
for i in range(len):
day = objStockChart.GetDataValue(0, i)
open = objStockChart.GetDataValue(1, i)
high = objStockChart.GetDataValue(2, i)
low = objStockChart.GetDataValue(3, i)
close = objStockChart.GetDataValue(4, i)
vol = objStockChart.GetDataValue(5, i)
print(day, open, high, low, close, vol)
return
# 주식 현재가 조회
def currentStock(self, stock_code):
# 현재가 객체 구하기
self.objStockMst = win32com.client.Dispatch("DsCbo1.StockMst")
self.objStockMst.SetInputValue(0, 'A'+stock_code) # 종목 코드 - 삼성전자
self.objStockMst.BlockRequest()
# 현재가 통신 및 통신 에러 처리
rqStatus = self.objStockMst.GetDibStatus()
rqRet = self.objStockMst.GetDibMsg1()
print("통신상태", rqStatus, rqRet)
if rqStatus != 0:
exit()
# 현재가 정보 조회
code = self.objStockMst.GetHeaderValue(0) # 종목코드
name = self.objStockMst.GetHeaderValue(1) # 종목명
time = self.objStockMst.GetHeaderValue(4) # 시간
cprice = self.objStockMst.GetHeaderValue(11) # 종가
diff = self.objStockMst.GetHeaderValue(12) # 대비
open = self.objStockMst.GetHeaderValue(13) # 시가
high = self.objStockMst.GetHeaderValue(14) # 고가
low = self.objStockMst.GetHeaderValue(15) # 저가
offer = self.objStockMst.GetHeaderValue(16) # 매도호가
bid = self.objStockMst.GetHeaderValue(17) # 매수호가
vol = self.objStockMst.GetHeaderValue(18) # 거래량
vol_value = self.objStockMst.GetHeaderValue(19) # 거래대금
# 예상 체결관련 정보
exFlag = self.objStockMst.GetHeaderValue(58) # 예상체결가 구분 플래그
exPrice = self.objStockMst.GetHeaderValue(55) # 예상체결가
exDiff = self.objStockMst.GetHeaderValue(56) # 예상체결가 전일대비
exVol = self.objStockMst.GetHeaderValue(57) # 예상체결수량
print("코드", code)
print("이름", name)
print("시간", time)
print("종가", cprice)
print("대비", diff)
print("시가", open)
print("고가", high)
print("저가", low)
print("매도호가", offer)
print("매수호가", bid)
print("거래량", vol)
print("거래대금", vol_value)
if (exFlag == ord('0')):
print("장 구분값: 동시호가와 장중 이외의 시간")
elif (exFlag == ord('1')):
print("장 구분값: 동시호가 시간")
elif (exFlag == ord('2')):
print("장 구분값: 장중 또는 장종료")
print("예상체결가 대비 수량")
print("예상체결가", exPrice)
print("예상체결가 대비", exDiff)
print("예상체결수량", exVol)
return
# 주식 현금 매수주문
def requestOrder(self, type, stock_code, count, price):
# type = 2: buy, type=1: sell
# 주문 초기화
objTrade = win32com.client.Dispatch("CpTrade.CpTdUtil")
initCheck = objTrade.TradeInit(0)
if (initCheck != 0):
print("주문 초기화 실패")
exit()
# 주식 매수 주문
acc = objTrade.AccountNumber[0] # 계좌번호
accFlag = objTrade.GoodsList(acc, 1) # 주식상품 구분
# acc = "782446178"
# accFlag[0] = "01"
objStockOrder = win32com.client.Dispatch("CpTrade.CpTd0311")
objStockOrder.SetInputValue(0, type.value) # 1: 매도, 2: 매수
objStockOrder.SetInputValue(1, acc) # 계좌번호
objStockOrder.SetInputValue(2, accFlag[0]) # 상품구분 - 주식 상품 중 첫번째
objStockOrder.SetInputValue(3, "A"+stock_code) # 종목코드
objStockOrder.SetInputValue(4, count) # 매수수량 count주
objStockOrder.SetInputValue(5, price) # 주문단가 - price 원
objStockOrder.SetInputValue(7, "0") # 주문 조건 구분 코드, 0: 기본 1: IOC 2:FOK
objStockOrder.SetInputValue(8, "01") # 주문호가 구분코드 - 01: 보통
# 매수 주문 요청
nRet = objStockOrder.BlockRequest()
if (nRet != 0):
print("order error", nRet)
return None
rqStatus = objStockOrder.GetDibStatus()
rqRet = objStockOrder.GetDibMsg1()
print("통신상태", rqStatus, rqRet)
if rqStatus != 0:
return None
orderNum = objStockOrder.GetHeaderValue(0)
if (type == "1"):
print ("(SELL", count, price, ")")
else:
print ("(BUY", count, price, ")")
return orderNum
# 계좌 잔고 확인
def requstJango(self):
jangoDic = {}
objTrade = win32com.client.Dispatch("CpTrade.CpTdUtil")
initCheck = objTrade.TradeInit(0)
if (initCheck != 0):
print("주문 초기화 실패")
exit()
# 주식 매수 주문
acc = objTrade.AccountNumber[0] # 계좌번호
accFlag = objTrade.GoodsList(acc, 1) # 주식상품 구분
objRq = win32com.client.Dispatch("CpTrade.CpTd6033")
objRq.SetInputValue(0, acc) # 계좌번호
objRq.SetInputValue(1, accFlag[0]) # 상품구분 - 주식 상품 중 첫번째
objRq.SetInputValue(2, 50) # 요청 건수(최대 50)
dicflag1 = {ord(' '): '현금',
ord('Y'): '융자',
ord('D'): '대주',
ord('B'): '담보',
ord('M'): '매입담보',
ord('P'): '플러스론',
ord('I'): '자기융자',
}
while True:
objRq.BlockRequest()
# 통신 및 통신 에러 처리
rqStatus = objRq.GetDibStatus()
rqRet = objRq.GetDibMsg1()
#print("통신상태", rqStatus, rqRet)
if rqStatus != 0:
return False
cnt = objRq.GetHeaderValue(7)
if cnt > 3:
return jangoDic
for i in range(cnt):
item = {}
code = objRq.GetDataValue(12, i) # 종목코드
item['종목코드'] = code
item['종목명'] = objRq.GetDataValue(0, i) # 종목명
item['대출일'] = objRq.GetDataValue(2, i) # 대출일
item['잔고수량'] = objRq.GetDataValue(7, i) # 체결잔고수량
item['매도가능'] = objRq.GetDataValue(15, i)
item['장부가'] = objRq.GetDataValue(17, i) # 체결장부단가
# item['평가금액'] = self.objRq.GetDataValue(9, i) # 평가금액(천원미만은 절사 됨)
# item['평가손익'] = self.objRq.GetDataValue(11, i) # 평가손익(천원미만은 절사 됨)
# 매입금액 = 장부가 * 잔고수량
item['매입금액'] = item['장부가'] * item['잔고수량']
item['현재가'] = 0
item['대비'] = 0
item['거래량'] = 0
# 잔고 추가
# key = (code, item['현금신용'],item['대출일'] )
key = code
jangoDic[key] = item
if len(jangoDic) >= 3: # 최대 3 종목만,
break
if len(jangoDic) >= 3:
break
if (objRq.Continue == False):
break
check = False
for item in jangoDic:
if item:
check = True
break
if not check:
return None
return jangoDic
# 예약 주문 내역 조회 및 미체결 리스트 구하기
def requestOrderList(self):
# type = 2: buy, type=1: sell
orderList = []
# 주문 초기화
objTrade = win32com.client.Dispatch("CpTrade.CpTdUtil")
initCheck = objTrade.TradeInit(0)
if (initCheck != 0):
print("주문 초기화 실패")
exit()
# 주식 매수 주문
acc = objTrade.AccountNumber[0] # 계좌번호
accFlag = objTrade.GoodsList(acc, 1) # 주식상품 구분
objResult = win32com.client.Dispatch("CpTrade.CpTd5339")
objResult.SetInputValue(0, acc) # 계좌번호
objResult.SetInputValue(1, accFlag[0]) # 상품구분 - 주식 상품 중 첫번째
objResult.SetInputValue(4, "0") # 전체
objResult.SetInputValue(5, "1") # 정렬 기준 - 역순
objResult.SetInputValue(6, "0") # 전체
objResult.SetInputValue(7, 20) # 요청개수 - 최대 20개
while True:
ret = objResult.BlockRequest()
if objResult.GetDibStatus() != 0:
print("통신상태", objResult.GetDibStatus(), objResult.GetDibMsg1())
return False
if (ret == 2 or ret == 3):
print("통신 오류", ret)
return False;
# 통신 초과 요청 방지에 의한 요류 인 경우
while (ret == 4): # 연속 주문 오류 임. 이 경우는 남은 시간동안 반드시 대기해야 함.
time.sleep(1)
ret = objResult.BlockRequest()
# 수신 개수
cnt = objResult.GetHeaderValue(5)
print("[Cp5339] 수신 개수 ", cnt)
if cnt == 0:
break
for i in range(cnt):
item = OrderItem()
item.orderNum = objResult.GetDataValue(1, i)
item.orderPrev = objResult.GetDataValue(2, i)
item.code = objResult.GetDataValue(3, i) # 종목코드
item.name = objResult.GetDataValue(4, i) # 종목명
item.orderDesc = objResult.GetDataValue(5, i) # 주문구분내용
item.amount = objResult.GetDataValue(6, i) # 주문수량
item.price = objResult.GetDataValue(7, i) # 주문단가
item.ContAmount = objResult.GetDataValue(8, i) # 체결수량
item.credit = objResult.GetDataValue(9, i) # 신용구분
item.modAvali = objResult.GetDataValue(11, i) # 정정취소 가능수량
item.buysell = objResult.GetDataValue(13, i) # 매매구분코드
item.creditdate = objResult.GetDataValue(17, i) # 대출일
item.orderFlagDesc = objResult.GetDataValue(19, i) # 주문호가구분코드내용
item.orderFlag = objResult.GetDataValue(21, i) # 주문호가구분코드
orderList.append(item)
# 연속 처리 체크 - 다음 데이터가 없으면 중지
if objResult.Continue == False:
print("[Cp5339] 연속 조회 여부: 다음 데이터가 없음")
break
return orderList
# 미체결 취소하기
def cancelOrderList(self, orderList):
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) # 주식상품 구분
objCancelOrder = win32com.client.Dispatch("CpTrade.CpTd0314") # 취소
onums = []
codes = []
amounts = []
for item in orderList:
onums.append(item.orderNum)
codes.append(item.code)
amounts.append(item.amount)
for i in range(len(onums)):
ordernum = onums[i]
code = codes[i]
amount = amounts[i]
objCancelOrder.SetInputValue(1, ordernum) # 원주문 번호 - 정정을 하려는 주문 번호
objCancelOrder.SetInputValue(2, acc) # 상품구분 - 주식 상품 중 첫번째
objCancelOrder.SetInputValue(3, accFlag[0]) # 상품구분 - 주식 상품 중 첫번째
objCancelOrder.SetInputValue(4, code) # 종목코드
objCancelOrder.SetInputValue(5, amount) # 정정 수량, 0 이면 잔량 취소임
# 취소주문 요청
ret = objCancelOrder.BlockRequest()
print("[CpRPOrder/BlockRequestCancel] 주문결과", objCancelOrder.GetDibStatus(), objCancelOrder.GetDibMsg1())
if objCancelOrder.GetDibStatus() != 0:
break
return
# 주식 현재가 조회
def writeStockData(self, stock_codes, given_day):
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = objCpCybos.IsConnect
if (bConnect == 0):
print("PLUS가 정상적으로 연결되지 않음. ")
exit()
# 차트 객체 구하기
objStockChart = win32com.client.Dispatch("CpSysDib.StockChart")
for stock_code in stock_codes:
outfp = open("./data/"+stock_code+"_"+given_day+".csv", mode="w", encoding="utf-8")
objStockChart.SetInputValue(0, 'A' + stock_code) # 종목 코드
objStockChart.SetInputValue(1, ord('1')) # 1: 기간으로 조회, 2: 개수로 조회
objStockChart.SetInputValue(2, given_day) # 기간 조회 시, 시작일
objStockChart.SetInputValue(3, given_day) # 기간 조회 시, 종료일
objStockChart.SetInputValue(4, 400) # 조회 시 가져오는 Line 개수
objStockChart.SetInputValue(5, [0, 1, 2, 3, 4, 5, 8]) # 날짜,시간,시가,고가,저가,종가,거래량
objStockChart.SetInputValue(6, ord('m')) # '차트 주가 - 월(M), 주(W), 일(D), 시(H), 분(m), 초(S) 차트 요청
objStockChart.SetInputValue(7, 1)
objStockChart.SetInputValue(9, ord('1')) # 수정주가 사용
objStockChart.BlockRequest()
size = objStockChart.GetHeaderValue(3)
outfp.write("%s,%s,%s,%s,%s,%s,%s\n" % ("날짜", "시간", "시가", "고가", "저가", "종가", "거래량"))
for i in range(size - 1, -1, -1):
day = objStockChart.GetDataValue(0, i)
time = objStockChart.GetDataValue(1, i)
start = objStockChart.GetDataValue(2, i)
high = objStockChart.GetDataValue(3, i)
low = objStockChart.GetDataValue(4, i)
close = objStockChart.GetDataValue(5, i)
vol = objStockChart.GetDataValue(6, i)
outfp.write("%d,%s,%d,%d,%d,%d,%d\n" % (day, str(time).zfill(4), start, high, low, close, vol))
outfp.close()
return
def write(self, day, result):
#날짜,시간,시가,고가,저가,종가,거래량
#20210909,900,2070,2070,2070,2070,0
outFp = open(day+".csv", mode="w", encoding="UTF-8")
outFp.write("날짜,시간,시가,고가,저가,종가,거래량\n")
for i in range(len(result["time"])):
outFp.write("%s,%s,%s,%s,%s,%s,%s\n"%(
result["time"][i].strftime('%Y%m%d'),
result["time"][i].strftime('%H%M'),
result["open"][i],
result["high"][i],
result["low"][i],
result["close"][i],
result["vol"][i]))
outFp.close()
return
# 주식 현재가 조회
def getRealTime(self, stock_code, given_day, result):
int_given_day = int(given_day)
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = objCpCybos.IsConnect
if (bConnect == 0):
print("PLUS가 정상적으로 연결되지 않음. ")
exit()
# 차트 객체 구하기
objStockChart = win32com.client.Dispatch("CpSysDib.StockChart")
objStockChart.SetInputValue(0, 'A'+stock_code) # 종목 코드
objStockChart.SetInputValue(1, ord('1')) # 1: 기간으로 조회, 2: 개수로 조회
objStockChart.SetInputValue(2, given_day) # 기간 조회 시, 시작일
objStockChart.SetInputValue(3, given_day) # 기간 조회 시, 종료일
objStockChart.SetInputValue(4, 400) # 조회 시 가져오는 Line 개수
objStockChart.SetInputValue(5, [0, 1, 2, 3, 4, 5, 8]) # 날짜,시간,시가,고가,저가,종가,거래량
objStockChart.SetInputValue(6, ord('m')) # '차트 주가 - 월(M), 주(W), 일(D), 시(H), 분(m), 초(S) 차트 요청
objStockChart.SetInputValue(7, 1)
objStockChart.SetInputValue(9, ord('1')) # 수정주가 사용
objStockChart.BlockRequest()
size = objStockChart.GetHeaderValue(3)
#print("날짜", "시간", "시가", "고가", "저가", "종가", "거래량")
start_time = datetime.strptime(given_day + " 090000", '%Y%m%d %H%M%S')
for i in range(size-1, -1, -1):
int_day = objStockChart.GetDataValue(0, i)
int_time = objStockChart.GetDataValue(1, i)
if int_day < int_given_day:
continue
time = datetime.strptime(str(int_day)+" "+str(int_time).zfill(4)+"00", '%Y%m%d %H%M%S')
if time < start_time:
continue
open = objStockChart.GetDataValue(2, i)
close = objStockChart.GetDataValue(5, i)
high = objStockChart.GetDataValue(3, i)
low = objStockChart.GetDataValue(4, i)
vol = objStockChart.GetDataValue(6, i)
if len(result["check"]) == 0:
result["check"].add(start_time)
result["time"].append(start_time)
result["open"].append(open)
result["close"].append(open)
result["high"].append(open)
result["low"].append(open)
result["vol"].append(0)
if time not in result["check"]:
result["check"].add(time)
result["time"].append(time)
result["open"].append(open)
result["close"].append(close)
result["high"].append(high)
result["low"].append(low)
result["vol"].append(vol)
return
def checkTransaction(self, data):
size = len(data["close"])
bsLine = {}
bsLine['buy'] = [-1 for i in range(size)]
bsLine['weight'] = [-1 for i in range(size)]
bsLine['sell'] = [-1 for i in range(size)]
i = size - 1
if i < 5:
return -1, -1, -1
buy, weight, sell = self.buySellChecker.getPriceAndWeight1(data, i)
return buy, weight, sell
def getSellingPrice(self, final_price):
# 만약 잔고가 있으면 장부가보다 5원 높게 매도한다.
jangoDic = self.requstJango()
if jangoDic and len(jangoDic.keys()) > 0:
for code in jangoDic:
if jangoDic[code]['매도가능'] > 0:
if final_price >= jangoDic[code]['장부가'] + 5:
return jangoDic[code]['매도가능'], final_price
else:
# 장부가 가격의 마지막 자리를 0으로 만든다. (2090 -> 2090, 2092 -> 2090, 2098 -> 2090)
sell_price = int(jangoDic[code]['장부가'] / 10) * 10
# 장부가의 마지막 자리수를 가져온다.
last_number = int(jangoDic[code]['장부가']) % 10
if last_number in [0, 1, 2, 3]:
# 장부가의 마지막 자리수가 0,1,2,3 이라면 (2090, 2091, 2092 -> 2095 에 매도)
return jangoDic[code]['매도가능'], sell_price + 5
elif last_number in [4, 5, 6, 7]:
# 장부가의 마지막 자리수가 4,5,6,7 이라면 (2093, 2094, 2095, 2096 -> 2100 에 매도)
return jangoDic[code]['매도가능'], sell_price + 10
else:
# 장부가의 마지막 자리수가 8,9 라면 (2098, 2099 -> 2105 에 매도)
return jangoDic[code]['매도가능'], sell_price + 15
return 0, 0
def buyRealTime(self, GIVEN_DAY):
orderChecker = OrderChecker(self.stock_code)
BASE_COUNT = 100
timecheckList = pd.read_csv("timecheck.csv").values.tolist()
timecheck = {GIVEN_DAY + " " + str(second).zfill(6):False for second, check in timecheckList}
result = {"check": set(),
"time": [],
"open": [],
"close": [],
"high": [],
"low": [],
"vol": []}
final_price = 0
print ("START...")
THIS_TIME = datetime.now()
while datetime.strptime(GIVEN_DAY + " 070000", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(GIVEN_DAY + " 15200", '%Y%m%d %H%M%S'):
if datetime.strptime(GIVEN_DAY + " 090100", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(GIVEN_DAY + " 151500", '%Y%m%d %H%M%S'):
if THIS_TIME.strftime('%Y%m%d %H%M%S') in timecheck and not timecheck[THIS_TIME.strftime('%Y%m%d %H%M%S')]:
# 데이터를 가지고 온다.
self.getRealTime(self.stock_code, GIVEN_DAY, result)
# 분석을 통해서 볼린저밴드 상/하단을 계산한다.
data = self.buySellChecker.analyze(result)
# 사야 할 시점/가격과 팔아야 할 시점/가격을 체크한다.
bs_buy_price, bs_weight, bs_sell_price = self.checkTransaction(data)
data_size = len(data["close"])
final_price = data["close"][data_size-1]
if bs_buy_price > 0:
# 기본 100 주에 가중치를 추가해서 매수한다.
#BUY_COUNT = int(BASE_COUNT * bs_weight)
BUY_COUNT = int(BASE_COUNT * 1)
# 매수를 주문한다.
orderNum = self.requestOrder(OrderType.buy, self.stock_code, BUY_COUNT , bs_buy_price)
# 미체결 기록을 가져온다.
ORDER_LIST = self.requestOrderList()
# 매수 주문을 기록한다.
orderListToCancel = orderChecker.add(self.stock_code, OrderType.buy, orderNum, BUY_COUNT, bs_buy_price, ORDER_LIST)
# 두 시간 이전 미체결을 모두 취소한다.
self.cancelOrderList(orderListToCancel)
# 로그 출력
print("BUY", THIS_TIME.strftime('%Y%m%d %H%M%S'), BUY_COUNT, bs_buy_price, len(orderListToCancel), len(ORDER_LIST))
if bs_sell_price > 0:
# 미체결 기록을 가져온다.
ORDER_LIST = self.requestOrderList()
# 매도 주문을 기록을 가져온다.
orderListToCancel = orderChecker.remove(self.stock_code, OrderType.sell, ORDER_LIST)
# 매도 미체결을 모두 취소한다.
self.cancelOrderList(orderListToCancel)
# 매도 가격을 가져온다.
selling_count, selling_price = self.getSellingPrice(final_price)
# 분석되 가격으로 매도 요청한다.
if selling_count != 0 and selling_price != 0:
# 매도를 요청한다.
orderNum = self.requestOrder(OrderType.sell, self.stock_code, selling_count, selling_price)
# 로그 출력
print("SELL", THIS_TIME.strftime('%Y%m%d %H%M%S'), selling_count, selling_price, len(orderListToCancel), len(ORDER_LIST))
# 로그 출력
print("TIMECHECK", THIS_TIME, final_price, data["low"][data_size-1], data["slow_k"][data_size-1], data["slow_d"][data_size-1])
timecheck[THIS_TIME] = True
if datetime.strptime(GIVEN_DAY + " 151530", '%Y%m%d %H%M%S') < THIS_TIME:
####
# 손해 보지 않는 가격에 매도한다.
####
# 주문 리스트를 가져온다.
orderList = self.requestOrderList()
# 15:10:00 이후라면 모든 미체결 취소한다.
self.cancelOrderList(orderList)
# 매도 가격을 가져온다.
selling_count, selling_price = self.getSellingPrice(final_price)
# 분석되 가격으로 매도 요청한다.
if selling_count != 0 and selling_price != 0:
orderNum = self.requestOrder(OrderType.sell, self.stock_code, selling_count, selling_price)
# 로그 출력
print("SELL", THIS_TIME, selling_count, selling_price)
break
time.sleep(0.9)
THIS_TIME = datetime.now()
return
if __name__ == "__main__":
today = datetime.today()
PROJECT_HOME = os.path.join(os.path.dirname(os.path.join(os.path.dirname(__file__))))
RESOURCE_DIR = PROJECT_HOME + "/resources/analysis/"+today.strftime("%Y%m%d")
# KODEX 인버스 * 2
stock_code = "252670"
hts = DataCollector_252670(stock_code)
given_day = datetime.today().strftime('%Y%m%d')
hts.writeStockData(stock_codes, "20211025")
print ("done...")

View File

@@ -4,11 +4,11 @@ import os
from datetime import datetime
import pandas as pd
from OrderType import OrderType
from OrderItem import OrderItem
from hts.OrderType import OrderType
from hts.OrderItem import OrderItem
from BuySellChecker import BuySellChecker
from OrderChecker import OrderChecker
from hts.BuySellChecker import BuySellChecker
from hts.OrderChecker import OrderChecker
class HTS_122630:

View File

@@ -4,11 +4,11 @@ import os
from datetime import datetime
import pandas as pd
from OrderType import OrderType
from OrderItem import OrderItem
from hts.OrderType import OrderType
from hts.OrderItem import OrderItem
from BuySellChecker import BuySellChecker
from OrderChecker import OrderChecker
from hts.BuySellChecker import BuySellChecker
from hts.OrderChecker import OrderChecker
class HTS_252670:
@@ -549,7 +549,7 @@ class HTS_252670:
def buyRealTime(self, GIVEN_DAY):
orderChecker = OrderChecker(self.stock_code)
BASE_COUNT = 200
BASE_COUNT = 150
timecheckList = pd.read_csv("timecheck.csv").values.tolist()
timecheck = {GIVEN_DAY + " " + str(second).zfill(6):False for second, check in timecheckList}
@@ -562,7 +562,6 @@ class HTS_252670:
"low": [],
"vol": []}
final_price = 0
print ("START...")
THIS_TIME = datetime.now()
while datetime.strptime(GIVEN_DAY + " 070000", '%Y%m%d %H%M%S') < THIS_TIME < datetime.strptime(GIVEN_DAY + " 15200", '%Y%m%d %H%M%S'):
@@ -657,7 +656,7 @@ if __name__ == "__main__":
hts = HTS_252670(stock_code)
given_day = datetime.today().strftime('%Y%m%d')
#hts.writeStockData(stock_code, "20211026")
#hts.writeStockData(stock_code, "20220121")
hts.buyRealTime(given_day)
print ("done...")

View File

@@ -2,7 +2,7 @@ import os
import pandas as pd
from datetime import datetime, timedelta
from OrderType import OrderType
from hts.OrderType import OrderType
class OrderChecker:

View File

@@ -1,4 +1,4 @@
from OrderType import OrderType
from hts.OrderType import OrderType
class OrderItem:

View File

@@ -4,7 +4,7 @@ import pandas as pd
import plotly.graph_objects as go
from plotly import subplots
from BuySellChecker import BuySellChecker
from hts.BuySellChecker import BuySellChecker
class Simulation:

View File

@@ -0,0 +1,382 @@
날짜,시간,시가,고가,저가,종가,거래량
20220121,0901,2365,2365,2350,2355,7157839
20220121,0902,2355,2355,2345,2355,10657768
20220121,0903,2355,2365,2350,2365,3223803
20220121,0904,2365,2370,2360,2365,1698290
20220121,0905,2370,2370,2355,2360,3088063
20220121,0906,2355,2365,2350,2350,1559585
20220121,0907,2350,2365,2350,2360,1839441
20220121,0908,2355,2365,2350,2360,1949487
20220121,0909,2360,2365,2355,2360,610466
20220121,0910,2360,2365,2355,2365,762152
20220121,0911,2365,2365,2360,2360,177972
20220121,0912,2360,2365,2355,2360,515454
20220121,0913,2355,2360,2350,2360,2065562
20220121,0914,2355,2360,2350,2355,1255635
20220121,0915,2360,2365,2355,2360,2023785
20220121,0916,2360,2365,2355,2355,421890
20220121,0917,2355,2360,2350,2355,2750720
20220121,0918,2355,2360,2350,2355,164549
20220121,0919,2360,2360,2350,2355,527099
20220121,0920,2350,2355,2350,2350,188212
20220121,0921,2355,2365,2350,2360,3110284
20220121,0922,2360,2365,2360,2365,938483
20220121,0923,2365,2370,2360,2365,2157049
20220121,0924,2365,2365,2355,2355,675990
20220121,0925,2355,2360,2355,2355,60609
20220121,0926,2355,2360,2350,2355,1448847
20220121,0927,2355,2360,2350,2355,200716
20220121,0928,2350,2360,2350,2355,2474704
20220121,0929,2355,2360,2350,2355,451892
20220121,0930,2355,2355,2350,2350,891460
20220121,0931,2355,2355,2350,2355,44351
20220121,0932,2350,2360,2350,2360,1373961
20220121,0933,2360,2360,2350,2355,233723
20220121,0934,2355,2360,2350,2360,366552
20220121,0935,2360,2365,2355,2360,1773251
20220121,0936,2355,2365,2355,2360,513007
20220121,0937,2360,2365,2355,2360,211536
20220121,0938,2360,2360,2355,2360,11456
20220121,0939,2360,2360,2350,2350,2382134
20220121,0940,2355,2360,2350,2350,288958
20220121,0941,2355,2360,2350,2355,426044
20220121,0942,2355,2360,2350,2360,786245
20220121,0943,2360,2365,2355,2360,1526142
20220121,0944,2360,2365,2355,2365,283098
20220121,0945,2365,2365,2360,2360,328830
20220121,0946,2360,2365,2355,2360,355630
20220121,0947,2360,2365,2355,2360,314608
20220121,0948,2355,2365,2355,2360,204002
20220121,0949,2365,2365,2355,2360,41109
20220121,0950,2360,2360,2350,2355,1557085
20220121,0951,2355,2360,2350,2355,136003
20220121,0952,2355,2360,2350,2360,795947
20220121,0953,2355,2360,2350,2350,122806
20220121,0954,2355,2355,2350,2355,52477
20220121,0955,2355,2360,2350,2360,345500
20220121,0956,2355,2360,2355,2355,25882
20220121,0957,2355,2360,2355,2360,1663
20220121,0958,2360,2360,2355,2360,1757
20220121,0959,2355,2360,2355,2355,8406
20220121,1000,2355,2365,2355,2365,2002693
20220121,1001,2360,2365,2355,2365,256831
20220121,1002,2360,2365,2360,2360,19041
20220121,1003,2365,2370,2360,2370,2498364
20220121,1004,2370,2375,2365,2370,3957018
20220121,1005,2370,2380,2370,2380,2092465
20220121,1006,2380,2380,2375,2380,650433
20220121,1007,2380,2385,2375,2380,5221012
20220121,1008,2380,2385,2375,2380,1802208
20220121,1009,2375,2385,2375,2385,994582
20220121,1010,2385,2390,2380,2385,2740849
20220121,1011,2385,2390,2385,2390,1730674
20220121,1012,2390,2395,2385,2395,1615503
20220121,1013,2390,2395,2390,2390,1202272
20220121,1014,2395,2395,2380,2385,3719629
20220121,1015,2385,2390,2380,2380,1433682
20220121,1016,2380,2385,2380,2385,100749
20220121,1017,2380,2385,2380,2380,295964
20220121,1018,2385,2390,2380,2385,1620377
20220121,1019,2385,2390,2380,2390,206977
20220121,1020,2390,2395,2385,2390,1675550
20220121,1021,2390,2395,2385,2390,1630500
20220121,1022,2385,2390,2385,2390,1186940
20220121,1023,2385,2390,2385,2385,38757
20220121,1024,2385,2390,2380,2380,670327
20220121,1025,2385,2390,2380,2380,429444
20220121,1026,2385,2385,2380,2380,127395
20220121,1027,2385,2385,2380,2380,503319
20220121,1028,2380,2385,2375,2375,1545364
20220121,1029,2375,2380,2370,2375,1035922
20220121,1030,2375,2375,2365,2365,1410029
20220121,1031,2370,2370,2365,2370,835099
20220121,1032,2370,2370,2365,2365,440953
20220121,1033,2365,2375,2365,2370,415844
20220121,1034,2375,2375,2365,2365,1049876
20220121,1035,2370,2370,2365,2365,65071
20220121,1036,2365,2375,2365,2370,106146
20220121,1037,2375,2375,2365,2375,899564
20220121,1038,2375,2375,2365,2370,166405
20220121,1039,2370,2375,2365,2370,57188
20220121,1040,2365,2375,2365,2375,488728
20220121,1041,2375,2375,2365,2370,122123
20220121,1042,2370,2375,2365,2370,803400
20220121,1043,2370,2375,2365,2370,961053
20220121,1044,2375,2380,2365,2375,1612242
20220121,1045,2370,2380,2370,2375,694307
20220121,1046,2375,2380,2370,2380,348308
20220121,1047,2375,2385,2375,2380,664803
20220121,1048,2380,2385,2375,2380,359407
20220121,1049,2375,2385,2375,2380,1390013
20220121,1050,2375,2385,2375,2385,215188
20220121,1051,2385,2385,2375,2380,540065
20220121,1052,2380,2385,2375,2380,123729
20220121,1053,2380,2385,2375,2380,42904
20220121,1054,2375,2380,2370,2370,345759
20220121,1055,2370,2375,2370,2370,427463
20220121,1056,2370,2375,2370,2375,369879
20220121,1057,2375,2375,2365,2370,242289
20220121,1058,2375,2375,2365,2365,268240
20220121,1059,2365,2375,2365,2370,179176
20220121,1100,2375,2375,2365,2370,312061
20220121,1101,2370,2370,2365,2365,111281
20220121,1102,2365,2370,2365,2370,72445
20220121,1103,2365,2370,2355,2355,3151172
20220121,1104,2355,2360,2355,2360,134216
20220121,1105,2360,2360,2355,2360,71744
20220121,1106,2355,2360,2350,2355,1520582
20220121,1107,2355,2355,2350,2355,429860
20220121,1108,2355,2360,2350,2355,1134237
20220121,1109,2355,2360,2350,2350,384784
20220121,1110,2350,2355,2350,2355,37812
20220121,1111,2355,2360,2350,2360,208739
20220121,1112,2355,2360,2355,2360,441857
20220121,1113,2355,2360,2350,2355,1596520
20220121,1114,2360,2360,2355,2360,148380
20220121,1115,2360,2360,2350,2350,310488
20220121,1116,2355,2360,2350,2360,437544
20220121,1117,2360,2360,2355,2360,15803
20220121,1118,2360,2360,2350,2355,480696
20220121,1119,2360,2360,2355,2355,21710
20220121,1120,2355,2360,2355,2360,874342
20220121,1121,2355,2365,2355,2360,208257
20220121,1122,2355,2365,2355,2360,130425
20220121,1123,2360,2365,2355,2360,516610
20220121,1124,2360,2365,2355,2365,69391
20220121,1125,2360,2365,2360,2360,40611
20220121,1126,2360,2365,2360,2360,83671
20220121,1127,2360,2365,2360,2360,12001
20220121,1128,2365,2365,2360,2365,1249523
20220121,1129,2365,2365,2360,2365,16462
20220121,1130,2360,2365,2360,2360,544
20220121,1131,2365,2370,2360,2365,1031897
20220121,1132,2370,2370,2365,2370,7978
20220121,1133,2370,2370,2360,2365,212054
20220121,1134,2370,2370,2365,2370,76212
20220121,1135,2365,2370,2365,2370,162061
20220121,1136,2370,2375,2365,2370,926385
20220121,1137,2370,2375,2370,2375,1256257
20220121,1138,2375,2375,2370,2370,20153
20220121,1139,2375,2375,2370,2375,25826
20220121,1140,2370,2375,2370,2370,107191
20220121,1141,2375,2375,2370,2375,41955
20220121,1142,2370,2375,2370,2370,62047
20220121,1143,2370,2375,2370,2370,158096
20220121,1144,2370,2380,2370,2375,1286713
20220121,1145,2370,2380,2370,2380,355053
20220121,1146,2380,2380,2375,2380,36042
20220121,1147,2380,2380,2375,2375,10308
20220121,1148,2380,2385,2375,2375,1094705
20220121,1149,2375,2380,2375,2380,195631
20220121,1150,2375,2380,2375,2375,71081
20220121,1151,2375,2380,2375,2375,17410
20220121,1152,2380,2380,2375,2375,64853
20220121,1153,2380,2380,2375,2380,104434
20220121,1154,2375,2380,2375,2375,277311
20220121,1155,2380,2385,2375,2385,274802
20220121,1156,2380,2385,2375,2385,1808892
20220121,1157,2380,2385,2380,2380,45911
20220121,1158,2385,2385,2375,2380,623025
20220121,1159,2380,2385,2375,2380,339410
20220121,1200,2380,2385,2375,2380,145008
20220121,1201,2380,2380,2375,2380,14744
20220121,1202,2380,2385,2375,2380,314513
20220121,1203,2380,2385,2375,2380,92963
20220121,1204,2380,2380,2375,2375,3254
20220121,1205,2375,2385,2375,2380,282381
20220121,1206,2380,2385,2375,2380,25568
20220121,1207,2380,2385,2380,2385,23642
20220121,1208,2380,2390,2380,2380,2227480
20220121,1209,2385,2385,2380,2380,36872
20220121,1210,2380,2385,2380,2385,17749
20220121,1211,2385,2390,2380,2380,421747
20220121,1212,2385,2390,2380,2390,144658
20220121,1213,2390,2390,2385,2385,124305
20220121,1214,2390,2390,2385,2390,41550
20220121,1215,2390,2390,2385,2385,172826
20220121,1216,2385,2390,2380,2380,449399
20220121,1217,2385,2390,2380,2385,345149
20220121,1218,2390,2390,2380,2385,269746
20220121,1219,2380,2390,2380,2385,1059049
20220121,1220,2385,2385,2380,2380,57734
20220121,1221,2385,2385,2380,2380,12403
20220121,1222,2385,2390,2380,2390,256247
20220121,1223,2385,2390,2380,2390,159346
20220121,1224,2385,2385,2380,2380,27338
20220121,1225,2380,2390,2380,2385,160049
20220121,1226,2390,2390,2380,2385,880841
20220121,1227,2385,2390,2385,2385,309461
20220121,1228,2385,2390,2385,2390,13723
20220121,1229,2385,2390,2385,2385,123544
20220121,1230,2385,2390,2385,2385,17546
20220121,1231,2390,2390,2385,2390,1295634
20220121,1232,2390,2390,2385,2385,56504
20220121,1233,2390,2390,2385,2390,17061
20220121,1234,2390,2395,2390,2395,3819376
20220121,1235,2395,2395,2385,2390,763103
20220121,1236,2390,2395,2385,2390,724181
20220121,1237,2395,2395,2390,2395,3154021
20220121,1238,2390,2395,2390,2395,64164
20220121,1239,2395,2395,2390,2395,17342
20220121,1240,2395,2395,2390,2395,75331
20220121,1241,2395,2395,2390,2390,202563
20220121,1242,2390,2395,2390,2390,220022
20220121,1243,2390,2395,2385,2385,380501
20220121,1244,2390,2395,2385,2390,603386
20220121,1245,2395,2395,2390,2390,42357
20220121,1246,2395,2395,2390,2390,62343
20220121,1247,2395,2395,2390,2390,62181
20220121,1248,2390,2395,2390,2390,610345
20220121,1249,2395,2395,2385,2385,435422
20220121,1250,2390,2395,2385,2395,406738
20220121,1251,2395,2395,2390,2395,29526
20220121,1252,2395,2395,2390,2390,38839
20220121,1253,2390,2395,2390,2395,24052
20220121,1254,2395,2395,2385,2390,194498
20220121,1255,2390,2390,2385,2390,84107
20220121,1256,2390,2395,2385,2385,347785
20220121,1257,2390,2395,2385,2390,185322
20220121,1258,2395,2395,2385,2385,66218
20220121,1259,2390,2390,2385,2390,26794
20220121,1300,2390,2390,2385,2385,25487
20220121,1301,2390,2390,2380,2385,695108
20220121,1302,2380,2385,2380,2380,72691
20220121,1303,2380,2385,2380,2385,300514
20220121,1304,2380,2385,2380,2380,902616
20220121,1305,2380,2385,2375,2380,539185
20220121,1306,2380,2385,2375,2380,858942
20220121,1307,2375,2380,2375,2375,220046
20220121,1308,2375,2385,2375,2380,351146
20220121,1309,2380,2380,2375,2380,128489
20220121,1310,2375,2385,2375,2385,425823
20220121,1311,2380,2385,2380,2380,10523
20220121,1312,2380,2385,2380,2380,59089
20220121,1313,2385,2385,2380,2385,11610
20220121,1314,2385,2385,2380,2385,746698
20220121,1315,2380,2385,2380,2385,870353
20220121,1316,2385,2390,2380,2385,207963
20220121,1317,2385,2390,2385,2390,323494
20220121,1318,2390,2390,2385,2390,145113
20220121,1319,2390,2395,2390,2390,1512357
20220121,1320,2395,2395,2385,2395,1261661
20220121,1321,2390,2395,2385,2390,111484
20220121,1322,2390,2390,2385,2390,5341
20220121,1323,2390,2395,2385,2395,197360
20220121,1324,2395,2395,2390,2390,11343
20220121,1325,2390,2395,2385,2390,152734
20220121,1326,2390,2390,2385,2390,23967
20220121,1327,2385,2390,2385,2385,2309783
20220121,1328,2390,2390,2385,2390,400403
20220121,1329,2390,2390,2380,2385,416036
20220121,1330,2385,2385,2380,2385,70969
20220121,1331,2385,2385,2380,2385,44583
20220121,1332,2385,2385,2380,2380,17304
20220121,1333,2380,2385,2380,2385,334981
20220121,1334,2385,2390,2380,2385,1140788
20220121,1335,2385,2390,2380,2390,223370
20220121,1336,2385,2390,2385,2385,11839
20220121,1337,2390,2390,2380,2385,334000
20220121,1338,2380,2390,2380,2390,373272
20220121,1339,2390,2390,2385,2385,15684
20220121,1340,2385,2390,2385,2390,19288
20220121,1341,2390,2395,2385,2390,1097760
20220121,1342,2390,2395,2385,2390,697334
20220121,1343,2390,2390,2385,2385,148363
20220121,1344,2385,2395,2385,2395,339929
20220121,1345,2395,2395,2385,2390,58884
20220121,1346,2390,2395,2385,2395,316896
20220121,1347,2390,2395,2390,2395,547456
20220121,1348,2390,2395,2390,2390,104761
20220121,1349,2395,2395,2390,2390,29270
20220121,1350,2390,2395,2390,2395,57897
20220121,1351,2395,2395,2390,2390,171802
20220121,1352,2390,2395,2390,2395,28321
20220121,1353,2395,2395,2390,2395,16864
20220121,1354,2390,2395,2390,2390,16835
20220121,1355,2395,2395,2390,2390,31265
20220121,1356,2390,2395,2390,2390,478233
20220121,1357,2390,2395,2385,2390,226619
20220121,1358,2390,2390,2385,2390,18333
20220121,1359,2390,2390,2385,2385,8519
20220121,1400,2390,2390,2385,2390,30098
20220121,1401,2385,2395,2385,2390,507494
20220121,1402,2385,2390,2380,2390,1295912
20220121,1403,2385,2395,2385,2390,540150
20220121,1404,2395,2395,2390,2390,18540
20220121,1405,2390,2395,2385,2390,25096
20220121,1406,2395,2395,2390,2395,10948
20220121,1407,2390,2395,2390,2390,82559
20220121,1408,2390,2395,2385,2390,196428
20220121,1409,2390,2390,2385,2385,8297
20220121,1410,2385,2390,2385,2385,2694
20220121,1411,2385,2390,2385,2385,15258
20220121,1412,2385,2390,2385,2385,348444
20220121,1413,2390,2395,2385,2390,24340
20220121,1414,2390,2395,2390,2390,27961
20220121,1415,2395,2395,2390,2395,41545
20220121,1416,2395,2395,2390,2390,79146
20220121,1417,2390,2395,2390,2390,98930
20220121,1418,2390,2395,2390,2390,150319
20220121,1419,2395,2395,2390,2390,1035863
20220121,1420,2390,2395,2385,2390,185995
20220121,1421,2390,2395,2390,2395,163629
20220121,1422,2390,2395,2390,2390,25992
20220121,1423,2390,2395,2390,2390,106457
20220121,1424,2390,2395,2390,2395,25777
20220121,1425,2395,2395,2390,2390,65561
20220121,1426,2390,2395,2390,2395,21357
20220121,1427,2390,2395,2385,2390,307347
20220121,1428,2390,2395,2385,2390,1895678
20220121,1429,2390,2395,2390,2395,472335
20220121,1430,2390,2395,2385,2390,136845
20220121,1431,2390,2390,2385,2390,12707
20220121,1432,2385,2390,2380,2385,2737318
20220121,1433,2385,2385,2380,2385,159294
20220121,1434,2385,2385,2375,2380,847299
20220121,1435,2380,2385,2375,2380,485574
20220121,1436,2380,2385,2375,2380,168541
20220121,1437,2380,2380,2375,2375,414413
20220121,1438,2375,2380,2375,2375,511392
20220121,1439,2380,2385,2375,2380,293913
20220121,1440,2385,2385,2375,2380,333951
20220121,1441,2380,2385,2375,2380,813856
20220121,1442,2380,2380,2375,2380,66465
20220121,1443,2380,2380,2375,2375,129163
20220121,1444,2375,2380,2375,2380,15185
20220121,1445,2380,2380,2375,2375,173167
20220121,1446,2375,2375,2370,2370,1070997
20220121,1447,2370,2370,2365,2370,2485802
20220121,1448,2370,2375,2365,2375,292919
20220121,1449,2370,2375,2370,2375,128744
20220121,1450,2370,2375,2370,2375,22377
20220121,1451,2375,2375,2370,2370,63677
20220121,1452,2370,2375,2370,2370,18849
20220121,1453,2370,2375,2365,2370,2782580
20220121,1454,2370,2375,2365,2370,127250
20220121,1455,2375,2375,2370,2370,120095
20220121,1456,2370,2375,2365,2375,1303874
20220121,1457,2375,2375,2370,2370,40645
20220121,1458,2370,2375,2370,2370,133655
20220121,1459,2370,2375,2370,2375,11396
20220121,1500,2375,2375,2365,2375,574365
20220121,1501,2375,2375,2370,2375,45364
20220121,1502,2375,2375,2365,2370,295096
20220121,1503,2375,2375,2365,2370,111198
20220121,1504,2370,2375,2365,2370,255965
20220121,1505,2365,2370,2365,2370,10394
20220121,1506,2365,2370,2365,2370,9485
20220121,1507,2365,2375,2365,2370,366863
20220121,1508,2370,2375,2365,2370,256790
20220121,1509,2375,2375,2370,2375,9871
20220121,1510,2375,2375,2370,2375,38640
20220121,1511,2370,2375,2370,2370,57466
20220121,1512,2375,2375,2370,2370,51717
20220121,1513,2370,2375,2370,2370,10168
20220121,1514,2370,2375,2370,2370,38025
20220121,1515,2370,2375,2370,2370,30398
20220121,1516,2370,2375,2370,2370,267434
20220121,1517,2370,2375,2365,2365,1114700
20220121,1518,2365,2370,2365,2370,69535
20220121,1519,2370,2375,2365,2370,1059871
20220121,1520,2365,2375,2365,2375,206612
20220121,1530,2365,2365,2365,2365,2444741
1 날짜 시간 시가 고가 저가 종가 거래량
2 20220121 0901 2365 2365 2350 2355 7157839
3 20220121 0902 2355 2355 2345 2355 10657768
4 20220121 0903 2355 2365 2350 2365 3223803
5 20220121 0904 2365 2370 2360 2365 1698290
6 20220121 0905 2370 2370 2355 2360 3088063
7 20220121 0906 2355 2365 2350 2350 1559585
8 20220121 0907 2350 2365 2350 2360 1839441
9 20220121 0908 2355 2365 2350 2360 1949487
10 20220121 0909 2360 2365 2355 2360 610466
11 20220121 0910 2360 2365 2355 2365 762152
12 20220121 0911 2365 2365 2360 2360 177972
13 20220121 0912 2360 2365 2355 2360 515454
14 20220121 0913 2355 2360 2350 2360 2065562
15 20220121 0914 2355 2360 2350 2355 1255635
16 20220121 0915 2360 2365 2355 2360 2023785
17 20220121 0916 2360 2365 2355 2355 421890
18 20220121 0917 2355 2360 2350 2355 2750720
19 20220121 0918 2355 2360 2350 2355 164549
20 20220121 0919 2360 2360 2350 2355 527099
21 20220121 0920 2350 2355 2350 2350 188212
22 20220121 0921 2355 2365 2350 2360 3110284
23 20220121 0922 2360 2365 2360 2365 938483
24 20220121 0923 2365 2370 2360 2365 2157049
25 20220121 0924 2365 2365 2355 2355 675990
26 20220121 0925 2355 2360 2355 2355 60609
27 20220121 0926 2355 2360 2350 2355 1448847
28 20220121 0927 2355 2360 2350 2355 200716
29 20220121 0928 2350 2360 2350 2355 2474704
30 20220121 0929 2355 2360 2350 2355 451892
31 20220121 0930 2355 2355 2350 2350 891460
32 20220121 0931 2355 2355 2350 2355 44351
33 20220121 0932 2350 2360 2350 2360 1373961
34 20220121 0933 2360 2360 2350 2355 233723
35 20220121 0934 2355 2360 2350 2360 366552
36 20220121 0935 2360 2365 2355 2360 1773251
37 20220121 0936 2355 2365 2355 2360 513007
38 20220121 0937 2360 2365 2355 2360 211536
39 20220121 0938 2360 2360 2355 2360 11456
40 20220121 0939 2360 2360 2350 2350 2382134
41 20220121 0940 2355 2360 2350 2350 288958
42 20220121 0941 2355 2360 2350 2355 426044
43 20220121 0942 2355 2360 2350 2360 786245
44 20220121 0943 2360 2365 2355 2360 1526142
45 20220121 0944 2360 2365 2355 2365 283098
46 20220121 0945 2365 2365 2360 2360 328830
47 20220121 0946 2360 2365 2355 2360 355630
48 20220121 0947 2360 2365 2355 2360 314608
49 20220121 0948 2355 2365 2355 2360 204002
50 20220121 0949 2365 2365 2355 2360 41109
51 20220121 0950 2360 2360 2350 2355 1557085
52 20220121 0951 2355 2360 2350 2355 136003
53 20220121 0952 2355 2360 2350 2360 795947
54 20220121 0953 2355 2360 2350 2350 122806
55 20220121 0954 2355 2355 2350 2355 52477
56 20220121 0955 2355 2360 2350 2360 345500
57 20220121 0956 2355 2360 2355 2355 25882
58 20220121 0957 2355 2360 2355 2360 1663
59 20220121 0958 2360 2360 2355 2360 1757
60 20220121 0959 2355 2360 2355 2355 8406
61 20220121 1000 2355 2365 2355 2365 2002693
62 20220121 1001 2360 2365 2355 2365 256831
63 20220121 1002 2360 2365 2360 2360 19041
64 20220121 1003 2365 2370 2360 2370 2498364
65 20220121 1004 2370 2375 2365 2370 3957018
66 20220121 1005 2370 2380 2370 2380 2092465
67 20220121 1006 2380 2380 2375 2380 650433
68 20220121 1007 2380 2385 2375 2380 5221012
69 20220121 1008 2380 2385 2375 2380 1802208
70 20220121 1009 2375 2385 2375 2385 994582
71 20220121 1010 2385 2390 2380 2385 2740849
72 20220121 1011 2385 2390 2385 2390 1730674
73 20220121 1012 2390 2395 2385 2395 1615503
74 20220121 1013 2390 2395 2390 2390 1202272
75 20220121 1014 2395 2395 2380 2385 3719629
76 20220121 1015 2385 2390 2380 2380 1433682
77 20220121 1016 2380 2385 2380 2385 100749
78 20220121 1017 2380 2385 2380 2380 295964
79 20220121 1018 2385 2390 2380 2385 1620377
80 20220121 1019 2385 2390 2380 2390 206977
81 20220121 1020 2390 2395 2385 2390 1675550
82 20220121 1021 2390 2395 2385 2390 1630500
83 20220121 1022 2385 2390 2385 2390 1186940
84 20220121 1023 2385 2390 2385 2385 38757
85 20220121 1024 2385 2390 2380 2380 670327
86 20220121 1025 2385 2390 2380 2380 429444
87 20220121 1026 2385 2385 2380 2380 127395
88 20220121 1027 2385 2385 2380 2380 503319
89 20220121 1028 2380 2385 2375 2375 1545364
90 20220121 1029 2375 2380 2370 2375 1035922
91 20220121 1030 2375 2375 2365 2365 1410029
92 20220121 1031 2370 2370 2365 2370 835099
93 20220121 1032 2370 2370 2365 2365 440953
94 20220121 1033 2365 2375 2365 2370 415844
95 20220121 1034 2375 2375 2365 2365 1049876
96 20220121 1035 2370 2370 2365 2365 65071
97 20220121 1036 2365 2375 2365 2370 106146
98 20220121 1037 2375 2375 2365 2375 899564
99 20220121 1038 2375 2375 2365 2370 166405
100 20220121 1039 2370 2375 2365 2370 57188
101 20220121 1040 2365 2375 2365 2375 488728
102 20220121 1041 2375 2375 2365 2370 122123
103 20220121 1042 2370 2375 2365 2370 803400
104 20220121 1043 2370 2375 2365 2370 961053
105 20220121 1044 2375 2380 2365 2375 1612242
106 20220121 1045 2370 2380 2370 2375 694307
107 20220121 1046 2375 2380 2370 2380 348308
108 20220121 1047 2375 2385 2375 2380 664803
109 20220121 1048 2380 2385 2375 2380 359407
110 20220121 1049 2375 2385 2375 2380 1390013
111 20220121 1050 2375 2385 2375 2385 215188
112 20220121 1051 2385 2385 2375 2380 540065
113 20220121 1052 2380 2385 2375 2380 123729
114 20220121 1053 2380 2385 2375 2380 42904
115 20220121 1054 2375 2380 2370 2370 345759
116 20220121 1055 2370 2375 2370 2370 427463
117 20220121 1056 2370 2375 2370 2375 369879
118 20220121 1057 2375 2375 2365 2370 242289
119 20220121 1058 2375 2375 2365 2365 268240
120 20220121 1059 2365 2375 2365 2370 179176
121 20220121 1100 2375 2375 2365 2370 312061
122 20220121 1101 2370 2370 2365 2365 111281
123 20220121 1102 2365 2370 2365 2370 72445
124 20220121 1103 2365 2370 2355 2355 3151172
125 20220121 1104 2355 2360 2355 2360 134216
126 20220121 1105 2360 2360 2355 2360 71744
127 20220121 1106 2355 2360 2350 2355 1520582
128 20220121 1107 2355 2355 2350 2355 429860
129 20220121 1108 2355 2360 2350 2355 1134237
130 20220121 1109 2355 2360 2350 2350 384784
131 20220121 1110 2350 2355 2350 2355 37812
132 20220121 1111 2355 2360 2350 2360 208739
133 20220121 1112 2355 2360 2355 2360 441857
134 20220121 1113 2355 2360 2350 2355 1596520
135 20220121 1114 2360 2360 2355 2360 148380
136 20220121 1115 2360 2360 2350 2350 310488
137 20220121 1116 2355 2360 2350 2360 437544
138 20220121 1117 2360 2360 2355 2360 15803
139 20220121 1118 2360 2360 2350 2355 480696
140 20220121 1119 2360 2360 2355 2355 21710
141 20220121 1120 2355 2360 2355 2360 874342
142 20220121 1121 2355 2365 2355 2360 208257
143 20220121 1122 2355 2365 2355 2360 130425
144 20220121 1123 2360 2365 2355 2360 516610
145 20220121 1124 2360 2365 2355 2365 69391
146 20220121 1125 2360 2365 2360 2360 40611
147 20220121 1126 2360 2365 2360 2360 83671
148 20220121 1127 2360 2365 2360 2360 12001
149 20220121 1128 2365 2365 2360 2365 1249523
150 20220121 1129 2365 2365 2360 2365 16462
151 20220121 1130 2360 2365 2360 2360 544
152 20220121 1131 2365 2370 2360 2365 1031897
153 20220121 1132 2370 2370 2365 2370 7978
154 20220121 1133 2370 2370 2360 2365 212054
155 20220121 1134 2370 2370 2365 2370 76212
156 20220121 1135 2365 2370 2365 2370 162061
157 20220121 1136 2370 2375 2365 2370 926385
158 20220121 1137 2370 2375 2370 2375 1256257
159 20220121 1138 2375 2375 2370 2370 20153
160 20220121 1139 2375 2375 2370 2375 25826
161 20220121 1140 2370 2375 2370 2370 107191
162 20220121 1141 2375 2375 2370 2375 41955
163 20220121 1142 2370 2375 2370 2370 62047
164 20220121 1143 2370 2375 2370 2370 158096
165 20220121 1144 2370 2380 2370 2375 1286713
166 20220121 1145 2370 2380 2370 2380 355053
167 20220121 1146 2380 2380 2375 2380 36042
168 20220121 1147 2380 2380 2375 2375 10308
169 20220121 1148 2380 2385 2375 2375 1094705
170 20220121 1149 2375 2380 2375 2380 195631
171 20220121 1150 2375 2380 2375 2375 71081
172 20220121 1151 2375 2380 2375 2375 17410
173 20220121 1152 2380 2380 2375 2375 64853
174 20220121 1153 2380 2380 2375 2380 104434
175 20220121 1154 2375 2380 2375 2375 277311
176 20220121 1155 2380 2385 2375 2385 274802
177 20220121 1156 2380 2385 2375 2385 1808892
178 20220121 1157 2380 2385 2380 2380 45911
179 20220121 1158 2385 2385 2375 2380 623025
180 20220121 1159 2380 2385 2375 2380 339410
181 20220121 1200 2380 2385 2375 2380 145008
182 20220121 1201 2380 2380 2375 2380 14744
183 20220121 1202 2380 2385 2375 2380 314513
184 20220121 1203 2380 2385 2375 2380 92963
185 20220121 1204 2380 2380 2375 2375 3254
186 20220121 1205 2375 2385 2375 2380 282381
187 20220121 1206 2380 2385 2375 2380 25568
188 20220121 1207 2380 2385 2380 2385 23642
189 20220121 1208 2380 2390 2380 2380 2227480
190 20220121 1209 2385 2385 2380 2380 36872
191 20220121 1210 2380 2385 2380 2385 17749
192 20220121 1211 2385 2390 2380 2380 421747
193 20220121 1212 2385 2390 2380 2390 144658
194 20220121 1213 2390 2390 2385 2385 124305
195 20220121 1214 2390 2390 2385 2390 41550
196 20220121 1215 2390 2390 2385 2385 172826
197 20220121 1216 2385 2390 2380 2380 449399
198 20220121 1217 2385 2390 2380 2385 345149
199 20220121 1218 2390 2390 2380 2385 269746
200 20220121 1219 2380 2390 2380 2385 1059049
201 20220121 1220 2385 2385 2380 2380 57734
202 20220121 1221 2385 2385 2380 2380 12403
203 20220121 1222 2385 2390 2380 2390 256247
204 20220121 1223 2385 2390 2380 2390 159346
205 20220121 1224 2385 2385 2380 2380 27338
206 20220121 1225 2380 2390 2380 2385 160049
207 20220121 1226 2390 2390 2380 2385 880841
208 20220121 1227 2385 2390 2385 2385 309461
209 20220121 1228 2385 2390 2385 2390 13723
210 20220121 1229 2385 2390 2385 2385 123544
211 20220121 1230 2385 2390 2385 2385 17546
212 20220121 1231 2390 2390 2385 2390 1295634
213 20220121 1232 2390 2390 2385 2385 56504
214 20220121 1233 2390 2390 2385 2390 17061
215 20220121 1234 2390 2395 2390 2395 3819376
216 20220121 1235 2395 2395 2385 2390 763103
217 20220121 1236 2390 2395 2385 2390 724181
218 20220121 1237 2395 2395 2390 2395 3154021
219 20220121 1238 2390 2395 2390 2395 64164
220 20220121 1239 2395 2395 2390 2395 17342
221 20220121 1240 2395 2395 2390 2395 75331
222 20220121 1241 2395 2395 2390 2390 202563
223 20220121 1242 2390 2395 2390 2390 220022
224 20220121 1243 2390 2395 2385 2385 380501
225 20220121 1244 2390 2395 2385 2390 603386
226 20220121 1245 2395 2395 2390 2390 42357
227 20220121 1246 2395 2395 2390 2390 62343
228 20220121 1247 2395 2395 2390 2390 62181
229 20220121 1248 2390 2395 2390 2390 610345
230 20220121 1249 2395 2395 2385 2385 435422
231 20220121 1250 2390 2395 2385 2395 406738
232 20220121 1251 2395 2395 2390 2395 29526
233 20220121 1252 2395 2395 2390 2390 38839
234 20220121 1253 2390 2395 2390 2395 24052
235 20220121 1254 2395 2395 2385 2390 194498
236 20220121 1255 2390 2390 2385 2390 84107
237 20220121 1256 2390 2395 2385 2385 347785
238 20220121 1257 2390 2395 2385 2390 185322
239 20220121 1258 2395 2395 2385 2385 66218
240 20220121 1259 2390 2390 2385 2390 26794
241 20220121 1300 2390 2390 2385 2385 25487
242 20220121 1301 2390 2390 2380 2385 695108
243 20220121 1302 2380 2385 2380 2380 72691
244 20220121 1303 2380 2385 2380 2385 300514
245 20220121 1304 2380 2385 2380 2380 902616
246 20220121 1305 2380 2385 2375 2380 539185
247 20220121 1306 2380 2385 2375 2380 858942
248 20220121 1307 2375 2380 2375 2375 220046
249 20220121 1308 2375 2385 2375 2380 351146
250 20220121 1309 2380 2380 2375 2380 128489
251 20220121 1310 2375 2385 2375 2385 425823
252 20220121 1311 2380 2385 2380 2380 10523
253 20220121 1312 2380 2385 2380 2380 59089
254 20220121 1313 2385 2385 2380 2385 11610
255 20220121 1314 2385 2385 2380 2385 746698
256 20220121 1315 2380 2385 2380 2385 870353
257 20220121 1316 2385 2390 2380 2385 207963
258 20220121 1317 2385 2390 2385 2390 323494
259 20220121 1318 2390 2390 2385 2390 145113
260 20220121 1319 2390 2395 2390 2390 1512357
261 20220121 1320 2395 2395 2385 2395 1261661
262 20220121 1321 2390 2395 2385 2390 111484
263 20220121 1322 2390 2390 2385 2390 5341
264 20220121 1323 2390 2395 2385 2395 197360
265 20220121 1324 2395 2395 2390 2390 11343
266 20220121 1325 2390 2395 2385 2390 152734
267 20220121 1326 2390 2390 2385 2390 23967
268 20220121 1327 2385 2390 2385 2385 2309783
269 20220121 1328 2390 2390 2385 2390 400403
270 20220121 1329 2390 2390 2380 2385 416036
271 20220121 1330 2385 2385 2380 2385 70969
272 20220121 1331 2385 2385 2380 2385 44583
273 20220121 1332 2385 2385 2380 2380 17304
274 20220121 1333 2380 2385 2380 2385 334981
275 20220121 1334 2385 2390 2380 2385 1140788
276 20220121 1335 2385 2390 2380 2390 223370
277 20220121 1336 2385 2390 2385 2385 11839
278 20220121 1337 2390 2390 2380 2385 334000
279 20220121 1338 2380 2390 2380 2390 373272
280 20220121 1339 2390 2390 2385 2385 15684
281 20220121 1340 2385 2390 2385 2390 19288
282 20220121 1341 2390 2395 2385 2390 1097760
283 20220121 1342 2390 2395 2385 2390 697334
284 20220121 1343 2390 2390 2385 2385 148363
285 20220121 1344 2385 2395 2385 2395 339929
286 20220121 1345 2395 2395 2385 2390 58884
287 20220121 1346 2390 2395 2385 2395 316896
288 20220121 1347 2390 2395 2390 2395 547456
289 20220121 1348 2390 2395 2390 2390 104761
290 20220121 1349 2395 2395 2390 2390 29270
291 20220121 1350 2390 2395 2390 2395 57897
292 20220121 1351 2395 2395 2390 2390 171802
293 20220121 1352 2390 2395 2390 2395 28321
294 20220121 1353 2395 2395 2390 2395 16864
295 20220121 1354 2390 2395 2390 2390 16835
296 20220121 1355 2395 2395 2390 2390 31265
297 20220121 1356 2390 2395 2390 2390 478233
298 20220121 1357 2390 2395 2385 2390 226619
299 20220121 1358 2390 2390 2385 2390 18333
300 20220121 1359 2390 2390 2385 2385 8519
301 20220121 1400 2390 2390 2385 2390 30098
302 20220121 1401 2385 2395 2385 2390 507494
303 20220121 1402 2385 2390 2380 2390 1295912
304 20220121 1403 2385 2395 2385 2390 540150
305 20220121 1404 2395 2395 2390 2390 18540
306 20220121 1405 2390 2395 2385 2390 25096
307 20220121 1406 2395 2395 2390 2395 10948
308 20220121 1407 2390 2395 2390 2390 82559
309 20220121 1408 2390 2395 2385 2390 196428
310 20220121 1409 2390 2390 2385 2385 8297
311 20220121 1410 2385 2390 2385 2385 2694
312 20220121 1411 2385 2390 2385 2385 15258
313 20220121 1412 2385 2390 2385 2385 348444
314 20220121 1413 2390 2395 2385 2390 24340
315 20220121 1414 2390 2395 2390 2390 27961
316 20220121 1415 2395 2395 2390 2395 41545
317 20220121 1416 2395 2395 2390 2390 79146
318 20220121 1417 2390 2395 2390 2390 98930
319 20220121 1418 2390 2395 2390 2390 150319
320 20220121 1419 2395 2395 2390 2390 1035863
321 20220121 1420 2390 2395 2385 2390 185995
322 20220121 1421 2390 2395 2390 2395 163629
323 20220121 1422 2390 2395 2390 2390 25992
324 20220121 1423 2390 2395 2390 2390 106457
325 20220121 1424 2390 2395 2390 2395 25777
326 20220121 1425 2395 2395 2390 2390 65561
327 20220121 1426 2390 2395 2390 2395 21357
328 20220121 1427 2390 2395 2385 2390 307347
329 20220121 1428 2390 2395 2385 2390 1895678
330 20220121 1429 2390 2395 2390 2395 472335
331 20220121 1430 2390 2395 2385 2390 136845
332 20220121 1431 2390 2390 2385 2390 12707
333 20220121 1432 2385 2390 2380 2385 2737318
334 20220121 1433 2385 2385 2380 2385 159294
335 20220121 1434 2385 2385 2375 2380 847299
336 20220121 1435 2380 2385 2375 2380 485574
337 20220121 1436 2380 2385 2375 2380 168541
338 20220121 1437 2380 2380 2375 2375 414413
339 20220121 1438 2375 2380 2375 2375 511392
340 20220121 1439 2380 2385 2375 2380 293913
341 20220121 1440 2385 2385 2375 2380 333951
342 20220121 1441 2380 2385 2375 2380 813856
343 20220121 1442 2380 2380 2375 2380 66465
344 20220121 1443 2380 2380 2375 2375 129163
345 20220121 1444 2375 2380 2375 2380 15185
346 20220121 1445 2380 2380 2375 2375 173167
347 20220121 1446 2375 2375 2370 2370 1070997
348 20220121 1447 2370 2370 2365 2370 2485802
349 20220121 1448 2370 2375 2365 2375 292919
350 20220121 1449 2370 2375 2370 2375 128744
351 20220121 1450 2370 2375 2370 2375 22377
352 20220121 1451 2375 2375 2370 2370 63677
353 20220121 1452 2370 2375 2370 2370 18849
354 20220121 1453 2370 2375 2365 2370 2782580
355 20220121 1454 2370 2375 2365 2370 127250
356 20220121 1455 2375 2375 2370 2370 120095
357 20220121 1456 2370 2375 2365 2375 1303874
358 20220121 1457 2375 2375 2370 2370 40645
359 20220121 1458 2370 2375 2370 2370 133655
360 20220121 1459 2370 2375 2370 2375 11396
361 20220121 1500 2375 2375 2365 2375 574365
362 20220121 1501 2375 2375 2370 2375 45364
363 20220121 1502 2375 2375 2365 2370 295096
364 20220121 1503 2375 2375 2365 2370 111198
365 20220121 1504 2370 2375 2365 2370 255965
366 20220121 1505 2365 2370 2365 2370 10394
367 20220121 1506 2365 2370 2365 2370 9485
368 20220121 1507 2365 2375 2365 2370 366863
369 20220121 1508 2370 2375 2365 2370 256790
370 20220121 1509 2375 2375 2370 2375 9871
371 20220121 1510 2375 2375 2370 2375 38640
372 20220121 1511 2370 2375 2370 2370 57466
373 20220121 1512 2375 2375 2370 2370 51717
374 20220121 1513 2370 2375 2370 2370 10168
375 20220121 1514 2370 2375 2370 2370 38025
376 20220121 1515 2370 2375 2370 2370 30398
377 20220121 1516 2370 2375 2370 2370 267434
378 20220121 1517 2370 2375 2365 2365 1114700
379 20220121 1518 2365 2370 2365 2370 69535
380 20220121 1519 2370 2375 2365 2370 1059871
381 20220121 1520 2365 2375 2365 2375 206612
382 20220121 1530 2365 2365 2365 2365 2444741