算法交易中的Python - 页 20

 

如何在 Python 策略回测中编写追踪止损代码



如何在 Python 策略回测中编写追踪止损代码

今天,我为您准备了一个令人兴奋的 Python 编码教程。我们将学习如何在交易策略中实施追踪止损,并分析其对我们的净值和回报的影响。如果您是这个频道的新手,我建议您观看此播放列表中之前的视频,特别是最后两三个视频,我们在其中详细讨论了该策略。您还可以在 Jupiter Notebook 中找到 Python 代码,可以从描述中的链接下载该代码。这将允许您微调参数并自行进行实验。

在我们深入编码部分之前,让我们简要回顾一下我们将使用的策略。简而言之,我们已经自动检测支撑位和阻力位,以及识别这些水平附近出现的烛台形态。根据这些信号,我们将执行我们的交易订单。例如,如果我们识别出买入信号,例如强劲的拒绝蜡烛之前的看涨吞没形态,我们将建立多头头寸。为了管理风险,我们需要设置止损单,这决定了我们愿意承受的最大损失。传统上,止损被固定在距入场价格一定距离处。然而,在本教程中,我们将用追踪止损代替它。

追踪止损跟随价格向盈利方向变动,使我们能够在上升趋势中获得更多收益。在我们的示例中,由于我们处于买入位置,追踪止损将随着价格的上涨而移动,并与价格保持一定的距离。然而,如果价格试图反转并达到止损水平,我们的交易将被平仓以防止进一步损失。这种追踪止损机制有助于最大化利润,尤其是在长期价格趋势期间,而不是使用可能限制我们潜在收益的固定止盈水平。

现在,让我们将这个概念应用到我们之前讨论的策略中。我们将使用之前详述的相同程序。如果您不熟悉,请参阅播放列表并观看最后两到三个视频,其中介绍了烛台模式以及支撑位和阻力位检测的自动化。这次唯一的区别是,我们将实施追踪止损,而不是使用固定止损或止盈比率。在本教程的最后,我将回测该策略并演示使用此追踪止损方法可实现的潜在回报。

首先,我们加载数据,这是 2003 年至 2021 年 EUR/USD 货币对的每日烛台图。我们有一组函数可以帮助检测支撑位和阻力位,以及各种烛台模式,例如吞噬模式、流星和拒绝模式。如果您对这些功能的实现细节感兴趣,请参考之前的视频。

接下来,我们生成交易信号。买入信号用值 2 表示,卖出信号用 1 表示,如果没有信号,则该值设置为 0。此信息作为新列添加到我们的数据框中。这是我们的数据框现在的样子,其中包含开盘价、最高价、最低价、收盘价、交易量(我们不会在本策略中使用)和信号列。

为了回溯测试我们的策略,我们将利用此播放列表的最后一个视频中介绍的回溯测试包。我们定义一个名为“MyCandleStrategy”的类,它继承自回测包提供的“Strategy”类。我们重写两个函数:“初始化”和在每个烛台上调用的下一个函数。在初始化函数中,我们定义变量“stop_loss_trail”,它表示追踪止损的距离(以点为单位)。可以对该值进行试验,以找到适合我们策略的最佳追踪止损值。

在下一个函数中,我们实现追踪止损的逻辑。我们首先检查是否有未平仓头寸。如果这样做,我们通过从建仓以来的最高价格减去追踪止损值来计算当前止损水平。这确保了止损水平随着价格的上涨而落后。然后我们检查当前价格是否已达到或跌破止损水平。如果有,我们会平仓并更新我们的交易统计数据。

现在我们已经实现了追踪止损逻辑,我们可以继续运行回测并分析结果。以下是如何运行回测并打印净值曲线的示例:这将生成一个图表,显示应用了追踪止损的策略的净值曲线。您还可以访问回测包提供的其他性能指标和统计数据来评估策略的性能。

最后,要微调追踪止损值,您可以迭代一系列值并运行多个回测来比较结果。这将帮助您找到使您的回报最大化的最佳追踪止损值。

我们关于在交易策略中实施追踪止损的教程到此结束。请记住在将策略应用于实际交易之前尝试不同的值并彻底测试该策略。如果您有任何疑问或需要进一步帮助,请随时询问。快乐编码,快乐交易!

How To Code A Trail Stop In Python Strategy Backtesting
How To Code A Trail Stop In Python Strategy Backtesting
  • 2021.10.22
  • www.youtube.com
Trailing stop, or stop loss strategy is presented and coded in python for algorithmic trading methods. The strategy is Backtested showing high profitability...
 

如何用 Python 回测交易策略



如何用 Python 回测交易策略

大家好,欢迎回到另一个视频。今天我想讨论一个对我们交易策略非常重要的话题,那就是回测。到目前为止,我们已经提出了不同的策略,并且仅依靠统计计数来检查我们模型的交易估计的可靠性。然而,回测我们的策略会带来额外的信息,即在一定时间内可以赚取的利润金额。

如果您正在考虑在策略中进行任何类型的投资,则该利润百分比对于定义它非常重要。在我们继续之前,像往常一样,代码是一个 Jupyter Python 笔记本,您可以从此视频描述中的链接下载。该主题是由您的一条消息提出的,因此再次感谢您分享您的想法。我们从您的反馈中得到了非常有趣的想法,如果我没有时间讨论所有提出的想法,我深表歉意,但我保留了一个清单,我想我们将来会涵盖它们。

现在,我们来谈谈回测工具。网上有很多可用的库,但我个人更喜欢编写自己的函数。这样,我就可以确切地知道代码中发生了什么,尤其是在回溯测试时。我们需要可靠且坚固的东西。然而,在建议的套餐中,我有两个选择。其中一个是使用一个名为“vectorbt”的软件包,我发现在几个小时内学习它并开始将其用于我自己的策略有点困难。文档很少,我必须搜索论坛和在线示例才能找到许多详细信息。尽管它具有巨大的潜力并提供了很多选择,但我不想仅仅为了测试一个简单的策略而花一个月的时间来熟悉必要的功能。

因此,对于这个视频,我选择了第二个选择,这是一个名为“backtesting.py”的包。在我看来,它提供了一种更简单的方法。现在,让我们开始看看我们的策略会赚多少钱。对于这个例子,我将测试我们在阻力和支撑自动检测和烛台模式检测视频中讨论的先前策略。我们将在本视频中结合并使用这两个指标。

首先,我将加载并清理数据。然后,我将应用支撑和阻力函数进行检测。如果这是您第一次观看此频道,我建议您返回并查看之前有关如何检测支撑和阻力函数的视频,以及我们解释如何检测吞没模式、流星、上吊线和其他烛台图案。

接下来,我们根据前面提到的方法计算信号,无论是买入信号、卖出信号还是根本没有信号。我们标记两个信号并在数据框中填充一列。我们可以检查获得的信号数量,以确保我们的功能正常工作。

现在,我将更改列标题以使它们与 backtesting.py 包兼容。此步骤区分大小写,因此我们需要确保名称完全匹配。然后,我选择一系列要处理的行。

设置数据框架后,我们进入最有趣的部分:定义我们的策略并对其进行回测。我将导入所需的库,包括“策略”模块,并删除慢速移动平均线与快速移动平均线交叉的示例。

接下来,我定义一个名为“MyCandlesStrategy”的新类,它扩展“Strategy”类并重写它的两个抽象方法:__init__ 和 next。 __init__ 方法用于在策略开始时初始化第一个变量或函数。它仅运行一次,理想情况下是预先计算策略所依赖的任何指标和信号。

总体而言,回溯测试是交易策略的一个重要方面,因为它提供了有关策略在特定时间段内的潜在盈利能力的宝贵信息。在本视频中,我们将深入探讨回溯测试及其对我们交易策略的重要性。

在我们继续之前,像往常一样,本次讨论的代码以 Jupyter Python 笔记本的形式提供,您可以从视频描述中提供的链接下载。回溯测试的主题是由我们的一位观众提出的,我很欣赏从你们所有人那里收到的有趣的想法和反馈。尽管我可能没有机会立即讨论所有提出的想法,但我会保留一个列表并努力在以后的视频中涵盖它们。

当谈到回测工具时,网上有许多可用的库。虽然我并不熟悉所有这些,但就我个人而言,我更喜欢编写自己的函数。这种方法使我能够完全控制和理解代码的内部工作原理,这对于回测尤其重要。我们需要一个强大且可靠的解决方案来评估我们的交易模型。

在建议的软件包中,我有两个选择。第一个是名为“Vectorbt”的软件包,虽然功能强大且功能丰富,但学习曲线却很陡峭。该包的文档有些有限,我必须搜索论坛和在线示例来收集必要的信息。虽然 Vectorbt 具有巨大的潜力,但我不想仅仅为了测试本视频中的简单策略而花费过多的时间来熟悉其功能。

因此,我选择了第二个选择,一个名为“backtesting.py”的包。在我看来,这个包提供了一种更简单的回测方法,使其更适合我们的需求。话虽如此,让我们深入研究一下我们的策略会产生多少利润。

在此示例中,我将测试我们之前讨论的策略,其中涉及阻力位和支撑位的自动检测以及烛台模式检测。这两个指标将结合起来形成我们的策略。有关检测支撑位和阻力位以及蜡烛图形态的详细说明,我鼓励您观看我们频道上的相应视频。

首先,我们像往常一样加载和清理数据。接下来,我们实现支撑和阻力函数进行检测。如果您是该频道的新手,我建议您查看之前有关支撑和阻力检测以及烛台模式识别的视频,以便更好地理解。

一旦我们计算出信号(确定是买入、卖出还是无信号情况),我们就会计算信号的数量,以确保我们的功能正常工作。

展望未来,我们需要调整 DataFrame 中的列名称以与“backtesting.py”包兼容。必须遵守包所需的区分大小写和命名约定。此外,我们选择一系列行并进行必要的列更改。

总而言之,我们的 DataFrame 包含以下列:时间、开盘价、最高价、最低价和收盘价,以及交易量(目前我们不会使用),以及我们之前计算的信号列。

接下来,我们定义一个信号函数,该函数从 DataFrame 返回信号列。稍后当我们定义策略类时将需要这个函数。

现在我们到达了最有趣的部分,我们定义策略并执行回测。为了实现这一点,我们遵循 backtesting.py 文档中提供的指南。他们建议新策略应该扩展 Strategy 类并重写其两个抽象方法:init 和 next。

init方法负责初始化策略所需的变量和函数。它在策略运行之前调用,通常用于预先计算策略所依赖的任何指标或信号。通过重载此函数,我们可以使用常规 Python 函数和 backtesting.py 文档中提供的示例来定义必要的指标。

在我们的 init 方法中,我们定义了策略所需的指标。在本例中,我们将使用之前创建的信号函数从 DataFrame 中获取信号列。我们还将佣金费用设置为零,因为我们不会考虑此示例的任何交易费用。

下一个方法是我们策略的核心。每个交易栏都会调用它,并负责根据当前的市场状况做出交易决策。在我们的实现中,我们检查是否有买入信号(信号等于 1)并且我们当前没有持仓。如果满足这些条件,我们就建立多头头寸(买入)。

同样,如果有卖出信号(信号等于 -1)并且我们持有多头头寸,我们就会平仓(卖出)。在本例中,我们不考虑空头头寸,因此我们只有买入和卖出信号。

一旦我们定义了策略,我们就创建它的一个实例,并将 DataFrame 和信号函数作为参数传递。然后,我们从 backtesting.py 包创建 Backtest 类的实例,并将策略实例和 DataFrame 作为参数传递。

最后,我们通过调用 Backtest 实例上的 run 方法来运行回测。该方法执行策略并产生结果。

结果包括各种绩效指标,例如总回报、年化回报、最大回撤等。我们可以使用回测实例的相应属性来访问这些指标。

除了性能指标之外,回测实例还提供各种绘图函数来可视化结果。我们可以绘制权益曲线,该曲线显示交易账户随时间的增长,以及其他有用的图表,例如回撤和交易日志。

在我们的示例中,我们绘制了权益曲线并打印回测结果的摘要,包括性能指标。

运行代码后,我们可以观察权益曲线图,它显示了我们的交易账户随着时间的推移的增长。回测结果的总结提供了有关我们策略绩效的宝贵信息。

通过回测我们的策略,我们可以评估其盈利能力并评估其绩效。这个过程使我们能够深入了解交易模型的有效性,并就其在真实交易场景中的潜在用途做出明智的决策。

我们关于使用 backtesting.py 包进行回溯测试的讨论到此结束。我希望您觉得这个视频内容丰富,并且它为您提供了一种实用的方法来回测您的交易策略。请记住尝试不同的策略、指标和参数,以找到最适合您交易目标的策略、指标和参数。

与往常一样,请随时对未来的视频留下评论、问题或建议。非常感谢您的反馈。感谢您的观看,我们将在下一个视频中见到您!

How To Backtest A Trading Strategy in Python
How To Backtest A Trading Strategy in Python
  • 2021.10.07
  • www.youtube.com
In this video I am presenting a backtesting method using the backtesting.py package. We will backtest a winning strategy using python, we already detailed th...
 

Python 中的自动价格行为交易策略



Python 中的自动价格行为交易策略

在本视频中,我们将讨论利用烛台模式以及支撑位和阻力位的交易策略。该策略的主要目标是自动化检测价格行为模式的过程,并将其应用于欧元兑美元的历史数据。

首先,让我们看一下该策略的关键组成部分。烛台形态是以条形或蜡烛形式表示价格变动的图形。这些模式提供了有关市场情绪和潜在趋势逆转的宝贵信息。通过分析这些模式,交易者可以就何时进入或退出交易做出明智的决定。

另一方面,支撑位和阻力位是市场历史上表现出逆转或停滞趋势的特定价格点。这些水平对交易者来说是心理障碍,可用于识别潜在的进入和退出点。

现在,让我们继续在 Python 中实现这一策略。我们将使用欧元兑美元的历史数据,这些数据可以从各种金融数据源或 API 获得。对于此示例,我们假设我们已经收集并预处理了必要的数据。

我们将使用 Python 和一些流行的库来自动化该策略。第一步是导入所需的库,包括用于数据操作的 pandas、用于绘图的 matplotlib 和用于技术分析指标的 talib。 Talib 是一个广泛使用的库,提供了一系列技术分析功能,包括烛台模式识别。

导入库后,我们可以将历史数据加载到 pandas DataFrame 中。 DataFrame 应包含必要的列,例如日期、开盘价、最高价、最低价、收盘价和交易量。这些列通常用于技术分析,并且是计算指标和模式所必需的。

接下来,我们可以定义一个函数来检测烛台形态。在这个例子中,我们将关注一个简单的模式,即看涨吞没模式。当一根小看跌蜡烛后面跟着一根较大的看涨蜡烛完全吞没前一根蜡烛时,就会出现这种模式。该函数将迭代 DataFrame 并识别看涨吞噬模式的实例。

为了增强策略,我们还可以合并支撑位和阻力位。这些水平可以通过分析历史价格图表或使用技术分析技术来手动识别。在此示例中,我们假设我们已经确定了相关的支撑位和阻力位并将它们存储在单独的 DataFrame 中。

一旦我们有了烛台形态以及支撑位和阻力位,我们就可以继续自动化该策略。我们将迭代 DataFrame 并检查当前柱是否满足看涨吞没模式的条件以及当前价格是否接近支撑位。如果满足这些条件,我们会生成买入信号。

相反,如果当前柱满足看跌吞没形态的条件并且当前价格接近阻力位,我们会生成卖出信号。这些信号将用于在实时交易环境中触发买入或卖出订单。

为了可视化我们策略的结果,我们可以使用已确定的烛台模式以及支撑位和阻力位绘制历史价格图表。这将帮助我们了解策略的有效性并确定需要改进的领域。

最后,我们可以通过对历史数据进行回测来评估策略的表现。回测涉及根据历史数据模拟交易并评估策略的盈利能力和风险。我们可以计算各种绩效指标,例如总回报、年化回报、最大回撤等等。

通过回测我们的策略,我们可以深入了解其性能,并就其在真实交易场景中的潜在用途做出明智的决策。值得注意的是,回溯测试是战略制定中的关键步骤,因为它有助于我们评估我们方法的可行性和盈利能力。

该视频介绍了一个简单的交易策略,结合了烛台模式以及支撑位和阻力位。该策略是自动化的,并使用欧元兑美元的历史数据在 Python 中进行测试。通过利用这些技术分析技术,交易者可以潜在地识别有利可图的交易机会,并在金融市场上做出明智的决策。

Automated Price Action Trading Strategy In Python
Automated Price Action Trading Strategy In Python
  • 2021.09.09
  • www.youtube.com
This video presents a simple trading strategy using candlestick patterns and support and resistance values. The strategy can be automated for price action d...
 

PYTHON 中的自动支撑和阻力检测



PYTHON 中的自动支撑和阻力检测

大家好,欢迎回到这个视频。在本视频中,我们将详细解释如何使用 Python 自动检测支撑位和阻力位。这个想法是由其中一条评论提出的,非常感谢您。像往常一样,不要忘记该程序可以从下面描述中的链接下载。这是一个 Jupyter Notebook 文件,您可以将其用于自己的实验。您可能想在不同的货币或不同的时间范围上尝试此操作,并且您还可以修改代码中提供的变量。

虽然通过查看价格变动图表很容易直观地识别支撑位和阻力位,但以编程方式定义它们可能看起来很复杂。然而,通过适当的算法,该过程可以自动化。值得注意的是,我们在本视频中介绍的算法并不是唯一用于检测支撑位和阻力位的算法。有不同的方法,但我们选择了一种在代码中实现相对简单的方法。

您在此处看到的图形是使用我们将要解释的代码生成的,正如您所看到的,我们的程序正确检测到了支撑位和阻力位。这种方法适用于任何货币和任何市场条件。但是,它不是一个完美的算法,您可能会注意到某些级别未被检测到。我们稍后将在视频中解决这个问题。

定义支撑位和阻力位背后的基本思想是回顾特定时间段内的情况,例如一两个月,具体取决于您想要在策略中包含多少个水平。您拥有的数据越多,您发现的级别就越多。例如,如果您正在考虑像此处所示的日线图,并希望在特定日期进行交易,您将在特定时间范围(例如一个月)内回顾,以发现支撑位和阻力位发生在那个时期。这就是我们将在程序中通过考虑液位检测的有限时间段来模拟的情况。如果我们尝试使用所有可用数据来检测支撑位和阻力位,我们最终会得到大量的水平,这对于交易策略来说是不切实际的。因此,最好关注当前日期之前的几个月。

现在让我们深入研究算法本身。对于支撑位,我们将在感兴趣的蜡烛之前寻找一定数量的下降低点。感兴趣的蜡烛的低值应低于其他蜡烛的低值。此外,我们需要在感兴趣的蜡烛之后有三个不断增加的低点。当一组蜡烛满足所有这些条件时,我们可以确定支撑位,其定义为这些蜡烛中的最低价格。同样的原理也适用于阻力水平。我们需要在感兴趣的蜡烛之前有不断增加的高点,并且在感兴趣的蜡烛上有更高的高点。然后,我们应该在感兴趣的蜡烛之后看到不断下降的高点。这使我们能够找到阻力位,即这些蜡烛中的最高价格。

此阶段的一个有趣的参数是我们应该考虑感兴趣的蜡烛之前和之后有多少蜡烛。这可以根据用户的喜好进行定制,并且最好尝试不同的值。在我们的程序中,我们将它们定义为两个变量,称为 n1 和 n2。感兴趣的蜡烛的索引由变量 l 表示。

现在,让我们看看如何在 Python 中实现这个算法。我们将使用 Jupyter Notebook 进行此演示。首先,我们导入必要的库,包括用于数据操作的 pandas。我们使用 read_csv 函数加载数据,在本例中,我们使用 2003 年至 2021 年的欧元/美元日线图,大约是 18 年的数据。

接下来,我们将使用 ss 和 rr 列表中存储的支撑位和阻力位在烛台图上绘制线条。我们将循环遍历 ss 中的每个支撑位,并在该价格水平处向图表添加一条水平线。同样,我们将循环遍历 rr 中的每个阻力位,并为每个阻力位添加一条水平线。这将更容易可视化与价格变动相关的支撑位和阻力位。

通过运行代码,您将生成一个烛台图,其中支撑位显示为紫色虚线,阻力位显示为蓝色虚线。该图表将提供检测到的支撑位和阻力位的可视化表示,从而更容易确定交易决策的关键价格水平。

请记住,此处介绍的算法是检测支撑位和阻力位的几种方法之一。您可以尝试不同的 n1 和 n2 值,看看它们如何影响级别的检测和合并。此外,您还可以通过调整代码中的阈值来修改合并级别的条件。

请记住,自动检测支撑位和阻力位是一个有用的工具,但它应该与其他技术分析技术和市场洞察结合使用,以做出明智的交易决策。

Automated Support and Resistance Detection in PYTHON
Automated Support and Resistance Detection in PYTHON
  • 2021.08.19
  • www.youtube.com
This video describes an algorithm to detect support and resistance levels in python language. 🍓 If you want to follow structured courses with more details a...
 

Python 中的自动价格行为模式分析


Python 中的自动价格行为模式分析

该视频解释了如何在 Python 中组合烛台分析模式并检查信号数量以及价格行为预测的准确性。这些方法与自动交易兼容。从价格行为走势、烛台分析、吞没模式、价格行为分析中寻找相对较强信号的好方法。

00:00 价格走势蜡烛介绍
00:35
流星、锤子、吊人、吞噬模式
03:10  Python 价格行为检测
12:13 价格行为分析结果
18:45 用 Python 绘制价格蜡烛图

Automated Price Action Patterns Analysis In Python
Automated Price Action Patterns Analysis In Python
  • 2021.08.05
  • www.youtube.com
This video provides an explanation on how to combine Candlestick Analysis Patterns in Python and check the number of signals as well as the accuracy of the p...
 

用 Python 自动吞没价格行为模式



用 Python 自动吞没价格行为模式

大家好,欢迎回到这个视频。在今天的讨论中,我们将重点关注吞噬蜡烛,特别是看涨和看跌吞噬形态。对于那些已经熟悉这些模式的人来说,您会了解它们作为交易指标的重要性。

为了分析这些模式的有效性,我们将利用欧元/美元货币对大约 10 年的历史数据。我们的目标是在 Python 中应用简单的统计技术来确定这些模式是否具有统计意义,或者它们是否只是一个神话。此信息至关重要,特别是如果您正在考虑将烛台形态作为指标纳入您的交易策略中。

为了您的方便,您可以通过下面描述中提供的链接找到此分析中使用的完整代码。该代码以 Jupyter Notebook 文件形式提供,使您能够在探索代码的同时放松并欣赏该视频。

吞没模式可以以两种不同的形式观察到。当多根下降趋势蜡烛后面跟着一根上升趋势蜡烛时,就会出现看涨模式。该上升趋势蜡烛的起始价等于或低于最后一根下降趋势蜡烛的收盘价,收盘价高于前一根蜡烛的开盘价。这种模式通常表明市场即将出现上涨趋势。

另一方面,看跌吞没形态与看涨形态对称相反。当上升趋势蜡烛后面跟着看跌吞没蜡烛时,就会发生这种情况。看跌吞没蜡烛的起始价等于或高于前一根蜡烛的收盘价,收盘价低于同一蜡烛的开盘价。这种模式预示着价格即将下跌。

在本视频中,我们的目标是验证这些说法是否属实。我们的目标是确定这些模式是否真正表明了特定的市场行为。通常,看涨吞没模式表明市场上买家强于卖家,而看跌吞没模式则表明相反。为了完成此验证,我们将编写 Python 代码来检测看涨和看跌吞没蜡烛。随后,我们将分析以下几根蜡烛(从一根到三根蜡烛或更多),以确定价格是否朝着预期方向移动。

更准确地说,我们将考虑最后一根吞噬蜡烛的收盘价。在看涨吞没形态的情况下,我们将考虑后续蜡烛的高价,并计算吞没蜡烛的高价和收盘价之间的差值。这将产生三个不同的值,我们将其表示为“d”。接下来,我们将测试这些差异是否超过某个限制,由我将定义的变量表示。该限制可以设置为 20、30 或 40 点,具体取决于您的偏好。然后,我们将计算该差异超过点值限制的次数百分比。

同样,对于看跌吞没形态,我们将考虑后续蜡烛的低值。我们将吞噬蜡烛的收盘价与这些低值之间的差异与变量 X 进行比较。我们再次寻找该差异超过 X 的实例。本质上,我们正在评估价格是否超过看涨或看跌吞没形态后两到三根蜡烛线内的阈值。我们将计算这些模式发生后价格表现符合预期的实例百分比。

值得注意的是,这些差异中只有一个需要超过变量 X。我们并不要求所有三个差异同时超过此点限制。因此,如果价格低于吞噬蜡烛的收盘价特定数量的点,则该模式的预测被认为是成功的。同样的原理也适用于看涨吞没形态,但方向是向上的。

现在,让我们继续检查 Python 代码并观察其行为。

如果我这样做的趋势等于一,意味着看跌吞噬模式和下降趋势预测,我可以通过总结结果列中趋势等于一的值并将其除以总数来计算精度看跌吞没形态的信号。同样,我可以计算看涨吞没形态和上升趋势预测的精度。

现在,让我们创建一个名为“calculate_ precision”的新函数,它将数据帧作为输入并计算两种模式的精度。首先,我们初始化变量“bearish_signals”和“bullish_signals”来计算每个模式的信号总数。然后,我们迭代数据帧并根据信号值递增相应的信号计数器。

接下来,我们通过对结果列中趋势等于 1 的值求和并将其除以看跌信号总数来计算看跌吞没形态的精度。我们对看涨吞没形态和上升趋势预测进行同样的操作。

最后,我们返回两种模式的精度值。现在,让我们在数据帧上调用此函数来计算精度。

计算精度后,我们可以打印结果以查看我们的预测与实际趋势的吻合程度。需要注意的是,这些精度值基于我们在代码中设置的特定参数和条件。您可以尝试不同的参数和条件,以优化您的特定交易策略的精度。

总之,该视频重点关注交易中的吞没蜡烛形态,旨在确定这些形态是否具有统计意义,或者它们是否只是一个神话。通过使用 Python 分析欧元/美元货币对的历史数据,我们检测到看跌和看涨吞噬蜡烛模式,并检查了指定数量蜡烛内的后续趋势行为。通过计算精度,我们深入了解了预测的准确性。请记住考虑此分析的局限性,并根据您自己的偏好和目标继续完善您的交易策略。

感谢您的观看,不要忘记查看视频描述中的链接以下载 Jupyter Notebook 格式的完整代码。祝您交易之旅愉快,祝您好运!

Engulfing Price Action Patterns Automated in Python
Engulfing Price Action Patterns Automated in Python
  • 2021.07.08
  • www.youtube.com
This video describes the Engulfing Candlestick Patterns, bullish and bearish engulfing candles and statistics are carried out in python to check if these pat...
 

Python 中的自动化烛台策略 |测试流星



Python 中的自动化烛台策略 |测试流星

在今天的课程中,我们将深入研究烛台模式的迷人世界,并学习如何用 Python 对其进行编程。我们的目标是创建一个可以识别特定模式并可能检测价格趋势反转的代码。此外,我们将对利用烛台信号的策略进行回溯测试,采用简单的统计方法来评估开发基于烛台预测的获胜自动化机器人的机会。如果您对此内容感兴趣,可以从下面描述中提供的链接下载程序文件。我们希望您喜欢这次内容丰富的会议。

在继续之前,我们先澄清一下,该视频假设您已经对烛台模式有一定的了解。我们不会详细解释每种模式,因为我们将重点关注最知名的形式。请注意,此列表并不详尽,因为还有更多模式。现在,我们将坚持基础知识。您可能已经熟悉十字星,它代表着一个尚未确定的市场。另一个重要的形态是流星形态,其特点是烛台主体上方有一条长尾。它可以以两种形式出现,但最重要的是长尾巴的存在。当您在上升趋势中遇到流星时,它可能表明趋势反转,表明转向下降趋势。类似地,我们有锤子形态,它与流星相似,但相反。它表示上升趋势中的拒绝点,具有较长的下尾。该模式表明上升趋势已接近尾声,接下来可能会出现下降趋势回调。

接下来,我们来讨论看涨吞没形态。这种情况发生在下降趋势期间,最后一根红色烛台完全被更大的上升烛台覆盖。这种反转模式标志着下降趋势的结束和上升趋势的开始。相反,我们有看跌吞没模式,它与看涨吞没模式相反。它发生在上升趋势期间,其中一根上升的烛台后面跟着一根更大的烛台,覆盖了前一根烛台。这表明上升趋势的结束和下降趋势的开始。请记住,还有其他几种烛台形态,我们在此不会详细介绍,例如三只乌鸦形态等。然而,在本视频中,我们将特别关注流星和锤子形态,特别是当下降趋势反转为上升趋势时。

流星和锤子形态是我个人的最爱,因为它们清楚地表明了市场对上升趋势的反应。很明显,卖家已经进入市场,拒绝特定的价格水平。这就是为什么我比其他模式更倾向于信任这些模式。当然,个人偏好可能会有所不同,具体取决于您如何利用这些模式并将其与其他指标或策略相结合。出于本视频的目的,让我们将流星视为价格拒绝和卖家强烈反应的令人信服的例子,这赋予了该烛台独特的形式。我们将专注于用 Python 编写此模式并教我们的机器人识别此类模式。虽然您可以将我们将讨论的概念扩展到您感兴趣的其他模式,但我们的主要重点将是流星和锤子。

值得注意的是,仅依靠烛台形态不足以生成准确的买入或卖出信号。这些模式应该与您最喜欢的指标结合起来。在我们的例子中,我们将它们与相对强弱指数 (RSI) 结合起来。您可以选择将不同的技术指标甚至基本面分析与烛台模式结合起来。单独使用烛台并不全面。

为了评估我们的预测方法的成功率,我们需要将其与 RSI 和烛台形态结合起来,为信号添加额外的确认。 RSI 值较高表明购买压力较强,这与流星形态所暗示的潜在趋势反转相符。

如果满足所有条件,我们就可以生成买入信号。我们将值 1 分配给数据帧中相应行的信号列。否则,我们分配一个值 0,表示没有信号。对数据框中的每一行重复此过程,有效地扫描整个数据集以识别潜在的购买信号。

接下来,我们继续为已识别的买入信号定义止损和止盈水平。我们通过从买入价中减去平均真实波动范围 (ATR) 来计算止损值。 ATR 提供了波动性的衡量标准,并有助于确定适当的止损距离。较宽的 ATR 表明市场波动性更大,需要更大的止损,而较小的 ATR 表明市场波动性较小,允许更严格的止损。

对于止盈水平,我们将止盈止损比率(我们设置为 2)乘以 ATR,并将其添加到买入价中。这确保止盈水平与买入价格的距离是止损水平的两倍。止盈水平代表交易的潜在利润目标。

现在我们有了买入信号以及相应的止损和止盈水平,我们可以继续对策略进行回测。我们迭代数据框中的每一行并根据生成的信号模拟交易。

如果价格首先达到止损水平,我们认为这是一笔亏损交易。相反,如果价格首先达到止盈水平,我们认为这是一笔获胜交易。我们跟踪盈利和亏损交易的数量。

为了评估策略的表现,我们将获胜率计算为获胜交易占总交易的百分比。在本例中,由于我们将止盈止损比率设置为 2,因此每笔盈利交易都会补偿两笔亏损交易。因此,要拥有一个获胜系统,我们需要至少 34% 的时间是正确的。

值得注意的是,此评估并未考虑交易成本,例如费用和隔夜掉期价值。此外,这是一个简化的示例,在现实交易中,必须考虑其他因素,例如市场状况、风险管理和整体市场分析。

通过结合烛台模式、RSI 和系统化的交易管理方法,我们的目标是开发一种可以产生有利可图的交易的交易策略。然而,使用历史数据彻底测试和验证策略并考虑持续的市场分析以适应不断变化的市场条件至关重要。

总之,本视频教程介绍了如何用 Python 编程烛台模式,演示如何识别特定模式,并概述了用于评估基于这些模式的策略性能的回溯测试方法。这是一个探索烛台模式作为预测价格趋势反转和开发自动交易机器人工具的潜力的机会。

Automated Candlestick Strategy in Python | testing the shooting star
Automated Candlestick Strategy in Python | testing the shooting star
  • 2021.04.21
  • www.youtube.com
This video is a walkthrough coding the candlestick patterns in Python language. After a general introduction we focus mainly on the shooting star rejection p...
 

避免算法交易和机器学习中的常见错误



避免算法交易和机器学习中的常见错误

您是否想过,当您睡觉或享受空闲时间时,拥有一个能够代表您执行盈利交易的获胜交易机器人会是什么样子?也许您花了几个小时、几个月甚至几年的时间试图破解密码并找到可以彻底改变您生活方式的难以捉摸的程序。

当谈到机器学习时,许多人相信它有能力在营销和销售等各个领域创造奇迹。然而,机器学习在两个领域仍然举步维艰:天气数据预测和价格市场预测。这些领域的数字具有高度随机性,因此仅使用机器学习来准确预测价格具有挑战性。

但问题是:使用机器学习来预测价格是可能的,但前提是它与适当的交易策略相结合。这意味着您做出的预测类型必须与您采用的交易策略保持一致。

现在,让我们深入探讨一些可能阻碍交易模型成功的常见错误,以及如何避免这些错误。

错误#1:将价格值作为回归量拟合到机器学习模型中。试图通过直接将价格值输入机器学习回归器来预测下一个市场价值是初学者常见的错误。虽然这种方法可能适用于相关值,例如根据表面积预测房价,但它不适用于股票或货币市场。这些市场并没有表现出与时间变量本身的明显相关性,使得直接回归无效。

错误#2:使用绝对值作为模型输入。使用原始价格或技术指标值作为输入是另一个陷阱。仅仅提供开盘价、收盘价、最高价、最低价以及移动平均线和其他指标,并不能保证准确的未来价格预测。我们的大脑处理信息的方式不同,关注的是整体形象和价格变动的斜率,而不是个体价值。同样,您的模型需要考虑总体趋势和模式,而不是单个数据点。

错误#3:使用随机训练测试数据分割来采样数据。虽然随机训练测试分割是机器学习中的常见做法,但在进行时间序列分析时(尤其是在价格市场中)可能会出现问题。随机分割数据进行训练和测试可能会导致测试集与训练集非常相似的情况。这种相似性可以使模型在回溯测试中显得准确,但在新的实时数据中表现不佳。

错误#4:仅仅依赖技术分析。虽然技术指标在机器学习模型中发挥着重要作用,但仅依靠它们不足以获得长期成功。考虑外部因素至关重要,例如经济日历和重大事件,这些因素可能会对市场行为产生重大影响。忽略这些因素可能会导致糟糕的结果,并损害一个原本合理的模型。

错误#5:没有考虑适合模型精度的策略。模型精度本身并不能决定其盈利能力。将模型的准确性与优化的交易策略(例如有利的止盈止损比率)相结合,可以将看似亏损的模型转变为盈利的模型。如果搭配正确的策略,超过 33% 的精度就足够了。

错误#6:跳过入场策略并仅依赖模型的预测。即使您的模型提供了准确的预测,了解何时进入市场并执行交易也至关重要。定义补充模型预测的市场进入策略对于利润最大化至关重要。如果您在错误的时刻进入市场并在达到目标之前被止损,那么正确的趋势预测是不够的。

错误#7:没有考虑交易费用和佣金。忽略费用和佣金可能会对您的交易策略的盈利能力产生重大影响。虽然获胜策略可能有一点优势,但交易费用可能会侵蚀这些收益。在设计策略时考虑费用非常重要,例如在同一天内平仓交易以避免隔夜或周末费用。

接下来,在较长时间内对模型进行回溯测试至关重要。在不同的市场条件下测试您的模型对于确保其有效性至关重要。不要仅仅依赖短期表现,因为它可能无法反映模型的长期可行性。目标是在至少六个月内回测您的模型,并评估它是否持续产生正收益。

最后,避免失去耐心并干扰交易。高精度模型往往会在执行交易之前等待强信号。虽然这可能会导致您错过一些机会,但重要的是不要干扰模型的决策。避免因不耐烦而开启新交易或关闭现有交易。有时,零交易比亏损交易更好。

总之,这些见解应该可以帮助您改善交易体验。请记住,如果您的算法尚未做好上市准备,最好不要过度关注它。休息一下,点一份美味的热披萨,然后记得玩得开心。

Avoid Common Mistakes in Algorithmic Trading And Machine Learning
Avoid Common Mistakes in Algorithmic Trading And Machine Learning
  • 2021.03.05
  • www.youtube.com
This video presents 9 very common mistakes that every algorithmic trader might fall in especially when using Machine Learning models to predict price movemen...
 

如何使用 Pandas 计算交易技术指标



如何使用 Pandas 计算交易技术指标

大家好,欢迎回到这个视频。今天,我们将深入使用 Python 分析外汇市场价格,并探讨统计数据是否可以揭示技术指标与未来价格方向之间的相关性。您无需成为交易或编程方面的专家即可跟进,但熟悉移动平均线和相对强弱指标 (RSI) 等基本技术指标会有所帮助。如果您来这里是为了快速了解交易中的机器学习应用程序,那么您也来对地方了,因为我们会让事情变得简单。

在本视频中,我们将讨论以下主题:

  1. 下载货币兑换数据:我们将访问 cascope.com 网站并选择历史数据源,特别是 USD/CHF(美元兑瑞士法郎)货币对。我们将为我们的数据选择每小时烛台时间范围。

  2. 使用 pandas 将数据加载到 Python 中:我们将使用 pandas 库的 read_csv 函数将下载的文件加载到 pandas DataFrame 中。我们还将通过检查 DataFrame 的最后五行来检查数据是否正确加载。

  3. 数据清理和初始分析:了解数据至关重要,因此我们将通过删除零容量的行并检查缺失值来清理数据。此外,我们将执行简短的统计分析来识别数据中的模式或相关性。

  4. 添加技术指标:我们将导入必要的库,包括numpy和pandas_ta(pandas技术分析),它提供了各种技术分析指标。我们将向 DataFrame 添加多个指标,例如平均真实波动范围 (ATR)、RSI、移动平均线,并计算它们的斜率。

  5. 定义目标:为了根据技术指标进行预测,我们需要定义我们的目标。我们不会预测未来的平均价格(这可能具有挑战性),而是将趋势分为三类:上涨、下跌和无明显趋势。

  6. 绘制直方图:我们将使用直方图可视化各种特征的分布。这包括成交量、ATR、RSI、中间价、移动平均线、斜率和目标类别。直方图将提供数据的快速概述并帮助识别任何异常值。

  7. 分析 RSI:我们将重点关注 RSI 作为趋势指标,并为三个目标类别创建单独的 DataFrame:向上、向下和不清楚的趋势。我们将绘制每个类别中 RSI 值的直方图,以查看是否存在任何可区分的差异。

然而,请记住,仅依靠 RSI 可能不足以准确预测价格趋势。建议探索其他技术指标或指标组合,以获得预测价格趋势的优势。

本视频的内容就到此结束了。我希望这些信息对您有所帮助。如果您有任何具体问题或需要进一步说明,请随时在评论部分提问。快乐编码!

How To Calculate Technical Indicators For Trading Using Pandas
How To Calculate Technical Indicators For Trading Using Pandas
  • 2021.02.22
  • www.youtube.com
If you're a beginner looking to learn how to calculate technical indicators and download price history, then you don't want to miss this video! These indicat...
 

Backtesting.py - python 完整课程



Backtesting.py - python 完整课程

在教程中,讲师讨论了使用 backtesting.py 作为回测交易策略库的优点和缺点。该库的设计仅关注回溯测试的要点,省略了指标库或与经纪商或其他平台集成等功能。这种简单性使得该库变得轻量级且易于使用。提供的文档清晰易懂,使用户能够快速掌握库的概念和功能。

backtesting.py 的一个显着优势是它的速度,尤其是在测试单一策略时。该库针对性能进行了优化,允许用户高效地运行回测并及时获得结果。当迭代多个策略或参数组合以找到最佳设置时,这种速度是有益的。

但是,使用 backtesting.py 时需要考虑一些限制。首先,该库不支持多种资产的交易。它主要设计用于测试单一资产或证券的策略。此外,backtesting.py 不提供对分数份额的支持,这对于有兴趣进行较小头寸交易的用户来说可能是一个缺点。

尽管有这些限制,对于那些想要专注于回测其交易策略的人来说,backtesting.py 仍然是一个绝佳的选择。其简单性和轻量性使其易于理解并集成到现有工作流程中。

在本教程中,讲师通过逐步创建虚拟环境并安装必要的依赖项来演示 backtesting.py 的用法。通过导入所需的组件(例如 2006 年至 2013 年 Google 股票价格的测试数据),讲师为执行回溯测试奠定了基础。

然后,讲师继续创建一个策略类,其中定义了两个基本函数 __init__ 和 next。在 __init__ 函数中,讲师计算相对强弱指数 (RSI) 的指标值。下一个函数用于根据 RSI 值评估购买标准。

接下来,讲师将解释如何使用输入下一个函数的预先计算值来实现简单的交叉策略。导入 backtesting.py 中的交叉库以将 RSI 与上限和下限值进行比较。当RSI超过某个值时,会产生卖出信号,当RSI低于另一个值时,会触发买入信号。教师定义上限和下限值并将它们分配给班级以便在下一个函数中访问。

为了测试该策略,讲师通过提供数据、选择初始现金金额并打印统计数据来设置回测。讲师强调使用 backtesting.py 绘制回测结果的简便性,并强调屏幕上的红色和绿色框如何指示月份。

讲师接着概述了 backtesting.py 仪表板,该仪表板提供了交易信息、损益、投资组合价值和指标以及其他有用指标的全面视图。讲师演示如何使用 backtesting.py 通过定义 RSI 窗口上限和下限的不同范围来实现策略优化。优化器生成夏普比率等统计数据,并模拟各种组合以找到最有价值的函数。讲师强调用户可以定义自定义指标并应用约束来改进优化结果。

此外,讲师还解释了如何使用 lambda 函数应用约束来选择值的子集,这些函数根据特定参数返回 true 或 false。该视频演示了如何使用优化器函数优化策略以最大化夏普比,以及如何将优化函数定义为常规 Python 函数。讲师还讨论了如何创建一个指标来最大化利润,同时最小化在市场上花费的时间。

在教程中,讲师向优化函数添加了最小交易数过滤器,以防止过度拟合。通过包含此过滤器,回测功能被迫超越单个波动周期,从而增加发现更有利可图的参数组合的机会。此外,讲师还演示了如何创建回测结果的 HTML 文件,这在运行多个回测并需要跟踪不同的参数组合时非常有用。讲师还提供有关命名和组织生成的文件的指导,以避免工作目录混乱。

本教程进一步探讨了如何使用 backtesting.py 中的优化函数来有效地优化策略,而无需测试每种可能的组合。通过设置最大尝试次数,程序对组合执行随机网格搜索,从而减少回溯测试所花费的时间和过度拟合的风险。讲师演示如何生成热图,通过改变上限和下限来可视化不同值对策略的影响。 pandas group by 语句用于按上限和下限对列进行分组,并计算平均值以获得每个组合的平均值。

演讲者解释了 backtesting.py 中的函数如何查找指定列的所有唯一组合,例如上限和下限。然后将这些组合分组在一起,并应用聚合函数(例如平均值)。生成的输出是一个热图,可以使用 Seaborn 模块绘制。讲师演示了夏普比的优化以及热图颜色图的更改。此外,讲师还演示了如何使用内置函数plot_heat_maps 绘制两个以上参数的多个热图。

讲师演示如何使用热图进行参数优化,并使用 backtesting.py 库中的重新采样应用函数实施多时间框架策略。热图提供了不同参数的变化如何影响交易策略的直观表示。通过使用重新采样应用功能组合不同的时间范围,交易者可以构建考虑不同市场条件的更复杂的策略。

讲师解释了如何使用 backtesting.py 库在交易策略中使用不同的时间范围。通过下采样和应用函数,该库可以执行前向填充并重新索引回较小的时间范围,从而方便对不同时间范围的分析。在提供的示例中,该策略涉及使用每日和每周 RSI 仅在发生交叉且 RSI 高于或低于特定阈值时触发交易。讲师提到可以通过调整参数来优化该策略,并且该库支持尝试不同的订单类型,例如止损和止盈。

演示者演示了如何在 RSI 低于下限时建立空头头寸并在买入时关闭任何空头头寸。同样,演示者演示了当 RSI 高于上限时,它会出售所有多头头寸并启动空头头寸。然而,演示者指出,没有代码可以阻止该程序持有多个仓位,这会导致该程序损失 80% 的投资权益。演示者解释了如何通过添加一个条款来解决此问题,即仅在没有当前头寸或投资组合中存在多头/空头头寸的情况下才启动新交易。

讲师演示了如何在 backtesting.py 中使用止损和止盈订单。通过将止损设置为低于当前价格的特定百分比,该策略可以限制每笔交易的损失,同时设置止盈水平允许在特定利润水平退出交易。讲师还展示了如何在购买过程中调整规模参数,以便为每笔交易分配特定百分比的可用资金。虽然示例中的销售策略存在一些问题,但该视频提供了使用 backtesting.py 构建和测试交易策略的有用见解。

该视频讨论了在回测中实施头寸规模的不同方法。一种方法是一次买卖一股,而不是一定比例的可用现金。这种方法对于涉及逐步进场或平均成本的策略非常有用。该视频演示了将交叉策略修改为基于 RSI 指标的策略。在此修改后的策略中,当最新 RSI 值小于下限时执行交易。该视频还强调,可以从回测中提取交易作为 pandas 数据帧,包括进入和退出日期以及其他重要指标。这些贸易数据可以导出到其他可视化工具,例如Excel或其他Python脚本,以进行进一步分析和检查。

backtesting.py 的创建者引入了“bars since”函数,这是一个强大的工具,用于优化策略并避免需要编写大量 if 语句来比较前几天的数据。该功能允许用户确定自上次满足特定交易条件以来的柱数。此功能提供了一种根据特定时间条件优化策略的便捷方法。此外,创建者强调 backtesting.py 的开源性质,鼓励用户根据自己的特定需求和偏好定制该库。

总之,backtesting.py 教程的最后,讲师鼓励观众提出任何问题或疑虑。讲师祝他们在回测中好运,并提醒他们在使用 backtesting.py 探索回测和优化交易策略的可能性时享受乐趣。讲师强调参考 backtesting.py 文档以获取更多详细信息并发现可用于构建和优化回测基础设施的其他功能的重要性。

总的来说,本教程全面概述了 backtesting.py、其优点、局限性和各种功能。它指导用户完成创建回测环境、实施策略、优化参数、使用热图进行分析、合并多个时间框架以及应用头寸调整技术的过程。通过学习本教程,观看者可以获得宝贵的见解和实践知识,可以帮助他们使用 backtesting.py 有效地测试和完善他们的交易策略。

  • 00:00:00 讲师讨论 backtesting.py 的优点和缺点。该库仅关注回测的要点,不包括指标库或与经纪商或其他平台的集成。该文档简单易懂。此外,它的速度非常快,尤其是在测试单一策略时。不利的一面是,它不允许交易多种资产或零碎股份。总体而言,该库轻量且简单,对于那些希望只专注于回测的人来说是一个绝佳的选择。讲师还逐步完成创建虚拟环境并安装本教程所需依赖项的步骤。

  • 00:05:00 我们看到 backtesting.py 库的作者导入了运行回测所需的必要组件,例如 2006 年至 2013 年 Google 股票价格的测试数据,并创建了一个策略类,其中两个函数、 init 和 next 已定义。在 init 中,我们计算 RSI 的指标值,然后使用 next 函数根据 RSI 值的计算来评估购买标准。

  • 00:10:00 讲师讨论如何使用明年输入的预先计算值来实施简单的交叉策略。他们从 backtesting.py 导入交叉库,以将 RSI 与上限和下限值进行比较。当 RSI 高于某个值时,它会卖出,当 RSI 低于某个值时,它会买入。它们还定义上限和下限值并将它们分配给类以在函数中访问它们。然后,讲师为该策略设置回测并提供数据,选择现金金额,并打印统计数据。他们解释了如何轻松绘制回溯测试以及屏幕上的红色和绿色框如何指示月份。

  • 00:15:00 演讲者提供了仪表板的概述,该仪表板可用于使用 backtesting.py 可视化回测结果。仪表板提供有关交易、损益、投资组合价值和指标等信息。演讲者还演示了如何使用 backtesting.py 通过定义上限和下限以及 RSI 窗口的不同值范围来实现策略优化。优化器生成夏普比率等统计数据,并模拟各种组合以找到最高值的函数。演讲者指出,用户可以定义自定义指标来优化并应用约束来生成更好的优化结果。

  • 00:20:00 讲师解释如何应用约束来选择值的子集并创建基于任何参数返回 true 或 false 的 lambda 函数。该视频演示了如何优化策略、如何使用优化器函数最大化锐比以及如何将优化函数定义为常规 Python 函数。讲师还讨论了如何创建一个指标来计算如何在市场上停留最短的时间来赚最多的钱。

  • 00:25:00 讲师解释如何向优化函数添加最小交易数过滤器以防止过度拟合。通过添加此过滤器,回测功能被迫超越单个波动周期,从而增加发现更有利可图的参数组合的机会。讲师还展示了如何创建回测结果的 HTML 文件,这在运行多个回测并且需要跟踪所使用的不同参数组合时非常有用。最后,讲师讨论如何命名和组织生成的文件以避免堵塞工作目录。

  • 00:30:00 讲师解释了如何使用 backtesting.py 中的优化函数快速优化策略,而无需执行每种可能的组合。通过设置最大尝试次数,程序对组合执行随机网格搜索,从而减少回溯测试所花费的时间和过度拟合的风险。讲师还演示了如何生成热图,以可视化不同的值及其在改变上限和下限时对策略的影响。 pandas group by 语句用于按上限和下限对列进行分组,并取平均值来计算每个组合的平均值。

  • 00:35:00 演讲者解释了该函数如何查找所提到的列的所有唯一组合,例如上限和下限。然后,该函数将这些组合分组在一起并应用聚合函数,在本例中为平均值。生成的输出是一个热图,可以使用 Seaborn 模块绘制。演讲者演示了如何优化夏普比并更改热图的颜色图。最后,演讲者展示了如何使用内置函数plot_heat_maps 绘制两个以上参数的多个热图。

  • 00:40:00 讲师演示如何使用热图进行参数优化以及如何使用回测库中的重采样应用函数来实施多时间框架策略。通过使用热图,用户可以直观地看到不同参数的变化如何影响他们的交易策略。重新采样应用功能允许用户将数据重新采样到不同的时间范围,例如每周和每天,以便在多时间范围策略中一起使用它们。通过结合不同的时间框架,交易者可以构建更复杂的策略来考虑不同的市场条件。

  • 00:45:00 讲师解释了如何使用 backtesting.py 库在交易策略中使用不同的时间范围。通过下采样和应用函数,该库可以执行前向填充并重新索引回较小的时间范围,从而更容易分析不同的时间范围。此示例中的策略涉及仅当发生交叉并且 RSI 高于或低于特定阈值时才使用每日和每周 RSI 来触发交易。该策略可以通过调整参数来优化,并且该库可用于试验不同的订单类型,例如止损和止盈。

  • 00:50:00 演示者演示如何在 RSI 低于下限时建立空头头寸,然后在买入时平仓。同样,他证明,当 RSI 高于上限并出售任何多头头寸时,该程序也会启动空头头寸。然而,没有代码可以阻止该程序持有多个头寸,这导致该程序损失了 80% 的投资股权。演示者解释了如何通过添加一个条款来解决此问题,即仅在没有当前头寸或投资组合中存在多头/空头头寸的情况下才启动新交易。

  • 00:55:00 讲师演示了如何在 backtesting.py 中使用止损和止盈订单。通过将止损设置为低于当前价格的特定百分比,该策略可以避免每笔交易的损失超过一定金额,同时设置止盈允许在一定的利润水平退出交易。讲师还展示了如何在购买过程中调整规模参数,以便为每笔交易分配特定百分比的可用资金。虽然此示例中的销售策略存在一些问题,但该视频提供了使用 backtesting.py 构建和测试交易策略的有用见解。

  • 01:00:00 该视频讨论了在回溯测试中实施头寸规模的不同方法。一种方法是一次买卖一股,而不是一定比例的可用现金,这对于逐步建立头寸或平均成本非常有用。该视频演示了将交叉策略修改为基于 RSI 指标的策略,该策略在最新 RSI 值小于下限时买入。该视频还显示,可以从回测中提取交易作为 pandas 数据帧,包括进入和退出日期以及其他重要指标。交易可以导出到其他可视化工具,例如 Excel 或其他 Python 脚本。

  • 01:05:00 创建者在 backtesting.py 中引入了“bars since”函数,该函数可用于确定自上次满足特定交易条件以来的柱数。该函数可以成为优化策略并避免编写许多 if 语句来比较前几天数据的绝佳工具。创建者使用仅当日 RSI 连续三天高于上限时才卖出的示例。此外,他还讨论了如何提取原始贸易数据以进行进一步分析,以及 backtesting.py 的开源性质如何使用户可以轻松地根据自己的特定需求定制该库。本教程的结论邀请学习者探索 backtesting.py 文档,以发现更多可用于构建和优化回测基础设施的细节和功能。

  • 01:10:00 演讲者通过鼓励观众向他提出任何问题或疑虑来结束 backtesting.py 课程。他还祝愿他们在回溯测试中好运,并提醒他们玩得开心。
Backtesting.py - Full course in python
Backtesting.py - Full course in python
  • 2022.04.26
  • www.youtube.com
A full course covering all you need to know about the backtesting.py python library. Backtesting.py is a lightweight backtesting framework in the style of Ba...