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
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