首先,要感谢VNPY.com论坛 keke分享 海龟策略深入研究-策略回测系列-17 基于遗传算法的信号优化  一文

https://www.vnpy.com/forum/topic/269-hai-gui-ce-lue-shen-ru-yan-jiu-ce-lue-hui-ce-xi-lie-17-ji-yu-yi-chuan-suan-fa-de-xin-hao-you-hua

经过一段时间学习和使用,深感这个是用于交易策略参数优化的优秀方法。这个说一些理解。

  1. 优化的对象就是这样一个list数组  [16, 8, 24, 1, 13, 8, 1] ,其实就是交易策略的参数,比如cciWindows,BollDev。类似于DNA。

  2. 首先要生成这样一个数组,这里keke做了一个方法,具体就是随机生成一个数组,同时确保每个数在一个范围内。

    这里我加了一个数组,针对K线的时间,这样就不会出现7分钟k线这个比较奇怪的情况。

    1. 
      timerange = [2,3,5,10,15,20]
      bartime = random.choice(timerange
      
  3. 就是设定进化选择,这里就是调用vnpy回测方法,用回测的指标,比如年化收益,sharpe ratio,收益亏损比等。这里建议加入一个清理的,避免多线程问题。我是使用按此统计,而不是按日统计;感觉比较准确     engine.clearBacktestingResult()

  4. 然后就是对于这一大堆不同策略数组群体进行遗传进化,包括按照概率任意两个list数组交叉包含的数,生成新的list,类似于繁殖。同时也有一定概率

    一个list数字改变;还有就是有一个名人堂(HallofFame)机制,选择几个最好的数组,一直保持在群体里面,其实这些名人堂存在价值变成了后面的参照组。

    这里原文是用DEAP原生方法mutUniformInt,在(6,40)直接随机生成一个数字替代原来的。但是考虑之前创建时候,每个是有个范围,可能适合抵押给数字的范围并不适合最后一个,比如k线时间。这里我做了个自己突变方法替代原来的。

    • tools.mutUniformInt,low = 4,up = 40,indpb=0.6)
      
    • def mutArrayGroup(individual,parameterlist, indpb):size = len(individual)parameterlist  = parameterlist()for i in xrange(size):if random.random() < indpb:individual[i] = parameterlist[i]return individual,toolbox.register("mutate", mutArrayGroup, parameterlist = parameter_generate, indpb=0.6
      

这样跑下来就差不多了,如果想要多线程请在toolbox初始化后加入下面代码


import multiprocessing
pool = multiprocessing.Pool(processes=(multiprocessing.cpu_count()-2))
toolbox.register("map", pool.map)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22259926/viewspace-2640136/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22259926/viewspace-2640136/

利用遗传算法库DEAP优化交易策略相关推荐

  1. 如何利用Python构建布林带交易策略?

    如何用Python构建布林带交易策略? 布林带是一个技术指标,广泛用于股票市场和外汇市场.它是由三条线组成的带状区域,由均线和标准差计算而得.布林带交易策略是一种利用布林带指标进行交易的策略.本文将介 ...

  2. 天勤python_天勤量化策略库:网格交易策略(难度:中级)

    什么是网格交易策略 网格交易又名渔网交易,就是跌买涨卖.它适合震荡市,震荡市就是行情价围着一个数字上下浮动的,这个数字就是设置的价格中轴线. 设定中枢价格后,对投资标的进行机械式操作,下跌时,进行分档 ...

  3. 如何利用布林带构建量化交易策略?

    布林带之于交易就像莎士比亚之于文学,如果你想在交易世界中留下印记,这非常重要而且很难避免.布林带是一种技术指标,用于以更好的方式分析市场并帮助我们对资产价格做出更好的假设,即资产是否超买或超卖. 布林 ...

  4. 算法交易策略的成功回测

    介绍 本来来自英文网站 QuantStart 中对于算法交易策略回测描述的一篇文章,原文可以参见脚注.[ Successful Backtesting of Algorithmic Trading S ...

  5. 三行情书代码_用三行代码优化您的交易策略

    三行情书代码 If you want to consistently earn money with your investments, backtesting is one of the best ...

  6. 如何选择优化算法遗传算法_用遗传算法优化垃圾收集策略

    如何选择优化算法遗传算法 Genetic Algorithms are a family of optimisation techniques that loosely resemble evolut ...

  7. 你以为AlphaGo只是下围棋厉害?不,它还能用来优化金融交易策略参数

    提取阿尔法狗中的灵感 还记得2016年3月9日-3月15日在韩国首尔上演的围棋界终极挑战吗?在总计五轮的人与机器的对决,人类一方的代表--世界围棋冠军李世石很不幸完败于机器一方的代表--美国Googl ...

  8. 利用Python进行股票交易分析(三):A股量化交易策略的验证及数据分析。

    鉴于近期空闲时间比较少,本篇文章采用不定时更新的方式来写,如大家有更好的思路也可以评论区一起讨论.... 目前进度: 2021-07-13 梳理.修改思路 2021-07-14 步骤1代码完成 背景 ...

  9. 用python画股票分时图 github_用python的matplotlib和numpy库绘制股票K线均线和成交量的整合效果(含量化验证交易策略代码)...

    在用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)一文里,我讲述了通过爬虫接口得到股票数据并绘制出K线均线图形的方式,在本文里,将 ...

最新文章

  1. 中国电子学会青少年编程能力等级测试图形化一级编程题:无奈的Jaime
  2. python使用fpdf创建pdf并写入hello world
  3. cocos2dx 2.2.5 hitWidget-onTouchEnded(pTouch, pEvent); 异常
  4. mongodb中的副本集搭建实践(转自:http://www.cnblogs.com/visionwang/p/3290435.html)
  5. valueOf()、toString()
  6. 视频图像处理仿真测试系统
  7. H5页面移动端双击屏幕禁止页面放大
  8. 【Python】列表类型操作函数和方法
  9. FireWire笔记
  10. intellji External Libraries下依赖包找不到解决方法
  11. docker容器常用几种网络模型
  12. kodi资源_安装Kodi展示播放NAS电影
  13. iOS切换根控制器动画!
  14. 教你如何卷积操作进行边缘检测,基础必备
  15. 被裁掉的大龄程序员,为什么不联合起来成立一个专收大龄程序员的公司?
  16. python课程改进建议_关于python课程的浅显理解和一些小建议
  17. 打破次元壁,让游戏角色在指尖跳舞,简易的 AR 教程
  18. c语言名人名言大全摘抄,语文摘抄名人名言
  19. GB/T18655-2010标准下的动力电池系统及其BMS电磁EMC测试
  20. mysql replication /mysql 主从复制原理

热门文章

  1. adjacency list(邻接表)神物
  2. ipa包发布App Store
  3. java-pdf合并三种方法实现以及简单效率对比
  4. 让微信 8.0 「裂开」「炸弹」的特效代码来了
  5. KSO-sqlserver汉字取首字母拼音
  6. android查看当前手机中的进程
  7. Android9自带的游戏怎么玩,[Android]手机也能玩电脑游戏,PC游戏模拟器ED302-9最新版及详细使用帮助 | 樱花庄...
  8. STM32学习记录0002-STM32初探
  9. mysql从数据库误删.idb / .frm 文件,恢复数据方法
  10. 2019第五届中国诗歌春晚致敬先贤