全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
请教各位老师随机策略在TBQ里运行的问题
2022-09-25 10:17

在使用一个随机策略的时候,如果先做参数优化并选择最优参数,返回运行界面,再次运行策略确实会随机一遍,得到两种不同的结果。如图:

参数优化界面的结果:

选择最优参数后,再一次运行后的结果:

但是后续再运行,无论是重新加载策略,还是新建一个策略,只要选则22这个参数(这个参数只针对离场,和入场的随机过程无关),结果无论如何都是不会变的,如图:

我记得老师们说过,非实盘状态下策略是每一根bar运行一次,那么应该每一次点运行以后都会重新产生随机过程才对,为何这种现象只在图一到图二的过程中发生,图三过程中就不运作了呢?恳请老师们解惑,是不是我什么地方操作有问题?或者是机制理解有问题,亦或者是代码写的有问题?附上代码:

Bryan2020

计算机并不能产生我们心目中的那种真正的“随机数”。

这个说起来可能有点玄乎,不展开了。

具体到你这个问题,可以这样尝试一下:

在每个bar的date和time里面抽取一些数字,经过某种计算或者组合,得到两个数字N1和N2,当然,你得保证N2是大于N1的。

然后把这两个数字拿给RAND函数做参数。

也就是Rand(N1,N2);

这样【也许】能解决你的问题。

=======以下可以不看,每个在社区提代码问题的人也可以看看的分割线========

顺便提个建议,当你向别人求助的时候,最好制作一段能复现你的问题,但是又不涉及核心机密的代码,你把代码直接发出来,而不要发截图,那么别人把代码复制过去,复现问题、查找问题、修改代码解决问题,都会轻松很多。

如果你要别人把代码一个一个的敲进去帮你找问题,或者看着代码图片在这里凭空头脑风暴,别人可能真的不太愿意费这个劲。

除了我这种闲得蛋疼的。

2022-09-25 12:31
ackliyu1981
@Bryan2020

问题明白了,谢谢。

本来我是直接复制代码上来的,看看不美观,有错行,就搞了许久弄成了jpg,反而弄巧成拙了~crying

2022-09-25 14:41
timinginfo

说到随机数,TB没法读硬件数据,时钟序列也存在问题,可以取三个活跃品种前根Bar(或前一个tick)的成交量之和,应该足够随机。或者将这个成交量与毫秒时间结合,生成随机数。

1、单独编写一个tb随机数用户函数,订阅三个活跃品种并获取成交量,结合时钟生成真随机数;

2、在策略中调用这个自定义的随机数函数;

2022-09-25 14:11
ackliyu1981
@timinginfo

非常感谢!

2022-09-25 14:41
您未登录,请先 登录注册 后发表评论
顶部