Exemple #1
0
    def save_bottom(self, market='all', isprt=False):
        df_rst = pd.DataFrame(columns=('指标类别', '股票代码', '即将金叉日期', '快线强弱',
                                       '首次金叉时间', '大陆代码'))
        # market不是'all',从传入的文件取代码
        stock_code = stock_base.get_stock_code(market)

        if self.jb == 'm':
            pre = '月K线 即将底背离'
        if self.jb == 'd':
            pre = '日K线 即将底背离'
        if self.jb == 'w':
            pre = '周K线 即将底背离'
        if self.jb == '60':
            pre = '60分钟K线 即将底背离'
        if self.jb == '15':
            pre = '15分钟K线 即将底背离'

        self.save_name = 'D:\\0_stock_macd\\' + '_' + pre + '.xls'
        line = 0
        cnt = stock_code.shape[0]
        print('开始计算,总数 ' + str(cnt) + ' 只')
        for x in range(cnt):
            pre2 = '剩余 ' + str(cnt - x - 1) + ' 只,完成 {:.2f}%'.format(
                (x + 1) * 100 / cnt) + ' 选出 ' + str(line) + ' 只'
            print('\r', pre, pre2.ljust(10), end='')
            code = self.get_index(stock_code.iloc[x]['stock_code'])
            df2 = self.get_MACD(code)
            dbl_rst = self.analyze_bottom(df2, isprt)
            if len(dbl_rst) > 3:
                line += 1
                df_rst.loc[line] = dbl_rst

        print('\n \t\t', '完成!\n')
        df_rst.to_excel(self.save_name, sheet_name='将要底背离')
Exemple #2
0
    def save_top(self, market='all', isprt=False):
        df_rst = pd.DataFrame(columns=('类别', '股票代码', '即将金叉日期', '快线强弱',
                                       '将要金叉周期', '大陆代码'))
        # market不是'all',从传入的文件取代码
        stock_code = stock_base.get_stock_code(market)

        if self.jb == 'm':
            pre = '月K线 顶背离'
        if self.jb == 'd':
            pre = '日K线 顶背离'
        if self.jb == 'w':
            pre = '周K线 顶背离'
        if self.jb == '60':
            pre = '60分钟K线 顶背离'
        if self.jb == '15':
            pre = '15分钟K线 顶背离'

        self.save_name = 'D:\\0_stock_macd\\' + '_' + pre + '.xls'
        line = 0
        cnt = stock_code.shape[0]
        print('开始计算,总数 ' + str(cnt) + ' 只')
        for x in range(cnt):
            pre2 = '剩余 ' + str(cnt - x - 1) + ' 只,完成 {:.2f}%'.format(
                (x + 1) * 100 / cnt) + ' 选出 ' + str(line) + ' 只'
            print('\r', pre, pre2.ljust(10), end='')
            code = self.get_index(stock_code.iloc[x]['stock_code'])
            df2 = self.get_MACD(code)
            df3 = self.analyze_top(df2, isprt)
Exemple #3
0
    def save_golden(self, market='all'):
        df_rst = pd.DataFrame(columns=('类别', '股票代码', '金叉日期', '快线强弱', '红柱数量',
                                       '大陆代码'))
        # print('\r', str(10 - i).ljust(10), end='')

        stock_code = stock_base.get_stock_code(market)

        if self.jb == 'm':
            pre = '月K线金叉'
        if self.jb == 'd':
            pre = '日K线金叉'
        if self.jb == 'w':
            pre = '周K线金叉'
        if self.jb == '60':
            pre = '60分钟K线金叉'
        if self.jb == '15':
            pre = '15分钟K线金叉'

        self.save_name = 'D:\\0_stock_macd\\' + '_' + pre + '.xls'
        line = 0
        cnt = stock_code.shape[0]
        print('开始计算,总数 ' + str(cnt) + ' 只')
        for x in range(cnt):
            pre2 = '剩余 ' + str(cnt - x - 1) + ' 只,完成 {:.2f}%'.format(
                (x + 1) * 100 / cnt) + ' 选出 ' + str(line) + ' 只'
            print('\r', pre, pre2.ljust(10), end='')
            df = self.get_index(stock_code.iloc[x]['stock_code'])
            df2 = self.get_MACD(df)
            df3 = self.analyze_golden(df2)
            if len(df3) > 1:
                line += 1
                df_rst.loc[line] = df3
        print('\n\t\t', '完成!\n')
        df_rst.to_excel(self.save_name, sheet_name='金叉清单')
Exemple #4
0
    def conditions(self):
        self.statusbar.showMessage('正在计算...')
        self.textEdit.clear()

        if self.radioButton.isChecked():
            # print('radioButton 月线')
            path = 'D:\\0_stock_macd\\_月K线金叉.csv'

        if self.radioButton_2.isChecked():
            # print('radioButton_2 周线')
            path = 'D:\\0_stock_macd\\_周K线金叉.csv'

        if self.radioButton_3.isChecked():
            # print('radioButton_3 日线')
            path = 'D:\\0_stock_macd\\_日K线金叉.csv'

        if self.radioButton_6.isChecked():
            # print('radioButton_6 60 分钟级别')
            macd_jb = mb.MACD_INDEX('60')
            macd_jb.signal.send.connect(self.macd_progress)
        if self.radioButton_7.isChecked():
            # print('radioButton_7 15 分钟级别')
            macd_jb = mb.MACD_INDEX('15')
            macd_jb.signal.send.connect(self.macd_progress)

        if self.radioButton_8.isChecked():
            # print('radioButton_8 已金叉')
            macd_jb.save_golden(path)

        if self.radioButton_9.isChecked():
            # print('radioButton_9 即将金叉 ')
            macd_jb.save_bing_golden(path)

        if self.radioButton_10.isChecked():
            # print('radioButton_10 底背离')
            macd_jb.save_bottom(path)

        if self.radioButton_11.isChecked():
            print('radioButton_11 刚刚金叉')
            macd_jb.save_golden_now(path)

        macd_jb.disconnect()

        self.label.setText('  ')
        stock_code = stb.get_stock_code('D:\\0_stock_macd\\_日K线金叉.csv')
        cnt = stock_code.shape[0]
        self.statusbar.showMessage('计算完成, 共选出 ' + str(cnt) + ' 只')
        print('xxx'*9)
        all_stock = stb.get_market_code('all')
        print('yyy' * 9)
        print( all_stock.shape[0] )
        for x in range(cnt):
            code = stock_code.iloc[x]['stock_code']
            print('zzz' * 9)
            for i in range(1, all_stock.shape[0]):
                if all_stock.iloc[i]['stock_code'].find(code[3:]) > 0:
                    rst = '{: <4d}'.format(x + 1) + code
                    rst = rst + '\t' + all_stock.iloc[i]['stock_name']
                    self.textEdit.append(rst)
Exemple #5
0
 def golden_60(self):
     macd_60 = mb.MACD_INDEX('60')
     macd_60.save_golden('D:\\0_stock_macd\\_周K线金叉.xls')
     stock_code = stb.get_stock_code(macd_60.save_name)
     cnt = stock_code.shape[0]
     code = '周线金叉60分钟级别金叉共 ' + str(cnt) + ' 只'
     self.textEdit.append(code)
     for x in range(cnt):
         code = stock_code.iloc[x]['stock_code']
         self.textEdit.append(code)
Exemple #6
0
    def save_bottom(self, market='all', isprt=False):
        '''保存底背离股票代码'''
        df_rst = pd.DataFrame(
            columns=(
                '指标类别',
                '股票代码',
                '日期',
                '快线强弱',
                '首次金叉时间',
                '大陆代码'))
        # market不是'all',从传入的文件取代码
        try:
            stock_code = stock_base.get_stock_code(market)
        except stock_base.stkBaseError:
            print(stock_base.stkBaseError)

        if self.jb == 'm':
            pre = '月K线 即将底背离'
        if self.jb == 'd':
            pre = '日K线 即将底背离'
        if self.jb == 'w':
            pre = '周K线 即将底背离'
        if self.jb == '60':
            pre = '60分钟K线 即将底背离'
        if self.jb == '15':
            pre = '15分钟K线 即将底背离'

        self.save_name = 'D:\\0_stock_macd\\' + '_' + pre + '.csv'
        line = 0
        cnt = stock_code.shape[0]
        print('开始计算,总数 ' + str(cnt) + ' 只')
        for x in range(cnt):
            pre2 = ', 剩余 ' + str(cnt - x - 1) + ' 只,完成 {:.2f}%'.format(
                (x + 1) * 100 / cnt) + ' 选出 ' + str(line) + ' 只'
            print('\r', pre, pre2.ljust(10), end='')
            self.signal.sendmsg(pre+', 总数 ' + str(cnt) + ' 只'+pre2)
            try:
                df = self.get_index(stock_code.iloc[x]['stock_code'])
            except MACD_Error:
                continue

            try:
                df2 = self.get_MACD(df)
            except MACD_Error:
                continue
            try:
                dbl_rst = ab.analyze_bottom(df2, isprt)
            except ab.AnalyzeError:
                continue
            else:
                line += 1
                df_rst.loc[line] = dbl_rst

        print('\n \t\t', '完成!\n')
        df_rst.to_csv(self.save_name, index=False, header=True,encoding='utf-8')
Exemple #7
0
    def save_golden(self, market='all'):
        df_rst = pd.DataFrame(
            columns=(
                '类别',
                '股票代码',
                '日期',
                '快线强弱',
                '红柱数量',
                '大陆代码'))
        # print('\r', str(10 - i).ljust(10), end='')

        stock_code = stock_base.get_stock_code(market)

        if self.jb == 'm':
            pre = '月K线金叉'
        if self.jb == 'd':
            pre = '日K线金叉'
        if self.jb == 'w':
            pre = '周K线金叉'
        if self.jb == '60':
            pre = '60分钟K线金叉'
        if self.jb == '15':
            pre = '15分钟K线金叉'

        self.save_name = 'D:\\0_stock_macd\\' + '_' + pre + '.csv'
        line = 0
        cnt = stock_code.shape[0]
        print('开始计算,总数 ' + str(cnt) + ' 只')
        for x in range(cnt):
            pre2 = ', 剩余 ' + str(cnt - x - 1) + ' 只,完成 {:.2f}%'.format(
                (x + 1) * 100 / cnt) + ' 选出 ' + str(line) + ' 只'
            print('\r', pre, pre2.ljust(10), end='')
            self.signal.sendmsg(pre+', 总数 ' + str(cnt) + ' 只'+pre2)
            try:
                df = self.get_index(stock_code.iloc[x]['stock_code'])
            except MACD_Error:
                continue

            try:
                df2 = self.get_MACD(df)
            except MACD_Error:
                continue

            try:
                # 金叉且开口向上
                df3 = ab.analyze_golden_red(df2)
            except ab.AnalyzeError:
                continue
            else:

                line += 1
                df_rst.loc[line] = df3

        print('\n\t\t', '完成!请打开:', self.save_name, '\n')
        df_rst.to_csv(self.save_name, index=False, header=True,encoding='utf-8')
Exemple #8
0
    def bottom_60(self):
        bottom_60 = mb.MACD_INDEX('60')
        bottom_60.save_bottom('D:\\0_stock_macd\\_周K线金叉.xls')
        stock_code = stb.get_stock_code(bottom_60.save_name)

        cnt = stock_code.shape[0]
        code = '周线金叉60分钟底背离共 ' + str(cnt) + ' 只'
        self.textEdit.append(code)
        for x in range(cnt):
            code = stock_code.iloc[x]['stock_code']
            self.textEdit.append(code)
Exemple #9
0
    def golden_15(self):
        macd_15 = mb.MACD_INDEX('15')
        macd_15.save_golden('D:\\0_stock_macd\\_日K线金叉.xls')
        stock_code = stb.get_stock_code(macd_15.save_name)

        cnt = stock_code.shape[0]
        code = '日线金叉15分钟级别金叉共 ' + str(cnt) + ' 只'
        self.textEdit.append(code)
        for x in range(cnt):
            code = stock_code.iloc[x]['stock_code']
            self.textEdit.append(code)
Exemple #10
0
    def save_bing_golden(self, market='all'):
        """周线选股时,日线即将金叉,或者已经金叉的日线级别增强判断"""
        df_rst = pd.DataFrame(
            columns=(
                '类别',
                '股票代码',
                '日期',
                '快线强弱',
                '红柱数量',
                '大陆代码'))
        # print('\r', str(10 - i).ljust(10), end='')

        stock_code = stock_base.get_stock_code(market)

        if self.jb == 'm':
            pre = '月K线(即将)金叉'
        if self.jb == 'd':
            pre = '日K线(即将)金叉'
        if self.jb == 'w':
            pre = '周K线(即将)金叉'
        if self.jb == '60':
            pre = '60分钟K(即将)线金叉'
        if self.jb == '15':
            pre = '15分钟K线(即将)金叉'

        self.save_name = 'D:\\0_stock_macd\\' + '_' + pre + '.xls'
        line = 0
        cnt = stock_code.shape[0]
        print('开始计算,总数 ' + str(cnt) + ' 只')
        for x in range(cnt):
            pre2 = '剩余 ' + str(cnt - x - 1) + ' 只,完成 {:.2f}%'.format(
                (x + 1) * 100 / cnt) + ' 选出 ' + str(line) + ' 只'
            print('\r', pre, pre2.ljust(10), end='')
            try:
                df = self.get_index(stock_code.iloc[x]['stock_code'])
            except MACD_Error:
                continue

            try:
                df2 = self.get_MACD(df)
            except MACD_Error:
                continue

            try:
                df3 = ab.analyze_bing_golden(df2)
            except ab.AnalyzeError:
                continue
            else:
                line += 1
                df_rst.loc[line] = df3

        print('\n\t\t', '完成!请打开:', self.save_name, '\n')
        df_rst.to_excel(self.save_name, sheet_name='金叉清单')
Exemple #11
0
    def bottom_60(self):
        self.statusbar.showMessage('正在获取网络数据计算 周线金叉60分钟级别底背离,请稍等!')
        macd_d = mb.MACD_INDEX('60')
        macd_d.save_bottom('D:\\0_stock_macd\\_周K线金叉.xls')
        stock_code = stb.get_stock_code(macd_d.save_name)

        cnt = stock_code.shape[0]
        code = '周线金叉60分钟底背离共 ' + str(cnt) + ' 只'
        self.textEdit_2.append(code)
        for x in range(cnt):
            code = stock_code.iloc[x]['stock_code']
            self.textEdit_2.append(code)
Exemple #12
0
    def golden_15(self):
        self.statusbar.showMessage('正在获取网络数据计算 日线金叉15分钟级别金叉,请稍等!')
        macd_d = mb.MACD_INDEX('15')
        macd_d.save_golden('D:\\0_stock_macd\\_日K线金叉.xls')
        stock_code = stb.get_stock_code(macd_d.save_name)

        cnt = stock_code.shape[0]
        code = '日线金叉15分钟级别金叉共 ' + str(cnt) + ' 只'
        self.textEdit_3.append(code)
        for x in range(cnt):
            code = stock_code.iloc[x]['stock_code']
            self.textEdit_3.append(code)
Exemple #13
0
            {
                'dif': dif[33:],
                'dea': dea[33:],
                'hist': hist[33:]
            },
            index=df2['date'][33:],
            columns=['dif', 'dea', 'hist'])
        # df3.plot(title='MACD')
        # plt.show()

        # 寻找 MACD 金叉和死叉
        datenumber = int(df3.shape[0])
        print(1, ' ~~~ 分隔符' * 4, '~~~ ')
        print(datenumber)
        print(2, ' ~~~ 分隔符' * 4, '~~~ ')

        for i in range(datenumber - 1):
            if ((df3.iloc[i, 0] <= df3.iloc[i, 1]) &
                (df3.iloc[i + 1, 0] >= df3.iloc[i + 1, 1])):
                print("MACD 金叉的日期: " + df3.index[i + 1])
            if ((df3.iloc[i, 0] >= df3.iloc[i, 1]) &
                (df3.iloc[i + 1, 0] <= df3.iloc[i + 1, 1])):
                print("MACD 死叉的日期: " + df3.index[i + 1])

    bs.logout()
    return (dif, dea, macd)


if __name__ == '__main__':
    df = stock_base.get_stock_code('D:\\0_stock_macd\\_月K线金叉.xls')
    print(df)
Exemple #14
0
    def save_day_golden(self, market='all', isprt=False):
        df_rst = pd.DataFrame(
            columns=(
                '类别',
                '股票代码',
                '日期',
                '快线强弱',
                '将要金叉周期',
                '大陆代码'))
        try:
            stock_code = stock_base.get_stock_code(market)
        except sb.stkBaseError:
            return
        if self.jb == 'm':
            pre = '月K线(即将)金叉'
        if self.jb == 'd':
            pre = '日K线(即将)金叉'
        if self.jb == 'w':
            pre = '周K线(即将)金叉'
        if self.jb == '60':
            pre = '60分钟K线(即将)金叉'
        if self.jb == '15':
            pre = '15分钟K线(即将)金叉'

        self.save_name = 'D:\\0_stock_macd\\' + '_' + pre + '.xls'
        line = 0
        cnt = stock_code.shape[0]
        print('开始计算,总数 ' + str(cnt) + ' 只')
        for x in range(cnt):
            pre2 = '剩余 ' + str(cnt - x - 1) + ' 只,完成 {:.2f}%'.format(
                (x + 1) * 100 / cnt) + ' 选出 ' + str(line) + ' 只'
            print('\r', pre, pre2.ljust(10), end='')

            try:
                df = self.get_index(stock_code.iloc[x]['stock_code'])
            except MACD_Error:
                continue

            try:
                df2 = self.get_MACD(df)
            except MACD_Error:
                continue

            try:
                df3 = ab.analyze_bing_golden(df2, isprt)
            except ab.AnalyzeError:
                pass
            else:
                line += 1
                df_rst.loc[line] = df3
                continue

            try:
                df3 = ab.analyze_golden(df2, isprt)
            except ab.AnalyzeError:
                continue
            else:
                line += 1
                df_rst.loc[line] = df3

        print('\n \t\t', '完成!\n')
        df_rst.to_excel(self.save_name, sheet_name='将要金叉清单')