Example #1
0
def sendConcernedStkPicToSelf_T():
    """
    将自己关心的数据打印出图,发送到qq
    :return:
    """
    towho = '影子2'
    send_qq(towho, '以下是已入的stk的形势图:')

    stk_buy = read_config()['buy_stk']

    for x in stk_buy + ['sh', 'sz', 'cyb']:

        df = get_k_data_JQ(x, 400)
        fig, _, attention = genStkPicForQQ(df, x)

        if attention:
            send_pic_qq(towho, fig)
            send_W_M_MACD(x, towho)
        plt.close()

        # 打印第二张套图
        fig, _, attention = genStkIdxPicForQQ(df, x)
        if attention:
            send_pic_qq(towho, fig)

        plt.close()
Example #2
0
def sendConcernedStkPicToSelf_V2():
    """
    将自己关心的数据打印出图,发送到qq
    相较于之前版本,本次改进为:
    1、使用json文件中的code列表代替数据库中的列表
    2、进行判断,出发发送条件再予以发送
    :return:
    """
    towho = '影子2'
    send_qq(towho, '以下是已入的stk的形势图:')
    code_list = read_config()['buy_stk']

    for x in code_list + ['sh', 'sz', 'cyb']:

        df = get_k_data_JQ(x, 400)
        fig, _ = genStkPicForQQ(df)

        plt.title(str(x))
        send_pic_qq(towho, fig)
        # plt.show()
        plt.close()

        fig, _ = genStkIdxPicForQQ(df)

        plt.title(str(x))
        send_pic_qq(towho, fig)
        # plt.show()
        plt.close()

        send_W_M_MACD(x, towho)
Example #3
0
def sendPLevel2QQ(df, towho):
    """
    将stk的价格水平发送到qq
    :df: code, level
    :return:
    """

    r_df = df

    # 按level从低到高进行排序
    r_df_sort = r_df.sort_values(by='level', ascending=True).head(12)

    fig, ax = plt.subplots(ncols=1, nrows=1)

    ax.bar(range(0, len(r_df_sort)), r_df_sort['level'])
    # ax.plot(range(0, len(r_df_sort)), [0.1 for x in r_df_sort['level']], 'r--')
    # ax.plot(range(0, len(r_df_sort)), [0.5 for x in r_df_sort['level']], 'r--')

    # 获取code2name字典
    c2n = code2name_dict()

    ax.set_xticks(range(0, len(r_df_sort)))
    ax.set_xticklabels([c2n[x] for x in r_df_sort['code']], rotation=45)

    plt.ylim((0, 1))
    plt.grid()
    plt.title('注意低位囤货!')
    send_pic_qq(towho, fig)
    plt.close()
Example #4
0
def checkWeekStrayForAll():

    towho = '影子2'
    send_qq(towho, '以下是今晚海选结果:')

    df_total = ts.get_stock_basics()

    # 过滤掉年龄小于四岁的
    df_age_filter = df_total[df_total.apply(lambda x: int(
        str(x['timeToMarket'])[:4]) <= int(get_current_date_str()[:4]) - 4,
                                            axis=1)]

    # 根据week反转情况进行过滤,保留有反转的单位
    df_age_filter_stray = list(df_age_filter.reset_index().apply(
        lambda x: (x['code'], week_MACD_stray_judge(x['code'], towho)),
        axis=1))

    # 过滤掉非反转的情况
    df_age_f2 = list(filter(lambda x: x[1][0], df_age_filter_stray))

    # 增加stk的水平信息
    df_level = [(x[0], x[1][1], cal_stk_p_level(x[1][1]['close'].values))
                for x in df_age_f2]

    # 按总体水平排序,筛选优异者
    df_level.sort(key=lambda x: x[2]['total_last'])
    df_level = df_level[:math.floor(len(df_level) / 3 * 2)]

    # 按照近30的波动率进行排序,筛选优异者
    df_level.sort(key=lambda x: x[2]['std'], reverse=True)
    df_level = df_level[:math.floor(len(df_level) / 3 * 2)]

    # 按照近30的水平排序,留下最后8只
    df_level.sort(key=lambda x: x[2]['t30_last'], reverse=False)
    df_level = df_level[:np.min([math.floor(len(df_level) / 3 * 2), 15])]

    # 打印信息
    stk_list = [k[0] for k in df_level]

    for stk in stk_list:

        # 打印周与月信息
        send_W_M_MACD(stk_code=stk, towho=towho)

        # 打印日线信息
        df = get_k_data_JQ(stk, count=400, end_date=get_current_date_str())
        fig, _, _ = genStkPicForQQ(df)

        plt.title(str(stk))
        send_pic_qq(towho, fig)
        plt.close()

        fig, _, _ = genStkIdxPicForQQ(df)

        plt.title(str(stk))
        send_pic_qq(towho, fig)
        plt.close()
Example #5
0
def printStkListPic2QQ(code_list, towho, title=None):

    if title is not None:
        title_str = title
    else:
        title_str = ''

    for x in code_list:
        df = get_k_data_JQ(x, 400)
        fig, _ = genStkPicForQQ(df)

        plt.title(str(x) + title_str)
        send_pic_qq(towho, fig)
        plt.close()

        fig, _ = genStkIdxPicForQQ(df)

        plt.title(str(x) + title_str)
        send_pic_qq(towho, fig)
        plt.close()
Example #6
0
def sendMainIndexStkPic2Public():
    """
    将自己关心的数据打印出图,发送到qq
    :return:
    """

    for x in ['sh', 'sz', 'cyb']:

        df = get_k_data_JQ(x, 400)
        fig, _ = genStkPicForQQ(df)

        plt.title(str(x))
        send_pic_qq('大盘上涨概率公示', fig)
        plt.close()

        fig, _ = genStkIdxPicForQQ(df)

        plt.title(str(x))
        send_pic_qq('大盘上涨概率公示', fig)
        plt.close()
Example #7
0
def send_W_M_MACD(stk_code, towho):
    """

    :param stk_code:
    :param towho:
    :return:
    """

    # 获取今天的情况,涨幅没有超过3%的不考虑
    # df_now = get_k_data_JQ(stk_code, count=2, end_date=get_current_date_str()).reset_index()
    #
    # if (df_now.tail(1)['close'].values[0]-df_now.head(1)['close'].values[0])/df_now.head(1)['close'].values[0] < 0.03:
    #     print('函数week_MACD_stray_judge:' + stk_code + '涨幅不够!')
    #     return False

    df = get_k_data_JQ(stk_code, count=400,
                       end_date=get_current_date_str()).reset_index()

    if len(df) < 350:
        print('函数week_MACD_stray_judge:' + stk_code + '数据不足!')
        return False

    # 规整
    df_floor = df.tail(math.floor(len(df) / 20) * 20 - 19)

    # 增加每周的星期几
    df_floor['day'] = df_floor.apply(
        lambda x: calendar.weekday(int(x['date'].split('-')[
            0]), int(x['date'].split('-')[1]), int(x['date'].split('-')[2])),
        axis=1)

    # 增加每周的星期几
    df_floor['day'] = df_floor.apply(
        lambda x: calendar.weekday(int(x['date'].split('-')[
            0]), int(x['date'].split('-')[1]), int(x['date'].split('-')[2])),
        axis=1)

    # 隔着5个取一个
    if df_floor.tail(1)['day'].values[0] != 4:
        df_floor_slice_5 = pd.concat(
            [df_floor[df_floor.day == 4],
             df_floor.tail(1)], axis=0)
    else:
        df_floor_slice_5 = df_floor[df_floor.day == 4]

    # 获取最后的日期
    date_last = df_floor_slice_5.tail(1)['date'].values[0]

    # 计算指标
    df_floor_slice_5['MACD'], df_floor_slice_5['MACDsignal'], df_floor_slice_5[
        'MACDhist'] = talib.MACD(df_floor_slice_5.close,
                                 fastperiod=6,
                                 slowperiod=12,
                                 signalperiod=9)

    # 隔着20个取一个(月线)
    df_floor_slice_20 = df_floor.loc[::20, :]

    # 计算指标
    df_floor_slice_20['MACD'], df_floor_slice_20[
        'MACDsignal'], df_floor_slice_20['MACDhist'] = talib.MACD(
            df_floor_slice_20.close,
            fastperiod=4,
            slowperiod=8,
            signalperiod=9)
    """ --------------------------------------- 生成图片 -------------------------------------"""
    fig, ax = plot_W_M(df_floor_slice_5, df_floor_slice_20)

    # 增加标题
    plt.title(stk_code + 'month-stray' + date_last)

    # 发送图片
    send_pic_qq(towho, fig)

    # 关闭图片
    plt.close()
Example #8
0
def week_MACD_stray_judge(stk_code, towho, debug_plot=False):

    try:
        # 获取今天的情况,涨幅没有超过3%的不考虑
        df_now = get_k_data_JQ(stk_code,
                               count=2,
                               end_date=get_current_date_str()).reset_index()

        if (df_now.tail(1)['close'].values[0] - df_now.head(1)
            ['close'].values[0]) / df_now.head(1)['close'].values[0] < -0.05:
            print('函数week_MACD_stray_judge:' + stk_code + '涨幅不够!')
            return False, pd.DataFrame()

        df = get_k_data_JQ(stk_code,
                           count=400,
                           end_date=get_current_date_str()).reset_index()

        if len(df) < 350:
            print('函数week_MACD_stray_judge:' + stk_code + '数据不足!')
            return False, pd.DataFrame()

        # 规整
        df_floor = df.tail(math.floor(len(df) / 20) * 20 - 19)

        # 增加每周的星期几
        df_floor['day'] = df_floor.apply(lambda x: calendar.weekday(
            int(x['date'].split('-')[0]), int(x['date'].split('-')[1]),
            int(x['date'].split('-')[2])),
                                         axis=1)

        # 增加每周的星期几
        df_floor['day'] = df_floor.apply(lambda x: calendar.weekday(
            int(x['date'].split('-')[0]), int(x['date'].split('-')[1]),
            int(x['date'].split('-')[2])),
                                         axis=1)

        # 隔着5个取一个
        if df_floor.tail(1)['day'].values[0] != 4:
            df_floor_slice_5 = pd.concat(
                [df_floor[df_floor.day == 4],
                 df_floor.tail(1)], axis=0)
        else:
            df_floor_slice_5 = df_floor[df_floor.day == 4]

        # 计算指标
        df_floor_slice_5['MACD'], df_floor_slice_5[
            'MACDsignal'], df_floor_slice_5['MACDhist'] = talib.MACD(
                df_floor_slice_5.close,
                fastperiod=6,
                slowperiod=12,
                signalperiod=9)

        # 隔着20个取一个(月线)
        df_floor_slice_20 = df_floor.loc[::20, :]

        # 计算指标
        df_floor_slice_20['MACD'], df_floor_slice_20[
            'MACDsignal'], df_floor_slice_20['MACDhist'] = talib.MACD(
                df_floor_slice_20.close,
                fastperiod=4,
                slowperiod=8,
                signalperiod=9)

        # 获取最后的日期
        date_last = df_floor_slice_5.tail(1)['date'].values[0]

        # 判断背离
        MACD_5 = df_floor_slice_5.tail(3)['MACD'].values
        MACD_20 = df_floor_slice_20.tail(4)['MACD'].values
        if (MACD_5[1] == np.min(MACD_5)) & (MACD_20[1] != np.max(MACD_20)) & (
                MACD_20[2] != np.max(MACD_20)):

            if debug_plot:
                """ --------------------------------------- 生成图片 -------------------------------------"""
                fig, ax = plot_W_M(df_floor_slice_5, df_floor_slice_20)

                # 增加标题
                plt.title(stk_code + 'month-stray' + date_last)

                # 发送图片
                send_pic_qq(towho, fig)

                # 关闭图片
                plt.close()
            return True, df
        else:
            return False, pd.DataFrame()
    except Exception as e:
        send_qq(towho, stk_code + '出错:\n' + str(e))
        return False, pd.DataFrame()
Example #9
0
File: Sub.py Project: wjdz99/MoDeng
# encoding=utf-8
Example #10
0
# encoding=utf-8