def __init__(self): super().__init__() self.processID = os.getpid() telgm_token = '1013576743:AAFkCdmafOY61N-I1FAEIEsOdFZwR47_ZQ8' self.bot = telegram.Bot(token=telgm_token) self.realTimeLogger = logging_instance("SP.py_ PID: " + (str)(self.processID)).mylogger self.indiReal = QAxWidget("GIEXPERTCONTROL.GiExpertControlCtrl.1") # Indi API event self.indiReal.ReceiveRTData.connect(self.ReceiveRTData) self.timeline = common_min_shortTime(5).timeline #collection_name ="20200224" + "_pr_input" collection_name = str( datetime.today().strftime("%Y%m%d")) + "_pr_input" client = MongoClient('127.0.0.1', 27017) #db = client["20200224"] db = client[str(datetime.today().strftime("%Y%m%d"))] collection = db[collection_name] collection_title1 = "SP_" + str(datetime.today().strftime("%Y%m%d")) collection_title2 = "SP_5min_" + str( datetime.today().strftime("%Y%m%d")) self.collection1 = db[collection_title1] self.collection2 = db[collection_title2] collection_title3 = "SC_check_" + str( datetime.today().strftime("%Y%m%d")) self.collection3 = db[collection_title3] collection_title4 = "SP_check_" + str( datetime.today().strftime("%Y%m%d")) self.collection4 = db[collection_title4] collection_title5 = "TR_1206_new_2" self.collection5 = db[collection_title5] #db = client["20200222"] collection = db[collection_name] for i in collection.find(): ret1 = self.indiReal.dynamicCall( "UnRequestRTReg(QString, QString)", "SP", i['종목코드'].strip()) self.realTimeLogger.info("ret1 " + str(ret1)) if not ret1: self.realTimeLogger.info("종목코드 " + i['종목코드'] + " 에 대한 SP 실시간 등록 해제 실패!!!") else: self.realTimeLogger.info("종목코드 " + i['종목코드'] + " 에 대한 SP 실시간 등록 해제 성공!!!") for i in collection.find(): ret1 = self.indiReal.dynamicCall("RequestRTReg(QString, QString)", "SP", i['종목코드'].strip()) self.realTimeLogger.info("ret1 " + str(ret1)) if not ret1: self.realTimeLogger.info("종목코드 " + i['종목코드'] + " 에 대한 SP 실시간 등록 실패!!!") else: self.realTimeLogger.info("종목코드 " + i['종목코드'] + " 에 대한 SP 실시간 등록 성공!!!")
def __init__(self, stock_code, korName, date): super().__init__() self.realTimeLogger = logging_instance("SC.py_").mylogger self.timeline = common_min_shortTime(5).timeline telgm_token = '1013576743:AAFkCdmafOY61N-I1FAEIEsOdFZwR47_ZQ8' self.bot = telegram.Bot(token=telgm_token) # 인디의 TR을 처리할 변수를 생성합니다. self.IndiTR = QAxWidget("GIEXPERTCONTROL.GiExpertControlCtrl.1") self.realTimeLogger.info("start") # Indi API event self.IndiTR.ReceiveData.connect(self.ReceiveData) self.IndiTR.ReceiveSysMsg.connect(self.ReceiveSysMsg) self.stock_code = stock_code self.date = date self.korName = korName self.client = MongoClient('127.0.0.1', 27017) db_name = self.date self.db = self.client[db_name] self.collection_name1 = "SC_" + db_name self.collection1 = self.db[self.collection_name1] self.realTimeLogger.info("start SC") self.btn_Search()
def realTime_Price(): date = request.form['date'] try: py_day = datetime.datetime.today().strftime("%Y%m%d") date = request.form['date'] py_time = datetime.datetime.now() hour = py_time.hour min = py_time.minute if (hour == 15 and min >= 30) or hour > 15: hour = 15 min = 30 if py_day != date: hour = 15 min = 30 #78개임(날) 905-1530 total_time = (int)((hour * 60 + min - 9 * 60 - 5) / 5) if total_time <= -1: return render_template('process_result.html', message="지금은 5분간격 현재가 접수시간이 아닙니다.") elif total_time > -1 and total_time <= 0: total_time = 1 elif total_time == 77: total_time += 1 else: total_time += 2 client = MongoClient('127.0.0.1', 27017) db = client[date] collection_name = date + "_pr_input" collection1 = db[collection_name] total_len = collection1.count() checkIndex = 0 realTimePriceEvent = QApplication(sys.argv) short_time = common_min_shortTime(5) print("현재 가장 마지막으로 기록될 현재가 시간은 " + str(hour) + ":" + str(min)) print("종목의 총 갯수 는 " + str(total_len)) print("각종목별 총 기록될 현재가 갯수는 (5분기준 현시각 라스트) " + str(total_time)) for i in collection1.find(): print(i['종목코드']) realTimePrice_vari = realTimePrice(i['종목코드'], i['korName'].strip(), '1', '5', "00000000", "99999999", str(total_time), date) time.sleep(0.3) checkIndex += 1 if checkIndex != total_time - 1: realTimePriceEvent.exec() print("ssibal") except Exception: return render_template('process_result.html', message="지금은 현재가 데이터 저장 실패") return render_template('process_result.html', message="지금은 현재가 데이터 저장 성공")
def __init__(self): super().__init__() self.processID = os.getpid() telgm_token = '1013576743:AAFkCdmafOY61N-I1FAEIEsOdFZwR47_ZQ8' self.bot = telegram.Bot(token=telgm_token) self.realTimeLogger = logging_instance("SK_new.py_ PID: " + (str)(self.processID)).mylogger self.realTimeLogger.info("SK_new 클래스 실행") self.realTimeLogger.info("QAxWidget Call") self.indiReal = QAxWidget("GIEXPERTCONTROL.GiExpertControlCtrl.1") self.indiReal.ReceiveRTData.connect(self.ReceiveRTData) self.indiReal_candidate = QAxWidget( "GIEXPERTCONTROL.GiExpertControlCtrl.1") self.indiReal.ReceiveRTData.connect(self.ReceiveRTData) self.realTimeLogger.info("QAxWidget Call 이후") self.timeline = common_min_shortTime(5).timeline # Indi API event collection_name = str( datetime.today().strftime("%Y%m%d")) + "_pr_input" client = MongoClient('127.0.0.1', 27017) db = client[str(datetime.today().strftime("%Y%m%d"))] self.collection = db[collection_name] collection_title1 = "SK_" + str(datetime.today().strftime("%Y%m%d")) collection_title2 = "SK_5min_" + str( datetime.today().strftime("%Y%m%d")) self.SK = db[collection_title1] self.SK_5min = db[collection_title2] for i in self.collection.find(): ret1 = self.indiReal.dynamicCall( "UnRequestRTReg(QString, QString)", "SK", i['단축코드'].strip()) self.realTimeLogger.info("ret1 " + str(ret1)) if not ret1: self.realTimeLogger.info("단축코드 " + i['단축코드'] + " 에 대한 SK 실시간 등록 해제 실패!!!") else: self.realTimeLogger.info("단축코드 " + i['단축코드'] + " 에 대한 SK 실시간 등록 해제 성공!!!") for i in self.collection.find(): ret1 = self.indiReal.dynamicCall("RequestRTReg(QString, QString)", "SK", i['종목코드'].strip()) self.realTimeLogger.info("ret1 " + str(ret1)) if not ret1: self.realTimeLogger.info("단축코드 " + i['단축코드'] + " 에 대한 SK 실시간 등록 실패!!!") else: self.realTimeLogger.info("단축코드 " + i['단축코드'] + " 에 대한 SK 실시간 등록 성공!!!")
def TR_SCHART_function(): realTimeLogger = logging_instance("TR_SCHART_function.py_").mylogger try: py_day = datetime.datetime.today().strftime("%Y%m%d") date = str(datetime.datetime.today().strftime("%Y%m%d")) #test #date = "20200221" py_time = datetime.datetime.now() hour = py_time.hour min = py_time.minute if (hour == 15 and min >= 30) or hour > 15: hour = 15 min = 30 if py_day != date: hour = 15 min = 30 #78개임(날) 905-1530 total_time = (int)((hour*60+min - 9*60 -5)/5) if total_time <=-1: realTimeLogger.info("5분 간격현재가 데이터 저장 가능 시간 아님") elif total_time >-1 and total_time<=0: total_time =1 elif total_time==77: total_time +=1 else: total_time +=2 client = MongoClient('127.0.0.1', 27017) db = client[date] collection_name = date+"_pr_input" collection1 = db[collection_name] total_len = collection1.count() checkIndex = 0 realTimePriceEvent = QApplication(sys.argv) short_time = common_min_shortTime(5) realTimeLogger.info("현재 가장 마지막으로 기록될 현재가 시간은 "+ str(hour)+":"+str(min)) realTimeLogger.info("종목의 총 갯수 는 "+ str(total_len)) realTimeLogger.info("각종목별 총 기록될 현재가 갯수는 (5분기준 현시각 라스트) "+str(total_time)) for i in collection1.find(): realTimeLogger.info(i['종목코드']) TR_SCHART_vari = TR_SCHART(i['종목코드'], i['korName'].strip(), '1', '5', "00000000", "99999999",str(total_time),date) time.sleep(0.3) checkIndex +=1 if checkIndex != total_len+1: realTimePriceEvent.exec() print("ssibal") realTimeLogger.info("지금은 현재가 데이터 저장 성공") except Exception: realTimeLogger.info("지금은 현재가 데이터 저장 실패")
def __init__(self): super().__init__() telgm_token = '1013576743:AAFkCdmafOY61N-I1FAEIEsOdFZwR47_ZQ8' self.bot = telegram.Bot(token=telgm_token) self.processID = os.getpid() self.realTimeLogger = logging_instance("SC_new.py_ PID: " + (str)(self.processID)).mylogger self.realTimeLogger.info("SC_new 함수 실행 PID: " + (str)(self.processID)) self.realTimeLogger.info("QAxWidget Call") self.indiReal = QAxWidget("GIEXPERTCONTROL.GiExpertControlCtrl.1") self.realTimeLogger.info("QAxWidget Call 이후") # 0905 시간 배열 self.timeline = common_min_shortTime(5).timeline #오늘 날짜 self.db_date = datetime.today().strftime("%Y%m%d") # Indi API event self.indiReal.ReceiveRTData.connect(self.ReceiveRTData) collection_name = self.db_date + "_pr_input" client = MongoClient('127.0.0.1', 27017) db = client[self.db_date] #모니터링 대상 종목 컬렉션 self.monitoring_input_collection = db[collection_name] #모니터링 대상 종목 현재가 데이터 컬랙션 collection_title1 = "SC_5min_" + self.db_date self.SC_5min = db[collection_title1] #모니터링 중 선정된 종목 여부 컬렉션 collection_title2 = "SC_check_" + self.db_date self.SC_check = db[collection_title2] for i in self.monitoring_input_collection.find(): ret1 = self.indiReal.dynamicCall( "UnRequestRTReg(QString, QString)", "SC", i['단축코드'].strip()) self.realTimeLogger.info("ret1 " + str(ret1)) if not ret1: self.realTimeLogger.info("단축코드 " + i['단축코드'] + " 에 대한 SC 실시간 등록 해제 실패!!!") else: self.realTimeLogger.info("단축코드 " + i['단축코드'] + " 에 대한 SC 실시간 등록 해제 성공!!!") for i in self.monitoring_input_collection.find(): ret2 = self.indiReal.dynamicCall("RequestRTReg(QString, QString)", "SC", i['단축코드'].strip()) self.realTimeLogger.info("ret2 " + str(ret2)) if not ret2: self.realTimeLogger.info("단축코드 " + i['단축코드'] + " 에 대한 SC 실시간 등록 실패!!!") else: self.realTimeLogger.info("단축코드 " + i['단축코드'] + " 에 대한 SC 실시간 등록 성공!!!")
def monitoring_new_test3(): appLogger = logging_instance("monitoring_new_test3_").mylogger try: py_day = datetime.datetime.today().strftime("%Y%m%d") date = request.form['date'] py_time = datetime.datetime.now() hour = py_time.hour min = py_time.minute if (hour == 15 and min >= 30) or hour > 15: hour = 15 min = 30 if py_day != date: hour = 15 min = 30 #78개임(날) 905-1530 total_time = (int)((hour * 60 + min - 9 * 60 - 5) / 5) if total_time <= 0: total_time = 1 elif total_time == 77: total_time += 1 else: total_time += 2 #total_time =3 appLogger.info("monitoring_new2 구동 전") monitoring_new_var = monitoring_new2(date) appLogger.info("monitoring_new2 구동 후") final_data = monitoring_new_var.final_data final_data2 = monitoring_new_var.final_data2 final_data3 = monitoring_new_var.final_data3 acc_stock_code = monitoring_new_var.acc_stock_code common_min_timeline_var2 = common_min_shortTime( 5).timeline[:total_time] except Exception: return redirect(url_for('index')) return render_template('monitoring_test3.html', time_line=common_min_timeline_var2, values=final_data, values2=final_data2, values3=final_data3, acc_stock_code=acc_stock_code, length=total_time)
def __init__(self): super().__init__() self.indiReal = QAxWidget("GIEXPERTCONTROL.GiExpertControlCtrl.1") self.processID = os.getpid() telgm_token = '1013576743:AAFkCdmafOY61N-I1FAEIEsOdFZwR47_ZQ8' self.bot = telegram.Bot(token=telgm_token) self.realTimeLogger = logging_instance( "RealTimeAccount.py 현물 실시간 주문 체결 PID: " + (str)(self.processID)).mylogger self.timeline = common_min_shortTime(5).timeline self.indiReal.ReceiveRTData.connect(self.ReceiveRTData) # 인디의 TR을 처리할 변수를 생성합니다. self.client = MongoClient('127.0.0.1', 27017) db_name = str(datetime.datetime.today().strftime("%Y%m%d")) self.db = self.client[db_name] self.collection_name1 = "AD_" + db_name self.collection1 = self.db[self.collection_name1] self.realTimeLogger.info("RealTimeAccount AD UnRequestRTReg 호출") ret1 = self.indiReal.dynamicCall("UnRequestRTReg(QString, QString)", "AD", "*") if ret1: self.realTimeLogger.info("UnRequestRTReg AD 완료") self.realTimeLogger.info("UnRequestRTReg return 값 : " + str(ret1)) else: self.realTimeLogger.error("UnRequestRTReg AD 실패") self.realTimeLogger.error("UnRequestRTReg return 값 : " + str(ret1)) self.realTimeLogger.info("RealTimeAccount AD RequestRTReg 호출") ret2 = self.indiReal.dynamicCall("RequestRTReg(QString, QString)", "AD", "*") if ret2: self.realTimeLogger.info("RequestRTReg AD완료") self.realTimeLogger.info("RequestRTReg return 값 : " + str(ret2)) else: self.realTimeLogger.error("RequestRTReg AD 실패") self.realTimeLogger.error("RequestRTReg return 값 : " + str(ret2)) self.realTimeLogger.info("RealTimeAccount init() 완료")
def __init__(self, stock_code, korName , standard, term, start_date, end_date, counts,date): super().__init__() self.realTimeLogger = logging_instance("TR_SCHART.py_").mylogger self.timeline = common_min_shortTime(5).timeline # 인디의 TR을 처리할 변수를 생성합니다. self.IndiTR = QAxWidget("GIEXPERTCONTROL.GiExpertControlCtrl.1") self.realTimeLogger.info("start") self.realTimeLogger.info(counts) self.realTimeLogger.info(stock_code) self.realTimeLogger.info(korName) self.realTimeLogger.info(standard) self.realTimeLogger.info(term) self.realTimeLogger.info(start_date) self.realTimeLogger.info(end_date) self.realTimeLogger.info(counts) # Indi API event self.IndiTR.ReceiveData.connect(self.ReceiveData) self.IndiTR.ReceiveSysMsg.connect(self.ReceiveSysMsg) self.korName= korName self.stock_code= stock_code self.standard= standard self.term= term self.start_date= start_date self.end_date= end_date self.counts= counts self.date= date self.client = MongoClient('127.0.0.1', 27017) db_name =self.date #test #db_name = "20200221" self.db = self.client[db_name] self.collection_name1 = "TR_SCHART_" + db_name self.collection_name2 = "TR_SCHART_5min_" + db_name self.collection1 = self.db [self.collection_name1] self.collection2 = self.db [self.collection_name2] self.realTimeLogger.info("start TR_SCHART") #self.market = market self.btn_Search()
def fiveMinCurrentPrice(self): morning = time(0, 50) evening = time(1, 30) now = datetime.now().time() # 일시 객체 dt = datetime.now() #date =str(datetime.today().strftime("%Y%m%d")) date = "20200217" if morning <= now and evening > now: py_time = datetime.now() hour = py_time.hour min = py_time.minute #total_time = (int)((hour * 60 + min - 9 * 60-5) / 5) total_time = (int)((hour * 60 + min - 50) / 5) total_time += 1 client = MongoClient('127.0.0.1', 27017) db = client[date] collection_name = date + "_pr_input" collection1 = db[collection_name] collection2 = db["TR_SCHART_" + date] total_len = collection1.count() checkIndex = 0 realTimePriceEvent = QApplication(sys.argv) short_time = common_min_shortTime(5) short_time_var = short_time.timeline checkNoFunction = False print("현재 가장 마지막으로 기록될 현재가 시간은 " + str(hour) + ":" + str(min)) print("종목의 총 갯수 는 " + str(total_len)) print("각종목별 총 기록될 현재가 갯수는 (5분기준 현시각 라스트) " + str(total_time)) for i in collection1.find(): print(i['종목코드']) timeindex = 0 for j in short_time_var: if timeindex == 78: break print("j") print(j) print("j") if collection2.find_one({ 'stock_code': i['종목코드'], 'TIME': j }): print("중복") pass else: print("중복 아님") break timeindex += 1 print("total_time-timeindex") print(total_time - timeindex) print("total_time-timeindex") if total_time - timeindex > 0: counts = total_time - timeindex checkNoFunction = False realTimePrice_vari = realTimePrice(i['종목코드'], i['korName'].strip(), '1', '5', "00000000", "99999999", str(counts), date) pytime.sleep(0.3) else: print("현재가 데이터 꽉참") checkNoFunction = True pass checkIndex += 1 if not checkNoFunction: realTimePriceEvent.exec() if checkIndex == total_len: print("ssibal") else: print("not now") print('sync Function OK (%s)' % dt + '\n') threading.Timer(100, self.fiveMinCurrentPrice).start()
def __init__(self, date, time_right_now): self.realTimeLogger = logging_instance( "monitoring_new2.py_ 종목 모니터링 class 시작").mylogger self.shortTimeline = common_min_shortTime(5).timeline self.date = date db_name = self.date collection_name1 = db_name + "_pr_input" collection_name2 = "SP_5min_" + db_name collection_name3 = "SK_5min_" + db_name collection_name4 = "SC_5min_" + db_name collection_name5 = "TR_1206_" + db_name client = MongoClient('127.0.0.1', 27017) db = client[db_name] self.realTimeLogger.info("collection 연결 시작 ") monitoring_input = db[collection_name1] #인풋 컬렉션 SP_5min = db[collection_name2] #프로그램 매수 매도 컬렉션 SK_5min = db[collection_name3] #외국인 매수 매도 컬렉션 SC_5min = db[collection_name4] #현재가 컬렉션 TR_1206_new2 = db[collection_name5] #현재가 컬렉션 self.realTimeLogger.info("collection 연결 완료") self.monitoring_input = {} self.SP_5min = {} self.SK_5min = {} self.SC_5min = {} self.TR_1206_new2 = {} self.sorted_monitoring_input = {} length = 0 Time = make_five_min(time_right_now) before_Time = (int)((int)(Time) / 100) * 60 + (int)(Time) % 100 - 5 if (int)(before_Time / 60) < 10: before_Time = "0" + str( (int)(before_Time / 60)) + str(before_Time % 60) else: before_Time = str((int)(before_Time / 60)) + str(before_Time % 60) for i in self.shortTimeline: if int(i) == int(Time): break else: length += 1 continue self.timeTimeLine = self.shortTimeline[:length + 1] index = 0 before_sorted_list = [] SK_foreign_vol = '' for stock_code_data in monitoring_input.find(): index += 1 self.realTimeLogger.info(stock_code_data['단축코드']) self.realTimeLogger.info(index) self.monitoring_input[stock_code_data['단축코드']] = {} self.SP_5min[stock_code_data['단축코드']] = {} self.SK_5min[stock_code_data['단축코드']] = {} self.SC_5min[stock_code_data['단축코드']] = {} self.TR_1206_new2[stock_code_data['단축코드']] = {} self.monitoring_input[stock_code_data['단축코드']] = stock_code_data for SP_data in SP_5min.find({'단축코드': stock_code_data['단축코드']}): self.SP_5min[stock_code_data['단축코드']][ SP_data['sortTime']] = SP_data['비차익위탁프로그램순매수'] for SK_data in SK_5min.find({'단축코드': stock_code_data['단축코드']}): self.realTimeLogger.info(SK_data) self.SK_5min[stock_code_data['단축코드']][ SK_data['sortTime']] = SK_data['외국계순매수수량'] for SC_data in SC_5min.find({'단축코드': stock_code_data['단축코드']}): self.SC_5min[stock_code_data['단축코드']][ SC_data['sortTime']] = SC_data['Close'] for timeTimeLine_data in self.timeTimeLine: self.realTimeLogger.info(timeTimeLine_data) self.TR_1206_new2[stock_code_data['단축코드']][ timeTimeLine_data] = TR_1206_new2.find_one( {"stock_code": stock_code_data['단축코드']})['전일외국인순매수거래량'] self.realTimeLogger.info(self.TR_1206_new2[ stock_code_data['단축코드']][timeTimeLine_data]) if SK_5min.find_one({ '단축코드': stock_code_data['단축코드'], 'sortTime': Time }) != None: SK_foreign_vol = SK_5min.find_one({ '단축코드': stock_code_data['단축코드'], 'sortTime': Time })['외국계순매수수량'] if SK_5min.find_one({ '단축코드': stock_code_data['단축코드'], 'sortTime': Time }) == None and SK_5min.find_one({ '단축코드': stock_code_data['단축코드'], 'sortTime': before_Time }) != None: SK_foreign_vol = SK_5min.find_one({ '단축코드': stock_code_data['단축코드'], 'sortTime': before_Time })['외국계순매수수량'] if SK_foreign_vol != None and SK_foreign_vol != '': DATA_before_sorted = {} DATA_before_sorted['단축코드'] = stock_code_data['단축코드'] DATA_before_sorted['외국계순매수수량'] = SK_foreign_vol DATA_before_sorted['종목명'] = stock_code_data['종목명'] DATA_before_sorted['전일대비구분명'] = stock_code_data['전일대비구분명'] before_sorted_list.append(DATA_before_sorted) before_sorted_list = sorted(before_sorted_list, key=lambda k: k['외국계순매수수량'], reverse=True) print(before_sorted_list) for i in before_sorted_list: self.sorted_monitoring_input[i['단축코드']] = {} self.sorted_monitoring_input[i['단축코드']] = i print(before_sorted_list)
def getPriceBy5Min(): while True: time.sleep(300) try: py_time = datetime.datetime.now() hour = py_time.hour min = py_time.minute if (hour == 15 and min > 30) or hour > 15 or hour < 9: print("지금은 현재가 수집 시간 아님!!!") else: total_time = (int)((hour * 60 + min - 9 * 60 - 5) / 5) print("지금 까지 모이는 현재가 데이터 갯수는 " + str(total_time)) client = MongoClient('127.0.0.1', 27017) db = client[str(datetime.datetime.today().strftime("%Y%m%d"))] collection_name = str( datetime.datetime.today().strftime("%Y%m%d")) + "_pr_input" collection1 = db[collection_name] collection2 = db[ "TR_SCHART_" + str(datetime.datetime.today().strftime("%Y%m%d"))] total_len = collection1.count() print("현재가를 검색하는 종목의 갯수는 " + str(total_len)) checkIndex = 0 realTimePriceEvent = QApplication(sys.argv) short_time = common_min_shortTime(5) short_time_var = short_time.timeline print("현재 가장 마지막으로 기록될 현재가 시간은 " + str(hour) + ":" + str(min)) print("종목의 총 갯수 는 " + str(total_len)) print("각종목별 총 기록될 현재가 갯수는 (5분기준 현시각 라스트) " + str(total_time)) checkNoFunction = False for i in collection1.find(): print(i['종목코드']) timeindex = 0 for j in short_time_var: if timeindex == 78: break if collection2.find_one({ 'stock_code': i['종목코드'], 'TIME': j }): print("ssibal") pass else: break timeindex += 1 print("total_time-timeindex") print(total_time - timeindex) print("total_time-timeindex") if total_time - timeindex > 0: checkNoFunction = False counts = total_time - timeindex realTimePrice_vari = realTimePrice( i['종목코드'], i['korName'].strip(), '1', '5', "00000000", "99999999", str(counts), str(datetime.datetime.today().strftime("%Y%m%d"))) time.sleep(0.3) else: print("현재가 데이터 꽉참") checkNoFunction = True pass checkIndex += 1 if not checkNoFunction: realTimePriceEvent.exec() if checkIndex == total_len: print("ssibal") except Exception: print("fail")
def monitoring_new_real(): try: py_day = datetime.datetime.today().strftime("%Y%m%d") date = request.form['date'] py_time = datetime.datetime.now() hour = py_time.hour min = py_time.minute if (hour == 15 and min >= 30) or hour > 15: hour = 15 min = 30 if py_day != date: hour = 15 min = 30 #78개임(날) 905-1530 total_time = (int)((hour * 60 + min - 9 * 60 - 5) / 5) if total_time <= 0: total_time = 1 elif total_time == 77: total_time += 1 else: total_time += 2 #total_time =2 monitoring3_var = monitoring_new(date) final_data = monitoring3_var.final_data final_data2 = monitoring3_var.final_data2 final_data3 = monitoring3_var.final_data3 #total_time = 75 common_min_timeline_var2 = common_min_shortTime( 5).timeline[:total_time] final_stock_list = [] highlight = {} print(total_time) print("total") for i in final_data.keys(): print("ssibal1") program_vol = (int)(final_data[i]['프로그램'][total_time - 1]) print("ssibal2") print(final_data[i]['프로그램']) foreign_vol = (int)(final_data2[i]['외국계순매수수량'][total_time - 1]) print("ssibal20") print(final_data2[i]['외국계순매수수량']) print("ssibal3") print(final_data3[i]['종가']) current_value = (int)(final_data3[i]['종가'][total_time - 1]) print("ssibal3") print(final_data3[i]['종가']) if ((int)(program_vol) > 0 and (int)(foreign_vol) > 0) and ((int)(program_vol) * (int)(current_value) > 20000000 or (int)(foreign_vol) * (int)(current_value) > 20000000): #if ((int)(program_vol) > 0 and (int)(foreign_vol) > 0) and ((int)(program_vol) * (int)(current_value) > 2000000 or (int)(foreign_vol) * (int)(current_value) > 2000000): final_stock_list.append(i) print("sssibballll4") if total_time > 1: highlight[i] = {} print("check1") highlight[i]['하이라이트'] = [] print("check2") for j in range(1, total_time): if (int)(final_data[i]['프로그램'][j - 1]) != 0 and (int)( final_data2[i]['외국계순매수수량'][j - 1]) != 0: if (int)(final_data[i]['프로그램'][j]) / (int)( final_data[i]['프로그램'][j - 1]) >= 2.0 and ( int)(final_data2[i]['외국계순매수수량'][j]) / ( int)(final_data2[i]['외국계순매수수량'][ j - 1]) >= 2.0: highlight[i]['하이라이트'].append(5000) else: highlight[i]['하이라이트'].append(0) else: highlight[i]['하이라이트'].append(0) print("len(highlight[i]['하이라이트'])") print(len(highlight[i]['하이라이트'])) print("len(highlight[i]['하이라이트'])") else: print("ssssaaaabbbb") except Exception: return redirect(url_for('index')) return render_template('monitoring_real.html', key=final_stock_list, time_line=common_min_timeline_var2, values=final_data, values2=final_data2, values3=final_data3, length=total_time, highlight=highlight)
def __init__(self, date): self.realTimeLogger = logging_instance("monitoring_new.py_").mylogger self.timeline = common_min_timeline(5).timeline self.shortTimeline = common_min_shortTime(5).timeline self.date = date db_name = self.date collection_name1 = db_name+"_pr_input" collection_name2 = "SP_5min_"+db_name collection_name3 = "SK_5min_"+db_name collection_name4 = "SC_5min_"+db_name client = MongoClient('127.0.0.1', 27017) db = client[db_name] collection1 = db[collection_name1] #인풋 컬렉션 collection2 = db[collection_name2] #프로그램 매수 매도 컬렉션 collection3 = db[collection_name3] #외국인 매수 매도 컬렉션 collection4 = db[collection_name4] #현재가 컬렉션 self.acc_stock_code = { } '''py_time = datetime.datetime.now() hour = py_time.hour min = py_time.minute filter_time = "" compare_time = hour*100 +min for timeline_ele in self.shortTimeline: if compare_time <= (int)(timeline_ele): filter_time = timeline_ele break else: continue''' map_name = "" data_map ={ } data_list1 = {} self.sorted_data_list1 = {} data_list2 = {} self.sorted_data_list2 = {} data_list3 = {} self.sorted_data_list3 = {} self.check_list = [] self.final_data={ } self.final_data2 = { } self.final_data3 = { } for i in collection1.find(): if i['종목코드'] not in self.check_list: self.check_list.append(i['종목코드']) map_name = i['종목코드'] self.final_data[map_name]={ "korName": i["korName"], "gubun": i["gubun"], "프로그램":[] } self.final_data2[map_name]={ "korName": i["korName"], "gubun": i["gubun"], "외국계순매수수량": [] } self.final_data3[map_name]={ "korName": i["korName"], "gubun": i["gubun"], "종가":[] } if collection4.find_one({"stock_code": i['종목코드']}): for collection4_input in collection4.find({"stock_code": i['종목코드']}).sort([("SortTime", pymongo.DESCENDING)]): self.acc_stock_code[i['종목코드']] = collection4_input['Trading_Value'] break else: self.acc_stock_code[i['종목코드']] = 0 else: continue data_list1[map_name]= [] self.sorted_data_list1[map_name]= [] for j in collection2.find({'단축코드': map_name}): j['시간']= int(j['시간']) data_list1[map_name].append(j) self.sorted_data_list1[map_name]= sorted(data_list1[map_name], key = lambda x: x['시간']) for j in range(78): self.final_data[i['종목코드']]['프로그램'].append(0) index1 = 0 for sorted_data in self.sorted_data_list1[map_name]: while True: print("(int)(self.timeline[index1] )== sorted_data['시간']") print(sorted_data['시간']) print(self.shortTimeline[index1]) print((int)(self.shortTimeline[index1] )== sorted_data['시간']) if (int)(self.shortTimeline[index1] )== sorted_data['시간']: self.final_data[map_name]['프로그램'][index1] = (sorted_data['비차익매수위탁체결수량']-sorted_data['비차익매도위탁체결수량']) break else: pass index1 +=1 data_list2[map_name]= [] self.sorted_data_list2[map_name]= [] for j in collection3.find({'단축코드': map_name}): j['시간']= int(j['시간']) j['외국계순매수수량']= int(j['외국계순매수수량']) data_list2[map_name].append(j) self.sorted_data_list2[map_name]= sorted(data_list2[map_name], key = lambda x: x['시간']) for j in range(78): self.final_data2[i['종목코드']]['외국계순매수수량'].append(0) index2 = 0 for sorted_data in self.sorted_data_list2[map_name]: while True: if (int)(self.shortTimeline[index2] )== sorted_data['시간']: self.final_data2[map_name]['외국계순매수수량'][index2] = (sorted_data['외국계순매수수량']) break else: pass index2 +=1 data_list3[map_name]= [] self.sorted_data_list3[map_name]= [] for j in collection4.find({'stock_code': map_name, 'DATE':db_name }): j['시간']= int(j['TIME']) j['종가']= int(j['Close']) data_list3[map_name].append(j) self.sorted_data_list3[map_name] = sorted(data_list3[map_name], key = lambda x: x['시간']) for j in range(78): self.final_data3[i['종목코드']]['종가'].append(0) index3 = 0 for sorted_data in self.sorted_data_list3[map_name]: while True: if (int)(self.shortTimeline[index3] )== sorted_data['시간']: self.final_data3[map_name]['종가'][index3] = (sorted_data['종가']) break else: pass index3 +=1 self.realTimeLogger.info("sorted") self.acc_stock_code = sorted( self.acc_stock_code.items() , key = (lambda x: x[1]), reverse = True ) print("self.acc_stock_code") print(self.acc_stock_code) map_name = ""