金融量化分析【day113】:聚宽自带策略
一、策略代码
- # 导入函数库
- from jqdata import *
- # 初始化函数,设定基准等等
- def initialize(context):
- # 设定沪深300作为基准
- set_benchmark('000300.XSHG')
- # 开启动态复权模式(真实价格)
- set_option('use_real_price', True)
- # 输出内容到日志 log.info()
- log.info('初始函数开始运行且全局只运行一次')
- # 过滤掉order系列API产生的比error级别低的log
- # log.set_level('order', 'error')
- ### 股票相关设定 ###
- # 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
- set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
- ## 运行函数(reference_security为运行时间的参考标的;传入的标的只做种类区分,因此传入'000300.XSHG'或'510300.XSHG'是一样的)
- # 开盘前运行
- run_daily(before_market_open, time='before_open', reference_security='000300.XSHG')
- # 开盘时运行
- run_daily(market_open, time='open', reference_security='000300.XSHG')
- # 收盘后运行
- run_daily(after_market_close, time='after_close', reference_security='000300.XSHG')
- ## 开盘前运行函数
- def before_market_open(context):
- # 输出运行时间
- log.info('函数运行时间(before_market_open):'+str(context.current_dt.time()))
- # 给微信发送消息(添加模拟交易,并绑定微信生效)
- send_message('美好的一天~')
- # 要操作的股票:平安银行(g.为全局变量)
- g.security = '000001.XSHE'
- ## 开盘时运行函数
- def market_open(context):
- log.info('函数运行时间(market_open):'+str(context.current_dt.time()))
- security = g.security
- # 获取股票的收盘价
- close_data = attribute_history(security, 5, '1d', ['close'])
- # 取得过去五天的平均价格
- MA5 = close_data['close'].mean()
- # 取得上一时间点价格
- current_price = close_data['close'][-1]
- # 取得当前的现金
- cash = context.portfolio.available_cash
- # 如果上一时间点价格高出五天平均价1%, 则全仓买入
- if current_price > 1.01*MA5:
- # 记录这次买入
- log.info("价格高于均价 1%%, 买入 %s" % (security))
- # 用所有 cash 买入股票
- order_value(security, cash)
- # 如果上一时间点价格低于五天平均价, 则空仓卖出
- elif current_price < MA5 and context.portfolio.positions[security].closeable_amount > 0:
- # 记录这次卖出
- log.info("价格低于均价, 卖出 %s" % (security))
- # 卖出所有股票,使这只股票的最终持有量为0
- order_target(security, 0)
- ## 收盘后运行函数
- def after_market_close(context):
- log.info(str('函数运行时间(after_market_close):'+str(context.current_dt.time())))
- #得到当天所有成交记录
- trades = get_trades()
- for _trade in trades.values():
- log.info('成交记录:'+str(_trade))
- log.info('一天结束')
- log.info('##############################################################')
二、编译运行
日志
三、运行回测
金融量化分析【day113】:聚宽自带策略的更多相关文章
- day31 堡垒机尾声 + Python与金融量化分析(一)
堡垒机尾声: 代码案例:https://github.com/liyongsan/git_class/tree/master/day31 课堂笔记:file send: 1.选择本地文件 2.远程路径 ...
- 金融量化分析【day113】:布林带策略
一.布林带策略简介 1.简介 2.计算公式 3.图形 二.布林带策略代码 import jqdata def initialize(context): set_benchmark('0000 ...
- 金融量化分析【day110】:金融基础知识
一.股票 股票: 股票是股份公司发给出资人的一种凭证,股票的持有者就是股份公司的股东. 股票的面值与市值 面值表示票面金额 市值表示市场价值 上市/IPO: 企业通过证券交易所公开向社会增发股票以募集 ...
- 金融量化分析【day112】:初识量化交易
一.摘要 为什么需要量化交易? 量化交易是做什么? 量化交易的价值何在? 做量化交易需要什么? 聚宽是什么? 零基础如何快速入门量化交易? 自测与自学 二.量化交易比传统交易强多少? 它能让你的交易效 ...
- day32 Python与金融量化分析(二)
第一部分:金融与量化投资 股票: 股票是股份公司发给出资人的一种凭证,股票的持有者就是股份公司的股东. 股票的面值与市值 面值表示票面金额 市值表示市场价值 上市/IPO: 企业通过证券交易所公开向社 ...
- 金融量化分析【day112】:量化交易策略基本框架
摘要 策略编写的基本框架及其实现 回测的含义及其实现 初步学习解决代码错误 周期循环的开始时间 自测与自学 通过前文对量化交易有了一个基本认识之后,我们开始学习做量化交易.毕竟就像学游泳,有些东西讲是 ...
- Python与金融量化分析----金融与量化投资
一:金融了解 金融:就是对现有资源进行重新的整合之后,进行价值和利润的等效流通. 金融工具: 股票 期货 黄金 外汇 基金 ............. 股票: 股票是股份公司发给出资人多的一种凭证,股 ...
- 金融量化分析-python量化分析系列之---使用python获取股票历史数据和实时分笔数据
财经数据接口包tushare的使用(一) Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据.年度季度报表数据.实时分笔数据.历史分笔数据,本文对tushare的用法,已经存在的 ...
- day33 Python与金融量化分析(三)
第三部分 实现简单的量化框架 框架内容: 开始时间.结束时间.现金.持仓数据 获取历史数据 交易函数 计算并绘制收益曲线 回测主体框架 计算各项指标 用户待写代码:初始化.每日处理函数 第四部分 在线 ...
随机推荐
- python文件上传
1.前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)
一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...
- java常用问题排查工具
一:jstack找到最耗cpu的线程并定位代码 1.ps -ef|grep java 或者 jps -l 得到进程pid 2.找到该进程内最耗cpu的线程,我一般使用: top -Hp pid 3.c ...
- linux下安装nodejs及npm
转:https://www.cnblogs.com/wuyoucao/p/7011666.html 1.下载npm包 官网下载npm安装包,https://nodejs.org/en/,左边是稳定版右 ...
- Loj #2494. 「AHOI / HNOI2018」寻宝游戏
Loj #2494. 「AHOI / HNOI2018」寻宝游戏 题目描述 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得 ...
- SQL CREATE INDEX 语句
CREATE INDEX 语句用于在表中创建索引. 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据. 索引 您可以在表中创建索引,以便更加快速高效地查询数据. 用户无法看到索引,它们只 ...
- 面向对象内置方法之--__str__、__call__、__del__
__str__: 在对象被打印的时候触发,可以用来定义对象被打印的输出格式 __del__:在对象被删除的时候触发,可以 用来回收对象以外的其他相关资源,比如系统资源等. __call__:在对象呗调 ...
- Linux内存管理 (9)mmap
专题:Linux内存管理专题 关键词:文件映射.匿名映射.私有映射.共享映射 mmap/munmap是常用的一个系统调用,使用场景是:分配内存.读写大文件.连接动态库文件.多进程间共享内存. 更详细解 ...
- MySQL索引原理及慢查询优化(转自:美团tech)
背景 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会 ...
- Mac之brew使用
brew : 终端程序管理工具 能让你更快速的安装你想要的工具.而不用考虑大量的依赖. 安装命令 给官网的一样也可以自己去官网查看 它就类似于centos下的yum 和 Ubuntu下的apt-get ...