您的位置:首页 > 编程语言 > Python开发

掘金量化回测平台 - 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        ## 交易时间


目录

掘金量化平台初探 python
DEMO源码分析
- 导入SDK

- 编写策略

- 配置和运行策略

常用数据类型
- 周期BAR

- 现金Cash

目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 量化