bigquant量化技术指标的自定义策略单纯通过计算MA多头指标,以短线 =5, MA 长线 =20, 当 MA 短线在 MA 长线上方时,买入股票,否则卖出股票。

调仓周期为 20 个工作日,而且最大允许持仓股票数为 10 只,最终得到这个策略的回测结果如下:

使用代码:

def handle_data(context, data):if context.trading_day_index < context.observation:  return########### 1. 资金分配# 平均持仓时间是hold_days,每日都将买入股票,每日预期使用 1/hold_days 的资金# 实际操作中,会存在一定的买入误差,所以在前hold_days天,等量使用资金;之后,尽量使用剩余资金(这里设置最多用等量的1.5倍)is_staging = context.trading_day_index < context.next_trade_day # 是否在建仓期间(前 hold_days 天)cash_avg = context.portfolio.portfolio_value / context.hold_dayscash_for_buy = context.portfolio.cashcash_for_sell = cash_avg - (context.portfolio.cash - cash_for_buy)positions = {e.symbol: p.amount * p.last_sale_pricefor e, p in context.portfolio.positions.items()}if not is_staging:# 2. 生成卖出订单:hold_days天之后才开始卖出;对持仓的股票,按预测的排序末位淘汰context.next_trade_day = context.next_trade_day + context.hold_daysequities = {e.symbol: e for e, p in context.portfolio.positions.items()}#instruments = list(reversed(list(instrument)))for equity in equities:context.order_target(equity, 0)# 3. 生成买入订单:按机器学习算法预测的排序,买入前面的stock_count只股票candidates = []for i, instrument in enumerate(instruments):sid = context.symbol(instruments[i])price = data.current(sid, 'price') # 最新价格# 读取历史数据prices = data.history(sid, 'price', context.observation, '1d')if np.isnan(price):continue# 计算短期及长期MAshort_mavg = data.history(sid, 'price',context.ma_short_period, '1d').mean() # 短期均线值long_mavg = data.history(sid, 'price',context.ma_long_period, '1d').mean() # 长期均线值# 计算现在portfolio中股票的仓位cur_position = context.portfolio.positions[sid].amount# 策略逻辑卖出逻辑(下穿)# 每次调仓周期到卖掉所有股票#if cur_position > 0 and data.can_trade(sid):#    context.order_target_value(sid, 0)# 买入逻辑(上穿)if short_mavg > long_mavg and cur_position == 0 and data.can_trade(sid):  #context.order(sid, int(cash/price/100)*100) # 买入candidates.append((sid, price))candidates = candidates[: context.stock_count]candidate_num =  len(candidates)if candidate_num > 0:context.stock_weights = T.norm([1 / candidate_num for i in range(0, candidate_num)])buy_cash_weights = context.stock_weightsprint(" buy_cash_weights ", " => ", buy_cash_weights)buy_sid_prices = list(candidates)#max_cash_per_instrument = context.portfolio.portfolio_value * context.max_cash_per_instrumentfor i, instrument in enumerate(buy_sid_prices):cash = cash_for_buy * buy_cash_weights[i]if cash > 0:sou =  int(cash/instrument[1]/100)*100context.order(instrument[0], sou)print(context.trading_day_index, " => ", instrument[0], " buy ", cash)else:print(context.trading_day_index, " => ", " no candidate ")

接口来源:https://gitee.com/l2gogogo

分析结果发现,实际回测结果比经典方案要差,初步评估是放弃了一些低权重的股票,导致选择股票比较单一 所致。

在分享bigquant量化技术指标的自定义策略过程中发现,其实直接使用量化交易接口更加方便快捷,想了解更多可以点击下方qq名片。

分享bigquant量化技术指标的自定义策略相关推荐

  1. 分享聚宽量化交易执行选股策略的执行过程

    分享聚宽量化交易执行选股策略的执行过程: 首先就是需要用不同的函数处理不同的数据,比如上市数据,要用run_query()函数处理,财务与估值数据要用get_fundamentals()函数处理.以及 ...

  2. 量化、交易、策略、算法精选论文汇总,建议收藏

    文章来源:量化投资与机器学习 原文标题:<2019年度精选论文汇总:量化.交易.策略.算法> 1.多模态深度学习在股票短期波动预测中的应用 下载地址:https://arxiv.org/a ...

  3. python量化平台怎么搭建_Python_量化投资领域, 平台, 交易策略, 项目全覆盖

    Python在量化领域的现状 就跟Java在web领域无可撼动的地位一样,Python也已经在金融量化投资领域占据了重要位置,从各个业务链条都能找到相应的框架实现. 在量化投资(证券和比特币)开源项目 ...

  4. asp.net core 2.0 web api基于JWT自定义策略授权

    JWT(json web token)是一种基于json的身份验证机制,流程如下: 通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端 ...

  5. zuul 自定义策略_如何为您的社区定义指标策略

    zuul 自定义策略 数据集无处不在,并且由于开源社区除了提供源代码外还产生大量信息,因此大多数社区基础结构都需要工具来支持软件开发过程. 例如,错误报告系统(例如Jira和Bugzilla) ,版本 ...

  6. Azure - AD B2C自定义策略和身份体验框架

    AAD B2C服务有三个关键组成部分: 用户目录.这个目录存储关于本地用户和联邦用户的信息,可以用Microsoft Graph访问. 安全令牌服务(STS),其工作是发布令牌和其他身份验证货币,并验 ...

  7. 组件分享之前端组件——用于自定义表单的前端组件form-create

    组件分享之前端组件--用于自定义表单的前端组件form-create 背景 近期正在探索前端.后端.系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各 ...

  8. bigquant量化平台数据精准吗?

    在股票量化投资中,bigquant量化数据起到很大的作用,因为bigquant量化平台的数据能够从众多只股票数据中,能够把它们罗列出来,也就是说,bigquant量化数据可以在计算和分析数据模型中,能 ...

  9. 免费的量化交易软件的交易策略?

    免费的量化交易软件的交易策略: 一.波段交易 俗称低买高卖,最常用的股票交易方法,也是用的最广的一种股票交易方法:抄底买入抄底买入摸顶卖出摸顶卖出. 二.止盈止损 不会止盈,就无法保证既得的股票收益, ...

最新文章

  1. [转载]SQL Server行列转换实现
  2. kafka 在阿里云部署
  3. VTK:IO之ReadDICOMSeries
  4. 254. Factor Combinations
  5. [转]5分钟实现Android中更换头像功能
  6. java ssm 系统的搭建_SSM框架下的javaweb学生管理系统--搭建系统结构
  7. mysql存储过程灌数据_【mysql实战】存储过程灌入一百万数据
  8. setuna截图怎么放大缩小_一款强大的电脑截图神器,快速提高工作效率,功能强大!...
  9. 华硕Y450拆机清灰、拆下光驱助散热、卸载无用软件
  10. strtok用法详解
  11. 踩坑记---Win10安装anaconda及tensorflow-cpu版
  12. 关键点检测——68点图例
  13. linear-gradient 实现切角效果
  14. 微信开发验证身份-微信开发教程5
  15. springdatajpa之初识hibernate(一)
  16. c++第四天(补充引用的定义)
  17. Railway:怎么通过github来部署vue项目
  18. 一个LED圣诞装饰灯网站首页及产品分类页代码
  19. 18个顶级的腾讯qq技巧
  20. 计算机软件水平考试什么比较好过,计算机软件水平考试必过心得

热门文章

  1. One-Error多标签分类_使用Folx自动标签功能,自动分类文件
  2. 以色列发布ICO税收草案
  3. 以色列网络安全行业的繁荣还将持续向前
  4. Flink 官方文档汇总
  5. Varnish高性能开源HTTP加速器:Varnish Nginx和Varnish Apache搭建配置
  6. skimage库(一)
  7. 10.4 UiPath如何调用Python
  8. XSS(跨站脚本攻击) - 常用代码大全
  9. 配置高可用的循环复用DNS负载均衡
  10. java 象限分析_象限分析法