楼主: 我爱量化
806 2

[交易策略] 量化策略怎么写?最详解说来了! [分享]

  • 1关注
  • 4粉丝

本科生

46%

还不是VIP/贵宾

-

威望
0
论坛币
205 个
通用积分
184.0407
学术水平
5 点
热心指数
32 点
信用等级
5 点
经验
1126 点
帖子
49
精华
0
在线时间
45 小时
注册时间
2018-1-29
最后登录
2018-7-31

我爱量化 发表于 2018-7-3 09:48:06 |显示全部楼层

读了那么多书,炒了那么多股,对于交易,很多人都有了自己的思路和投资风格,这个时候,如果你会一点python,那么一只脚就已经迈入了量化投资的大门!
今天,小编带你一起,快速写出你的第一个量化策略!
第一步干什么呢?首先,你当然需要有一个策略思路啦!
我们以一个简单的双均线日线策略为例:
每天回测。
买入条件:对短均线上穿长均线的股票实施买入操作
卖出条件:对短均线下穿长均线的股票实施卖出操作
长均线我们选取10日均线,短均线选取5日均线,5日均线上穿10日均线金叉买入,死叉卖出,是最常见的短线操作策略之一。

有了策略思路,第二步我们就要想办法实现了!

是时候祭出QuantDesk了!
丢个下载地址给各位看官:
http://www.yunkuanke.com/#/download


那么这个策略到底要怎么写呢?

根据上面的策略思路,我们应该先算选股指标,并根据选股指标进行买入卖出操作。但是在算选股指标时,我们需要做一些准备工作,才能保证指标能够被计算出来。所以这个流程可以分三步:

1. 准备工作
导入需要的python包、设置参数。
细心的人会发现,策略的第一行一般都是用:# -- coding:utf-8 --开头,这一行代码必不可少。这是因为PY文件当中是不支持中文的,就算注释也不可以用中文,为了解决这个问题,就需要把文件编码类型改为UTF-8的类型,输入这个代码就可以让PY源文件里面有中文了。
1) 导入需要的工具包

这一步是在计算选股指标之前,导入需要用到的工具包,比如,你在算指标的时候需要用到计算开平方之类的数学算法,键盘上的加减乘除帮不到你,这时候就需要math包,在写这部分代码的时候可以估计一下下面都需要用到哪些包,如果有遗漏,写到后面还可以回头补充。
2)设置参数
Config部分设置参数:比如平台的用户名和密码、初始资金、交易开始和结束的时间、手续费等等:

Window_long代表长均线(10日均线)
Window_short代表短均线(5日均线)

Initial是设置整个回测开始前需要的操作,intPerDay是每日开始前需要的操作,因为在这个策略里都不需要作什么,所以我们设置了pass。

2. 计算选股指标并执行买入卖出操作

Strategy后面写的就是你的选股策略了,在判断买入和卖出股票之前,我们需要明确几件事:
现在是股票交易时间吗?(判断交易时间)
if sdk.isAssetTradingTime(AssetType.Stock):
我可以买哪些股票呢?(获取股票列表)
stock_list = sdk.getStockList()
分别计算昨天的长短均线和前天的长短均线
long_ma1 = close_price_series[-window_long:, :].mean(axis=0)
short_ma1 = close_price_series[-window_short:, :].mean(axis=0)
long_ma2 = close_price_series[-(window_long+1):-1, :].mean(axis=0)
short_ma2 = close_price_series[-(window_short+1):-1, :].mean(axis=0)

1)判断需要卖出的股票,生成卖出股票列表
第一次交易时,因为只有初始资金,所以没有可以卖出的股票,程序会自动跳到下一步。从第二个交易日开始,程序会自动判断,持仓的股票是否要卖出:
我能卖哪些股票?(生成卖出股票列表)

检测持仓,看手中持有的股票是否有10日线上穿5日线,如果有符合条件的股票,就加入卖出列表。
我能卖多少股?
已经获取了可以卖出的股票列表,那么每只股票的持仓量是多少呢?所以,我们调取持仓量,并将可卖持仓赋值给相应的posDict股票代码,使股票代码与持仓量一一对应。

生成卖出订单
卖出股票需要知道三件事:股票代码、卖出量和卖出价,目前我们已知符合卖出条件的股票代码与持仓量,这一步要确定卖出量和卖出价。

Quotes获取盘口信息,有了盘口信息就能获取价格,我们设置:符合卖出条件的股票以开盘价卖出,并且卖出所有可卖持仓
2)判断需要买入的股票,生成买入股票列表
我能买哪些股票?(生成买入股票列表)
首先检测股票池中的股票是否有符合买入条件的(5日线上穿10日线),如果有,则加入买入股票列表buy_list

资金怎么分配?
avg_cash这一行,首先获取账户资金,然后平均分配给需要买入的股票。

生成买入订单
买入股票需要知道三件事:股票代码、买入量和买入价,目前我们已知符合买入条件的股票代码与每只个股的资金量,这一步要确定买入量和买入价。
Quotes获取盘口信息,我们知道了股票的价格,我们设置开盘价买入(buy_price)
有了资金和价格,可以算出买多少股(buy_volume)
最后,执行买入操作

3. 导入SDK

最后一步,调用我们的SDK,整个策略编写完成

回测

利用QuantDesk平台进行回测:

回测完成后,在平台上可以看到很详细的分析报告









-END-



关键词:量化策略 Strategy download Trading Strateg

stata SPSS
tianwk 发表于 2018-7-3 18:28:19 |显示全部楼层
Thanks for sharing
回复

使用道具 举报

leftazhe 发表于 2019-11-8 11:12:26 |显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2019-12-8 17:01