def get_actionday(self): # 取交易日历 req = ReqPackage() req.Type = BarType.TradeDate self.trading_days = self.get_data_zmq(req) req.Type = BarType.Product products = self.get_data_zmq(req) proc_dict = {} for p in products: proc_dict[p['_id']] = p req.Type = BarType.InstrumentInfo insts = self.get_data_zmq(req) for inst_proc in insts: proc = proc_dict[inst_proc['ProductID']] f = InstrumentField() f.ExchangeID = proc['ExchangeID'] f.InstrumentID = inst_proc['_id'] f.PriceTick = proc['PriceTick'] f.ProductID = inst_proc['ProductID'] f.ProductType = proc['ProductType'] f.VolumeMultiple = proc['VolumeTuple'] if 'MAXLIMITORDERVOLUME' in proc: f.MaxOrderVolume = proc['MAXLIMITORDERVOLUME'] self.instrument_info[inst_proc['_id']] = f # 接口未登录,不计算Actionday if self.TradingDay == '': return self.Actionday = self.TradingDay if self.trading_days.index(self.TradingDay) == 0 else self.trading_days[self.trading_days.index(self.TradingDay) - 1] self.Actionday1 = (datetime.strptime(self.Actionday, '%Y%m%d') + timedelta(days=1)).strftime('%Y%m%d')
def _OnRspQryInstrument(self, pInstrument: CThostFtdcInstrumentField, pRspInfo: CThostFtdcRspInfoField, nRequestID: int, bIsLast: bool): """""" inst = InstrumentField() inst.InstrumentID = pInstrument.getInstrumentID() inst.ProductID = pInstrument.getProductID() inst.ExchangeID = pInstrument.getExchangeID() inst.VolumeMultiple = pInstrument.getVolumeMultiple() inst.PriceTick = pInstrument.getPriceTick() inst.MaxOrderVolume = pInstrument.getMaxLimitOrderVolume() self.instruments[inst.InstrumentID] = inst
def get_actionday(self): # 取交易日历 if self.cfg.engine_postgres: conn = self.cfg.engine_postgres.raw_connection() cursor = conn.cursor() cursor.execute( 'select _id from future_config.trade_date where trading = 1') self.trading_days = [c[0] for c in cursor.fetchall()] else: req = ReqPackage() req.Type = BarType.TradeDate self.trading_days = self.get_data_zmq(req) req.Type = BarType.Product products = self.get_data_zmq(req) proc_dict = {} for p in products: proc_dict[p['_id']] = p req.Type = BarType.InstrumentInfo insts = self.get_data_zmq(req) for inst_proc in insts: proc = proc_dict[inst_proc['ProductID']] f = InstrumentField() f.ExchangeID = proc['ExchangeID'] f.InstrumentID = inst_proc['_id'] f.PriceTick = proc['PriceTick'] f.ProductID = inst_proc['ProductID'] f.ProductType = proc['ProductType'] f.VolumeMultiple = proc['VolumeTuple'] if 'MAXLIMITORDERVOLUME' in proc: f.MaxOrderVolume = proc['MAXLIMITORDERVOLUME'] self.instrument_info[inst_proc['_id']] = f # 接口未登录,不计算Actionday if self.TradingDay == '': return self.Actionday = self.TradingDay if self.trading_days.index( self.TradingDay) == 0 else self.trading_days[ self.trading_days.index(self.TradingDay) - 1] self.Actionday1 = (datetime.strptime(self.Actionday, '%Y%m%d') + timedelta(days=1)).strftime('%Y%m%d')