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')
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('没有数据')