Example #1
0
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)
Example #2
0

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