示例#1
0
    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 실시간 등록 성공!!!")
示例#2
0
    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()
示例#3
0
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="지금은 현재가 데이터 저장 성공")
示例#4
0
    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 실시간 등록 성공!!!")
示例#5
0
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("지금은 현재가 데이터 저장 실패")
示例#6
0
    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 실시간 등록 성공!!!")
示例#7
0
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() 완료")
示例#9
0
    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()
示例#10
0
    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()
示例#11
0
    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)
示例#12
0
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")
示例#13
0
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)
示例#14
0
    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 = ""