コード例 #1
0
ファイル: strategyM60M5.py プロジェクト: lixs5/vn173
def runOptimization():
    from vnpy.trader.app.ctaStrategy.ctaBacktesting import BacktestingEngine, MINUTE_DB_NAME, OptimizationSetting

    # 创建回测引擎
    engine = BacktestingEngine()

    # 设置引擎的回测模式为K线
    engine.setBacktestingMode(engine.BAR_MODE)

    # 设置回测用的数据起始日期
    engine.setStartDate('20110801')

    # 设置产品相关参数
    engine.setCapital(100000)
    engine.setSlippage(1)  # 股指1跳
    engine.setRate(1.0 / 10000)  # 万0.3
    engine.setSize(10)  # 股指合约大小
    engine.setPriceTick(1)  # 股指最小价格变动

    # 设置使用的历史数据库
    engine.setDatabase(MINUTE_DB_NAME, 'rb0000')
    engine.stratName = 'MultiTimeM60M5'
    engine.symbol = 'rb0000'

    # 跑优化
    setting = OptimizationSetting()  # 新建一个优化任务设置对象
    setting.setOptimizeTarget(
        'totalNetPnl')  # 设置优化排序的目标是策略净盈利 sharpeRatio totalNetPnl endBalance

    #setting.addParameter('stop_loss', 10, 100, 5)    # 增加第一个优化参数atrLength,起始12,结束20,步进2
    setting.addParameter('stop_loss', 65)

    #setting.addParameter('bollDev', 1, 5, 0.5)        # 增加第二个优化参数atrMa,起始20,结束30,步进5
    setting.addParameter('bollDev', 2.5)

    setting.addParameter('bollWindow', 10, 100, 5)
    #setting.addParameter('bollWindow', 5)            # 增加一个固定数值的参数

    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time
    start = time.time()

    # 运行单进程优化函数,自动输出结果,耗时:359秒
    #engine.runOptimization(BollingerStrategy, setting)

    # 多进程优化,耗时:89秒
    #engine.runParallelOptimization(BollingerStrategy, setting)
    engine.saveParallelOptimization(MultiTimeframeStrategy, setting)

    print u'耗时:%s' % (time.time() - start)
コード例 #2
0
def backTest(startDate, endDate):
    engine = BacktestingEngine()
    engine.setBacktestingMode(engine.BAR_MODE)    # 设置引擎的回测模式为K线
    engine.setDatabase(MINUTE_DB_NAME)  # 设置使用的历史数据库

    engine.setStartDate(startDate,initDays=1)               # 设置回测用的数据起始日期
    engine.setEndDate(endDate)

    engine.setSlippage(0.2)     # 设置滑点为股指1跳
    engine.setRate(1/1000)   # 设置手续费万0.3
    engine.setSize(1)         # 设置股指合约大小
    engine.setPriceTick(0.01)    # 设置股指最小价格变动
    engine.setCapital(1000000)  # 设置回测本金
    engine.initStrategy(MultiFrameMaStrategy, {'symbolList':['tBTCUSD:bitfinex']})
    engine.setCapital(100000)
    engine.runBacktesting()
    # 优化配置
    setting = OptimizationSetting()                 # 新建一个优化任务设置对象
    setting.setOptimizeTarget('totalNetPnl')        # 设置优化排序的目标是策略净盈利
    setting.addParameter('fastWindow', 20, 40, 10)    # 增加第一个优化参数atrLength,起始12,结束20,步进2
    setting.addParameter('slowWindow', 50, 80, 10)        # 增加第二个优化参数atrMa,起始20,结束30,步进5
    setting.addParameter('symbolList', ['tBTCUSD:bitfinex'])

    # 执行多进程优化
    import time
    import json
    start = time.time()
    resultList = engine.runParallelOptimization(MultiFrameMaStrategy, setting)
    # resultList = engine.runOptimization(MultiFrameMaStrategy, setting)
    print('耗时:%s' %(time.time()-start))
    performance = pd.DataFrame(resultList).sort_values(1,  ascending=False).iloc[0:2]
    bestParameter = performance.iloc[0,0].replace("'",'"')
    newParameter = json.loads(bestParameter)

    return newParameter
コード例 #3
0
ファイル: strategyA3.py プロジェクト: lixs5/vn180
def runOptimization():
    from vnpy.trader.app.ctaStrategy.ctaBacktesting import BacktestingEngine, MINUTE_DB_NAME, OptimizationSetting
    
    # 创建回测引擎
    engine = BacktestingEngine()
    
    # 设置引擎的回测模式为K线
    engine.setBacktestingMode(engine.BAR_MODE)
    
    bd = {'start':'20170801','capital':10000,'slippage':1,'rate':1.0/10000,'size':10,'priceTick':1,'symbol':'rb0000','stratName':'A3Strategy'}
    # 设置回测用的数据起始日期
    engine.setStartDate(bd['start'])
    
    # 设置产品相关参数
    engine.setCapital(bd['capital'])
    engine.setSlippage(bd['slippage'])     # 股指1跳
    engine.setRate(bd['rate'])   # 万0.3
    engine.setSize(bd['size'])         # 股指合约大小 
    engine.setPriceTick(bd['priceTick'])    # 股指最小价格变动
    
    # 设置使用的历史数据库
    engine.setDatabase(MINUTE_DB_NAME, bd['symbol'])
    engine.stratName = bd['stratName']
    engine.symbolName = bd['symbol']
    
    # 跑优化
    setting = OptimizationSetting()                 # 新建一个优化任务设置对象
    setting.setOptimizeTarget('totalNetPnl')            # 设置优化排序的目标是策略净盈利 sharpeRatio totalNetPnl endBalance
    
    #setting.addParameter('stop_loss', 10, 100, 5)    # 增加第一个优化参数atrLength,起始12,结束20,步进2
    setting.addParameter('fastPeriod', 5, 30, 5)  
    setting.addParameter('slowPeriod', 60)  
    

    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time    
    start = time.time()
    
    # 运行单进程优化函数,自动输出结果,耗时:359秒
    #engine.runOptimization(BollingerStrategy, setting)            
    
    # 多进程优化,耗时:89秒
    #engine.runParallelOptimization(BollingerStrategy, setting)
    engine.saveParallelOptimization(A3Strategy, setting)
         
        
    print u'耗时:%s' %(time.time()-start)   
コード例 #4
0
    def runBacktesting(self, symbol, strategy, sort):
        # 写入测试品种和参数, 返回回测数据集包含回测结果

        # 在引擎中创建策略对象
        # 创建回测引擎
        engine = BacktestingEngine()
        # 设置引擎的回测模式为K线
        engine.setBacktestingMode(engine.BAR_MODE)
        # 设置回测用的数据起始日期
        engine.setStartDate(symbol["StartDate"])
        engine.setSlippage(symbol["Slippage"])  # 1跳
        engine.setRate(symbol["Rate"])  # 佣金大小
        engine.setSize(symbol["Size"])  # 合约大小
        engine.setPriceTick(symbol["Slippage"])  # 最小价格变动
        engine.setCapital(symbol["Capital"])

        # 设置使用的历史数据库
        engine.setDatabase(MINUTE_DB_NAME, symbol["vtSymbol"])

        # 调用优化方法,可以集成优化测试
        setting = OptimizationSetting()  # 新建一个优化任务设置对象
        setting.setOptimizeTarget(sort)  # 设置优化排序的目标是策略净盈利
        print strategy[1]
        for settingKey in strategy[1]:
            if isinstance(strategy[1][settingKey], tuple):
                setting.addParameter(settingKey, strategy[1][settingKey][0], strategy[1][settingKey][1],
                                     strategy[1][settingKey][2])
            else:
                setting.addParameter(settingKey, strategy[1][settingKey])
        #
        optimizationresult = engine.runParallelOptimization(strategy[0], setting)

        engine.output(u'输出统计数据')
        # 如果是使用优化模式,这里返回的是策略回测的dict的list,如果普通回测就是单个dict
        # 如果大于30 ,就返回三十之内,否则全部
        if len(optimizationresult) > 30:
            return optimizationresult[:30]
        else:
            return optimizationresult
コード例 #5
0
def runOptimization():
    from vnpy.trader.app.ctaStrategy.ctaBacktesting import BacktestingEngine, MINUTE_DB_NAME, OptimizationSetting

    # 创建回测引擎
    engine = BacktestingEngine()

    # 设置引擎的回测模式为K线
    engine.setBacktestingMode(engine.BAR_MODE)

    # 设置回测用的数据起始日期
    engine.setStartDate('20120101')

    # 设置产品相关参数
    engine.setCapital(200000)
    engine.setSlippage(0.2)  # 股指1跳
    engine.setRate(0.3 / 10000)  # 万0.3
    engine.setSize(300)  # 股指合约大小
    engine.setPriceTick(0.2)  # 股指最小价格变动

    # 设置使用的历史数据库
    engine.setDatabase(MINUTE_DB_NAME, 'IF0000')

    # 跑优化
    setting = OptimizationSetting()  # 新建一个优化任务设置对象
    setting.setOptimizeTarget(
        'endBalance')  # 设置优化排序的目标是策略净盈利 sharpeRatio totalNetPnl endBalance
    setting.addParameter('atrLength', 12, 20,
                         2)  # 增加第一个优化参数atrLength,起始12,结束20,步进2
    #setting.addParameter('atrMa', 20, 30, 5)        # 增加第二个优化参数atrMa,起始20,结束30,步进5
    #setting.addParameter('rsiLength', 5)            # 增加一个固定数值的参数

    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G    ,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time
    start = time.time()

    # 运行单进程优化函数,自动输出结果,耗时:359秒
    #engine.runOptimization(AtrRsiStrategy, setting)

    # 多进程优化,耗时:89秒
    engine.runParallelOptimization(AtrRsiStrategy, setting)

    print u'耗时:%s' % (time.time() - start)
コード例 #6
0
def run_tasks(pardir=None):
    if pardir:
        os.chdir(pardir)
        sys.path.append(pardir)
    setting = loadSettings()
    STRATEGY_SETTING = setting['STRATEGY_SETTING']

    folderName = createFolder(STRATEGY_SETTING)
    opt_engine_setting = OptimizationSetting()
    opt_engine_setting.setOptimizeTarget(setting["OPT_TARGET"])
    opt_engine_setting.addParameter("symbolList",
                                    STRATEGY_SETTING["symbolList"])
    engine = startBacktestingEngine(setting['ENGINE_SETTINGS'])
    strategy = loadStrategy(STRATEGY_SETTING, pardir)
    for task in setting['TASK_LISTS']:
        task_name, param_mode = task
        opt_result = start_optimize_n_output(engine, task, param_mode,
                                             opt_engine_setting, folderName,
                                             strategy, setting["OPT_TARGET"])
    with open(f'{folderName}/opt_result_summary.json', "w",
              encoding="utf-8") as f:
        json.dump(opt_result, f, indent=4)
    print("*** tasks finished ****")
コード例 #7
0
    # 设置回测用的数据起始日期
    engine.setStartDate('20090327')

    # 设置产品相关参数
    engine.setSlippage(0)  # 股指1跳
    engine.setRate(0)  # 万0.3
    engine.setSize(10)  # 股指合约大小
    engine.setPriceTick(1)  # 股指最小价格变动
    engine.setCapital(30000)

    # 设置使用的历史数据库
    engine.setDatabase(DAILY_DB_NAME, 'RB9999')

    # 跑优化
    setting = OptimizationSetting()  # 新一个优化任务设置对象
    setting.setOptimizeTarget('maxDdPercent')

    setting.addParameter('SP_Volatility', 0.9, 1.0, 0.01)
    setting.addParameter('BK_A_FLAOT_PROFIT_ALL', 400, 800, 50)

    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time
    start = time.time()

    # 运行单进程优化函数,自动输出结果,耗时:359秒
    #engine.runOptimization(DoubleMaStrategyWh, setting)

    # 多进程优化,耗时:89秒
    engine.runParallelOptimization(strategy_Volatility_RB, setting)
コード例 #8
0
if __name__ == "__main__":
    engine = BacktestingEngine()
    # 设置回测用的数据起始日期
    engine.setStartDate('20190401 23:00:00')
    engine.setEndDate('20190430 23:00:00')
    # 设置产品相关参数
    contracts = [{
        "symbol": "eos.usd.q:okef",
        "size": 10,
        "priceTick": 0.001,
        "rate": 5 / 10000,
        "slippage": 0.005
    }]

    engine.setContracts(contracts)  # 设置回测合约相关数据

    # 设置使用的历史数据库
    engine.setDB_URI("mongodb://192.168.0.104:27017")
    engine.setDatabase("VnTrader_1Min_Db")
    engine.setCapital(100)  # 设置起始资金,默认值是1,000,000

    with open("CTA_setting.json") as parameterDict:
        params = json.load(parameterDict)
    engine.initStrategy(Strategy, params[0])

    setting = OptimizationSetting()
    setting.setOptimizeTarget("sharpe_ratio")
    setting.addParameter('bBandPeriod', 12, 20,
                         2)  # 增加第一个优化参数atrLength,起始12,结束20,步进2

    engine.run_ga_optimization(setting)
コード例 #9
0
    engine.setBacktestingMode(engine.BAR_MODE)

    # 设置回测用的数据起始日期
    engine.setStartDate('20130616',initDays=1)               # 设置回测用的数据起始日期
    engine.setEndDate('20130702')
    # 设置产品相关参数
    engine.setSlippage(0.2)     # 股指1跳
    engine.setRate(0.3/10000)   # 万0.3
    engine.setSize(300)         # 股指合约大小 
    engine.setPriceTick(0.2)    # 股指最小价格变动
    
    # 设置使用的历史数据库
    engine.setDatabase(MINUTE_DB_NAME)
    
    # 跑优化
    setting = OptimizationSetting()                 # 新建一个优化任务设置对象
    setting.setOptimizeTarget('capital')            # 设置优化排序的目标是策略净盈利
    setting.addParameter('lmaPeriod', 12, 20, 2)    # 增加第一个优化参数atrLength,起始12,结束20,步进2
    setting.addParameter('cciPeriod', 20, 30, 5)        # 增加第二个优化参数atrMa,起始20,结束30,步进5
    setting.addParameter('rsiEntry', 5)            # 增加一个固定数值的参数
    setting.addParameter('vtSymbol','IF0000')
    
    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time    
    start = time.time()
    
    # 运行单进程优化函数,自动输出结果,耗时:359秒
    # engine.runOptimization(MultiSignalStrategy, setting)            
    
    # 多进程优化,耗时:89秒
コード例 #10
0
    engine.setStartDate('20181214 23:00:00', initHours=120)
    engine.setEndDate('20190314 23:00:00')

    # #设置产品相关参数
    contracts = [
        {"symbol": "ETHUSD:BITFINEX",
         "size": 10,
         "priceTick": 0.001,
         "rate": 5 / 10000,
         "slippage": 0.005
         }]

    engine.setContracts(contracts)  # 设置回测合约相关数据

    # 跑优化
    setting = OptimizationSetting()  # 新建一个优化任务设置对象
    setting.setOptimizeTarget('totalNetPnl')  # 设置优化排序的目标是策略净盈利

    setting.addParameter('fastWindow', 55, 60, 5)  # 增加第一个优化参数atrLength,起始12,结束20,步进2
    setting.addParameter('slowWindow', 70, 75, 5)  # 增加第二个优化参数atrMa,起始20,结束30,步进5
    setting.addParameter('bBandPeriod', 40)        # 增加一个固定数值的参数


    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time
    start = time.time()

    # # 运行单进程优化函数,自动输出结果,耗时:359秒
    # engine.runOptimization(BollBandsStrategy, setting)
コード例 #11
0
    # 设置回测用的数据起始日期
    engine.setStartDate('20090327')
    
    # 设置产品相关参数
    engine.setSlippage(0)      # 股指1跳
    engine.setRate(0)          # 万0.3
    engine.setSize(10)         # 股指合约大小 
    engine.setPriceTick(1)     # 股指最小价格变动
    engine.setCapital(30000)
    
    # 设置使用的历史数据库
    engine.setDatabase(DAILY_DB_NAME, 'RB9999')
    
    # 跑优化
    setting = OptimizationSetting()                 # 新一个优化任务设置对象
    setting.setOptimizeTarget('maxDdPercent')     
                
    setting.addParameter('TEMP',8,8,1)     
    
    #setting.addParameter('BK_A_LOSS_SP',500,1800,100)     
    #setting.addParameter('SK_A_LOSS_SP',500,1800,100)  
    
    #setting.addParameter('BK_BEFORE_DAY',1,4,1)     
    #setting.addParameter('SP_BEFORE_DAY',1,4,1)   
    
    #setting.addParameter('SK_BEFORE_DAY',1,4,1)     
    #setting.addParameter('BP_BEFORE_DAY',1,4,1)     
    
    #setting.addParameter('BK_Volatility',0.1,1.5,0.1)     
    #setting.addParameter('SP_Volatility',0.1,1.5,0.1)  
コード例 #12
0
    engine.setBacktestingMode(engine.BAR_MODE)

    # 设置回测用的数据起始日期
    engine.setStartDate('20120101')

    # 设置产品相关参数
    engine.setSlippage(0.2)  # 股指1跳
    engine.setRate(0.3 / 10000)  # 万0.3
    engine.setSize(300)  # 股指合约大小
    engine.setPriceTick(0.2)  # 股指最小价格变动

    # 设置使用的历史数据库
    engine.setDatabase(MINUTE_DB_NAME, 'IF0000')

    # 跑优化
    setting = OptimizationSetting()  # 新建一个优化任务设置对象
    setting.setOptimizeTarget('capital')  # 设置优化排序的目标是策略净盈利
    setting.addParameter('atrLength', 12, 20,
                         2)  # 增加第一个优化参数atrLength,起始12,结束20,步进2
    setting.addParameter('atrMa', 20, 30, 5)  # 增加第二个优化参数atrMa,起始20,结束30,步进5
    setting.addParameter('rsiLength', 5)  # 增加一个固定数值的参数

    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time
    start = time.time()

    # 运行单进程优化函数,自动输出结果,耗时:359秒
    #engine.runOptimization(AtrRsiStrategy, setting)

    # 多进程优化,耗时:89秒
コード例 #13
0
    # 设置回测用的数据起始日期,注意:strategyShortTerm_Overhigh策略该值设置为第一天计算的日期,
    # 需要根据日期直接修改strategyShortTerm_Overhigh.py中class ShortTermStrategy_Overhigh的strategyStartpos值
    engine.setStartDate('20090327')

    # 设置产品相关参数
    engine.setSlippage(0)  # 股指1跳
    engine.setRate(0)  # 万0.3
    engine.setSize(10)  # 股指合约大小
    engine.setPriceTick(1)  # 股指最小价格变动
    engine.setCapital(30000)

    # 设置使用的历史数据库
    engine.setDatabase(DAILY_DB_NAME, 'RB9999')

    # 跑优化
    setting = OptimizationSetting()  # 新建一个优化任务设置对象
    setting.setOptimizeTarget('maxDdPercent')

    setting.addParameter('E_LONG', 5, 20, 1)
    setting.addParameter('Float_Profit_Over_High', 500)
    setting.addParameter('A_FLAOT_PROFIT_1', 2550)
    setting.addParameter('A_FLAOT_PROFIT_2', 1600)
    setting.addParameter('A_LOSS_SP_1', 0.19)
    setting.addParameter('A_LOSS_SP_2', 0.01)
    setting.addfilter_greater_than([\
                                    ['A_LOSS_SP_1'     ,'A_LOSS_SP_2'],\
                                    ['A_FLAOT_PROFIT_1','A_FLAOT_PROFIT_2'],\
                                    ['A_FLAOT_PROFIT_1','Float_Profit_Over_High']\
                                    ])

    #    setting.addParameter('A_LOSS_SP'         ,  0.26)      #{    保证金亏损幅度 用于卖平  默认0.45}
コード例 #14
0
ファイル: runOptimization_RB.py プロジェクト: rjj510/vnpy
    # 设置回测用的数据起始日期
    engine.setStartDate('20090327')
    
    # 设置产品相关参数
    engine.setSlippage(0)      # 股指1跳
    engine.setRate(0)          # 万0.3
    engine.setSize(10)         # 股指合约大小 
    engine.setPriceTick(1)     # 股指最小价格变动
    engine.setCapital(30000)
    
    # 设置使用的历史数据库
    engine.setDatabase(DAILY_DB_NAME, 'RB9999')
    
    # 跑优化
    setting = OptimizationSetting()                 # 新建一个优化任务设置对象
    setting.setOptimizeTarget('maxDdPercent')     
  
    setting.addParameter('SK_A_LONG'            , 13) 
    setting.addParameter('SK_A_DAYS_OPEN'       , 5) 
    setting.addParameter('SK_E_LONG'            , 69) 
    setting.addParameter('SK_E_DAYS_LONG'       , 6) 
    setting.addParameter('SK_A_RATE_MIN'        , 0.65) 
    setting.addParameter('SK_A_RATE_MAX'        , 3.7) 
    setting.addParameter('SK_A_RATE_SP'         , 3.1) 
    setting.addParameter('SK_A_LOSS_SP'         , 0.08) 
    setting.addParameter('SK_A_DAY_LOSS'        , 1.7) 
    setting.addParameter('SK_A_FLAOT_PROFIT'    , 2900) 
    setting.addParameter('SK_A_DAYS_CLOSE'      , 1) 

    
コード例 #15
0
ファイル: runOptimization.py プロジェクト: BetabrainLEE/vnpy
    engine.setBacktestingMode(engine.BAR_MODE)

    # 设置回测用的数据起始日期
    engine.setStartDate('20120101')
    
    # 设置产品相关参数
    engine.setSlippage(0.2)     # 股指1跳
    engine.setRate(0.3/10000)   # 万0.3
    engine.setSize(300)         # 股指合约大小 
    engine.setPriceTick(0.2)    # 股指最小价格变动
    
    # 设置使用的历史数据库
    engine.setDatabase(MINUTE_DB_NAME, 'IF0000')
    
    # 跑优化
    setting = OptimizationSetting()                 # 新建一个优化任务设置对象
    setting.setOptimizeTarget('capital')            # 设置优化排序的目标是策略净盈利
    setting.addParameter('atrLength', 12, 20, 2)    # 增加第一个优化参数atrLength,起始12,结束20,步进2
    setting.addParameter('atrMa', 20, 30, 5)        # 增加第二个优化参数atrMa,起始20,结束30,步进5
    setting.addParameter('rsiLength', 5)            # 增加一个固定数值的参数
    
    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time    
    start = time.time()
    
    # 运行单进程优化函数,自动输出结果,耗时:359秒
    #engine.runOptimization(AtrRsiStrategy, setting)            
    
    # 多进程优化,耗时:89秒
    engine.runParallelOptimization(AtrRsiStrategy, setting)
コード例 #16
0
    engine.setBacktestingMode(engine.BAR_MODE)

    # 设置回测用的数据起始日期
    engine.setStartDate('20120101')

    # 设置产品相关参数
    engine.setSlippage(0.2)  # 股指1跳
    engine.setRate(0.3 / 10000)  # 万0.3
    engine.setSize(300)  # 股指合约大小
    engine.setPriceTick(0.2)  # 股指最小价格变动

    # 设置使用的历史数据库
    engine.setDatabase(MINUTE_DB_NAME, 'IF0000')

    # 跑优化
    setting = OptimizationSetting()  # 新建一个优化任务设置对象
    setting.setOptimizeTarget(
        'endBalance')  # 设置优化排序的目标是策略净盈利 sharpeRatio totalNetPnl endBalance
    setting.addParameter('atrLength', 12, 20,
                         2)  # 增加第一个优化参数atrLength,起始12,结束20,步进2
    #setting.addParameter('atrMa', 20, 30, 5)        # 增加第二个优化参数atrMa,起始20,结束30,步进5
    #setting.addParameter('rsiLength', 5)            # 增加一个固定数值的参数

    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time
    start = time.time()

    # 运行单进程优化函数,自动输出结果,耗时:359秒
    #engine.runOptimization(AtrRsiStrategy, setting)
コード例 #17
0
    # 设置回测用的数据起始日期,注意:strategyShortTerm策略该值设置为第一天计算的日期,
    # 需要根据日期直接修改strategyShortTerm.py中class ShortTermStrategy的strategyStartpos值
    engine.setStartDate('20090327')

    # 设置产品相关参数
    engine.setSlippage(0)  # 股指1跳
    engine.setRate(0)  # 万0.3
    engine.setSize(10)  # 股指合约大小
    engine.setPriceTick(1)  # 股指最小价格变动
    engine.setCapital(30000)

    # 设置使用的历史数据库
    engine.setDatabase(DAILY_DB_NAME, 'RB9999')

    # 跑优化
    setting = OptimizationSetting()  # 新建一个优化任务设置对象
    setting.setOptimizeTarget('maxDdPercent')

    #    setting.addParameter('A_LOSS_SP_ALL'         ,  0.1,0.5,0.1)
    #    setting.addParameter('A_FLAOT_PROFIT_ALL'    ,  1900,3000,300)
    #    setting.addParameter('A_MIN_UP_ALL'           ,  0.9,1.5,0.01)

    setting.addParameter('SK_A_LOSS_SP_ALL', 0.37)
    setting.addParameter('SK_A_FLAOT_PROFIT_ALL', 1450)
    setting.addParameter('A_MIN_DOWN_ALL', 0.9)

    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time
    start = time.time()
コード例 #18
0
    engine.setBacktestingMode(engine.BAR_MODE)

    # 设置回测用的数据起始日期
    engine.setStartDate('20160101')
    
    # 设置产品相关参数
    engine.setSlippage(0.01)     # 股指1跳
    engine.setRate(2/10000)   # 万0.3
    engine.setSize(1)         # 股指合约大小 
    engine.setPriceTick(0.001)    # 股指最小价格变动
    
    # 设置使用的历史数据库
    engine.setDatabase(MINUTE_DB_NAME, 'USDTBTC_5min')
    
    # 跑优化
    setting = OptimizationSetting()                 # 新建一个优化任务设置对象
    setting.setOptimizeTarget('totalReturn')            # 设置优化排序的目标是策略净盈利
    #setting.addParameter('atrLength', 12, 26, 2)    # 增加第一个优化参数atrLength,起始12,结束20,步进2
    #setting.addParameter('atrMa', 20, 30, 5)        # 增加第二个优化参数atrMa,起始20,结束30,步进5
    #setting.addParameter('rsiLength', 5)            # 增加一个固定数值的参数
    setting.addParameter('kkdev',1.0, 2.0, 0.2)
    setting.addParameter('kkLength',11, 23, 2)
    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time    
    start = time.time()
    
    # 运行单进程优化函数,自动输出结果,耗时:359秒
    #engine.runOptimization(AtrRsiStrategy, setting)            
    
    # 多进程优化,耗时:89秒
コード例 #19
0
    # 设置回测用的数据起始日期
    engine.setStartDate('20090327')

    # 设置产品相关参数
    engine.setSlippage(0)  # 股指1跳
    engine.setRate(0)  # 万0.3
    engine.setSize(10)  # 股指合约大小
    engine.setPriceTick(1)  # 股指最小价格变动
    engine.setCapital(30000)

    # 设置使用的历史数据库
    engine.setDatabase(DAILY_DB_NAME, 'RB9999')

    # 跑优化
    setting = OptimizationSetting()  # 新一个优化任务设置对象
    setting.setOptimizeTarget('maxDdPercent')

    setting.addParameter('A_LOSS_SP_ALL', 0.1, 0.4, 0.02)
    setting.addParameter('A_FLAOT_PROFIT_ALL   ', 500, 3000, 100)

    # 性能测试环境:I7-3770,主频3.4G, 8核心,内存16G,Windows 7 专业版
    # 测试时还跑着一堆其他的程序,性能仅供参考
    import time
    start = time.time()

    # 运行单进程优化函数,自动输出结果,耗时:359秒
    #engine.runOptimization(DoubleMaStrategyWh, setting)

    # 多进程优化,耗时:89秒
    engine.runParallelOptimization(strategy_WaiBaoDay_RB, setting)