Commit dce05956 authored by Dr.李's avatar Dr.李

update universe

parent edee4aed
...@@ -143,20 +143,15 @@ class SqlEngine(object): ...@@ -143,20 +143,15 @@ class SqlEngine(object):
return strategy_names return strategy_names
def fetch_codes(self, ref_date: str, universe: Universe) -> List[int]: def fetch_codes(self, ref_date: str, universe: Universe) -> List[int]:
cond = universe.query(ref_date) df = universe.query(self, ref_date, ref_date)
query = select([UniverseTable.trade_date, UniverseTable.code]).distinct().where(cond) return sorted(df.code.tolist())
cursor = self.engine.execute(query)
codes_set = {c[1] for c in cursor.fetchall()}
return sorted(codes_set)
def fetch_codes_range(self, def fetch_codes_range(self,
universe: Universe, universe: Universe,
start_date: str = None, start_date: str = None,
end_date: str = None, end_date: str = None,
dates: Iterable[str] = None) -> pd.DataFrame: dates: Iterable[str] = None) -> pd.DataFrame:
cond = universe.query_range(start_date, end_date, dates) return universe.query(self, start_date, end_date, dates)
query = select([UniverseTable.trade_date, UniverseTable.code]).distinct().where(cond)
return pd.read_sql(query, self.engine)
def fetch_dx_return(self, def fetch_dx_return(self,
ref_date: str, ref_date: str,
......
...@@ -51,7 +51,7 @@ class Universe(object): ...@@ -51,7 +51,7 @@ class Universe(object):
and_conditions = [] and_conditions = []
if self.exclude_universe: if self.exclude_universe:
and_conditions.append(~UniverseTable.universe.in_(self.exclude_universe)) and_conditions.append(UniverseTable.universe.notin_(self.exclude_universe))
return and_( return and_(
query, query,
...@@ -67,7 +67,7 @@ class Universe(object): ...@@ -67,7 +67,7 @@ class Universe(object):
# simple case # simple case
query = select([UniverseTable.trade_date, UniverseTable.code]).where( query = select([UniverseTable.trade_date, UniverseTable.code]).where(
universe_cond universe_cond
) ).distinct()
return pd.read_sql(query, engine.engine) return pd.read_sql(query, engine.engine)
else: else:
if isinstance(self.filter_cond, Transformer): if isinstance(self.filter_cond, Transformer):
...@@ -109,7 +109,7 @@ if __name__ == '__main__': ...@@ -109,7 +109,7 @@ if __name__ == '__main__':
from alphamind.data.engines.sqlengine import SqlEngine from alphamind.data.engines.sqlengine import SqlEngine
engine = SqlEngine() engine = SqlEngine()
universe = Universe('ss', ['hs300'], special_codes=[603138]) universe = Universe('ss', ['ashare_ex'], exclude_universe=['hs300', 'zz500'], special_codes=[603138])
print(universe.query(engine, print(universe.query(engine,
start_date='2017-12-21', start_date='2017-12-21',
end_date='2017-12-25')) end_date='2017-12-25'))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment