掘金量化回测平台 - 1
发布时间
阅读量:
阅读量
掘金量化平台初探 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 ## 交易时间
目录
- 掘金量化平台初探 python
-
DEMO源码分析
- - 导入SDK
- - 编写策略
- - 配置和运行策略
-
常用数据类型
- - 周期BAR
- - 现金Cash
-
目录
-
全部评论 (0)
还没有任何评论哟~
