def get_forward(strategyName, symbolinfo, K_MIN, parasetlist, rawdatapath, startdate, enddate, colslist, result_para_dic, indexcolsFlag, resultfilesuffix): forward_window_set = range(Parameter.forwardWinStart, Parameter.forwardWinEnd + 1) # 白区窗口值 nextmonth = enddate[0:7] symbol = symbolinfo.domain_symbol forwordresultpath = rawdatapath + '\\ForwardResults\\' forwardrankpath = rawdatapath + '\\ForwardRank\\' monthlist = [ datetime.strftime(x, '%Y-%m') for x in list(pd.date_range(start=startdate, end=enddate, freq='M')) ] monthlist.append(nextmonth) os.chdir(rawdatapath) try: os.mkdir('ForwardResults') except: print 'ForwardResults already exist!' try: os.mkdir('ForwardRank') except: print 'ForwardRank already exist!' try: os.mkdir('ForwardOprAnalyze') except: print 'ForwardOprAnalyze already exist!' starttime = datetime.now() print starttime # 多进程优化,启动一个对应CPU核心数量的进程池 initialCash = result_para_dic['initialCash'] positionRatio = result_para_dic['positionRatio'] pool = multiprocessing.Pool(multiprocessing.cpu_count() - 1) l = [] for whiteWindows in forward_window_set: # l.append(mtf.runPara(strategyName, whiteWindows, symbolinfo, K_MIN, parasetlist, monthlist, rawdatapath, forwordresultpath, forwardrankpath, colslist, resultfilesuffix)) l.append( pool.apply_async( mtf.runPara, (strategyName, whiteWindows, symbolinfo, K_MIN, parasetlist, monthlist, rawdatapath, forwordresultpath, forwardrankpath, colslist, resultfilesuffix))) pool.close() pool.join() mtf.calGrayResult(strategyName, symbol, K_MIN, forward_window_set, forwardrankpath, rawdatapath) indexcols = Parameter.ResultIndexDic # rawdata = DC.getBarData(symbol, K_MIN, monthlist[12] + '-01 00:00:00', enddate + ' 23:59:59').reset_index(drop=True) cols = [ 'open', 'high', 'low', 'close', 'strtime', 'utc_time', 'utc_endtime' ] barxmdic = DI.getBarDicAfterDomain(symbolinfo, K_MIN, cols) mtf.calOprResult(strategyName, rawdatapath, symbolinfo, K_MIN, nextmonth, colslist, barxmdic, positionRatio, initialCash, indexcols, indexcolsFlag, resultfilesuffix) endtime = datetime.now() print starttime print endtime
symbol_info = DI.SymbolInfo(domain_symbol, startdate, enddate) symbol_bar_folder_name = strategy_folder + "%s %s %s %d" % ( strategy_name, exchange_id, sec_id, bar_type) os.chdir(symbol_bar_folder_name) paraset_name = "%s %s %s %d Parameter.csv" % ( strategy_name, exchange_id, sec_id, bar_type) # 读取已有参数表 parasetlist = pd.read_csv(paraset_name)['Setname'].tolist() cols = [ 'open', 'high', 'low', 'close', 'strtime', 'utc_time', 'utc_endtime' ] #bar1m_dic = DI.getBarBySymbolList(domain_symbol, symbol_info.getSymbolList(), 60, startdate, enddate, cols) bar1m_dic = DI.getBarDicAfterDomain(symbol_info, 60, cols) barxm_dic = DI.getBarBySymbolList(domain_symbol, symbol_info.getSymbolList(), bar_type, startdate, enddate, cols) if 'multi_sl' in stop_loss_dic.keys(): # 混合止损模式 sltlist = [] price_tick = symbol_info.getPriceTick() for sl_name, stop_loss in stop_loss_dic.items(): if sl_name != 'multi_sl': stop_loss[ 'price_tick'] = price_tick # 传入的止损参数中加入price_tick,部分止损方式定价时要用到 stop_loss_class = StopLoss.strategy_mapping_dic[ sl_name](stop_loss)