Пример #1
0
def get_i_ma(days, before_datetime, end_date, r):
    # 取所有股票的交易价格,不复权
    all_data = dm.get_all_data(end_date, False)
    # 计算20天的ma30
    bvalues, avalues, t_codes, date = dm.cal_linear_ma_code(0, days, before_datetime, end_date, 30, False, all_data)
    # 生成ma30的df
    df30 = dm.cr_df(bvalues,t_codes)
    # 计算20天的ma20
    bvalues, avalues, t_codes, date = dm.cal_linear_ma_code(0, days, before_datetime, end_date, 20, False, all_data)
    # 生成ma20的df
    df20 = dm.cr_df(bvalues,t_codes)
    # 计算20天的ma10
    bvalues, avalues, t_codes, date = dm.cal_linear_ma_code(0, days, before_datetime, end_date, 10, False, all_data)
    # 生成ma10的df
    df10 = dm.cr_df(bvalues,t_codes)
    # 计算20天的ma5
    bvalues, avalues, t_codes, date = dm.cal_linear_ma_code(0, days, before_datetime, end_date, 5, False, all_data)
    # 生成ma30的df
    df5 = dm.cr_df(bvalues,t_codes)

    final={}
    for each in df30.sort(columns='bvalues', ascending=False).head(r).index:
        print each
        if each in df20.sort(columns='bvalues', ascending=False).head(r).index:
            if each in df10.sort(columns='bvalues', ascending=False).head(r).index:
                if each in df5.sort(columns='bvalues', ascending=False).head(r).index:
                    final[each] = [df5['bvalues'].loc[each], df10['bvalues'].loc[each], df20['bvalues'].loc[each], df30['bvalues'].loc[each]]
                else:
                    pass
            else:
                pass
        else:
            pass

    finfm = pd.DataFrame(final)
    # 行例转换
    finfm1 = finfm.T
    return finfm1
Пример #2
0
        print 'miss'
# 查询ma5
sort5 = {}
# for each in resultfm5.sort(columns='bvalues', ascending=False).head(300).index:
for each in resultfm.sort(columns='bvalues', ascending=False).head(300).index:
    print each
    if each in sort10:
        print 'find'
        # sort5[each] = [resultfm5['bvalues'].loc[each], resultfm10['bvalues'].loc[each], resultfm20['bvalues'].loc[each], resultfm30['bvalues'].loc[each]]
        sort5[each] = [resultfm['bvalues'].loc[each], resultfm['bvalues'].loc[each], resultfm['bvalues'].loc[each], resultfm['bvalues'].loc[each]]
    else:
        print 'miss'

# 更简单的方法
final ={}
resultfm30 = dm.cr_df(bvalues,t_codes)
resultfm20 = dm.cr_df(bvalues,t_codes)
resultfm10 = dm.cr_df(bvalues,t_codes)
resultfm5 =  dm.cr_df(bvalues,t_codes)

for each in resultfm30.sort(columns='bvalues', ascending=False).head(300).index:
    print each
    if each in resultfm20.sort(columns='bvalues', ascending=False).head(300).index:
        if each in resultfm10.sort(columns='bvalues', ascending=False).head(300).index:
            if each in resultfm5.sort(columns='bvalues', ascending=False).head(300).index:
                final[each] = [resultfm5['bvalues'].loc[each], resultfm10['bvalues'].loc[each], resultfm20['bvalues'].loc[each], resultfm30['bvalues'].loc[each]]
                print 'get'


finfm = pd.DataFrame(final)
finfm1=finfm.T