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='将要底背离')
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)
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='金叉清单')
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)
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)
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')
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')
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)
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)
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='金叉清单')
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)
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)
{ '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)
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='将要金叉清单')