以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- [建议]提一点软件优化的建议:关于策略公式测试优化时减少内存使用量的建议 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=184156) |
-- 作者:lshhaaa -- 发布时间:2021/2/1 14:30:38 -- [建议]提一点软件优化的建议:关于策略公式测试优化时减少内存使用量的建议 提一点软件优化的建议: 关于策略公式测试优化时减少内存使用量的建议 问题提出:利用传统算法进行策略公式测试,优化时参数大围和数量大,对计算机的内核、内存要求极高,经常发生内存不足而崩溃。(数量大时遗传算法也多次崩溃,20核32G)。 解决思路:为了解决内存不足的问题,在使用虚拟内存寄出上,建议对运行过程数据,仅仅保留有效结果数据,大量无效结果数据予以放弃。 具体实现: 1、后一组参数运行得出的结果,和前面组的参数结果相比较,保留得分较高的参数结果,删除得分较低的参数结果。 2、将得分较高的参数,保留一定数量。该数量可调,比如保留前50组参数结果,或者60。 3、每个显示列,都单独进行排分。比如利润率前50、MAR前50、总亏损前50(从小向大排)等。 4、如果某个参数超过一定数值后发生钝化,则只记录两端边界值,比如自设的止损参数范围从0到100%,实际上15%至100%对得分不影响,均为得分最大,那么记录下15%和100%两个参数结果即可。 5、如果上述措施能解决内存问题,那么,参数优化时可以取消6个参数的限制,不设限。 6、参数大范围测试优化时间一般会很长,比如几十个小时,没关系,反正利用夜间或低负荷时电脑自行运算。需要增加一个防止休眠的小功能,和自动数据存储的功能。
|
-- 作者:yukizzc -- 发布时间:2021/2/1 14:41:48 -- 你这还不如设计成,可分割优化的方式呢。 比如,把参数可能性分成100份,每份可能有1000个参数组合,每次优化完1000个参数组合后保存一个测试报告,然后重新回测新的一份组合 最后得到100个回测结果然后加起来 |
-- 作者:lshhaaa -- 发布时间:2021/2/1 14:59:32 -- 分割优化的方案也是不错的一个方案。 两个方案感觉都可以,只要能达到下述目的就行: 1、突破一次优化仅能6个参数的限制,不设限; 2、巨量测试优化过程中,不崩溃,小内存也可以稳定运行。 3、对巨量的测试结果数据,自动剔除钝化的参数,减少人为判断的时间。
|
-- 作者:无为剑 -- 发布时间:2021/2/1 15:54:53 -- 优化时是否勾选“节省内存模式”? |
-- 作者:lshhaaa -- 发布时间:2021/2/1 16:01:11 -- 目前操作已经勾选节省内存、自动使用虚拟内存。 对于优化建议中提到的方案,可对程序现有的内存管理模式不做改变,仅仅优化算法和存储量
|
-- 作者:无为剑 -- 发布时间:2021/2/1 16:19:25 -- 如果已经勾选了节省内存模式,那么基本上就已经不存在什么内存浪费情况了,每优化一个参数仅仅保留下参数的基本优化值,如果你还是出现内存问题,那么要从其他方面来考量问题 |
-- 作者:lshhaaa -- 发布时间:2021/2/1 16:28:40 -- 相同设置,优化数量小了, 能正常。优化数量大了,就会崩溃,包括遗传算法,也崩溃。 如果经过算法优化能实现“大数量不崩溃、优化参数个数不设限、自动剔除钝化结果”,减少问题发生,将更加提高软件的易用性、人性化。 |