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')
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')
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)
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)
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)