示例#1
0
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
示例#2
0
            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)