老钱庄股票论坛

 找回密码
 5秒快速注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

关闭
关闭
   扫一扫关注老钱庄微信号 关闭
扫一扫关注老钱庄财经微信号 关闭
查看: 448|回复: 3

[其他公式] 量化策略怎么写?最详解说来了!

[复制链接]
发表于 2018-7-3 09:48 | 显示全部楼层 |阅读模式



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


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

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-

 楼主| 发表于 2018-7-16 13:29 | 显示全部楼层
回复 支持 反对

使用道具 举报

关于老钱庄 | 广告合作 | 商务合作 | 意见反馈 | 免责声明 | 友情链接
    经营性网站备案信息 安徽黄埔网络科
技有限公司 安徽大时代投
资咨询有限公司 可信网站 网上交易保障中心

信息产业部信息备案:闽ICP备13021446号-4 茂名市公安局网警备案:4409023010511号
老钱庄股票论坛网友发表的帖子纯属个人意见,老钱庄股票论坛不负任何责任! 股市有风险,投资需谨慎!
共同建设网络精神文明,欢迎广大网友举报论坛上的不良信息,我们会在第一时间内及时处理!

[ 广告服务咨询QQ:2806911298 ] [ 合作联系电话 :15396270234 联系QQ : 800025923 ]

值班QQ: 800025923 值班电话:0592-5962326

小黑屋|手机版|Archiver|老钱庄

GMT+8, 2018-7-21 10:20 , Processed in 0.094421 second(s), 19 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表