打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
新用户引导

1. Uqer,让投资更容易


来到优矿,您想要的所有金融研究都可在这里实现~

  • 入门玩家:提供社区交流、python、quartz框架,轻松实现策略回测

  • 进阶玩家:提供MFhandler、模拟交易(实盘交易),打通投资上下游

  • 高级玩家:使用DataAPI,进行传统券商研究、灵感实现平台、知识共享平台。

本文主要介绍:

  • 社区资源新手入门概览

  • 如何在开始研究中用notebook进行数据研究

  • 如何写策略进行回测、模拟交易

2. 社区资源概览


优矿社区旨在为广大量化爱好者提供交流分享平台。社区中的量化研究内容都可以一键克隆至研究环境获得源码,也可以从研究环境一键分享激荡思想。

您可以通过新手专栏中的分享文档,快速的了解量化和优矿的信息:

3. Notebook简介


Notebook是您量化研究的主要工具,支持Python2.7语言。

3.1 创建Notebook

进入开始研究页面,点击区域1中的Notebook,会出现区域2,显示每个Notebook文件的列表,点击上面的新建按钮,就会在区域3出现新建的Notebook。

3.2 Notebook功能介绍

本文字所处的页面就是Notebook,Notebook页面格局,以及每个区域的用途如下图所示:

在区域1单元中,可以满足您三个需求:

  • 数据研究
  • 写策略做回测
  • 写文档

3.2.1 数据研究

将单元切换为 code 模式。

可以在这个模式下写任何形式的Python语言,并且调用优矿中提供的数据、定制函数库。

例如在您可以在以下code单元中输入代码,然后用ctrl+enter运行:

xxxxxxxxxx
1
1
1+3*3
查看全部
10

如果需要了解python相关的语法,可以参考社区——新手专栏中的量化分析师的Python日记:

单元中支持丰富的python基础库与三方扩展库:如数据分析方面的numpypandasscipy, 绘图方面的matplotlibseaborn,机器学习方面的sklearn等等,具体可以查看 帮助页面

也可以去 数据页面 查找想要使用的数据,复制代码后,在这里运行,比如:

例如复制代码后,可以直接在code模式的单元中按ctrl+enter运行以下代码,就会返回相应的数据:

xxxxxxxxxx
1
1
DataAPI.SecIDGet(partyID=u"",assetClass=u"",ticker=u"000001,600000",cnSpell=u"",field=u"",pandas="1")
查看全部

更多获取数据的帮助可以详见 如何获取数据帮助页面

3.2.2 写策略做回测

将单元切换为 strategy 模式

这里使用优矿定制的回测框架,对量化策略进行研究、回测并查看回测结果。

创建一个strategy单元后,会提供策略代码模板,代码模版分为三个部分:

xxxxxxxxxx
20
1
# 第一部分:策略参数
2
start = '2014-01-01'                      # 回测起始时间
3
end = '2015-01-01'                       # 回测结束时间
4
benchmark = 'HS300'                       # 策略参考标准
5
universe = ['000001.XSHE', '600000.XSHG']        # 证券池,支持股票和基金
6
capital_base = 100000                      # 起始资金
7
freq = 'd'                             # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测
8
refresh_rate = 1                         # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd'时间间隔的单位为交易日,若freq = 'm'时间间隔为分钟
9
10
# 第二部分:初始化策略,回测期间只运行一次,可以用于设置全局变量
11
# account是回测期间的虚拟交易账户,存储上述全局变量参数信息,并在整个策略执行期间更新并维护可用现金、证券的头寸、每日交易指令明细、历史行情数据等。
12
def initialize(account): 
13
    # account.i = 1
14
    pass
15
16
# 第三部分:策略每天下单逻辑,执行完成后,会输出每天的下单指令列表
17
# 这个函数在每个交易日开盘前被调用,模拟每个交易日开盘前,交易策略会根据历史数据或者其他信息进行交易判断,生成交易指令
18
def handle_data(account): 
19
    # 这里编写下单逻辑
20
    return
查看全部

以上策略模版按照以下流程执行,图中红色框部分就是代码模版中的三个部分。

点此查看大图

基于以上了解,现在让我们来看看策略是如何去下单的,运行以下代码,在输出中点击“策略详情”,就可以在“调仓记录”中看到策略每天下单的信息啦:

xxxxxxxxxx
17
1
start = '2014-01-01'                       # 回测起始时间
2
end = '2015-01-01'                         # 回测结束时间
3
benchmark = 'HS300'                        # 策略参考标准
4
universe = ['000001.XSHE', '600000.XSHG']         # 证券池
5
capital_base = 100000                      # 起始资金
6
freq = 'd'                                 # 用日线回测的策略
7
refresh_rate = 1                           # 每天调一次仓,即每个交易日都会运行第三部分的handle_data函数
8
9
def initialize(account): 
10
    pass
11
12
def handle_data(account):    
13
    # account.universe:当前交易日的证券池,已经从全局变量universe中剔除了当天停牌、退市和数据缺失证券的证券池。
14
    # 推荐您下单的股票都来自于account.universe
15
    for stock in account.universe:
16
        # order:用来模拟下达买卖指令,这里表示买入100股stock股票。
17
        order(stock,100) 
查看全部

目前,写的策略尽管还很简陋,但这是走向各种复杂策略的第一步!

下面我们再举一个稍微复杂的 均线策略,策略思路为:

  • 以上证50ETF为标的(510050.XSHG),每天收盘后计算MA5、MA20
  • 若MA5 > MA20,且当前不持仓该股,买入;反之,MA5 <= MA20,且当前持仓该股,卖出。
xxxxxxxxxx
28
1
# 均线策略
2
start = '2014-01-01'                  # 回测起始时间
3
end = '2015-01-01'                   # 回测结束时间
4
benchmark = 'SH50'                   # 策略参考标准
5
universe = ['510050.XSHG']              # 证券池,也可以在这里添加多个证券
6
capital_base = 10000                  # 起始资金
7
freq = 'd'                         # 日线策略
8
refresh_rate = 1                     # 每个交易日调仓
9
10
def initialize(account): 
11
    pass
12
13
def handle_data(account): 
14
    # account.get_attribute_history:表示获取所有证券过去20天的closePrice数据,返回数据类型为 dict,键为每个证券的secID
15
    hist = account.get_attribute_history('closePrice', 20)
16
    for stk in account.universe:
17
        # 计算股票过去5天收盘平均值
18
        ma5 = hist[stk][-5:].mean()
19
        # 计算股票过去20天收盘平均值
20
        ma20 = hist[stk][:].mean()
21
        
22
        # 如果5日均线大于20日均线,并且该股票当前没有持仓,则买入100手
23
        # account.valid_secpos:表示当前交易日持有数量大于0的证券头寸。数据类型为字典,键为证券代码,值为头寸。
24
        if ma5 > ma20 and stk not in account.valid_secpos:
25
            order(stk, 10000)
26
        # 如果5日均线小于20日均线,则该股票全部卖出
27
        elif ma5 <= ma20:
28
            order_to(stk, 0)
查看全部

3.2.3 模拟交易

以上策略回测成功后,您可以看到在单元输出中,有参加大赛按钮,参加大赛可以将策略提交到500万实盘大赛;

也可以点击参加大赛按钮旁边的下拉箭头,选择模拟交易功能,然后您的策略就可以去模拟交易每天自动运行了。

3.2.4 写文档

将单元切换为 markdown 模式后,可以编写文档。

您当前看到的文字就是用markdown语法写出来的,您将本文档克隆,双击本单元,就能看到对本文字进行编辑。

您如果不熟悉markdown可以直接写文字,写完按 ctrl+enter 运行即可。

4 其他


以上只是介绍了优矿中的最基本的功能,更多功能您可以查看 帮助页面

更多的丰富的策略、数据研究案例,您可以 查看社区页面。策略、研究栏目下的内容都可以直接克隆至开始研究,进行运行。

如果您对更高阶的策略研究工具感兴趣,也可以关注社区的这两篇帖子:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
4.4 阿隆指标 • 技术指标阿隆( Aroon )全解析 · Python 量化交易教程 · 看...
侠之大者 一起赚钱
事件驱动分析基本流程
【新手】10分钟带你开启量化投资之旅
量化交易学习笔记(十七)——多只股票同时策略回测
量化交易策略——小市值策略(四)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服