您的位置:首页 > 其它

优矿API实现一个双均线策略

2016-04-14 19:16 309 查看
虽然关注了优矿很久,但几个月没碰,感觉都忘了差不多。做笔记还是有必要的。

· 调用数据

a=DataAPI.IdxConsGet(secID=u"",ticker=u"000300",intoDate=u"20160414",isNew=u"",field=u"",pandas="1")
a.to_csv("data1.csv",encoding='GBK')

在数据的地方找自己想要的数据,两条代码就可以保存。

然后在data的地方下载下来。

虽然wind也好,更全。不过windpy实在无力吐槽,真要扒数据,还是用wind的excel插件友好下载又快。

· quartz回测系统

start = '2014-01-01' # 回测起始时间
end = '2016-04-14' # 回测结束时间
benchmark = 'SH50' # 策略参考标准
universe = ['510050.XSHG'] # 证券池,支持股票和基金
capital_base = 100000 # 起始资金
freq = 'd' # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测
refresh_rate = 1 # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd'时间间隔的单位为交易日,若freq = 'm'时间间隔为分钟

def initialize(account): # 初始化虚拟账户状态
pass

def handle_data(account): # 每个交易日的买入卖出指令
hist=account.get_attribute_history('closePrice',30)
for stk in account.universe:
ma5=hist[stk][-5:].mean()
ma30=hist[stk][:].mean()

if ma5>ma30:
order(stk,1000)
elif ma5<=ma30 and stk in account.avail_secpos:
order_to(stk,0)


这边写了一个最简单的双均线的策略。
前面设置一堆参数,最重要的就是universe也就是证券池。

initialize函数可以不用管

主要的策略都在handle_data。account是这个回测平台封装的class。

account.get_attribute_history         获得历史数据

account.avail_secpos                     有效证券池,也就是已经买了这个证券了

order(stk,1000)                               买stk,1000股

order_to(stk,0)                                 stk平仓

for stk in account.universe:           for循环就是对每个证券池里的股票都这么干

当然以这样的回测情况显然不是好策略。不过实现完整的回测,还需要:

1. 一个class,包括risk factors, return

2. matplotlib实现乳齿优美的图像

3. 通过wind订阅数据,模拟交易。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: