def CsQueryMultiFields(field_dict, end_date, bk_name=_ashare, stock_list=None, condition="1", **kwargs): """天软Query函数封装 与CsQuery()的不同是,此函数对每只股票提取的字段数量大于1。 """ field_dict.update({"'IDs'": 'DefaultStockID()'}) if stock_list is None: stock_list = "''" else: stock_list = "'%s'" % ";".join(map(tradecode_to_tslcode, stock_list)) if (end_date.hour == 0) and (end_date.minute == 0) and (end_date.second == 0): encode_date = tsl.EncodeDate(end_date.year, end_date.month, end_date.day) else: encode_date = tsl.EncodeDateTime(end_date.year, end_date.month, end_date.day, end_date.hour, end_date.minute, end_date.second, 0) func_name = "Query" func_args = [bk_name, stock_list, condition, "''"] + list( reduce(lambda x, y: x + y, field_dict.items())) script_str = _gstr_from_func(func_name, func_args) sysparams = {'CurrentDate': encode_date} sysparams.update(kwargs) data = tsl.RemoteExecute(script_str, sysparams) df = parseByStock(data) return df
def TsQuery(field_dict, dates, stock, **kwargs): """ 天软时间序列函数 """ field_dict.update({ "'date'": 'DateTimeToStr(sp_time())', "'IDs'": 'DefaultStockID()' }) stock = tradecode_to_tslcode(stock) N = len(dates) func_args = [str(N)] + list(reduce(lambda x, y: x + y, field_dict.items())) func_name = "Nday" script_str = _gstr_from_func(func_name, func_args) end_date = max(dates) if (end_date.hour == 0) and (end_date.minute == 0) and (end_date.second == 0): encode_date = tsl.EncodeDate(end_date.year, end_date.month, end_date.day) else: encode_date = tsl.EncodeDateTime(end_date.year, end_date.month, end_date.day, end_date.hour, end_date.minute, end_date.second, 0) sysparams = {'CurrentDate': encode_date, 'StockID': stock} sysparams.update(kwargs) data = tsl.RemoteExecute(script_str, sysparams) df = parse2DArray(data, column_decode=['IDs', 'date']) df['IDs'] = df['IDs'].apply(tslcode_to_tradecode) df['date'] = pd.DatetimeIndex(df['date']) return df.set_index(['date', 'IDs'])
def CsQuery(field_dict, end_date, bk_name=_ashare, stock_list=None, condition="1", **kwargs): """对天软Query函数的封装 Parameters: =========== field_dict: """ field_dict.update({"'IDs'": 'DefaultStockID()'}) if stock_list is None: stock_list = "''" else: stock_list = "'%s'" % ";".join(map(tradecode_to_tslcode, stock_list)) if (end_date.hour == 0) and (end_date.minute == 0) and (end_date.second == 0): encode_date = tsl.EncodeDate(end_date.year, end_date.month, end_date.day) else: encode_date = tsl.EncodeDateTime(end_date.year, end_date.month, end_date.day, end_date.hour, end_date.minute, end_date.second, 0) func_name = "Query" func_args = [bk_name, stock_list, condition, "''"] + list( reduce(lambda x, y: x + y, field_dict.items())) script_str = _gstr_from_func(func_name, func_args) sysparams = {'CurrentDate': encode_date} sysparams.update(kwargs) data = tsl.RemoteExecute(script_str, sysparams) df = parse2DArray(data, column_decode=['IDs']) df['IDs'] = df['IDs'].apply(tslcode_to_tradecode) df['date'] = end_date return df.set_index(['date', 'IDs'])
def CsQuery(field_dict, end_date, bk_name=_ashare, stock_list=None, condition="1", code_transfer=True, **kwargs): """对天软Query函数的封装 Parameters: =========== field_dict: dict 计算字段{字段名称: 函数名称},字段名称需自加单引号。 例:{"'IDs'": 'DefaultStockID()'} end_daet: str 截面日期 bk_name: str 天软板块名称,以分号分割。 stock_list: list 股票列表,默认的格式是6位代码 condition: str 天软Csquery参数 code_transfer: bool 是否要将股票列表的代码转为天软格式。如果stock_list中代码格式 没有后缀,那code_transfer需为True。 kwargs: dict 天软系统参数 """ field_dict.update({"'IDs'": 'DefaultStockID()'}) if stock_list is None: stock_list = "''" else: if code_transfer: stock_list = "'%s'" % ";".join( map(tradecode_to_tslcode, stock_list)) else: stock_list = "'%s'" % ";".join(stock_list) if (end_date.hour == 0) and (end_date.minute == 0) and (end_date.second == 0): encode_date = tsl.EncodeDate(end_date.year, end_date.month, end_date.day) else: encode_date = tsl.EncodeDateTime(end_date.year, end_date.month, end_date.day, end_date.hour, end_date.minute, end_date.second, 0) func_name = "Query" func_args = [bk_name, stock_list, condition, "''"] + list( reduce(lambda x, y: x + y, field_dict.items())) script_str = _gstr_from_func(func_name, func_args) sysparams = {'CurrentDate': encode_date} sysparams.update(kwargs) data = tsl.RemoteExecute(script_str, sysparams) df = parse2DArray(data, column_decode=['IDs']) df['IDs'] = df['IDs'].apply(tslcode_to_tradecode) df['date'] = end_date return df.set_index(['date', 'IDs'])
def encode_datetime(dt): return tsl.EncodeDateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, 0)