def assure_stock_order_book_id(id_or_symbols): if isinstance(id_or_symbols, Instrument): return id_or_symbols.order_book_id elif isinstance(id_or_symbols, six.string_types): return assure_stock_order_book_id(instruments(id_or_symbols)) else: raise RQInvalidArgument(_(u"unsupported order_book_id type"))
def assure_stock_order_book_id(id_or_symbols): if isinstance(id_or_symbols, Instrument): return id_or_symbols.order_book_id elif isinstance(id_or_symbols, six.string_types): return assure_stock_order_book_id(instruments(id_or_symbols)) else: raise RQInvalidArgument(_(u"unsupported order_book_id type"))
def symbol(order_book_id, split=", "): if isinstance(order_book_id, six.string_types): return "{}[{}]".format(order_book_id, instruments(order_book_id).symbol) else: s = split.join(symbol(item) for item in order_book_id) return s
def periodCheck(self, stocks): # 股票上市小于一个月的,不分析 one_month = 20 selected_stocks = [] for stock in stocks: # 获取上市天数 on_board_days = instruments(stock).days_from_listed() if on_board_days > one_month: selected_stocks.append(stock) self.logger.info('过滤新股后,剩余股票%s个' % len(selected_stocks)) return selected_stocks
def assure_future_order_book_id(id_or_symbols): if isinstance(id_or_symbols, Instrument): if id_or_symbols.type != "Future": raise RQInvalidArgument( _(u"{order_book_id} is not supported in current strategy type" ).format(order_book_id=id_or_symbols.order_book_id)) else: return id_or_symbols.order_book_id elif isinstance(id_or_symbols, six.string_types): return assure_future_order_book_id(instruments(id_or_symbols)) else: raise RQInvalidArgument(_(u"unsupported order_book_id type"))
def assure_future_order_book_id(id_or_symbols): if isinstance(id_or_symbols, Instrument): if id_or_symbols.type != "Future": raise RQInvalidArgument( _(u"{order_book_id} is not supported in current strategy type").format( order_book_id=id_or_symbols.order_book_id)) else: return id_or_symbols.order_book_id elif isinstance(id_or_symbols, six.string_types): return assure_future_order_book_id(instruments(id_or_symbols)) else: raise RQInvalidArgument(_(u"unsupported order_book_id type"))
def assure_stock_order_book_id(id_or_symbols): if isinstance(id_or_symbols, Instrument): order_book_id = id_or_symbols.order_book_id """ 这所以使用XSHG和XSHE来判断是否可交易是因为股票类型策略支持很多种交易类型,比如CS, ETF, LOF, FenjiMU, FenjiA, FenjiB, INDX等,但实际其中部分由不能交易,所以不能直接按照类型区分该合约是否可以交易。而直接通过判断其后缀可以比较好的区分是否可以进行交易 """ if "XSHG" in order_book_id or "XSHE" in order_book_id or "INDX" in order_book_id: return order_book_id else: raise RQInvalidArgument( _(u"{order_book_id} is not supported in current strategy type" ).format(order_book_id=order_book_id)) elif isinstance(id_or_symbols, six.string_types): return assure_stock_order_book_id(instruments(id_or_symbols)) else: raise RQInvalidArgument(_(u"unsupported order_book_id type"))
def periodCheck(self, stocks): # 股票上市小于一年,且大于8个月的,不分析 # 股票上市小于一个月的,不分析 one_year = 250 eight_month = 167 one_month = 20 selected_stocks = [] for stock in stocks: # 获取上市天数 on_board_days = instruments(stock).days_from_listed() if on_board_days < one_year: if on_board_days < eight_month: if on_board_days > one_month: selected_stocks.append(stock) else: selected_stocks.append(stock) self.logger.debug('过滤掉上市小于一个月或上市大于8个月且小于一年的股票,剩余%d只股票' % len(selected_stocks)) return selected_stocks
def symbol(order_book_id, split=", "): if isinstance(order_book_id, six.string_types): return "{}[{}]".format(order_book_id, instruments(order_book_id).symbol) else: s = split.join(symbol(item) for item in order_book_id) return s