コード例 #1
0
    def __init__(self):

        self.isSB = False  # 실시간 처리

        #####################################################################
        # data
        self.stkCurData = CpData.StkCurData()
        self.stkTickData = CpData.StkTickData()  # 주문 현재가/10차 호가 저장
        self.strtgyData = StrtgyData()
        self.strtgyDataT = StrtgyData()
        self.stkBlncData = StkBlncData()

        ###############################################################################
        # 주문결과
        self.stkOdrRsltData = StkOdrRsltData()

        #####################################################################
        # object
        self.objOdr = CpOrder()
        self.objSBcur = CpData.CpSBStockCur()
        self.objSBbid = CpData.CpSBStockBid()
        self.objCurBid = CpData.CpStockCurBid()
        self.objCurBid2 = CpData.CpStockCurBid2()
        self.objDB = CpDB.CpDB()

        #####################################################################
        # 잔고조회 / 미체결조회
        self.objBlnc = Cp6033()
        self.objUnCon = Cp5339()
コード例 #2
0
    def __init__(self):
        super().__init__()

        # plus 상태 체크
        if com.InitPlusCheck() == False:
            exit()
        if com.InitTradeInit() == False:
            exit()

        #####################################################################
        #  account info
        self.acc_no = com.g_objCpTrade.AccountNumber[0]  # 계좌번호
        self.acc_tp = com.g_objCpTrade.GoodsList(self.acc_no, 1)  # 주식상품 구분

        #####################################################################
        #  stock object
        self.stkCurData = CpData.StkCurData()
        self.stkTickData = CpData.StkTickData()  # 주문 현재가/10차 호가 저장

        self.objSBCur = CpData.CpSBStockCur()
        self.objSBid = CpData.CpSBStockBid()

        #####################################################################
        # 시세종목
        #self.codelist = ['A05930', 'A151860']
        self.codelist = ['A151860']

        #####################################################################
        # logger
        self.logger = logging.getLogger("my_setting")
        self.logger = LoggerAdapter(CpDataWindow.__name__, self.logger)

        self.logger.debug(f'CpDataWindow Start')

        #####################################################################
        # db object
        self.objDB = CpDB.CpDB()

        #####################################################################
        # 이동평균
        self.cntTick = 0
        self.stkCur = []
        self.futCur = []
        self.stkShortOdrTP = 'N'
        self.stkLongOdrTP = 'N'

        self.setWindowTitle(sys.argv[0])
        self.setGeometry(300, 300, 300, 700)
        nH = 20

        btnBuy = QPushButton("종목 분 데이터 조회", self)
        btnBuy.move(20, nH)
        # btnBuy.resize(200,30)
        btnBuy.clicked.connect(self.btnBuy_clicked)

        nH += 50
        btnExit = QPushButton("종료", self)
        btnExit.move(20, nH)
        # btnExit.resize(200,30)
        btnExit.clicked.connect(self.btnExit_clicked)

        nH += 50
        btnMst = QPushButton("기본정보", self)
        btnMst.move(20, nH)
        # btnExit.resize(200,30)
        btnMst.clicked.connect(self.btnMst_clicked)

        nH += 50
        btnInv = QPushButton("투자자종합", self)
        btnInv.move(20, nH)
        btnInv.clicked.connect(self.btnInv_clicked)
コード例 #3
0
    def __init__(self):
        super().__init__()

        pythoncom.CoInitialize()

        self.odrExec0 = CpOdr.CpOrderExec()
        self.odrExec1 = CpOdr.CpOrderExec()
        self.odrExec2 = CpOdr.CpOrderExec()
        self.odrExec3 = CpOdr.CpOrderExec()

        # plus 상태 체크
        if com.InitPlusCheck() == False:
            exit()
        if com.InitTradeInit() == False:
            exit()

        self.acc_no = com.g_objCpTrade.AccountNumber[0]  # 계좌번호
        self.acc_tp = com.g_objCpTrade.GoodsList(self.acc_no, 1)  # 주식상품 구분

        #####################################################################
        # logger
        self.logger = logging.getLogger("my_setting")
        self.logger = LoggerAdapter(CpOdrWindow.__name__, self.logger)

        self.logger.debug(f'CpOdrWindow Start {self.acc_no} {self.acc_tp}')
        #####################################################################
        # 전략, 체결
        self.strtgyData = CpOdr.StrtgyData()

        #####################################################################
        # 체결 data class
        self.stkConData = CpOdr.StkConData()
        self.objSBCon = CpOdr.CpSBConclusion()

        #####################################################################
        # 체겷 Subscribe
        # def monitorCon(self): 실시간 업데이트
        self.objSBCon.Subscribe(self.stkConData, self)

        #####################################################################
        # 잔고
        self.objBlnc = CpOdr.Cp6033()

        #####################################################################
        #  stock object
        self.stkCurData = CpData.StkCurData()
        self.stkTickData = CpData.StkTickData()  # 주문 현재가/10차 호가 저장

        self.objSBCur = CpData.CpSBStockCur()
        self.objSBbid = CpData.CpSBStockBid()

        #####################################################################
        # db object
        self.objDB = CpDB.CpDB()

        self.setWindowTitle("PLUS API TEST")
        self.setGeometry(300, 300, 300, 700)
        nH = 20

        btnBuy = QPushButton("매수/매도 주문", self)
        btnBuy.move(20, nH)
        # btnBuy.resize(200,30)
        btnBuy.clicked.connect(self.btnBuy_clicked)

        nH += 50
        btnExit = QPushButton("종료", self)
        btnExit.move(20, nH)
        # btnExit.resize(200,30)
        btnExit.clicked.connect(self.btnExit_clicked)

        nH += 50
        btnMst = QPushButton("기본정보", self)
        btnMst.move(20, nH)
        # btnExit.resize(200,30)
        btnMst.clicked.connect(self.btnMst_clicked)

        nH += 50
        btnInv = QPushButton("투자자종합", self)
        btnInv.move(20, nH)
        btnInv.clicked.connect(self.btnInv_clicked)
コード例 #4
0
    async def canorder_async(self, acc_no, dicOdrList, odrList):
        while True:
            remainCount = com.g_objCpStatus.GetLimitRemainCount(1)  # 1 시세 제한
            if remainCount <= 0:
                print('시세 연속 조회 제한 회피를 위해 sleep',
                      com.g_objCpStatus.LimitRequestRemainTime)
                await asyncio.sleep(com.g_objCpStatus.LimitRequestRemainTime /
                                    1000)

            ###############################################################################
            # 미체결조회
            if self.objUnCon.Request(acc_no, dicOdrList, odrList) == False:
                print("현재가 통신 실패")
                return

            cnt = len(odrList.item)
            for i in range(cnt):
                print("canorder_async 주문정보 : %s, %s" %
                      (odrList.item[i], odrList.item_nm[i]))

                ###############################################################################
                # 현재가 / 호가 조회 : offer  매도 / bid / 매수
                # Data Class 초기화 하는 방법
                # self.stopSubscribe()
                self.stkTickData = CpData.StkTickData()  # 주문 현재가/10차 호가 저장
                if self.objCurBid.Request(odrList.item[i],
                                          self.stkTickData) == False:
                    print("현재가 통신 실패")
                    return

                ###############################################################################
                # 5호가 차이 취소 매도 매도가격이 5호가 보다 크면 취소
                if odrList.odr_tp[i] == '1':
                    if odrList.prc[i] >= self.stkTickData.offer[5 - 1]:
                        print("매도취소주문 실행 ", odrList.item[i], "현재가",
                              self.stkTickData.cur, "주문가격", odrList.prc[i],
                              "1차매도호가", self.stkTickData.offer[0], "1차매수호가",
                              self.stkTickData.bid_prc[0])

                        bResult = self.objOdr.canOrder(acc_no, odrList.item[i],
                                                       odrList.mod_qty[i],
                                                       odrList.prc[i],
                                                       odrList.odr_no[i])
                        if bResult == False:
                            print("주문 실패")
                            return

                ###############################################################################
                # 매수
                if odrList.odr_tp[i] == '2':
                    if odrList.prc[i] <= self.stkTickData.bid_prc[5 - 1]:
                        print("매수취소주문 실행", odrList.item[i], "현재가",
                              self.stkTickData.cur, "주문가격", odrList.prc[i],
                              "1차매도호가", self.stkTickData.offer[0], "1차매수호가",
                              self.stkTickData.bid_prc[0])

                        bResult = self.objOdr.canOrder(acc_no, odrList.item[i],
                                                       odrList.mod_qty[i],
                                                       odrList.prc[i],
                                                       odrList.odr_no[i])
                        if bResult == False:
                            print("주문 실패")
                            return

                print("조회 취소주문", odrList.item[i], "현재가", self.stkTickData.cur,
                      "주문가격", odrList.prc[i], "1차매도호가",
                      self.stkTickData.offer[0], "1차매수호가",
                      self.stkTickData.bid_prc[0])

            await asyncio.sleep(5)
コード例 #5
0
    def __init__(self):
        # plus 상태 체크
        if com.InitPlusCheck() == False:
            exit()
        if com.InitTradeInit() == False:
            exit()

        #####################################################################
        #  account info
        self.acc_no = com.g_objCpTrade.AccountNumber[0]  # 계좌번호
        self.acc_tp = com.g_objCpTrade.GoodsList(self.acc_no, 1)  # 주식상품 구분

        #####################################################################
        #  stock object
        self.stkCurData = CpData.StkCurData()
        self.stkTickData = CpData.StkTickData()  # 주문 현재가/10차 호가 저장

        self.objSBCur = CpData.CpSBStockCur()
        self.objSBid = CpData.CpSBStockBid()

        #####################################################################
        # future object
        self.futCurData = CpDataFut.FutCurData()
        self.objSBCurFut = CpDataFut.CpFutureCurOnly()

        self.futTickData = CpDataFut.FutTickData()

        #####################################################################
        # db object
        self.objDB = CpDB.CpDB()

        #####################################################################
        # db object
        self.cntTick = 0
        self.stkCur  = []
        self.futCur = []

        super().__init__()
        self.setWindowTitle(sys.argv[0])
        self.setGeometry(300, 300, 300, 700)
        nH = 20

        btnBuy = QPushButton("종목 분 데이터 조회", self)
        btnBuy.move(20, nH)
        # btnBuy.resize(200,30)
        btnBuy.clicked.connect(self.btnBuy_clicked)

        nH += 50
        btnExit = QPushButton("종료", self)
        btnExit.move(20, nH)
        # btnExit.resize(200,30)
        btnExit.clicked.connect(self.btnExit_clicked)

        nH += 50
        btnMst = QPushButton("기본정보", self)
        btnMst.move(20, nH)
        # btnExit.resize(200,30)
        btnMst.clicked.connect(self.btnMst_clicked)

        nH += 50
        btnInv = QPushButton("투자자종합", self)
        btnInv.move(20, nH)
        btnInv.clicked.connect(self.btnInv_clicked)