Exemplo n.º 1
0
def OnTimerCtrl(win, debug=False):
    """
    定时器响应函数
    :return:
    """

    # 清屏
    wx.PostEvent(
        win,
        ResultEvent(id=MSG_UPDATE_ID_S,
                    data='检测时间:' + get_current_datetime_str() + '\n\n'))

    # 不在交易时间不使能定时器
    if not is_in_trade_time():
        wx.PostEvent(
            win, ResultEvent(id=MSG_UPDATE_ID_A, data='控制台定时器:当前不属于交易时间!\n'))

        return

    buy_stk_list = list(
        set(readConfig()['buy_stk'] + readConfig()['index_stk']))

    if debug:
        print('OnTimerCtrl_4')

    # 局部变量
    note_list = []

    # 对股票进行检查
    for stk in buy_stk_list:
        str_gui = JudgeSingleStk(stk_code=stk,
                                 stk_amount_last=400,
                                 qq='',
                                 gui=True)

        if len(str_gui['note']):
            note_list.append(str_gui['note'])

        # 打印流水信息
        if len(str_gui['msg']):
            wx.PostEvent(win,
                         ResultEvent(id=MSG_UPDATE_ID_A, data=str_gui['msg']))

    # 根据情况打印提示信息,并闪动
    if len(note_list):

        # 清屏
        wx.PostEvent(
            win,
            ResultEvent(id=NOTE_UPDATE_ID_S,
                        data='检测时间:' + get_current_datetime_str() + '\n\n'))

        # 打印提示
        for note in note_list:
            wx.PostEvent(
                win,
                ResultEvent(id=NOTE_UPDATE_ID_A, data=ChangeFontColor(note)))

        # 闪动图标提醒
        wx.PostEvent(win, ResultEvent(id=FLASH_WINDOW_ID, data=None))
Exemplo n.º 2
0
def get_pic_dict():
    """
    获取图片字典
    :return:
    """
    dict_stk_list = {
        'index': ['sh', 'sz', 'cyb'],
        'buy': readConfig()['buy_stk'],
        'concerned': readConfig()['concerned_stk']
    }

    pic_dict = {}
    for tab in dict_stk_list.keys():
        stk_list = dict_stk_list[tab]
        stk_list_pic_dict = {}

        for stk in stk_list:
            df = get_k_data_JQ(stk, 400)
            stk_pic_dict = {
                'hour': gen_Hour_MACD_Pic(stk),
                'day': gen_Day_Pic(df, stk_code=stk)[0],
                'wm': gen_W_M_MACD_Pic(stk),
                'index': gen_Idx_Pic(df, stk_code='')[0]
            }

            stk_list_pic_dict[stk] = stk_pic_dict

        # 将page中的stk pic存入字典
        pic_dict[tab] = stk_list_pic_dict

    return pic_dict
Exemplo n.º 3
0
def concerned_stk_middle_check():
    towho = '影子2'

    stk_list = readConfig()['buy_stk'] + readConfig()['concerned_stk']
    check_stklist_middle_level(stk_list, towho)

    # 检查小时MACD
    checkHourMACD_callback()
Exemplo n.º 4
0
def updateRSVRecord():
    try:
        code_list = list(
            set(readConfig()['buy_stk'] + readConfig()['concerned_stk'] +
                readConfig()['index_stk']))

        # global  RSV_Record
        for stk in code_list:
            RSV_Record[stk] = calRSVRank(stk, 5) / 100

    except Exception as e:
        print(str(e))
Exemplo n.º 5
0
    def updateRSVRecord(self):
        try:
            code_list = list(
                set(readConfig()['buy_stk'] + readConfig()['concerned_stk'] +
                    readConfig()['index_stk']))

            # global  RSV_Record
            for stk in code_list:
                RSV_Record[stk] = calRSVRank(stk, 5)

        except Exception as e:
            # print(str(e))
            self.p_ctrl.m_textCtrlMsg.AppendText('RSV数据更新失败!原因:\n' + str(e) +
                                                 '\n')
Exemplo n.º 6
0
def sendConcernedStkPicToSelf_T():

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

    stk_buy = readConfig()['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()
Exemplo n.º 7
0
def sendConcernedStkPicToSelf_V2():

    """
    将自己关心的数据打印出图,发送到qq
    相较于之前版本,本次改进为:
    1、使用json文件中的code列表代替数据库中的列表
    2、进行判断,出发发送条件再予以发送
    :return:
    """
    towho = '影子2'
    send_qq(towho, '以下是已入的stk的形势图:')
    code_list = readConfig()['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)
Exemplo n.º 8
0
def update_middle_period_hour_data():
    stk_list = readConfig()['buy_stk'] + readConfig()['concerned_stk']
    # stk_list = readConfig()['buy_stk']

    # 获取股票的小时数据
    result = {}
    for stk in stk_list:
        df_hour = get_k_data_JQ(stk,
                                count=None,
                                start_date=add_date_str(
                                    get_current_date_str(), -60),
                                freq='60m')
        result[stk] = list(df_hour['close'].values)

    with open(data_dir + 'middlePeriodHourData.json', 'w') as f:
        json.dump(result, f)
Exemplo n.º 9
0
def JudgePChangeRatio(stk_code, price_diff_ratio, debug=True):
    """
    判断stk的变化是否达到一定的幅度,以杜绝反复上报
    :param stk_code:
    :return:
    """
    global price_diff_ratio_last_dic
    if debug:
        print('函数JudgeSingleStk:进入函数!')

    # 变化1个百分点再报,避免重复报
    if stk_code in p_diff_ratio_last_dic.keys():
        if math.fabs(price_diff_ratio - p_diff_ratio_last_dic[stk_code]
                     ) * 100 > readConfig()['pcr']:

            p_diff_ratio_last_dic[stk_code] = price_diff_ratio
            if debug:
                print('函数JudgeSingleStk:' + str(stk_code) +
                      '价格变化幅度达标,允许推送,并更新振幅记忆!' + '\np_ratio_now:' +
                      str(price_diff_ratio) + '\np_ratio_last:' +
                      str(p_diff_ratio_last_dic[stk_code]))

            return True
        else:
            print('函数JudgeSingleStk:' + str(stk_code) + '价格变化幅度不够,不许推送!' +
                  '\np_ratio_now:' + str(price_diff_ratio) +
                  '\np_ratio_last:' + str(p_diff_ratio_last_dic[stk_code]))
            return False
    else:
        p_diff_ratio_last_dic[stk_code] = price_diff_ratio
        if debug:
            print('函数JudgeSingleStk:' + str(stk_code) + '首次运行,允许推送!')
        return True
Exemplo n.º 10
0
def updateRSVRecord():
    try:
        code_list = readConfig()['buy_stk']

        # global  RSV_Record
        for stk in code_list:
            RSV_Record[stk] = calRSVRank(stk, 5)

    except Exception as e:
        send_qq('影子2', 'RSV数据更新失败!\n' + str(e))
Exemplo n.º 11
0
def callback_gui():
    towho = '影子2'
    buy_stk_list = readConfig()['buy_stk'] + readConfig()['concerned_stk']
    for stk in buy_stk_list:
        str_gui = JudgeSingleStk(stk_code=stk, stk_amount_last=400, qq=towho, gui=True)
Exemplo n.º 12
0
def sendRelaLevel2QQ():
    send_qq(towho='影子2', msge='注意低位囤货:')
    calRelaPLevel(readConfig()['safe_stk'], -720, '影子2')
Exemplo n.º 13
0
Arquivo: Sub.py Projeto: PieDi/MoDeng
# encoding=utf-8
Exemplo n.º 14
0
# encoding=utf-8
Exemplo n.º 15
0
def OnTimer(win, debug=False):
    """
    定时器响应函数
    :return:
    """
    global last_upt_t
    upt_flag, last_upt_t = is_time_h_macd_update(last_upt_t)
    wx.PostEvent(win, ResultEvent(id=LAST_TIME_UPDATE_ID, data=last_upt_t))

    if not upt_flag:
        wx.PostEvent(
            win,
            ResultEvent(id=MSG_UPDATE_ID_A, data='图片更新定时器:“小时图片”更新时间点未到!\n'))
        return

    # 清屏
    wx.PostEvent(
        win,
        ResultEvent(id=NOTE_UPDATE_ID_S,
                    data='检测时间:' + get_current_datetime_str() + '\n\n'))

    # 生成更新的图片
    wx.PostEvent(win, ResultEvent(id=MSG_UPDATE_ID_A, data='开始更新小时图片...\n'))
    pic_dict = timer_update_pic('h')
    wx.PostEvent(win, ResultEvent(id=HOUR_UPDATE_ID, data=pic_dict))
    wx.PostEvent(win, ResultEvent(id=MSG_UPDATE_ID_A, data='小时图片更新完成!\n'))

    # 中期水平检测
    wx.PostEvent(win, ResultEvent(id=MSG_UPDATE_ID_A, data='开始“中期水平检测”...!\n'))
    df_level = check_stk_list_middle_level(
        list(set(readConfig()['buy_stk'] + readConfig()['concerned_stk'])))
    wx.PostEvent(win, ResultEvent(id=MSG_UPDATE_ID_A, data='“中期水平检测”完成!\n'))
    wx.PostEvent(win,
                 ResultEvent(id=NOTE_UPDATE_ID_A, data=str(df_level) + '\n\n'))

    note_tmp = \
    """
    ----------------------------------------------------------------------------------
    小提示:
    所谓“中期水平检测”是对自己的“持仓股票”和“关注股票”的当前价格在两个月内的水平
    进行统计排名,由低到高排序,越在前面的,表示当前价格越是处于低位!
    level这一列表示处于低位的实际情况,是一个0~100的数,比如12.2表示当前价格只超过了两
    个月来12.2%的时间!
    ----------------------------------------------------------------------------------
    """ + '\n'

    wx.PostEvent(win, ResultEvent(id=MSG_UPDATE_ID_A, data=note_tmp))

    # 拐点检测
    for stk in list(
            set(readConfig()['buy_stk'] + readConfig()['concerned_stk'] +
                readConfig()['index_stk'])):
        hour_macd_str = checkSingleStkHourMACD_wx(stk, source='jq')
        if len(hour_macd_str):
            wx.PostEvent(
                win,
                ResultEvent(id=NOTE_UPDATE_ID_A,
                            data=ChangeFontColor(hour_macd_str)))

    wx.PostEvent(win, ResultEvent(id=FLASH_WINDOW_ID, data=None))

    note_tmp = \
    """
    ----------------------------------------------------------------------------------
    小提示:
    所谓“拐点检测”是对自己的“持仓股票”和“关注股票”以及“三大指数”的小时级别和半
    小时级别的MACD柱子进行分析,找出“开始上涨”和“开始下跌”的情况,在控制台向用户提
    示,用户收到提示后可以查看其相应的MACD图,以便对价格走势做进一步的判断!
    ----------------------------------------------------------------------------------
    """ + '\n'

    wx.PostEvent(win, ResultEvent(id=MSG_UPDATE_ID_A, data=note_tmp))
Exemplo n.º 16
0
def callback():
    towho = '影子2'
    buy_stk_list = readConfig()['buy_stk']
    for stk in buy_stk_list:
        JudgeSingleStk(stk_code=stk, stk_amount_last=400, qq=towho)