设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 5725|回复: 3
打印 上一主题 下一主题

用 Python 实现你的量化交易策略

[复制链接]

169

主题

1

好友

733

积分

版主

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2018-6-11 22:51:55 |只看该作者 |倒序浏览

Python 的学习者中,有相当一部分是冲着爬虫去的。因为爬虫可以帮你解决很多工作和生活中的问题,节约你的生命。不过 Python 还有一个神秘而有趣的应用领域,那就是量化交易。

量化交易,就是以数学模型替代人的主观判断来制定交易策略。通常会借助计算机程序来进行策略的计算和验证,最终也常直接用程序根据策略设定的规则自动进行交易。

Python 由于开发方便,工具库丰富,尤其科学计算方面的支持很强大,所以目前在量化领域的使用很广泛。市面上也出现了很多支持 Python 语言的量化平台。通过这些平台,你可以很方便地实现自己的交易策略,进行验证,甚至对接交易系统(由于政策原因,现在很多交易接口暂停开放)。

在交易策略方面,我是外行(虽然曾经也有证券从业资格)。所以本文只是介绍几个 Python 量化平台,以及一些最基本的使用方法。更多的功能、更强大的策略还有待各位自己去挖掘。



目前国内比较知名的几个平台:


右上角的下拉框选择“策略”,就会帮你自动填写上策略回测的基本结构代码。

开始的一些变量是对回测的基本配置。initialize 里可以做一些初始化的工作。handle_data 则是回测代码的核心,用来实现每个交易日(或每分钟)的交易指令。

具体的变量含义,这里不做特别细致的解释,文档里都有说明。仅从命名和注释里也可以看出,设定了回测的时间,股票池,资金,交易频率等。

文档里给了一个最简单的日线策略代码:
  1. def handle_data(account):
  2.     for stock in account.universe:
  3.         order(stock,100)
复制代码
此策略就是,在每个交易日,把股票池里每一只股票都买入一手。

account.universe 就是开头设定的 universe 值。这里遍历股票池中的股票。

order 是买卖指令,函数原型是:order(symbol, amount)

参数 symbol 是股票代码,amount 是买卖数量,正为买入,负为卖出。此处买入 100 股,即 1 手。

点击“运行”,或 Ctrl+Enter,即可在页面上看到策略的执行情况。



我们再尝试改动一点点,写一个自己的策略。

我拍脑袋想了这样一个策略:
如果一只未持有的股票 2 个交易日累计涨了 10% 以上,就以当前资金的 5% 买入它。反过来,如果累计跌了 10% 以上,就全部卖出止损。
下面把它实现出来看下回测效果如何。



时间设为去年(2015)全年,起始资金 10 万元。
  1. universe = set_universe('A')
复制代码
股票池为 A 股所有股票。
  1. account.get_attribute_history('closePrice', 3)
复制代码
取得股票池中所有股票前 3 天的收盘价(closePrice)。
  1. hist[s][2] - hist[s][0]
复制代码
得到 1 天前和 3 天前收盘价的差值。
  1. account.valid_secpos
复制代码
是账户当前所持有的证券信息。

如果收盘价 2 天的差值满足买入条件且未持有,就执行:
  1. order_pct(s, 0.05)
复制代码
order_pct 表示按账户当前总价值的百分比买入股票。

如果满足卖出条件则执行:
  1. order_to(s, 0)
复制代码
OK,一个简单到不行的策略已完成。运行一下:

居然,这么简单的策略在最高的时候有超过 90% 的收益,即使在经历了年中的股灾和下半年的震荡之后,到年底也还有 30% 多的收益率,应该超越了大部分散户去年的成绩吧。如果按照这个策略进行交易,啧啧,想想还有点小激动呢。(喂!快醒醒!)

然而现实是残酷的,真实的市场分分钟教你做人。

量化投资以及程序化交易是很有前途的行业,但在你想从事这行,甚至用它赚钱之前,请先深入了解它。



有兴趣的,去看下这个问题:



回复

使用道具 举报

7

主题

1

好友

99

积分

注册会员

Rank: 2

沙发
发表于 2018-6-18 09:30:08 |只看该作者
mark
回复

使用道具 举报

0

主题

0

好友

6

积分

新手上路

Rank: 1

板凳
发表于 2018-6-30 20:22:27 |只看该作者
老师你好    有外汇欧元的交易代码吗
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2018-7-1 23:04:48 |只看该作者
简单交易 发表于 2018-6-30 20:22
老师你好    有外汇欧元的交易代码吗

没有
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-23 17:38 , Processed in 0.023096 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部