示例#1
0
def getParallelResult(strategyParameter, strategy_class, parasetlist, paranum,
                      indexcols):
    strategyName = strategyParameter['strategy_name']
    exchange_id = strategyParameter['exchange_id']
    sec_id = strategyParameter['sec_id']
    K_MIN = strategyParameter['K_MIN']
    startdate = strategyParameter['startdate']
    enddate = strategyParameter['enddate']
    domain_symbol = '.'.join([exchange_id, sec_id])
    result_para_dic = strategyParameter['result_para_dic']
    # ======================数据准备==============================================
    # 取合约信息
    symbolInfo = DI.SymbolInfo(domain_symbol, startdate, enddate)
    # 取跨合约数据
    # contractswaplist = DC.getContractSwaplist(domain_symbol)
    # swaplist = np.array(contractswaplist.swaputc)

    # 取K线数据
    # rawdata = DC.getBarData(symbol, K_MIN, startdate + ' 00:00:00', enddate + ' 23:59:59').reset_index(drop=True)
    rawdataDic = DI.getBarBySymbolList(domain_symbol,
                                       symbolInfo.getSymbolList(), K_MIN,
                                       startdate, enddate)

    timestart = time.time()
    # 多进程优化,启动一个对应CPU核心数量的进程池
    pool = multiprocessing.Pool(multiprocessing.cpu_count() - 1)
    l = []
    resultlist = pd.DataFrame(columns=['Setname'] + indexcols)
    strategy_para_name_list = strategy_class.get_para_name_list()
    for i in range(0, paranum):
        paraset = {}
        setname = parasetlist.ix[i, 'Setname']
        paraset['Setname'] = setname
        for strategy_para_name in strategy_para_name_list:
            paraset[strategy_para_name] = parasetlist.ix[i, strategy_para_name]
        #l.append(getResult(strategyName, strategy_class, symbolInfo, K_MIN, rawdataDic, paraset, result_para_dic, indexcols,timestart))
        l.append(
            pool.apply_async(
                getResult,
                (strategyName, strategy_class, symbolInfo, K_MIN, rawdataDic,
                 paraset, result_para_dic, indexcols, timestart)))
    pool.close()
    pool.join()
    timeend = time.time()
    print("total time %.2f" % (timeend - timestart))
    # 显示结果
    i = 0
    for res in l:
        resultlist.loc[i] = res.get()
        i += 1
    finalresults = ("%s %s %d finalresult.csv" %
                    (strategyName, domain_symbol, K_MIN))
    resultlist.to_csv(finalresults)
    return resultlist
示例#2
0
                strategyParameterSet[strategy_name] = strategy_bt_parameter

    for strategy_name, strategy_bt_parameter in strategyParameterSet.items():
        strategy_folder = "%s%s\\" % (Parameter.root_path, strategy_name)
        for strategyParameter in strategy_bt_parameter:
            exchange_id = strategyParameter['exchange_id']
            sec_id = strategyParameter['sec_id']
            bar_type = strategyParameter['K_MIN']
            startdate = strategyParameter['startdate']
            enddate = strategyParameter['enddate']
            domain_symbol = '.'.join([exchange_id, sec_id])

            result_para_dic = strategyParameter['result_para_dic']
            stop_loss_dic = strategyParameter['stop_loss_dic']

            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)
示例#3
0
        strategy_folder = "%s%s\\" % (Parameter.root_path, strategy_name)
        for strategyParameter in strategy_bt_parameter:

            strategy_name = strategyParameter['strategy_name']
            exchange_id = strategyParameter['exchange_id']
            sec_id = strategyParameter['sec_id']
            bar_type = strategyParameter['K_MIN']
            startdate = strategyParameter['startdate']
            enddate = strategyParameter['enddate']

            symbol = '.'.join([exchange_id, sec_id])

            result_para_dic = strategyParameter['result_para_dic']
            forward_mode_dic = strategyParameter['forward_mode_dic']

            symbol_info = DI.SymbolInfo(symbol, startdate, enddate)
            price_tick = symbol_info.getPriceTick()
            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()
            # 混合止损模式
            sltlist = []
            for sl_name, stop_loss in forward_mode_dic.items():
                if sl_name != 'multi_sl' and sl_name != 'common':  # 混合标志和普通模式标志都是不带参数的
                    stop_loss['price_tick'] = price_tick
                    stop_loss_class = StopLoss.strategy_mapping_dic[sl_name](
                        stop_loss)
示例#4
0
    # 生成月份列表,取开始月
    newmonth = Parameter.enddate[:7]
    month_n = Parameter.month_n
    monthlist = [
        datetime.strftime(x, '%Y-%m') for x in list(
            pd.date_range(
                start=Parameter.startdate, end=newmonth + '-01', freq='M'))
    ]
    startmonth = monthlist[-month_n]
    # ======================================参数配置==================================================
    strategy_name = Parameter.strategy_name
    exchange_id = Parameter.exchange_id
    sec_id = Parameter.sec_id
    bar_type = Parameter.K_MIN
    symbol = '.'.join([exchange_id, sec_id])
    symbolinfo = DC.SymbolInfo(symbol)

    price_tick = symbolinfo.getPriceTick()

    symbol_bar_folder_name = Parameter.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()
    paranum = len(parasetlist)
    sltlist = []
    calcMultiSLT = False
    for sl_name, stop_loss in Parameter.forward_mode_para_dic.items():
        if sl_name == 'multi_sl':