示例#1
0
    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')
示例#2
0
 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
示例#3
0
文件: atp.py 项目: sunli212/hf_at_py
    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')