def getCategories(day): currentDay = day pro=getTushareInstance() lastTradeDay = getLastTradeDay(currentDay) theDayBeforeLastTradeDay = getLastTradeDay(lastTradeDay) threeDayBefore = getLastTradeDay(theDayBeforeLastTradeDay) return[ { 'text': '昨日首板失败收益率', # 上上个交易日首板 昨日收盘价/昨日最高价<0.90 9点25分跌幅小于-5% 'func': crawl_earning_of_stocks('%s的未涨停 %s的涨停 (%s的收盘价/%s的最高价)<0.90 %s的竞价小于-5%s %s收盘涨跌幅 %s' % (threeDayBefore, theDayBeforeLastTradeDay, lastTradeDay, lastTradeDay, currentDay, '%', currentDay, no_st + no_new), currentDay, True) } ]
def partTwo(start_date, i='1'): # start_date = '20220303' # start_date=datetime.datetime.now().strftime("%Y%m%d") # end_date=datetime.datetime.now().strftime("%Y%m%d") last_date = getLastTradeDay(start_date) _day = start_date print(_day + ':') no_st = "非st 非退市" # 今日涨停封死计数 row_1 = crawl_length(_day + "涨停 " + no_st) # 今日涨停炸版计数 row_2 = crawl_length(_day + "曾涨停 " + no_st) # 盘中带量曾封跌停计数 row_3 = -crawl_length(_day + "曾跌停或者跌停 " + no_st) # 收盘带量封死跌停计数 row_4 = -crawl_length(_day + "跌停且非一字跌停 " + no_st) # 盘中超跌-5%计数 row_5 = -crawl_length(("%s最低价格/%s收盘价格小于0.95 " % (start_date, last_date)) + no_st) # 收盘超跌-5%计数 row_6 = -crawl_length(_day + " 跌幅大于5% " + no_st) # 阈值 row_7 = -250 # 打板当日封板率 row_8 = '自动计算' # 昨日所有涨停收益率(不包含炸板) row_9 = crawl_earning_of_stocks( '%s涨跌幅 %s涨停 非st 非新股 非退市' % (_day, last_date), _day, True) # 昨日所有涨停真实收益率(包含炸板) row_10 = crawl_earning_of_stocks( '%s涨跌幅 %s涨停或%s曾涨停 %s非一字板或者%s放量 非st 非退市' % (_day, last_date, last_date, last_date, last_date), _day, True) # 当天两市最高连板板数 row_11 = crawl_highest('%s非st 非创业板 非科创板 非新股 二连板以上' % _day, _day) # 当天两市次高连板板数 row_12 = crawl_sub_height('%s非st 非创业板 非科创板 非新股 二连板以上' % _day, _day) # ma3涨停 row_13 = '自动计算' # 偏离幅度 row_14 = '自动计算' print('%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s' % (row_1, row_2, row_3, row_4, row_5, row_6, row_7, row_8, row_9, row_10, row_11, row_12, row_13, row_14)) worksheet.write('A' + i, _day) worksheet.write('B' + i, row_1) worksheet.write('C' + i, row_2) worksheet.write('D' + i, row_3) worksheet.write('E' + i, row_4) worksheet.write('F' + i, row_5) worksheet.write('G' + i, row_6) worksheet.write('H' + i, row_7) worksheet.write('I' + i, row_8) worksheet.write('J' + i, row_9) worksheet.write('K' + i, row_10) worksheet.write('L' + i, row_11) worksheet.write('M' + i, row_12) worksheet.write('N' + i, row_13) worksheet.write('O' + i, row_14)
def getHistoryData(): global hasWriteHeader, a daylength = 5 # currentDay = '20200106' currentDay = getCurrentTradeDay() for i in range(0, daylength): values = getData(currentDay) # values= a[currentDay] worksheet.write(letter[0] + str(daylength-(i-1)), datetime.datetime.strptime(currentDay, '%Y%m%d').strftime("%Y/%m/%d")) for index, value in enumerate(values): worksheet.write(letter[index+1] + str(daylength -(i-1)), value) print(i, currentDay, values) currentDay = getLastTradeDay(currentDay) hasWriteHeader = True
def fetchLost(): day = '20220411' lastDay = getLastTradeDay(day) stocks = crawl_stock_data('((%s的最高价 - %s的收盘价)/%s的收盘价>0.10 非st 非创业板 非科创板' % (day, day, lastDay)) index = 0 for stock in stocks: topValue = stock['最高价:不复权[%s]' % day] closeValue = stock['收盘价:不复权[%s]' % day] lastDayCloseValue = stock['收盘价:不复权[%s]' % lastDay] percent = (float(topValue) - float(closeValue)) / lastDayCloseValue * 100 index += 1 print(index, stock['股票简称'], '回撤值', percent) pass
def getRate(_day): max = 50 for d in range(1, max): lastDay = getLastTradeDay(_day) # partTwo(cDay, str(21-d)) r1 = str('%.2f' % crawl_earning_of_stocks( '%s涨跌幅 %s涨停 非st 非新股 非退市 %s涨跌幅' % (_day, lastDay, _day), _day)) r2 = str('%.2f' % crawl_earning_of_stocks( '%s涨跌幅 %s涨停或%s曾涨停 %s非一字板或者%s放量 非st 非退市 %s涨跌幅' % (_day, lastDay, lastDay, lastDay, lastDay, _day), _day)) print(_day, r1, r2) worksheet.write('A' + str(max - d), _day) worksheet.write('B' + str(max - d), r1) worksheet.write('C' + str(max - d), r2) _day = lastDay workbook.close() os.system('open hello.xlsx')
def crawl_lost_of_stocks(question='曾涨停', day=getCurrentTradeDay()): # print(question) stocks = crawl_stock_data(question) total = 0 upTotal = 0 index = 0 stocks = sorted(stocks, key=lambda stock: float( stock.get('涨跌幅:前复权[%s]' % day, stock.get('最新涨跌幅', 0))), reverse=True) for stock in stocks: topValue = stock['涨停价[%s]' % day] closeValue = stock['收盘价:不复权[%s]' % day] lastDayCloseValue = stock['收盘价:不复权[%s]' % getLastTradeDay(day)] percent = (float(topValue) - float(closeValue)) / lastDayCloseValue * 100 index += 1 # print(index, stock['股票简称'], '回撤值', percent) total += float('%.2f' % float(percent)) if len(stocks) == 0: return '-' return -float(str('%.2f' % float(total / len(stocks))))
def getCategories(day): currentDay = day pro=getTushareInstance() lastTradeDay = getLastTradeDay(currentDay) theDayBeforeLastTradeDay = getLastTradeDay(lastTradeDay) threeDayBefore = getLastTradeDay(theDayBeforeLastTradeDay) return[ { 'category': '%s曾涨停 %s未涨停 %s' % (currentDay, lastTradeDay, no_st + no_new), 'text': '首板炸', 'method': crawl_length }, { 'category': '%s曾涨停 %s' % (currentDay, no_st + no_new), 'text': '涨停炸', 'method': crawl_length }, { 'category': '%s涨停 %s未涨停 %s' % (currentDay, lastTradeDay, no_st + no_new), 'text': '首板', 'method': crawl_length }, getSpecificHeightData(2, currentDay), getSpecificHeightData(3, currentDay), getSpecificHeightData(4, currentDay), getSpecificHeightData(5, currentDay), { 'category': '%s涨停 %s连续涨停天数大于5 %s' % (currentDay, currentDay, no_st + no_new), 'text': '5板+', 'method': crawl_length }, { 'text': '最高板', 'func': crawl_highest('非st 非创业板 非科创板 非新股 %s二连板以上' % (currentDay), currentDay) }, autoCal('涨停数'), autoCal('连板数'), autoCal('整体封板率'), autoCal('首板成功率'), autoCal('1进2晋级率'), autoCal('2进3晋级率'), autoCal('3进4晋级率'), autoCal('4进5晋级率'), autoCal('5板以上晋级率'), autoCal('连板晋级率(2板+)'), autoCal('中高位晋级率(3板+)'), autoCal('总情绪'), { 'category': '%s跌停 %s' % (currentDay, no_st + no_new), 'text': '跌停', 'method': crawl_length }, { 'text': '昨日首板成功收益率', 'func': crawl_earning_of_stocks('%s涨跌幅 %s涨停 %s未涨停 %s' % (currentDay, lastTradeDay, theDayBeforeLastTradeDay, no_st + no_new), currentDay) }, { 'text': '昨日首板失败收益率', 'func': crawl_earning_of_stocks('%s涨跌幅 %s曾涨停 %s未涨停 %s' % (currentDay, lastTradeDay, theDayBeforeLastTradeDay, no_st + no_new), currentDay) }, { 'text': '昨日首板真实收益率(包含炸板)', 'func': crawl_earning_of_stocks('%s涨跌幅 %s涨停或曾涨停 %s未涨停 %s' % (currentDay, lastTradeDay, theDayBeforeLastTradeDay, no_st + no_new), currentDay) }, { 'text': '昨日1进2成功收益率', 'func': crawl_earning_of_stocks('%s涨跌幅 %s连续涨停天数为2 %s' % (currentDay, lastTradeDay, no_st + no_new), currentDay) }, { 'text': '昨日1进2失败收益率', 'func': crawl_earning_of_stocks('%s涨跌幅 %s曾涨停 %s涨停 %s未涨停 %s' % (currentDay, lastTradeDay, theDayBeforeLastTradeDay, threeDayBefore, no_st + no_new), currentDay) }, { 'text': '昨日1进2真实收益率(包含炸板)', 'func': crawl_earning_of_stocks('%s涨跌幅 %s涨停或者曾涨停 %s涨停 %s未涨停 %s' % (currentDay, lastTradeDay, theDayBeforeLastTradeDay, threeDayBefore, no_st + no_new), currentDay) }, { 'text': '昨日连板成功收益率', 'func': crawl_earning_of_stocks('%s涨跌幅 %s连续涨停天数为2以上 %s' % (currentDay, lastTradeDay, no_st + no_new), currentDay) }, { 'text': '昨日连板失败收益率', 'func': crawl_earning_of_stocks('%s涨跌幅 %s曾涨停 %s涨停 %s' % (currentDay, lastTradeDay, theDayBeforeLastTradeDay, no_st + no_new), currentDay) }, { 'text': '昨日连板真实收益率', 'func': crawl_earning_of_stocks('%s涨跌幅 %s涨停或者曾涨停 %s涨停 %s' % (currentDay, lastTradeDay, theDayBeforeLastTradeDay, no_st + no_new), currentDay) }, { 'text': '前日连板失败收益率', 'func': crawl_earning_of_stocks('%s涨跌幅 %s未涨停 %s涨停 %s' % (currentDay, theDayBeforeLastTradeDay, threeDayBefore, no_st + no_new), currentDay) }, { 'text': '当日破板平均亏损', 'func': crawl_lost_of_stocks('%s曾涨停 %s涨停价 %s收盘价 %s收盘价不为空 %s' % (currentDay, currentDay, currentDay, lastTradeDay, no_st + no_new), currentDay) }, { 'text': '昨日破板平均收益', 'func': crawl_earning_of_stocks('%s曾涨停 %s涨跌幅 %s' % (lastTradeDay, currentDay, no_st + no_new), currentDay) }, { 'text': '昨日所有涨停真实收益率(包含炸板)', 'func': crawl_earning_of_stocks('%s涨停或者曾涨停 %s涨跌幅 %s' % (lastTradeDay, currentDay, no_st + no_new), currentDay) }, { 'text': '上证涨跌幅', 'func': crawl_index('%s上证涨跌幅' % currentDay, currentDay) }, ]
(_day, lastDay, lastDay, lastDay, lastDay, _day), _day)) print(_day, r1, r2) worksheet.write('A' + str(max - d), _day) worksheet.write('B' + str(max - d), r1) worksheet.write('C' + str(max - d), r2) _day = lastDay workbook.close() os.system('open hello.xlsx') if __name__ == "__main__": # print(111) cDay = getCurrentTradeDay() # cDay='20220426' # partTwo(cDay) _day = cDay # getRate(cDay) max = 5 for d in range(1, max): lastDay = getLastTradeDay(_day) partTwo(_day, str(21 - d)) # r1 = str('%.2f' % crawl_earning_of_stocks('%s涨跌幅 %s涨停 非st 非新股 非退市 %s涨跌幅' % (_day, lastDay,_day), _day)) # r2 = str('%.2f' % crawl_earning_of_stocks('%s涨跌幅 %s涨停或%s曾涨停 %s非一字板或者%s放量 非st 非退市 %s涨跌幅' % (_day, lastDay, lastDay, lastDay, lastDay, _day), _day)) # print(_day,r1, r2) # worksheet.write('A' + str(max - d), _day) # worksheet.write('B' + str(max - d), r1) # worksheet.write('C' + str(max - d), r2) _day = lastDay workbook.close() os.system('open hello.xlsx')