python程序化交易实例-用 Python 实现你的量化交易策略「建议收藏」

python程序化交易实例-用 Python 实现你的量化交易策略「建议收藏」Python的学习者中,有相当一部分是冲着爬虫去的。因为爬虫可以帮你解决很多工作和生活中的问题,节约你的生命。不过Python还有一个神秘而有趣的应用领域,那就是量化交易。量化交易,就是以数学模型替代人的主观判断来制定交易策略。通常会借助计算机程序来进行策略的计算和验证,最终也常直接用程序根据策略设定的规则自动进行交易。Python由于开发方便,工具库丰富,尤其科学计算方面的支持很强大,所…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

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

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

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

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

国外知名平台:

它们都可以使用 Python 进行策略开发。

以优矿为例,注册之后,在”开始研究”页面,新建一个 Notebook,就可以开始用 Python 写你自己的策略。

24230741_9nEp.jpg

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

24230741_P9yk.jpg

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

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

文档里给了一个最简单的日线策略代码:

def handle_data(account):

for stock in account.universe:

order(stock,100)

此策略就是,在每个交易日,把股票池里每一只股票都买入一手。

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

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

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

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

24230741_euZe.jpg

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

我拍脑袋想了这样一个策略:

如果一只未持有的股票 2 个交易日累计涨了 10% 以上,就以当前资金的 5% 买入它。反过来,如果累计跌了 10% 以上,就全部卖出止损。

下面把它实现出来看下回测效果如何。

24230741_WYpH.jpg

时间设为去年(2015)全年,起始资金 10 万元。

universe = set_universe(‘A’)

股票池为 A 股所有股票。

account.get_attribute_history(‘closePrice’, 3)

取得股票池中所有股票前 3 天的收盘价(closePrice)。

hist[s][2] – hist[s][0]

得到 1 天前和 3 天前收盘价的差值。

account.valid_secpos

是账户当前所持有的证券信息。

如果收盘价 2 天的差值满足买入条件且未持有,就执行:

order_pct(s, 0.05)

order_pct 表示按账户当前总价值的百分比买入股票。

如果满足卖出条件则执行:

order_to(s, 0)

OK,一个简单到不行的策略已完成。运行一下:

24230741_zCjA.jpg

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

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

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

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

前面提到的另外几个平台,和优矿基本类似,API 和功能会有些差异,可以自行尝试,这里不再分别演示。也有人做过比较:

如果你对这个领域充满好奇,不如现在就立刻动手,从你的第一个策略开始。谁知道你会不会成为下一个巴菲特呢:)

其他文章及回答:

Crossin的编程教室

微信ID:crossincode

24230741_Aozl.jpg

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184638.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月8日 上午10:46
下一篇 2022年10月8日 上午11:00


相关推荐

  • 玩转华为ENSP模拟器系列 | 合集

    玩转华为ENSP模拟器系列 | 合集下面将依据华为路由器配置指导手册 使用华为 ENSP 模拟器对其中部分功能进行验证 持续更新 最新更新于 2020 年 12 月 24 日 基础配置 配置用户界面 配置 Console 用户界面举例 https mubu com doc explore 39821 配置 VTY 用户界面举例 https mubu com doc explore 40465 配置用户登录 配置用户通过 Telnet 登录系统举例 https mubu com doc explore 39732 配置用户通过 S

    2026年3月20日
    2
  • HackBar破解(谷歌、火狐)-2020.0203 chrome (搬运工)[通俗易懂]

    HackBar破解(谷歌、火狐)-2020.0203 chrome (搬运工)[通俗易懂]1.谷歌打开Chrome插件列表,查看Hackbar的插件ID:djmoeo……,在文件搜索里搜这段字符,我这里用的是Everything。Everything搜索id找到djmoeo找到\2.2.4_0\theme\js找到disable_hackbar,注释掉下面的chrome.storage.local.get([‘license’]函数,然后重启浏览器OK完链接:https://www.lanzous.com/i9jc7b…

    2022年6月3日
    69
  • PyCharm激活码永久有效PyCharm2019.2.4激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2019.2.4激活码教程-持续更新,一步到位PyCharm激活码永久有效2019.2.4激活码教程-Windows版永久激活-持续更新,Idea激活码2019.2.4成功激活

    2022年6月19日
    31
  • Java中的随机数「建议收藏」

    Java中的随机数「建议收藏」Java产生可以随机数的有两个类,一个是Random类,另一个是Math类中的random()方法。1.Random类在java.util包中有一个Random类,该对象的几个方法可以生成不同数据类型的随机数。如nextInt(),nextFloat(),nextLong(),nextBoolean()分别生成的是int整形,float浮点型,double浮点型,boolean布尔类型的随机数,也必须要用制定的数据类型的变量接收。例如:输出五个随机…

    2022年7月9日
    27
  • Browserify_browses

    Browserify_browses1.Browserify是什么?“Browserifyletsyourequire(‘modules’)inthebrowserbybundlingupallofyourdependencies.”-Browserify.org出自官网的一句话。用通俗的话讲就是:browserify是一个浏览器端代码模块化工具,可以处理模块之间的依赖关系,让服务器端的

    2025年7月29日
    9
  • uniqid php 重复_如何使用php中uniqid函数生成唯一的id

    uniqid php 重复_如何使用php中uniqid函数生成唯一的idphp 中的 uniqid 是一个根据当前时间生成唯一值 ID 的函数 接下来的这篇文章我们就来详细介绍 php 中 uniqid 函数生成唯一的 id 的方法 php 中的 uniqid 虽然是生成唯一的值 但是因为是基于当前时间以微秒同时在多个服务器 所以当运行 uniqid 时可能会产生相同的值 此问题可以通过应用前缀 prefix 指定一个参数从而避免 它是使用 rand 函数为前缀指定一个随机值 此外 它可用于上传图像

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号