一、策略代码

  1. # 导入函数库
  2. from jqdata import *
  3.  
  4. # 初始化函数,设定基准等等
  5. def initialize(context):
  6. # 设定沪深300作为基准
  7. set_benchmark('000300.XSHG')
  8. # 开启动态复权模式(真实价格)
  9. set_option('use_real_price', True)
  10. # 输出内容到日志 log.info()
  11. log.info('初始函数开始运行且全局只运行一次')
  12. # 过滤掉order系列API产生的比error级别低的log
  13. # log.set_level('order', 'error')
  14.  
  15. ### 股票相关设定 ###
  16. # 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
  17. set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
  18.  
  19. ## 运行函数(reference_security为运行时间的参考标的;传入的标的只做种类区分,因此传入'000300.XSHG'或'510300.XSHG'是一样的)
  20. # 开盘前运行
  21. run_daily(before_market_open, time='before_open', reference_security='000300.XSHG')
  22. # 开盘时运行
  23. run_daily(market_open, time='open', reference_security='000300.XSHG')
  24. # 收盘后运行
  25. run_daily(after_market_close, time='after_close', reference_security='000300.XSHG')
  26.  
  27. ## 开盘前运行函数
  28. def before_market_open(context):
  29. # 输出运行时间
  30. log.info('函数运行时间(before_market_open):'+str(context.current_dt.time()))
  31.  
  32. # 给微信发送消息(添加模拟交易,并绑定微信生效)
  33. send_message('美好的一天~')
  34.  
  35. # 要操作的股票:平安银行(g.为全局变量)
  36. g.security = '000001.XSHE'
  37.  
  38. ## 开盘时运行函数
  39. def market_open(context):
  40. log.info('函数运行时间(market_open):'+str(context.current_dt.time()))
  41. security = g.security
  42. # 获取股票的收盘价
  43. close_data = attribute_history(security, 5, '1d', ['close'])
  44. # 取得过去五天的平均价格
  45. MA5 = close_data['close'].mean()
  46. # 取得上一时间点价格
  47. current_price = close_data['close'][-1]
  48. # 取得当前的现金
  49. cash = context.portfolio.available_cash
  50.  
  51. # 如果上一时间点价格高出五天平均价1%, 则全仓买入
  52. if current_price > 1.01*MA5:
  53. # 记录这次买入
  54. log.info("价格高于均价 1%%, 买入 %s" % (security))
  55. # 用所有 cash 买入股票
  56. order_value(security, cash)
  57. # 如果上一时间点价格低于五天平均价, 则空仓卖出
  58. elif current_price < MA5 and context.portfolio.positions[security].closeable_amount > 0:
  59. # 记录这次卖出
  60. log.info("价格低于均价, 卖出 %s" % (security))
  61. # 卖出所有股票,使这只股票的最终持有量为0
  62. order_target(security, 0)
  63.  
  64. ## 收盘后运行函数
  65. def after_market_close(context):
  66. log.info(str('函数运行时间(after_market_close):'+str(context.current_dt.time())))
  67. #得到当天所有成交记录
  68. trades = get_trades()
  69. for _trade in trades.values():
  70. log.info('成交记录:'+str(_trade))
  71. log.info('一天结束')
  72. log.info('##############################################################')

二、编译运行

日志

三、运行回测 

金融量化分析【day113】:聚宽自带策略的更多相关文章

  1. day31 堡垒机尾声 + Python与金融量化分析(一)

    堡垒机尾声: 代码案例:https://github.com/liyongsan/git_class/tree/master/day31 课堂笔记:file send: 1.选择本地文件 2.远程路径 ...

  2. 金融量化分析【day113】:布林带策略

    一.布林带策略简介 1.简介 2.计算公式 3.图形      二.布林带策略代码 import jqdata def initialize(context): set_benchmark('0000 ...

  3. 金融量化分析【day110】:金融基础知识

    一.股票 股票: 股票是股份公司发给出资人的一种凭证,股票的持有者就是股份公司的股东. 股票的面值与市值 面值表示票面金额 市值表示市场价值 上市/IPO: 企业通过证券交易所公开向社会增发股票以募集 ...

  4. 金融量化分析【day112】:初识量化交易

    一.摘要 为什么需要量化交易? 量化交易是做什么? 量化交易的价值何在? 做量化交易需要什么? 聚宽是什么? 零基础如何快速入门量化交易? 自测与自学 二.量化交易比传统交易强多少? 它能让你的交易效 ...

  5. day32 Python与金融量化分析(二)

    第一部分:金融与量化投资 股票: 股票是股份公司发给出资人的一种凭证,股票的持有者就是股份公司的股东. 股票的面值与市值 面值表示票面金额 市值表示市场价值 上市/IPO: 企业通过证券交易所公开向社 ...

  6. 金融量化分析【day112】:量化交易策略基本框架

    摘要 策略编写的基本框架及其实现 回测的含义及其实现 初步学习解决代码错误 周期循环的开始时间 自测与自学 通过前文对量化交易有了一个基本认识之后,我们开始学习做量化交易.毕竟就像学游泳,有些东西讲是 ...

  7. Python与金融量化分析----金融与量化投资

    一:金融了解 金融:就是对现有资源进行重新的整合之后,进行价值和利润的等效流通. 金融工具: 股票 期货 黄金 外汇 基金 ............. 股票: 股票是股份公司发给出资人多的一种凭证,股 ...

  8. 金融量化分析-python量化分析系列之---使用python获取股票历史数据和实时分笔数据

    财经数据接口包tushare的使用(一) Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据.年度季度报表数据.实时分笔数据.历史分笔数据,本文对tushare的用法,已经存在的 ...

  9. day33 Python与金融量化分析(三)

    第三部分 实现简单的量化框架 框架内容: 开始时间.结束时间.现金.持仓数据 获取历史数据 交易函数 计算并绘制收益曲线 回测主体框架 计算各项指标 用户待写代码:初始化.每日处理函数 第四部分 在线 ...

随机推荐

  1. python文件上传

    1.前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  2. elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)

    一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...

  3. java常用问题排查工具

    一:jstack找到最耗cpu的线程并定位代码 1.ps -ef|grep java 或者 jps -l 得到进程pid 2.找到该进程内最耗cpu的线程,我一般使用: top -Hp pid 3.c ...

  4. linux下安装nodejs及npm

    转:https://www.cnblogs.com/wuyoucao/p/7011666.html 1.下载npm包 官网下载npm安装包,https://nodejs.org/en/,左边是稳定版右 ...

  5. Loj #2494. 「AHOI / HNOI2018」寻宝游戏

    Loj #2494. 「AHOI / HNOI2018」寻宝游戏 题目描述 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得 ...

  6. SQL CREATE INDEX 语句

    CREATE INDEX 语句用于在表中创建索引. 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据. 索引 您可以在表中创建索引,以便更加快速高效地查询数据. 用户无法看到索引,它们只 ...

  7. 面向对象内置方法之--__str__、__call__、__del__

    __str__: 在对象被打印的时候触发,可以用来定义对象被打印的输出格式 __del__:在对象被删除的时候触发,可以 用来回收对象以外的其他相关资源,比如系统资源等. __call__:在对象呗调 ...

  8. Linux内存管理 (9)mmap

    专题:Linux内存管理专题 关键词:文件映射.匿名映射.私有映射.共享映射 mmap/munmap是常用的一个系统调用,使用场景是:分配内存.读写大文件.连接动态库文件.多进程间共享内存. 更详细解 ...

  9. MySQL索引原理及慢查询优化(转自:美团tech)

    背景 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会 ...

  10. Mac之brew使用

    brew : 终端程序管理工具 能让你更快速的安装你想要的工具.而不用考虑大量的依赖. 安装命令 给官网的一样也可以自己去官网查看 它就类似于centos下的yum 和 Ubuntu下的apt-get ...