コード例 #1
0
ファイル: test_apibase.py プロジェクト: tanshinepan/QABAT
    def test_insert_one_2_db_2(self):
        price = np.random.random(1)[0] * 10000
        p_struct = ApiStruct.InputOrder(
            BrokerID=b'123',  # 这一项作为标示,用于完成assert后的删除操作,因此要前后一致
            InvestorID=b'',
            InstrumentID=b'rb1710',
            UserID=b'asdf',
            OrderPriceType=ApiStruct.OPT_LimitPrice,
            Direction=ApiStruct.D_Buy,
            CombOffsetFlag=ApiStruct.OF_Open,
            CombHedgeFlag=ApiStruct.HF_Speculation,
            LimitPrice=price,
            VolumeTotalOriginal=1,
            TimeCondition=ApiStruct.TC_GFD)

        with_mongo_collection(lambda c: c.delete_many({'BrokerID': '123'}),
                              'InputOrder')
        dic = ApiBase.insert_one_2_db(p_struct, **{
            'FrontID': 1,
            'SessionID': 423
        })

        def check(collection):
            n = -1
            for n, raw in enumerate(collection.find({'LimitPrice': price})):
                print(raw)
                self.assertEqual(raw['FrontID'], 1)
                self.assertEqual(raw['SessionID'], 423)
            self.assertEqual(n, 0)

        with_mongo_collection(check, 'InputOrder')
        with_mongo_collection(lambda c: c.delete_many({'BrokerID': '123'}),
                              'InputOrder')
コード例 #2
0
ファイル: test_apibase.py プロジェクト: tanshinepan/QABAT
    def test_insert_one_2_db(self):
        price = np.random.random(1)[0] * 10000
        p_struct = ApiStruct.InputOrder(
            BrokerID=b'123',  # 这一项作为标示,用于完成assert后的删除操作,因此要前后一致
            InvestorID=b'',
            InstrumentID=b'rb1710',
            UserID=b'asdf',
            OrderPriceType=ApiStruct.OPT_LimitPrice,
            Direction=ApiStruct.D_Buy,
            CombOffsetFlag=ApiStruct.OF_Open,
            CombHedgeFlag=ApiStruct.HF_Speculation,
            LimitPrice=price,
            VolumeTotalOriginal=1,
            TimeCondition=ApiStruct.TC_GFD)

        with_mongo_collection(lambda c: c.delete_many({'BrokerID': '123'}),
                              'InputOrder')
        dic = ApiBase.insert_one_2_db(p_struct)
        # deal_with_mongo_collection(lambda c:c.insert_one(json_str),'InputOrder')
        with_mongo_collection(
            lambda c: self.assertEqual(
                len([raw for raw in c.find({'LimitPrice': price})]), 1),
            'InputOrder')
        with_mongo_collection(lambda c: c.delete_many({'BrokerID': '123'}),
                              'InputOrder')
コード例 #3
0
ファイル: ctp_trade.py プロジェクト: teeger/ctp_service
 def order_insert(self,
                  orderref,
                  tkr,
                  side,
                  ocflag,
                  qty,
                  prc,
                  hedging,
                  pct=1):
     reqid = self.get_requestid()
     qty = int(max(qty * pct, 1))
     ocflag = ApiStruct.OF_Open if ocflag == 'O' else (
         ApiStruct.OF_Close if ocflag == 'C' else ApiStruct.OF_CloseToday)
     side = ApiStruct.D_Buy if side == 'B' else ApiStruct.D_Sell
     hedging = ApiStruct.HF_Hedge if hedging == 'hedging' else ApiStruct.HF_Speculation
     req = ApiStruct.InputOrder(BrokerID=self.broker_id, InvestorID=self.investor_id, \
                                InstrumentID=tkr, \
                                OrderRef=orderref, \
                                OrderPriceType=ApiStruct.OPT_AnyPrice, \
                                Direction=side, \
                                CombOffsetFlag=ocflag, \
                                LimitPrice=0.0, \
                                VolumeTotalOriginal=qty, \
                                TimeCondition=ApiStruct.TC_IOC, \
                                MinVolume=1, \
                                CombHedgeFlag=hedging, \
                                RequestID=reqid)
     self.order_status[orderref] = ''
     self.order_eqty[orderref] = 0
     print("OrderInsert: ", req)
     self.ReqOrderInsert(req, reqid)
コード例 #4
0
ファイル: TApi.py プロジェクト: seansummer/mypyctp
 def ReqOrderInsert(self,
                    instrumentid,
                    comboffsetflag,
                    direction,
                    limitprice,
                    volumetotaloriginal=1):
     #instrumentid = raw_input('请输入合约号:')
     #orderpricetype = raw_input('任意价1 限价2 最优价3 最新价4:')
     #comboffsetflag = raw_input('开仓0平仓1平今3平昨4:')
     #direction = raw_input('买0 卖1:')
     #limitprice = input('价格:')
     #volumetotaloriginal = raw_input('数量:')
     req = ApiStruct.InputOrder(
         BrokerID=self.brokerID,
         InvestorID=self.userID,
         InstrumentID=instrumentid,
         UserID=self.userID,
         OrderPriceType=str(2),
         Direction=str(direction),
         CombOffsetFlag=str(comboffsetflag),
         CombHedgeFlag='1',
         LimitPrice=float(limitprice),
         VolumeTotalOriginal=int(volumetotaloriginal),
         TimeCondition='3',
         VolumeCondition='1',
         MinVolume=0,
         ContingentCondition='1',
         StopPrice=0.0,
         ForceCloseReason='0',
         IsAutoSuspend=0)
     self.requestID += 1
     TraderApi.ReqOrderInsert(self, req, self.requestID)
コード例 #5
0
ファイル: agent.py プロジェクト: jiahuameng/ctp_demo
 def _make_order(self, instrument_id, direction, volume):
     self.max_order_ref += 1
     return ApiStruct.InputOrder(
         BrokerID=self.broker_id,
         InvestorID=self.user_id,
         InstrumentID=instrument_id,
         OrderRef=str(self.max_order_ref),
         Direction=direction,
         CombOffsetFlag=ApiStruct.OF_Open,
         CombHedgeFlag=ApiStruct.HF_Speculation,
         VolumeTotalOriginal=volume,
         ContingentCondition=ApiStruct.CC_Immediately,
         VolumeCondition=ApiStruct.VC_AV,
         MinVolume=1,
         ForceCloseReason=ApiStruct.FCC_NotForceClose,
         IsAutoSuspend=0,
         UserForceClose=0)