def show_me_number(portfolio='sharpe_onewavelet_day',): """ 每天早晨给一个神秘Number """ print(u'近期大盘趋势预测{}:'.format(portfolio)) cumsum_signals = market_brief(start='2019-01-01', portfolio=portfolio, frequency='day', market_type=QA.MARKET_TYPE.STOCK_CN,) cumsum_signals['flu/master_ratio'] = cumsum_signals.apply(lambda x:'{:.3f}/{:.3f}'.format(x.at['flu_ratio'], x.at['master_ratio']), axis=1) cumsum_signals['{}/total'.format(ST.CLUSTER_GROUP)] = cumsum_signals.apply(lambda x:'{}/{}'.format(int(x.at[ST.CLUSTER_GROUP_TOWARDS]), x.at['total']), axis=1) #cumsum_signals['{}/total'.format(ST.TRIGGER_R5)] = #cumsum_signals.apply(lambda x:'{}'.format(int(x.at[ST.TRIGGER_R5]), # x.at['total']), # axis=1) cumsum_signals['ATR_Stplin\SupTrd'] = cumsum_signals.apply(lambda x:'{}/{}'.format(x.at[FLD.ATR_Stopline], x.at[FLD.ATR_SuperTrend]), axis=1) cumsum_signals['FLU_POS/ML_FLU'] = cumsum_signals.apply(lambda x:'{}/{}'.format(x.at[FLD.FLU_POSITIVE], x.at[FLD.ML_FLU_TREND]), axis=1) cumsum_signals['trend(MT/MS)'] = cumsum_signals.apply(lambda x:'{}:{}/{}'.format(x.at['massive_flu'], x.at['massive_trend'], x.at['master_stream']), axis=1) cumsum_signals['BOOT/DEAD/MINOR'] = cumsum_signals.apply(lambda x:'{}/{}/{}/{}'.format(x.at[FLD.BOLL_RENKO_TIMING_LAG], x.at[FLD.BOOTSTRAP_GROUND_ZERO_TIMING_LAG], x.at[FLD.BOLL_RENKO_MINOR_TIMING_LAG], x.at[FLD.BOOTSTRAP_GROUND_ZERO_MINOR_TIMING_LAG]), axis=1) cumsum_signals['FLU_MS/NEG'] = cumsum_signals.apply(lambda x:'{}/{}'.format(x.at[FLD.FLU_POSITIVE_MASTER], x.at[FLD.FLU_NEGATIVE_MASTER]), axis=1) cumsum_signals['DEA/MACD/DELTA'] = cumsum_signals.apply(lambda x:'{}/{}/{}'.format(round(x.at[FLD.DEA], 2), round(x.at[FLD.MACD], 2), round(x.at[FLD.MACD_DELTA], 2)), axis=1) cumsum_signals['VOL_FLOW/BONUS'] = cumsum_signals.apply(lambda x:'{:d}/{:d}'.format(x.at[ST.VOLUME_FLOW_BOOST], x.at[ST.VOLUME_FLOW_BOOST_BONUS]), axis=1) #cumsum_signals['MASSIVE_DIF/FLU'] = cumsum_signals.apply(lambda #x:'{:d}/{:d}'.format(int(x.at['missive_dif']), # int(x.at['massive_flu'])), # axis=1) cumsum_signals['MFT/DUAL_CROSS'] = cumsum_signals.apply(lambda x:'{:d}/{:d}'.format(int(x.at[FLD.MAXFACTOR_CROSS]), x.at[FLD.DUAL_CROSS]), axis=1) cumsum_signals['RENKO/OPT'] = cumsum_signals.apply(lambda x:'{:d}/{:d}'.format(int(x.at[FLD.RENKO_TREND_S]), int(x.at[FLD.RENKO_TREND_L])), axis=1) volume_flow_boost_jx = Timeline_Integral((cumsum_signals[ST.VOLUME_FLOW_BOOST] > 0).values) volume_flow_boost_sx = Timeline_Integral((cumsum_signals[ST.VOLUME_FLOW_BOOST] < 0).values) massive_trend_jx = Timeline_Integral((cumsum_signals['massive_flu'] > 0).values) massive_trend_sx = Timeline_Integral((cumsum_signals['massive_flu'] < 0).values) maxfactor_cross_jx = Timeline_Integral((cumsum_signals[FLD.MAXFACTOR_CROSS] > 0).values) maxfactor_cross_sx = Timeline_Integral((cumsum_signals[FLD.MAXFACTOR_CROSS] < 0).values) max_trend_jx_count = np.maximum(volume_flow_boost_jx, massive_trend_jx, maxfactor_cross_jx) max_trend_sx_count = np.maximum(volume_flow_boost_sx, massive_trend_sx, maxfactor_cross_sx) cumsum_signals['max_trend_jx_count'] = np.where(max_trend_sx_count == 0, max_trend_jx_count, np.where(max_trend_jx_count == 0 , 0, -1)) cumsum_signals['max_trend_sx_count'] = np.where(max_trend_jx_count == 0, max_trend_sx_count, np.where(max_trend_sx_count == 0 , 0, -1)) #print(cumsum_signals[['max_trend_jx_count', 'max_trend_sx_count']]) pd.set_option('display.max_columns', 10) pd.set_option('display.max_rows', 180) pd.set_option('display.width', 180) # 设置打印宽度 print(cumsum_signals[cumsum_signals.columns.drop(['massive_trend', 'master_stream', 'flu_ratio', 'master_ratio', 'missive_dif', 'massive_flu', 'max_trend_jx_count', 'max_trend_sx_count', 'flu/master_ratio', 'FLU_POS/ML_FLU', FLD.BOLL_RENKO_TIMING_LAG, FLD.BOOTSTRAP_GROUND_ZERO_TIMING_LAG, FLD.BOLL_RENKO_MINOR_TIMING_LAG, FLD.BOOTSTRAP_GROUND_ZERO_MINOR_TIMING_LAG, FLD.PEAK_OPEN_ZSCORE, FLD.PEAK_OPEN, FLD.PEAK_OPEN_MINOR, ST.CLUSTER_GROUP_TOWARDS, 'total', 'ATR_Stplin\SupTrd', 'RENKO/OPT', FLD.DEA, FLD.MACD, FLD.MACD_DELTA, FLD.ATR_SuperTrend, FLD.ATR_Stopline, FLD.ADXm_Trend, FLD.Volume_HMA5, FLD.TALIB_PATTERNS, FLD.RENKO_TREND_S, FLD.RENKO_TREND_L, ST.BOOTSTRAP_I, ST.DEADPOOL, FLD.ATR_Stopline, FLD.ATR_SuperTrend, FLD.FLU_POSITIVE_MASTER, FLD.FLU_NEGATIVE_MASTER, ST.VOLUME_FLOW_BOOST, ST.VOLUME_FLOW_BOOST_BONUS, FLD.MAXFACTOR_CROSS, FLD.DUAL_CROSS, 'date_stamp', 'date', FLD.FLU_POSITIVE, FLD.ML_FLU_TREND])].tail(42)) #print('\nflu_ratio.percentile(19%)——>{:.3g}, #\nflu_ratio.percentile(38%)——>{:.3g},\nflu_ratio.percentile(50%)——>{:.3g},\nflu_ratio.percentile(61%)——>{:.3g},\nflu_ratio.percentile(81%)——>{:.3g},\n'.format(cumsum_singals['flu_ratio'].quantile(0.191), # cumsum_singals['flu_ratio'].quantile(0.382), # cumsum_singals['flu_ratio'].median(), # cumsum_singals['flu_ratio'].quantile(0.618), # cumsum_singals['flu_ratio'].quantile(0.809),)) #print('\nML_FLU_TREND.percentile(19%)——>{:d}, #\nML_FLU_TREND.percentile(38%)——>{:d},\nML_FLU_TREND.percentile(50%)——>{:d},\nML_FLU_TREND.percentile(61%)——>{:d},\nML_FLU_TREND.percentile(81%)——>{:d},\n'.format(int(cumsum_singals[FLD.ML_FLU_TREND].quantile(0.191)), # int(cumsum_singals[FLD.ML_FLU_TREND].quantile(0.382)), # int(cumsum_singals[FLD.ML_FLU_TREND].median()), # int(cumsum_singals[FLD.ML_FLU_TREND].quantile(0.618)), # int(cumsum_singals[FLD.ML_FLU_TREND].quantile(0.809)),)) #massive_trend = [] #massive_trend.append(cumsum_singals['massive_trend'].iat[-1]) #massive_trend[1] = ((cumsum_singals['flu_ratio'].pct_change() < #0).rolling(4).sum().iat[-1] < 0) #massive_trend[2] = #cumsum_singals[FLD.ML_FLU_TREND].iat[-1]<cumsum_singals[FLD.ML_FLU_TREND].quantile(0.382) #print(massive_trend) position(portfolio=portfolio, frequency='day', market_type=QA.MARKET_TYPE.STOCK_CN, cumsum_signals=cumsum_signals)
if __name__ == '__main__': import matplotlib.pyplot as plt import mpl_finance as mpf import matplotlib.dates as mdates codelist = ['HUOBI.btcusdt'] code = codelist[0] data_day = QA.QA_fetch_cryptocurrency_min_adv(code=codelist, start='2019-12-10', end='{}'.format(datetime.date.today()), frequence='60min') cumsum_signals = market_brief(portfolio='gostrike_day', start='2019-12-10', frequency='60min', market_type=QA.MARKET_TYPE.CRYPTOCURRENCY,) print('\nflu_ratio.percentile(19%)——>{:.3g}, \nflu_ratio.percentile(38%)——>{:.3g},\nflu_ratio.percentile(50%)——>{:.3g},\nflu_ratio.percentile(61%)——>{:.3g},\nflu_ratio.percentile(81%)——>{:.3g},\n'.format(cumsum_signals['flu_ratio'].quantile(0.191), cumsum_signals['flu_ratio'].quantile(0.382), cumsum_signals['flu_ratio'].median(), cumsum_signals['flu_ratio'].quantile(0.618), cumsum_signals['flu_ratio'].quantile(0.809),)) print('\nML_FLU_TREND.percentile(19%)——>{:d}, \nML_FLU_TREND.percentile(38%)——>{:d},\nML_FLU_TREND.percentile(50%)——>{:d},\nML_FLU_TREND.percentile(61%)——>{:d},\nML_FLU_TREND.percentile(81%)——>{:d},\n'.format(int(cumsum_signals[FLD.ML_FLU_TREND].quantile(0.191)), int(cumsum_signals[FLD.ML_FLU_TREND].quantile(0.382)), int(cumsum_signals[FLD.ML_FLU_TREND].median()), int(cumsum_signals[FLD.ML_FLU_TREND].quantile(0.618)), int(cumsum_signals[FLD.ML_FLU_TREND].quantile(0.809)),)) cumsum_signals['FLU_POS/ML_FLU'] = cumsum_signals.apply(lambda x:'{}/{}'.format(x.at[FLD.FLU_POSITIVE],