2020-07-09

支持11种股票交易策略的Python量化库

github有宝!这次带给大家的是火力全开的n种期货/股票交易量化算法宝库。

送你一个支持11种股票交易策略的Python量化库

有没货?是不是都是干货,老铁们先看看以下的交易策略可视化效果图。

送你一个支持11种股票交易策略的Python量化库

精彩吧!咱废话不多,快速切入正题吧。

介绍

此Github库中的大多数脚本都是技术指标自动交易。这些脚本包括各种类型的动量交易,开盘区间突破和统计套利策略。然而,量化交易不仅仅与技术分析有关。它可以指利用计算金融来利用衍生品价格不匹配,对替代数据集进行模式识别以在市场微观结构中生成alpha或低延迟订单执行。因此,这些项目主要进行量化分析,以能跑盈市场。所有脚本都是历史数据回测(是通过Python,在不久的将来可能是Julia进行重写)。

策略:

1. MACD

送你一个支持11种股票交易策略的Python量化库

MACD是交易策略101.MACD指移动平均线收敛/发散。这是一种动量交易策略,它认为上行/下行动量对短期均线的影响大于长期均线。任何没有金融背景的家伙只需要5分钟与MACD信号进行交易。关于MACD振荡器的简单性,它是市场上非专业人士中最常见的策略。在行为经济学中,人们对策略的信任越多,策略就越有效(并非总是如此,例如2008)。因此,我们不应低估MACD的效果。

对于策略本身,计算特定股票的收盘价的长期移动平均线和短期移动平均线。为了生成交易信号,实现了不同时间范围的移动平均线之间的比较。当短期均线高于长期均线时,相应地交易给定的股票。反之亦然。

送你一个支持11种股票交易策略的Python量化库
送你一个支持11种股票交易策略的Python量化库

2.配对交易

配对交易是统计套利的基本形式。它依赖于两个协整股票不会相互偏离太远的假设。第一步,我们选择两只股票并运行Engle-Granger两步分析。一旦满足协整的标准,标准化残差并将一个西格玛(双尾)设置为阈值。之后,相应地计算所选股票的当前标准化残差。当标准化残差超过阈值时,触发并产生交易信号。简单的策略是,把价格低廉的股票和短期的股票做空。

配对交易的核心思想是协整。从比喻的角度来看,协整就像是一对情侣,两个政党疯狂地联系在一起。然而,大多数关系迟早会破裂,只有极少数人能够结婚(从统计角度看)。因此,在任何配对交易订单执行之前经常检查协整的现状非常重要(同样适用于关系)。

送你一个支持11种股票交易策略的Python量化库
送你一个支持11种股票交易策略的Python量化库
送你一个支持11种股票交易策略的Python量化库

3. Heikin-Ashi

送你一个支持11种股票交易策略的Python量化库

Heikin-Ashi,实际上是指日语中的名称,是另一种烛台图表。Heiki-Ashi的复杂规则旨在过滤动量交易的噪音。因此,与标准烛台相比,Heikin-Ashi显示更多连续柱,这使得价格动量和反转点在数字中更加可区分。可以说它应该在横向和波动的市场上超过标准烛台。

对于战略本身,最初对四个重要基准进行了一些转换 – open,close,最高,最低。下一步是在Heikin-Ashi Open,Close,High,Low上应用独特的Heikin-Ashi规则来生成交易信号。Heikin-Ashi(或任何动量交易策略)的缺点是响应缓慢。因此,应该相应地设置止损位置,这样就不会陷入任何自动触发的闪电崩盘。

Heikin-Ashi的规则可以在Heikin-Ashi backtest.py中找到。

送你一个支持11种股票交易策略的Python量化库
送你一个支持11种股票交易策略的Python量化库

4.伦敦 London Breakout

伦敦 London Breakout是每日内部开放范围的突破策略。基本上,它是不同时区不同市场的信息套利。

外汇市场全球24/7全天候运营。例如,您不能仅仅因为福特在纽约证券交易所上市而在ASX中持有福特的股票。由于外汇市场是分散的,只要市场开放,您就可以在任何市场中利用时差导致的信息差进行任何货币对交易。给个例子:

回到London Breakout,伦敦和东京是世界上最大的两个外汇市场。东京FX的交易时间是格林尼治标准时间上午0:00 – 格林尼治标准时间上午8:59。伦敦FX外汇交易时间(夏令时没有夏令时)从格林威治标准时间上午8:00开始即使有一个小时的重叠, London Breakout的关键时间表是格林尼治标准时间上午7:00 – 格林尼治标准时间7:59 amaka是最后一个交易时间之前伦敦市场开放。关键时间框架的价格变动包含了金融市场所有隔夜活动的信息(从当前时区的角度来看)。

对于策略本身,在关键时间范围的高低之前建立上限阈值和下限阈值。一旦伦敦外汇市场开放,将在前几分钟检查价格是否会突破预设的边界。如果它高于阈值,会相应地持有货币对。反之亦然。尽管如此,应该设置一个阈值,以防止在开放波动异常的情况下进行交易。通常,分别根据目标止损或止损清算头寸。在交易时间结束时(仍然从当前时区的角度来看),如果有任何未平仓头寸,会将其清除。

送你一个支持11种股票交易策略的Python量化库
送你一个支持11种股票交易策略的Python量化库

5.Awesome oscillator

Awesome oscillator是MACD的升级版本。这是关注移动平均线游戏的动力策略之一。而不是在收盘价上采取简单的移动平均线,Awesome oscillator的移动平均线来自高价和低价的平均值。与MACD 类似,它需要短期和长期移动平均线来构建。

可以在TradingView中找到Awesome oscillator的规则。

送你一个支持11种股票交易策略的Python量化库
送你一个支持11种股票交易策略的Python量化库
送你一个支持11种股票交易策略的Python量化库
送你一个支持11种股票交易策略的Python量化库

6.Oil Money项目

该项目的灵感来自一篇关于石油支持的外汇的文章。当石油退出熊市时,石油生产国的货币兑换也会反弹。这个陈述真的有效吗?

根据彭博社(或许多其他类似研究)的文章,研究人员研究了石油货币与石油价格之间的相关性,而不是因果关系。但相关性并不等于因果关系。相关可能是数学游戏的巧合。我们根本无法得出油价推动货币走势的结论。一些研究人员甚至使用自举,这极大地破坏了时间序列的自相关性。因此,对一些石油化学应用学术分析和计算机模拟以测试石油的因果关系至关重要。

送你一个支持11种股票交易策略的Python量化库

7.Dual Thrust

如果你在谷歌搜索双重推力,你将最终得到火箭引擎的结果。不要惊慌,你可以放心,双推力策略远不及火箭科学。这只是Universal Technical Systems创始人开发的开放式突破策略。这个策略所涉及的数学有小学数据基础即可。

最初,根据前几天的开盘价,收盘价,最高价和最低价设定上限和下限。当市场开盘且价格超过某些阈值时,会在上限/下限阈值之前采取多头/空头头寸。该策略在日内交易中非常有用。但是,该策略中没有止损/盈利头寸。当价格从一个门槛变为另一个门槛时,会改变头寸需要在当天结束时清除所有头寸。

可以在QuantConnect中找到双推力规则。

送你一个支持11种股票交易策略的Python量化库

8.抛物线SAR

抛物线SAR是识别趋势停止和反转的指标。通常,抛物线SAR在图表价格的上方或下方以虚线表示。当价格处于上升趋势时,SAR曲线将低于价格。当价格下跌时,SAR曲线将超过价格。抛物线SAR一直被视为抵抗价格动量的象征。当SAR曲线和价格曲线交叉时,应该执行交易订单。

这种策略的构建看起来非常简单,但由于涉及递归计算,指标的构建非常耗费算力。关于如何计算抛物线SAR的插图可以在维基百科中找到,但它没有得到很好的解释。为了清楚地了解计算,个人建议是查看joeu2004制作的电子表格。

值得一提的是,SAR和RSI(将在后面的章节中介绍)共享同一个创始人Welles Wilder。这个家伙是一个真正的传奇人物,曾经是机械工程师和房地产开发人员,后来成为技术分析师。他的技术交易系统书是任何想提升量化交易系统水平的人必读读物。

送你一个支持11种股票交易策略的Python量化库

9.Bollinger

布林带是一个非常简单但有力的指标。该指标有三个波段。中频带是价格系列的移动平均线(通常需要20滞后)。上部和下部带是远离中间带的两个移动标准偏差。布林带可用于测试各种类型的策略。

对于波动率交易,带宽的收缩和扩展是至关重要的因素。任何明显的动量聚类(它可以采取向上或向下的形式)将导致布林带扩张。并且水平通道中的振荡将导致布林带收缩。

对于动量交易,现象表明了标的资产的阻力和支撑位。在一个强劲的趋势中,价格不断尝试触及或突破上/下带以及布林带向同一方向移动。

对于模式识别,布林带可以测试底部W,前M,头肩模式等。上下波段作为间隔,更容易识别历史数据中的隐藏模式。

有关布林带的更多详情,请访问TradingView。

送你一个支持11种股票交易策略的Python量化库

10.RSI模式

RSI(相对强弱指数)也是一个受欢迎的指标。它反映了当前股价动能的强弱。计算非常简单。我们使用14天平滑移动平均线(或其他移动平均线方法)分别计算每日内部上升趋势和下降趋势。我们将上升趋势移动平均线除以下降趋势移动平均线作为相对强弱。将相对强度标准化100,这成为一个称为RSI的指标。人们普遍认为,70以上的RSI处于超买状态,而30以下的RSI处于超卖状态。这是在RSI上交易的最简单方法(如下图所示)。尽管如此,RSI势头与价格动量之间可能存在分歧,而这些趋势与价格趋势并未在程序中体现。任何分歧战略对RSI的有效性都是值得商榷的。

送你一个支持11种股票交易策略的Python量化库
送你一个支持11种股票交易策略的Python量化库

如果您正在寻找稍微复杂的东西,那么我们也可以将模式识别技术应用于RSI。与9布林带不同,我们可以直接看看RSI本身的模式而不是价格。由于我们测试了布林带的双底模式,我们这次将在RSI上测试头肩模式。

有关head-shoulder 模式的详细信息,请参阅Investopedia。

送你一个支持11种股票交易策略的Python量化库
送你一个支持11种股票交易策略的Python量化库

11.Monte Carlo项目

蒙特卡洛,实际上指的是大量随机事件的计算机模拟。这种非常规的数学方法在随机过程的研究中非常有用。

前面有关于Linkedin的论点引起了我的注意。”股票价格可能看起来像维纳过程。因此,我们可以使用蒙特卡罗模拟来预测股票价格。” 数据科学博客说。那么,为了成为一个维纳过程,我们必须假设股票价格是连续的。实际上,市场收盘了。隔夜波动存在。但这不是最重要的问题。最大的问题是,我们真的可以使用蒙特卡罗模拟来预测股票价格,甚至是一个范围或方向吗?

送你一个支持11种股票交易策略的Python量化库

以上就是该强大的期货/股票库的策略列表。老铁们可以在github的 je-suis-tm/quant-trading获取这一系列免费但强大的策略库。