掘金量化回测平台 - 1
2016-08-02 11:32
435 查看
掘金量化平台初探 python
量化分析包括:策略研发、策略回测、仿真交易、实盘交易、实盘盘后优化。主要想使用掘金的平台来做策略回测和仿真交易两个环节的功能。
对比了下主流的云平台JoinQuant、Uquant、Ricequant缺点是不落地,所有策略在云平台上跑,编程体验也不如本地平台。pyalgotrade等开源本地平台原本都是基于美股的,即使改成A股回测也只能做一些粗糙的的策略回测,没办法把策略做细致,比如股价的前后复权,期货对冲和止盈止损。最终选择尝试一下掘金的免费版个人的平台进行回测。
DEMO源码分析
1 - 导入SDK
自己写的策略类应继承自StrategyBase基类,并以方法重写的方式满足策略开发需求。
# !/usr/bin/env python # -*- coding: utf-8 -*- from gmsdk.api import StrategyBase from gmsdk import to_dict
2 - 编写策略
MyStrategy继承StrategyBase类,on_bar或on_tick是必须重写的类函数。class MyStrategy(StrategyBase): def __init__(self, *args, **kwargs): super(MyStrategy, self).__init__(*args, **kwargs) self.oc = True def on_bar(self, bar): if self.oc: # 开多仓 买入1000股 sec_id self.open_long(bar.exchange, bar.sec_id, 0, 1000) else: # 平多仓 卖出 1000股 sec_id self.close_long(bar.exchange, bar.sec_id, 0, 1000) self.oc = not self.oc # 回测结束事件,在回测结束时触发 def on_backtest_finish(self, indicator): #indicator为回测的绩效 print('backtest finished', to_dict(indicator))
3 - 配置和运行策略
if __name__ == '__main__': # 初始化策略配置 mystrategy = MyStrategy( username = 'kaihaohust@foxmail.com', # 掘金账号 password = 'xxxxxxxx', # 掘金密码 strategy_id = 'strategy_1', # 策略的ID subscribe_symbols = 'SHSE.600000.bar.daily', # 订阅的行情 mode = 4, # 回测 td_addr = 'localhost:8001' # 交易服务 - 本地掘金平台 ) # 回测策略配置 ret = mystrategy.backtest_config( # 起止时间 start_time = '2015-04-15 9:00:00', end_time = '2015-05-15 15:00:00', initial_cash = 100000, transaction_ratio = 1, commission_ratio = 0, slippage_ratio = 0, price_type = 1, bench_symbol = 'SHSE.000300') #基准=沪深300 print('config status: ', ret) ret = mystrategy.run() # 运行策略 print('exit code: ', ret)
常用数据类型
1 - 周期BAR
self.exchange = '' ## 交易所代码 self.sec_id = '' ## 证券ID self.bar_type = 0 ## bar类型,以秒为单位,比如1分钟bar, bar_type=60 self.strtime = '' ## Bar开始时间 self.utc_time = 0.0 ## Bar开始时间 self.strendtime = '' ## Bar结束时间 self.utc_endtime = 0.0 ## Bar结束时间 self.open = 0.0 ## 开盘价 self.high = 0.0 ## 最高价 self.low = 0.0 ## 最低价 self.close = 0.0 ## 收盘价 self.volume = 0.0 ## 成交量 self.amount = 0.0 ## 成交额 self.pre_close ## 前收盘价 self.position; ## 持仓量 self.adj_factor ## 复权因子 self.flag ## 除权出息标记
2 - 现金Cash
self.strategy_id = '' ## 策略ID self.account_id = '' ## 账户id self.currency = 0 ## 币种 self.nav = 0.0 ## 资金余额 self.fpnl = 0.0 ## 浮动收益 self.pnl = 0.0 ## 净收益 self.profit_ratio = 0.0 ## 收益率 self.frozen = 0.0 ## 持仓冻结金额 self.order_frozen = 0.0 ## 挂单冻结金额 self.available = 0.0 ## 可用资金 self.cum_inout = 0.0 ## 累计 出入金 self.cum_trade = 0.0 ## 累计 交易额 self.cum_pnl = 0.0 ## 累计 收益 self.cum_commission = 0.0 ## 累计 手续费 self.last_trade = 0.0 ## 最新一笔 交易额 self.last_pnl = 0.0 ## 最新一笔 交易收益 self.last_commission = 0.0 ## 最新一笔 交易手续费 self.last_inout = 0.0 ## 最新一次 出入金 self.change_reason = 0 ## 变动原因 self.transact_time = 0.0 ## 交易时间
目录
掘金量化平台初探 pythonDEMO源码分析
- 导入SDK
- 编写策略
- 配置和运行策略
常用数据类型
- 周期BAR
- 现金Cash
目录
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法