运行回测报session_distance错误,似乎跟网络有关?


(shenhaiyangthu) #1

AttributeError Traceback (most recent call last)
in ()
229 plot_charts=True,
230 backtest_only=False,
–> 231 benchmark=‘000300.SHA’
232 )

AttributeError: ‘DataFrame’ object has no attribute ‘session_distance’


(达达) #2

检查一下哪里使用了session_distance这个属性


(shenhaiyangthu) #3

代码里面没有啊 之前都没有遇到这个报错


(达达) #4

可以分享一下您的策略,我们看一下


(shenhaiyangthu) #5

回测引擎:初始化函数,只执行一次

def m19_initialize_bigquant_run(context):
# 加载预测数据
context.ranker_prediction = context.options[‘data’].read_df()

# 系统已经设置了默认的交易手续费和滑点,要修改手续费可使用如下函数
context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))
# 预测数据,通过options传入进来,使用 read_df 函数,加载到内存 (DataFrame)
# 设置买入的股票数量,这里买入预测股票列表排名靠前的5只
stock_count = 5
# 每只的股票的权重,如下的权重分配会使得靠前的股票分配多一点的资金,[0.339160, 0.213986, 0.169580, ..]
context.stock_weights = T.norm([1 / math.log(i + 2) for i in range(0, stock_count)])
# 设置每只股票占用的最大资金比例
context.max_cash_per_instrument = 0.2
context.options['hold_days'] = 5
context.i = 6836
context.trading_calendar = D.trading_days(start_date='2016-01-01', end_date='2019-01-01')

把最后这一句注释掉就不会出现那个错误了


(达达) #6

触发了保留字段trading_calendar变量名,换个变量名试一下