vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 21
声望: 0

2019-07-16 12:10:54.325937 逐日盯市盈亏计算完成
2019-07-16 12:10:54.325937 开始计算策略统计指标
gen nevals mean std min max
0 100 [2423.1709968] [591.62906729] [1554.10418] [3586.59224]
Traceback (most recent call last):
File "D:/vnpy2.04/vnpy-master/tests/trader/runBacktesting.py", line 46, in <module>
results = engine.run_ga_optimization(setting) # 遗传算法优化
File "D:\Anaconda3\lib\site-packages\vnpy\app\cta_strategy\backtesting.py", line 673, in run_gaoptimization
halloffame=hof
File "D:\Anaconda3\lib\site-packages\deap\algorithms.py", line 317, in eaMuPlusLambda
offspring = varOr(population, toolbox, lambda
, cxpb, mutpb)
File "D:\Anaconda3\lib\site-packages\deap\algorithms.py", line 230, in varOr
ind1, ind2 = toolbox.mate(ind1, ind2)
File "D:\Anaconda3\lib\site-packages\deap\tools\crossover.py", line 44, in cxTwoPoint
cxpoint2 = random.randint(1, size - 1)
File "D:\Anaconda3\lib\random.py", line 222, in randint
return self.randrange(a, b+1)
File "D:\Anaconda3\lib\random.py", line 200, in randrange
raise ValueError("empty range for randrange() (%d,%d, %d)" % (istart, istop, width))
ValueError: empty range for randrange() (1,1, 0)

Member
avatar
加入于:
帖子: 21
声望: 0
setting = OptimizationSetting()
setting.set_target("total_net_pnl")                  # sharpe_ratio,return_drawdown_ratio, total_net_pnl
setting.add_parameter("xxxxx", 100, 300, 15)

results = engine.run_ga_optimization(setting) 
Member
avatar
加入于:
帖子: 21
声望: 0

ui下没问题,,。。。 前面的output都和ui下的一样,到了最后那里就报错了。。 看报错意思大概是没有其他数据了??

Administrator
avatar
加入于:
帖子: 1441
声望: 64

对,最后那个报错应该是生成下一代参数组里的随机生成逻辑报错了,因为起始值和结束值一样,具体原因我们也不清楚了。。。按理说GUI模式可用,Jupyter中应该也能跑

Member
avatar
加入于:
帖子: 21
声望: 0

用Python的交易员 wrote:

对,最后那个报错应该是生成下一代参数组里的随机生成逻辑报错了,因为起始值和结束值一样,具体原因我们也不清楚了。。。按理说GUI模式可用,Jupyter中应该也能跑

感谢群主回复~~

Member
avatar
加入于:
帖子: 21
声望: 0

用Python的交易员 wrote:

对,最后那个报错应该是生成下一代参数组里的随机生成逻辑报错了,因为起始值和结束值一样,具体原因我们也不清楚了。。。按理说GUI模式可用,Jupyter中应该也能跑

搞明白了。。。 无界面下 不能像UI那样,不优化的参数直接开始和结尾一样,然后进步=1 。。这样回导致《不优化这个参数,甚至不放到这个遗传学的那种什么组合里面》 而如果那个什么组合只有一个在参数优化, 就会报这个错。。。。

所以无界面的固定值要像下面那样写

# setting.add_parameter("xxxx", 20, 10, 5) # 只有一个待优化参数
# setting.add_parameter("xxxx", 10, 10, 1)    

上面这种是错的,但是UI下不会报错,也可以跑
无界面下要下面这样

# setting.add_parameter("xxxx", 20, 10, 5)
# setting.add_parameter("xxxx", 10)    # 固定值
Administrator
avatar
加入于:
帖子: 1441
声望: 64

哦哦,GUI模式里面,如果起始和结束值一样,会采用下面一种固定值的语句去添加到setting里

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3