pool = gevent.pool.Pool(pool_size) for i in range(len(stocks) // pool_size + 1): start = i * pool_size end = (i + 1) * pool_size lst = stocks[start:end] logger.debug(f'download delta data for stock list: {lst}') for stock in lst: pool.spawn(bdt.TsHisData.download_one_delta_data, stock) pool.join(timeout=30) if __name__ == '__main__': # make sure the library exists models.get_or_create_library(conf.CN_STOCK_LIBNAME) # download_delta_data(['000651', '000001']) # hs300s = ts.get_hs300s() # stock_pools = hs300s['code'].tolist() if 'code' in hs300s else [] # 查询当前所有正常上市交易的股票列表 data = pro.stock_basic(exchange='SZSE', list_status='L', fields='ts_code,symbol,name,area,industry,list_date') stock_pools = data['ts_code'].tolist() if 'ts_code' in data else [] # stock_pools = ['600000.SH','600036.SH'] if not stock_pools: logger.warning('can not stock pools return empty.') stock_pools = models.get_cn_stocks() download_delta_data(stock_pools)
def test_get_cn_stocks(): stocks = models.get_cn_stocks() assert isinstance(stocks, list)
) drawdown_points = result.get('drawdown_points') logger.debug('Draw down points:') for drawdown_point in drawdown_points: drawdown_point_dt = drawdown_point.get("datetime").isoformat() drawdown = drawdown_point.get('drawdown') drawdownlen = drawdown_point.get('drawdownlen') logger.debug( f'stock: {stock_id}, drawdown_point: {drawdown_point_dt}, ' f'drawdown: {drawdown:.2f}, drawdownlen: {drawdownlen}' ) def main(stock_pools): """ Get all stocks and run back test. :param stock_pools: list, the stock code list. :return: None """ pool = multiprocessing.Pool() for stock in stock_pools: pool.apply_async(back_test, args=(stock, )) pool.close() pool.join() if __name__ == '__main__': cn_stocks = models.get_cn_stocks() main(cn_stocks)