Example #1
0
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'])
Example #2
0
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
Example #3
0
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'])
Example #4
0
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'])
Example #5
0
def encode_date(year, month, day):
    return tsl.EncodeDate(year, month, day)
Example #6
0
        return d2[1]
    else:
        print(d2[2])


if __name__ == '__main__':

    cy = '日线'

    dfcode = pd.read_excel('stockcode.xlsx')

    stockcode = dfcode['代码'].tolist()

    # 搞成天软格式的时间
    # 起始日
    sdate = ts.EncodeDate(2017, 1, 1)
    # 终止日
    edate = ts.EncodeDate(2019, 10, 20)

    # 获取交易日序列
    dateS = getTSdate(sdate, edate)

    # 解析结果的list
    s2_close = []
    s2_low = []
    s2_datetime = []
    s2_high = []
    s2_code = []

    df2 = pd.DataFrame()  # 整理所有数据
Example #7
0

def getTSdata_day(sdate, edate, stockID, cy):
    '''通过天软获取日线'''

    d2 = ts.RemoteCallFunc('MyGetTimeSeries', [sdate, edate, stockID, cy], {})

    if d2[0] == 0:
        return d2[1]
    else:
        print(d2[2])


# 搞成天软格式的时间
# 起始日
sdate = ts.EncodeDate(2017, 6, 4)
# 终止日
edate = ts.EncodeDate(2018, 6, 4)

# 天软时间变正常时间
# ts.DecodeDate(43200)

# stock1='IC01' # 天软里面的当月连续
# stock2='IC02' # 天软里面的次月连续
#

# 获取期货合约代码

# 周期

cy = '1分钟线'
Example #8
0
def TSDate(Y, M, D):
    d = tp.EncodeDate(Y, M, D)
    return d