コード例 #1
0
def BackTesting():
    p = backtest_runner.BackTestPolicy()
    codes = stock.get_codes()
    codes = [u'002440']
    p.SetStockCodes(codes)
    backtesting = backtest_policy.Backtest()
    backtesting.createAccount(account_type=None, username=None, pwd=None)
    p.Regist(Strategy(backtesting, is_backtesting=True))
    p.Run('2014-11-1', '2014-12-10')
コード例 #2
0
def test_strategy(codes,
                  strategy_name,
                  cbfn_setparams=None,
                  mode=1,
                  start_day='',
                  end_day='',
                  datasource_mode=stock.DataSources.datafrom.livedata,
                  datasource_fn=None):
    """strategy_name: str 通过策略名称来构造策略
    cbfn_setparams: callback function 回调函数 fn(strategy) 用该函数来重新设置参数
    mode : enum/int tick=0/hisdat=1
    datasource_mode : 数据源引用地 stock.DataSource.data_mode
    datasource_fn:  函数, data_mode需要使用自定义
    """
    from autoxd import backtest_runner
    if mode == 0:
        mode = backtest_runner.BackTestPolicy.enum.tick_mode
    stock.DataSources.data_mode = datasource_mode
    stock.datasource_fn = datasource_fn
    for code in codes:
        print(code, stock.GetCodeName(code))
        p = backtest_runner.BackTestPolicy(mode)
        p.SetStockCodes([code])
        backtesting = Backtest()
        account = backtesting.createAccount(account_type=None,
                                            username=None,
                                            pwd=None)
        #p.Regist(Strategy_basesign(backtesting, is_backtesting=True))
        strategy = strategy_name(backtesting, is_backtesting=True, mode=mode)
        #设置策略参数
        if cbfn_setparams is not None:
            cbfn_setparams(strategy)
        else:
            strategy.setParams()
        print(strategy.getParams())
        p.Regist(strategy)
        #p.Regist(Strategy_Trade(backtesting, is_backtesting=True))
        cur_day = agl.CurDay()
        if end_day == '':
            end_day = cur_day
        #if start_day == '':
        ##再次修正为已有数据的20天
        #start_day = help.MyDate.s_Dec(end_day, -day_num)
        d1, d2 = p.initData(start_day, end_day)

        if d1 != d2:
            print(d1, d2)
            p.Run(d1, d2)
        else:
            print('没有数据')