算法交易中的Python - 页 17

 

Python 中的通道突破指标



Python 中的通道突破指标

你好!今天,我们将深入研究算法生成的价格通道突破示例。稍后,我将向您展示代码,您可以从下面描述中的链接免费下载该代码。让我们首先了解什么是价格通道突破。

价格通道突破是交易者用来识别价格潜在突破的技术分析工具。它的工作原理是围绕价格行为绘制一条通道,代表特定时期内价格的高点和低点。当价格突破该通道时,可能预示着潜在的趋势变化或市场机会。

有趣的是,我们可以使用 Python 自动化识别通道和潜在突破的过程。在本视频中,我将引导您完成算法步骤并提供代码,允许您根据您的交易偏好和您将使用它的资产来修改和微调它。

让我们分析一下图表上显示的示例。黑星代表算法检测到的突破。蜡烛下方的星星表示未来的上升趋势,而蜡烛上方的星星则表示未来的下降趋势。这些突破基于算法识别的通道。

为了解释该算法,让我们考虑第一个例子。我们有一个下降趋势,随后突破某个通道。蜡烛下方的星星表示未来的下降趋势。值得注意的是,这一特定通道与图表上显示的通道不同。该算法根据之前的蜡烛来检测通道。

另一个例子是突破通道,预示着未来的上升趋势。我们可以观察这些突破及其与算法检测到的通道的关系。该算法使用三个检测点:枢轴点、通道检测和突破检测。

首先,它检测枢轴点,枢轴点是与相邻蜡烛相比具有高值或与相邻蜡烛相比具有低值的蜡烛。该算法检查每一侧的两根蜡烛作为枢轴高点或低点。这些枢轴点用作拟合线定义通道的参考点。

接下来,该算法将线条拟合到枢轴高点和低点,从而创建通道。此步骤确定通道的上边界和下边界。该通道代表价格变动的潜在范围。

第三阶段是突破检测。该算法通过将当前蜡烛与通道进行比较来确定是否发生突破。突破条件是根据开盘价和收盘价相对于通道的位置来定义的。在本视频中,我们考虑通道上方和下方的突破。

在Python中,您可以灵活地修改突破条件,并根据您的交易偏好和您正在交易的资产定义您自己的模式。链接中提供的代码将作为您实验的起点。

根据使用每日时间范围和欧元/美元价格显示的示例,该算法似乎运行良好。但还需要进一步的测试和分析。现在,让我们深入研究代码。

在 Jupyter Notebook 文件中,我们导入必要的库:pandas、numpy、plotly 和 scipy.stats。我们还导入包含 2003 年至 2023 年欧元/美元每日烛台价格的 CSV 数据文件。

该代码首先定义一个函数来检测蜡烛是否是枢轴点。它需要两个参数:要测试的蜡烛指数和窗口参数,窗口参数确定要考虑的相邻蜡烛的数量。该函数检查当前蜡烛的最高价和最低价是否高于或低于相邻蜡烛的最高价和最低价。它根据主元类型(高、低或两者)分配标签(0、1、2 或 3)。

要检测烛台图表中的价格通道突破,您可以按照以下步骤操作:

  1. 定义您想要考虑进行通道检测的后烛线数量。这决定了通道的长度。
  2. 迭代图表中的蜡烛。
  3. 对于每根蜡烛,收集前一个蜡烛的最低值和最高值。
  4. 使用线性回归计算连接枢轴低点和枢轴高点的线的斜率和截距。
  5. 检查斜率值是否不是NaN(不是数字),表明可以形成有效通道。
  6. 如果检测到有效通道,请在烛台图表上绘制通道线(虚线)和枢轴点(蓝色点表示最低点,红色点表示最高点)。

总体思路是确定包含指定数量的反向蜡烛内价格变动的趋势线。通过检测这些通道的突破,您可以识别重大的价格变动并做出明智的交易决策。

需要注意的是,前面提供的代码是一个简化的示例,根据您的具体交易要求,您可能需要修改和微调代码以满足您的需求。此外,在将通道突破技术用于实际交易时,请考虑纳入风险管理策略、其他指标以及与您的交易方法相关的因素。

Channel Break Out Indicator In Python
Channel Break Out Indicator In Python
  • 2023.02.23
  • www.youtube.com
In this video, you'll learn how to use Python to implement the Price Channel Breakout Indicator and how it can be used to identify profitable trading opportu...
 

ChatGPT 交易策略挑战赛



ChatGPT 交易策略挑战赛

您好,欢迎来到我们最新的实验。在本视频中,我将通过将人工智能与真实人类交易者的经验进行对比来展示人工智能的力量。我们将深入研究价格通道突破策略,并挑战我们的人工智能模型 ChatGPT,看看它的表现如何。如果我们发现任何有趣的事情,我将在下一个视频中编写自己的算法并比较性能结果。稍后,我还将分享我将在本视频中使用的 Python 代码。如果您好奇并愿意尝试和扩展我们的策略,您可以从下面描述中的链接下载它。所以,坐下来,放松,让我们享受这一切。

当我们谈论通道突破指标时,我们通常会考虑烛台图模式和分形点。突破通常发生在价格突破通道时,突破后,我们预计趋势将继续朝同一方向发展,至少会持续一段时间。今天,我们将尝试让 ChatGPT 为我们生成代码,专门针对价格通道突破策略。

在我们深入使用 ChatGPT 进行实验之前,我将在下一个视频中以我的方式编写相同的策略,即价格通道突破。这将使我们能够比较结果并突出我们对程序中每个细节的控制。所以,请继续关注,让我们开始吧。

现在,我们首先定义价格突破策略。这种交易方法涉及使用趋势线和图表模式等技术分析工具来确定关键的支撑位和阻力位。密切关注过去多次测试的水平,并观察这些水平的价格走势。一旦我们确定了关键级别,我们就可以设置进入和退出规则。

设置进入和退出规则是该策略中最具挑战性的部分。它涉及决定您将在什么价格水平进行交易以及何时退出以获利或限制潜在损失。一旦我们建仓,监控资产的价格变动就至关重要。如果交易对我们不利,我们应该使用止损单来限制潜在损失。

设置入场规则并管理交易后,我们需要监控未平仓交易。如果价格继续向预期方向移动,我们可以考虑调整退出策略以获取额外利润。这需要根据不断变化的市场状况进行持续监控和适应。

以下是该策略的细分:

  1. 确定支撑和阻力的关键水平:使用趋势线和图表模式等技术分析工具来确定过去多次测试的水平。这些水平充当支撑或阻力并形成通道。

  2. 定义突破水平:确定通道后,确定突破水平。这是价格超出通道边界的价格水平。它表明潜在的趋势延续。

  3. 设置进场和出场规则:确定突破发生时进场交易的标准。这可能是当价格收盘高于通道上边界(看涨突破)或低于下通道边界(看跌突破)时。此外,设定退出交易的标准,例如在特定目标水平获利或使用追踪止损来防止不利的价格变动。

  4. 监控未平仓交易:一旦进入交易,请密切监控价格变动。如果价格继续有利变动,则调整退出策略。这可能涉及跟踪止损以保护利润或设定新的目标水平以获取额外收益。

  5. 管理风险:实施风险管理技术以限制潜在损失。这可以包括在预定水平设置止损单,以便在价格走势与预期趋势相反时退出交易。

  6. 持续适应:根据不断变化的市场情况调整策略。价格通道突破策略需要持续监控和调整,以捕捉最佳交易机会。

通过遵循这些步骤并将其应用于您正在交易的特定市场和时间范围,您可以实施价格通道突破策略。请记住,策略的有效性可能会因各种因素而异,因此在将策略应用于实时交易之前对其进行回测和验证非常重要。

ChatGPT Trading Strategy Challenge
ChatGPT Trading Strategy Challenge
  • 2023.02.03
  • www.youtube.com
In this video, we will be exploring the use of ChatGPT in generating a profitable trading strategy. The goal of this strategy is to beat the performance of a...
 

使用 Python 掌握外汇网格交易和自动对冲策略


使用 Python 掌握外汇网格交易和自动对冲策略

在之前的视频中,我们在外汇市场上测试了网格交易系统,发现其效果良好,回报率高,锐利比率出色。但是,根据您的评论,我们意识到需要更正一些细节才能进行更准确的回测。因此,我们对算法进行了拟议的更改。

如果您还没有观看我们详细介绍网格策略的上一个视频,我建议您首先查看它,因为它可以更深入地了解该策略。您可以在下面的描述中找到该视频的链接。此外,您可以从提供的链接下载 Python 代码的更新版本。

实施代码更改后,我们仍然有一个可能更好的系统,具体取决于所使用的参数集。请注意,我没有花太多时间优化参数,因此您可以下载代码并尝试根据自己的喜好调整它们。这将允许您根据自己的喜好调整风险级别。您可以通过降低锐利比率来包含更多风险,也可以在提高锐利比率的同时降低风险和回报。

现在,我们来讨论一下对上一版本代码所做的具体更改。首先,我们删除了一个与止盈/止损比率相关的参数。我们意识到这个比率应该在策略本身内修改,所以此时不需要设置。之前版本中使用的功能保持不变。

第一个重大修改与批量大小有关。在之前的版本中,手数大小设置为低于 1 的值,表示当前权益的百分比。然而,这违反了网格策略的规则,因为我们以不同的手数进行双向交易。为了纠正这个问题,我们将手数设置为固定值(本例中为 50)。

第二个重要的修改与回测功能有关。以前,当我们打开一笔交易,然后尝试打开相反的交易或相反方向的交易时,回测功能会关闭之前的交易。这意味着,如果我们先卖出,然后买入相同数量的股票,回测功能将关闭我们的卖出头寸。为了允许回溯测试以相反的方向独立地开立两个交易,我们将对冲参数设置为 true。这允许同时在同一资产上建立相反方向的头寸。此外,我们将独占订单参数设置为 false,这意味着一个订单不会取消前一个订单。

对于止损值,我们将其设置为网格距离的 1.5 倍,止盈设置为网格距离的 0.5 倍。止盈/止损比率设置为 0.5。请注意,这些是示例中使用的随机参数。在真实的系统中,确保止损比止盈更远非常重要,因为该策略依赖于市场波动来产生利润。

使用这些参数,现金账户为 500 美元,保证金为 1 比 10,我们在两个月的数据中获得了以下结果:回报率为 13.49,锐比为 3.8,胜率为 72%。权益曲线显示斜率不断增加,并有一些回撤区域。

为了降低风险并提高锐利比率,您可以考虑从额外现金开始或调整保证金。例如,从 1,000 美元开始并保持 1 比 10 的保证金,两个月内回报率下降至 1.7%,但急剧比率上升至 4.9。这表明风险随着参数的变化而降低。

请记住,该系统中有许多参数需要使用,找到适当的平衡至关重要。您也可以尝试更改止损和止盈比率。

值得注意的是,并非所有经纪商都允许对冲交易,这意味着他们可能不允许您同时对同一资产开设相反的头寸。这可能取决于经纪人和您所在的位置。一些来自美国的观众在评论中提到,这在他们所在的地区是不允许的。因此,建议在实施此策略之前与您的经纪人讨论,以确保其符合他们的政策。

最后,请记住,回溯测试是研究系统的第一步,但这还不够。使用纸质账户在市场上实时测试该策略至关重要,因为这将包括所交易货币的价差,并可能影响预期结果。

Master FOREX Grid Trading with Automated Hedging Strategy using Python
Master FOREX Grid Trading with Automated Hedging Strategy using Python
  • 2023.01.19
  • www.youtube.com
Learn how to enhance your FOREX grid trading with an Automated Hedging Strategy using Python!📈💻 In this video, we'll delve into the concept of grid trading...
 

Python 交易的对冲策略



Python 交易的对冲策略

大家好,今天我们将测试网格交易策略。该策略以其简单性而闻名,不需要任何技术指标来确定趋势。这意味着我们不需要提前猜测趋势。网格交易同时进行多头和空头方向的交易,因此适合算法交易。

为了评估这个策略,我们将使用Python语言进行回测。我们将使用两个月的历史数据,时间范围为五分钟。回测结果显示,在测试期间,净值稳步增长,并且该策略产生了令人印象深刻的绩效比率。衡量风险调整回报率的夏普比率得分约为 5.7。

如果您对编码部分感兴趣,可以从下面描述中提供的链接下载 Jupyter Notebook 文件。该策略对作者来说具有个人意义,因为他们记得当他们第一次开始将交易作为一种爱好时,使用该系统将一个小账户变成了一笔可观的资金。

网格交易策略背后的概念是在图表上创建价格水平网格。每当价格穿过这些网格线时,我们就会建立多头和空头头寸。止盈水平设置在每个仓位的下一条网格线上。如示例图表所示,该策略涉及开立初始多头和空头头寸,然后在下一个网格级别平仓获胜头寸。然后,每当穿过网格线时,就会额外开立两个头寸,一是多头,一是空头。

该策略的一个挑战是管理在网格边缘保持未平仓的亏损交易。有些头寸可能永远无法达到止盈值,从而给系统带来困难。可以采用多种方法来处理这种情况。一些交易者可能会选择在交易日结束时关闭剩余交易,而另一些交易者可能会每隔几个小时计算一下自己是否处于整体盈利状况,并关闭所有交易以从新的网格开始。该解决方案将取决于其他参数,例如时间范围、允许的最大平行交易数量以及网格距离。

在编码部分,作者使用平均真实波幅(ATR)为每笔交易应用止损值。这个止损值最初是根据网格距离计算的,然后使用ATR对其进行细化。 ATR 考虑了进行交易时市场的波动性。作者提到这可能不是最好的方法,并鼓励尝试不同的参数来找到该策略的最佳场景。

该系统在许多情况下可能起作用的原因是它利用了市场噪音。只要市场围绕网格振荡,该策略就会受益于价格波动,并在多头和空头方向上建仓。该系统预计在较短的时间范围内表现更好,因为价格波动更大,因此潜在的利润更高。

该策略有两个优点。首先,它消除了猜测趋势的需要,因为它不遵循任何特定趋势。其次,它通过专注于管理未平仓亏损交易来简化交易流程。该策略中只有一个可调整的参数,即网格距离。然而,为交易的特定资产选择合适的时间范围和网格距离至关重要。

提供的 Jupyter Notebook 文件演示了该策略在 Python 中的实现。该代码导入了各种库,包括用于数据检索的 yfinance、用于数据操作的 pandas 和 numpy,以及用于计算 ATR 等技术分析功能的 pandas_ta。欧元/美元货币对的数据是使用特定时间范围下载的。

网格距离、止盈/止损比率和网格中间价被定义为变量。中间价格是构建电网的平均价格。 generate_grid() 函数定义为根据中间价格和网格距离生成网格级别。该函数使用循环计算网格的上层和下层。

接下来是策略逻辑的实现。回测首先初始化初始余额、头寸规模和止损水平等变量。 for 循环用于迭代历史数据中的每个柱。

在循环内,检查当前价格以确定它是否跨越任何网格级别。如果发生交叉,则在多头和空头方向上开设新头寸。止盈和止损水平是根据网格水平和止损距离设置的。

该循环还检查任何未平仓头寸是否达到止盈或止损水平。如果仓位达到任一水平,则将其平仓,并记录相应的利润或损失。

回测结束时,绘制净值曲线,显示账户余额随时间的增长情况。计算并显示绩效指标,包括总利润、交易数量、胜率和夏普比率。

值得注意的是,虽然网格交易策略可能在回测中显示出有希望的结果,但在将其部署到实际交易中之前,必须彻底评估和验证任何交易策略。回测有助于评估历史表现,但并不能保证未来的盈利能力。

为了充分理解实现细节并探索代码,我鼓励您下载描述中提供的 Jupyter Notebook 文件。该笔记本包含完整的代码和详细的注释,可指导您完成整个过程。

请记住,交易涉及风险,始终建议在做出任何投资决定之前咨询专业财务顾问。

Hedging Strategy For Trading In Python
Hedging Strategy For Trading In Python
  • 2023.01.12
  • www.youtube.com
Welcome ! In this video we test the grid trading strategy, a simple approach that doesn't require any technical indicators. We use python to test and trade, ...
 

如何用 Python 构建交易机器人



如何用 Python 构建交易机器人

大家好,在本视频中,我将向您展示如何使用 Python 自动化您的交易策略。换句话说,我将指导您完成构建自己的免费交易机器人的过程,该机器人可以按照特定策略自动代表您执行交易。我将使用的代码可以从下面描述中的链接下载,因此您可以按照视频进行操作,然后下载文件以根据需要使用它。

我将在本视频中演示的内容适用于任何可以作为 Python 函数实现的交易策略。它是根据实时市场数据测试您的策略的绝佳方法,而不是简单地根据过去的数据进行回测。如果您想根据未来或实时数据测试您的策略,您可以利用本视频中介绍的技术。

让我们首先打开 Jupyter Notebook 文件。首先,我将下载一些历史数据用于测试目的。需要注意的是,我们不会将这些数据用于实时交易;主要是为了测试我们的信号功能。为了下载数据,我使用 YFinance 模块并获取两个特定日期之间的欧元兑美元汇率数据,时间范围为 15 分钟。

需要记住的一件事是,在下载较短时间范围(例如 15 分钟间隔)的数据时,雅虎财经仅允许下载最近 60 天的数据。因此,我们不能一次下载超过 60 天的数据,而且这些数据必须是从当前日期算起的最后 60 天。如果您在下载的文件中遇到任何问题,请仔细检查指定的开始和结束日期。

下载数据后,我们可以通过检查下载的行来测试它。通过删除代码中的“-1”,我们可以查看整个数据框,其中包含大约 3973 行。数据框包括日期、时间、开盘价、最高价、最低价、收盘价和调整后的收盘价列。在本视频中,我们不会使用体积数据,但如果需要,请随意将其纳入您的策略中。

下一步是定义我们的信号生成器,它是负责生成交易信号的函数。该函数采用数据帧作为输入,因为当我们为交易机器人传输实时数据时,我们将获取数据帧并将其输入到该函数中。然后,该函数将确定是否存在信号,例如买入信号、卖出信号或没有明确的模式。在此示例中,我们将重点检测吞噬烛台模式,但请注意,这不是完整的交易策略。它用于本视频的目的,您可以在此函数中插入您自己的信号生成器策略。

信号生成器函数分别使用索引 -1 和 -2 读取当前蜡烛和前一根蜡烛的开盘价和收盘价。根据函数中定义的条件,例如检测看跌吞没形态或看涨吞没形态,它会返回信号值 1(表示卖出)、2(表示买入)或 0(表示无信号)。为了验证该函数是否正常工作,我们可以使用几行代码对其进行测试。通过循环数据帧行并使用信号生成器函数检查每行的吞没模式,我们可以将生成的信号存储在列表中。然后,我们可以将此列表添加为测试数据框中的附加列。打印数据框显示添加的列,通过执行值计数,我们可以看到数据集中存在的每种信号类型的数量。

请注意,这是本视频的一个简化示例,根据您的具体需求制定全面的交易策略至关重要。

现在我们已经有了信号生成器功能,下一步是定义交易机器人。交易机器人负责根据生成的信号执行交易。在此示例中,我们将创建一个简单的交易机器人,该机器人在收到信号值 2(表示买入信号)时买入,在收到信号值 1(表示卖出信号)时卖出。再次强调,这只是一个基本示例,您可以根据您的具体交易策略修改交易机器人。

交易机器人功能将数据帧和生成的信号作为输入。它初始化投资组合余额并持有一个头寸标志来跟踪我们当前是否有未平仓头寸。然后,它循环数据帧的每一行,检查信号值,并执行相应的买入或卖出操作。

当收到买入信号并且我们没有未平仓头寸时,交易机器人会购买指定数量的资产并从投资组合余额中扣除成本。它还设置持仓标志以表明我们现在有一个未平仓头寸。当收到卖出信号并且我们有未平仓头寸时,交易机器人会卖出整个头寸并将卖出金额添加到投资组合余额中。然后它会重置持仓标志以表明我们没有任何未平仓头寸。

为了测试交易机器人,我们可以使用测试数据帧和生成的信号来调用该函数。我们还可以指定初始投资组合余额以及要购买或出售的资产金额。运行交易机器人功能后,我们可以打印最终的投资组合余额来查看结果。

在此示例中,我们没有考虑交易成本、滑点或其他可能影响真实交易场景的因素。在开发自己的交易机器人和策略时,考虑这些因素非常重要。

最后,让我们讨论如何实现此代码以进行实时交易。到目前为止,我们开发的代码适合对历史数据进行回溯测试和测试您的策略。要实现实时交易,您需要将其连接到经纪商或交易所提供的实时数据源和交易 API。这涉及处理数据流并根据交易机器人生成的信号发出实时交易订单。

有各种可用的 Python 库和软件包可以帮助您连接到实时数据源和交易 API,例如 Alpaca、Binance 或 Interactive Brokers API。您需要研究并选择最适合您的要求并与您选择的交易所或经纪商良好集成的一种。

请记住,实时交易涉及真实资金,因此在部署代码和策略进行实时交易之前,在模拟环境中彻底测试代码和策略至关重要。从小额头寸开始,随着您对交易机器人的性能充满信心,逐渐增加您的敞口。

这就是本视频的内容!我希望您发现它有助于理解如何使用 Python 自动化您的交易策略。请记住从描述中的链接下载代码并根据您的具体需求和策略进行修改。如果您有任何疑问,请随时在下面的评论中留下。感谢您的观看,祝交易愉快!

How To Build A Trading Bot In Python
How To Build A Trading Bot In Python
  • 2022.12.08
  • www.youtube.com
This video shows how to use APIs in python to build a live trading bot. The market is scanned by the bot and the prices are downloaded for analysis. A simple...
 

Python 回测:使用 VWAP、布林带和 RSI 指标的盈利剥头皮策略



Python 回测:使用 VWAP、布林带和 RSI 指标的盈利剥头皮策略

大家好!今天,我很高兴地宣布我们有一位获胜者。在本视频中,我将分享使用 V-WAP(成交量加权平均价格)布林带和 RSI(相对强度指数)进行确认的倒卖策略。在分享这个策略之前,我对其进行了彻底的回测,以确保其有效性。

首先,我想提一下,这是我们在该频道上展示的第一个倒卖策略。由于较短时间范围内的噪声数据,倒卖对于算法来说可能具有挑战性。然而,我相信这一策略可以克服这些挑战。

如果您是该频道的新手,可以从描述中的链接下载 Python 代码。不要忘记通过订阅和发表评论来支持我们,分享您的想法。您的反馈很有价值。

经过三年的回测,该策略的总回报约为 300%。我特别喜欢这个策略的是它的平均交易持续时间,约为 51 分钟。这使其成为我们迄今为止展示的最快的交易平仓策略。快速交易平仓的好处是降低隔夜费用并减轻压力,因为您可以立即看到执行交易的结果。

评论区有人问夏普比率。我把它包含在这个策略中,它大约是1.65。但请注意,该值可能会随着Python代码中参数的修改而改变。您可以通过尝试不同的参数值来最大化夏普比率。

让我们深入了解该策略的细节。我使用的是 5 分钟时间范围和 V-WAP 曲线。为了确定趋势,我寻找 15 根蜡烛图始终位于 V-WAP 曲线(以蓝线表示)上方或下方。如果 15 根蜡烛位于 V-WAP 曲线上方,则表明上升趋势。如果我们低于 V-WAP 曲线,我认为这是一个下降趋势。

对于入场仓位,我使用长度为 14、标准差为 2 的布林带。在 V-WAP 曲线上方的上升趋势中,当蜡烛收于布林带下轨下方时,我会寻找买入仓位。在下降趋势中,在 V-WAP 曲线下方,我等待蜡烛收于布林带上轨上方作为卖出信号。

为了确认信号,我使用 RSI。如果 RSI 低于 45,则确认买入信号。如果 RSI 高于 55,则确认卖出信号。

为了设置止盈和止损水平,我使用了 ATR(平均真实波动范围)。我回顾最后七根蜡烛,计算 ATR 值,并将其乘以一个系数来确定止损距离。止盈是通过止损距离乘以止盈止损比来计算的,该比代表风险回报比。

如您所见,Python 代码中有几个可以调整的参数。您可以修改ATR长度、系数、止盈止损比率和其他指标参数,看看它们如何影响策略在三年回测期间的表现。欢迎下载代码并自行实验。

在 Python 代码中,我提供了数据加载、清理、添加技术指标(V-WAP、RSI、布林带)、计算总信号以及在价格图表上可视化信号的所有必要步骤。该代码还包括回溯测试部分,我在其中计算 ATR、设置止损和止盈水平并执行交易。

在回测结果中,我获得了 197% 的回报率和 313 美元的峰值净值。从 10,000 美元的初始资本开始,该策略产生了 19,700 美元的利润,最终净值达到 29,700 美元。

现在,我们来讨论一下该策略的关键绩效指标。胜率(代表盈利交易的百分比)约为 56%。这意味着在所有执行的交易中,56% 产生了利润。每笔交易的平均利润约为 33.10 美元,而每笔交易的平均亏损约为 23.45 美元。

为了评估与该策略相关的风险,我们可以查看最大回撤,它衡量回测期间净值从峰到谷的最大跌幅。该策略的最大回撤约为 9%,表明风险处于中等水平。

值得注意的是,这些绩效指标基于历史数据,过去的绩效并不能保证未来的结果。市场状况可能会发生变化,持续监控策略并使其适应当前的市场动态至关重要。

综上所述,这种利用 V-WAP、布林线和 RSI 的倒卖策略在回测期间显示出可喜的结果,总回报率为 300%,平均交易时间为 51 分钟。然而,在将任何策略应用于实际交易之前,必须彻底测试和验证策略,并考虑交易成本、滑点和市场状况等因素。

请记住,交易涉及固有风险,始终建议您在进行实时交易之前进行自我教育、实行风险管理并考虑寻求专业建议。我希望您觉得这个策略很有洞察力,并随时下载描述中提供的 Python 代码,以进一步探索并根据您的喜好对其进行自定义。

如果您有任何疑问或需要进一步说明,请随时询问。交易愉快!

Python Backtest: Profitable Scalping Strategy with VWAP, Bollinger Bands and RSI Indicators
Python Backtest: Profitable Scalping Strategy with VWAP, Bollinger Bands and RSI Indicators
  • 2022.10.13
  • www.youtube.com
This video shows a profitable scalping strategy fully backtested in python, this strategy uses the VWAP, Bollinger Bands and the RSI indicators for confirmat...
 

用于交易系统的 Python 中的 Heiken Ashi 蜡烛


用于交易系统的 Python 中的 Heiken Ashi 蜡烛

今天,我们将深入研究在 Python 中添加 Hiken Ashi 蜡烛的过程,并探索使用这些蜡烛的两种相关策略。 Hiken Ashi 蜡烛源自交易中常用的普通烛台。每个 Hiken Ashi 蜡烛都是使用特定公式计算的。 Heiken Ashi 收盘价是通过对当前蜡烛的开盘价、最高价、最低价和收盘价进行平均而获得的。 Heiken Ashi 开盘价是根据之前计算的 Heiken Ashi 蜡烛的收盘价获得的。 Heiken Ashi 最高值是正常蜡烛的最高价、Heiken Ashi 蜡烛的开盘价或 Heiken Ashi 蜡烛的收盘价中的最大值。同样,Heiken Ashi 低值是当前蜡烛的最低价格、当前 Heiken Ashi 蜡烛的开盘价或当前 Heiken Ashi 蜡烛的收盘价中的最小值。

总而言之,除了高值和低值之外,Heiken Ashi 蜡烛图由平均值组成,与普通蜡烛图相比,Hiken Ashi 图表的外观更加平滑,一些交易者可能会发现噪音较小。然而,值得注意的是,Heiken Ashi 蜡烛并非市场的真实价值,不应用于基于实际市场价值的交易或回测策略。

本教程的目的不是展示一个成功的 Heiken Ashi 系统,而是演示如何在 Python 中构建这些蜡烛并开发一种算法策略来回测结果。我们将探索使用 Heiken Ashi 蜡烛的两种策略。

第一个策略利用两个移动平均线:快速移动平均线和慢速移动平均线。趋势是根据这些移动平均线的相对位置来确定的。如果快速移动平均线高于慢速移动平均线,则表明上升趋势,如果快速移动平均线低于慢速移动平均线,则表明下降趋势。当 Heiken Ashi 蜡烛在趋势方向上穿过快速移动平均线时,该策略会生成交易信号。例如,如果快速移动平均线低于慢速移动平均线,并且 Heiken Ashi 蜡烛从快速移动平均线上方穿越到快速移动平均线下方,则会触发卖出信号。相反,在上升趋势中,绿色 Heiken Ashi 蜡烛从快速移动平均线下方穿越到上方会触发买入信号。

该策略的第二个变体添加了一个附加条件。它会沿着趋势方向寻找十字星蜡烛,然后跟随短尾蜡烛。例如,在下降趋势中,如果十字星蜡烛后面跟着一根短尾蜡烛,开盘价高于快速移动平均线,收盘价低于快速移动平均线,则会触发卖出信号。这些蜡烛中没有长影线或尾部表明强劲的下降或上升势头,具体取决于所分析的趋势。

这两种策略都有各自的挑战,例如确定最佳时间范围、定义适当的止损位置以及设计有效的退出策略。这些方面可以显着影响策略的盈利能力和成功。

为了在 Python 中实现这些策略,我们将使用 Jupyter Notebook。我们首先导入必要的库并下载 2012 年至 2022 年 Russell 1000 指数的股票数据。删除不必要的列后,我们根据以下公式计算 Hiken Ashi 收盘价和开盘价以及 Heiken Ashi 最高价和最低价前面描述的公式。我们将这些列添加到我们的数据框中。

接下来,我们可以使用 pandas 技术分析包添加其他技术指标,例如移动平均线和相对强弱指数 (RSI)。这使我们能够在图表上可视化 Heiken Ashi 蜡烛和相关指标。现在我们已经定义了交易信号和止损水平,我们可以继续进行回溯测试过程。下一步是根据进入点和退出点计算每笔交易的回报。

为了计算回报,我们首先需要确定每笔交易的入场价格和出场价格。对于买入头寸,入场价格是触发买入信号时蜡烛的收盘价。退出价格是当前蜡烛与前两根蜡烛之间的最低价格,由止损水平确定。

同样,对于卖出头寸,入场价格是触发卖出信号时蜡烛的收盘价,出场价格是当前蜡烛与前两根蜡烛之间的最高价格。

一旦我们有了进入和退出价格,我们就可以使用以下公式计算回报:

回报 = (退出价格 - 入场价格) / 入场价格

我们将把回报存储在名为“trade_returns”的列表中以供进一步分析。接下来,我们需要计算累积回报以跟踪策略随时间的整体表现。这是通过将每笔交易的收益与之前的累计收益相乘并加 1 来完成的。累计收益的计算公式为:

累计收益 = 累计收益 * (1 + 收益)

我们将把累积收益存储在一个名为“cumulative_returns”的列表中。最后,我们可以绘制累积回报以可视化策略在回溯测试期间的表现。

在执行回测过程并计算交易收益和累积收益后,我们可以分析结果来评估交易策略的表现。需要考虑的一项重要指标是该策略的整体盈利能力。最终累计收益值减1即可计算出总收益。例如,如果累计回报率为1.2,则意味着初始投资的回报率为20%。

此外,您可能需要计算其他绩效指标,例如每笔交易的平均回报、盈利交易数量、亏损交易数量、盈利交易百分比和最大回撤。每笔交易的平均回报可以通过将所有交易回报之和除以交易总数来获得。该指标反映了每笔交易的平均盈利能力。

要计算盈利和亏损交易的数量,您可以统计大于或等于 0 的交易收益(盈利交易)和小于 0 的交易收益(亏损交易)的交易数量。获胜交易的百分比可以通过将获胜交易的数量除以交易总数并乘以 100 来计算。

最大回撤衡量的是回测期间累积收益从峰到谷的最大跌幅。它提供了对该策略的潜在风险和下行波动性的洞察。通过分析这些绩效指标,您可以获得有关交易策略有效性的宝贵见解,并就其未来使用或潜在修改做出明智的决策。

请记住,回溯测试是历史模拟,并不能保证未来的结果。在实际场景中应用交易策略之前,必须考虑各种因素并进行彻底分析。

Heiken Ashi Candles In Python For Trading Systems
Heiken Ashi Candles In Python For Trading Systems
  • 2022.09.24
  • www.youtube.com
Heiken Ashi candlesticks are popular candlestick in technical analysis. In this video, I will show you how to use Heiken Ashi candles for trading systems in ...
 

使用 Python 自动交易彻底改变您的股票交易策略



使用 Python 自动交易彻底改变您的股票交易策略

今天,我们将利用相对强度指数(RSI)和平均方向指数(ADX)探索专门为多头头寸设计的交易策略。尽管很简单,但该策略已显示出有希望的结果。这个想法是评论区有人提出的,参数看起来既熟悉又令人信服。因此,我决定对其进行测试并分享结果,结果非常令人满意。

回测生成的权益曲线在整个测试期间呈现出几乎一致的增长,达到了 360 的峰值回报。如果您是该渠道的新手,可以在说明中找到可供下载的代码。不要忘记通过订阅和发表评论来支持我们。我们很高兴听到新的想法,就像这个视频所讨论的那样。

现在,让我们深入探讨该策略本身。当满足两个条件时,我们将使用每日时间框架并进入多头头寸:首先,当两天 RSI 低于 25 时,表明超卖情况;其次,当 ADX (14) 高于 20 时,表明超卖情况一个趋势市场。当 RSI 超过 75 时,我们退出多头头寸。

为了避免错误信号并防止当 RSI 低于 75 阈值时交易保持开放时间过长,我添加了两个附加条件。第一个条件涉及检查蜡烛是否在简单移动平均曲线上方交易,表明上升趋势。只有在这种情况下我们才可以持有多头头寸。第二个条件是设置止损值,即最后两根蜡烛中的最低价减去一定的百分比。在这次回测中,我将止损百分比设置为百分之二。您可以根据自己的喜好或使用不同数据进行测试时调整此值。

为了在 Python 中实现这些条件,我编写了必要的代码并进行了回测。在代码中,我们加载数据,通过删除没有移动的日子来清理数据,然后打印数据帧以验证其内容。然后,我们计算长度为 200 的指数移动平均线(EMA)用于趋势检测,以及长度为 2 的 RSI 和长度为 14 的 ADX。我们再次清理数据框并打印切片检查我们将使用的列。

接下来,我实现了一个名为 add_ema_signal 的函数,该函数根据移动平均曲线上方或下方交易的蜡烛数量来确定趋势。我将此数字设置为 6,因为它在之前的视频中效果很好。然后,我创建了一个名为 Total_signal 的函数,我们在其中计算进入多头头寸的信号。我们迭代数据帧的每一行,检查 RSI 是否低于或等于 25、ADX 是否高于 20、以及 EMA 信号是否等于 2(表明上升趋势)。当满足这些条件时,我们在数据帧中存储信号值 2。

通过打印数据框,我们可以在条形图上可视化信号。紫色点代表买入信号。虽然我不会详细介绍代码中的每一行,但您可以在本频道之前的视频中找到全面的解释,特别是在 Python 算法交易播放列表中。

继续回溯测试部分,我使用了 backtesting.py 包。在没有详细说明的情况下,我将止损百分比设置为 2%,并添加了额外条件来关闭已开放一定天数或 RSI 超过 75 的交易。值得注意的是,代码仍然包含相关行空头头寸,尽管该策略仅关注多头头寸。如果您决定扩展策略以包含空头头寸,则可以修改或删除这些行。

如果信号等于 2 并且没有未平仓交易,我们将使用止损值以多头头寸进入市场。交易规模设定为当前权益的99%。回测以 1,000 美元现金和 1:5 杠杆(保证金为 1/5)开始。为了与之前的策略进行比较,没有考虑佣金。

回测结果表明回报为 200 美元,峰值净值为 3,595 美元。胜率为 73%,十年测试期间总共执行了 102 笔交易。这意味着每天平均每年进行 10 笔交易。绘制权益曲线显示价值持续增长,但在某些时期略有下降。

需要注意的是,我没有修改评论部分中的任何建议参数。 RSI 长度保持为 2,ADX 长度为 14,EMA 长度为 200。但是,您仍然可以微调这些值并尝试不同的股票或市场,以潜在地改进结果并找到更令人满意的配置。

该策略为多头头寸提供了一种简单而有效的方法。我鼓励您从描述中的链接下载代码并进行试验。代码相对较短并且适合初学者。享受探索这个策略的乐趣,并继续关注我们的下一个视频。安全交易,下次再见!

Revolutionize Your Stock Trading Strategy with Automated Trading in Python
Revolutionize Your Stock Trading Strategy with Automated Trading in Python
  • 2022.09.08
  • www.youtube.com
This video tests an automated trading strategy backtest for long positions on stocks, the rules are simple using RSI and the ADX indicators on stock market v...
 

针对高回报而优化的自动化 Rayner Teo 布林线策略



针对高回报而优化的自动化 Rayner Teo 布林线策略

大家好!在本视频中,我们很高兴介绍一种极端优化方法,该方法演示了某些参数对我们交易系统的影响。我们相信这是迄今为止我们实现的最佳优化。正如您所看到的,我们取得了约百分之三千的令人印象深刻的回报,并且资产曲线持续增长。交易的详细信息也显示在图表上,我们将在本视频中对其进行解释。我们已经在价格图表上绘制了所有交易,我们也将逐步介绍它们。所以,敬请期待!

在我们继续之前,我们想强调的是,我们通过此策略实现 30,000% 回报的方式并不是真实交易的最安全方法。我们不建议在实际交易场景中使用这些参数。然而,我们相信该战略本身是可靠的,并且具有巨大的潜力。如果您是新来的,该策略依赖于趋势市场的 Rhino Theo Bollinger Band 策略。我们之前已经在视频中对其进行了测试,结果非常好,风险也很小。如果您还没有看过,可以在说明中找到第一个回测视频的链接,如果需要,还可以找到 Python 代码。

在本视频中,我们将尝试应用极端参数来产生相对较大的回报。我们这样做主要是为了测试和使用 Python 代码的乐趣。此外,我们希望在此过程中获得宝贵的见解,并有可能发现一种可以带来实际高回报的设置。

现在,让我们进入代码,看看这一切是如何展开的。 Jupyter 笔记本文件的第一个单元格专门用于加载数据。我们正在使用“yfinance”模块,这是从数据库加载每日历史数据的便捷方法。只需一行代码,我们就可以加载特定股票的数据,例如 2011 年至 2021 年期间的 Russell 1000 指数。我们通过删除没有价格变动的日子(例如周末和节假日)来清理数据。然后,我们重置索引并打印数据帧的头部以验证数据格式是否正确。

接下来,我们利用“pandas_ta”(pandas技术分析)模块来计算各种技术指标。在本例中,我们计算两个移动平均线:200 天指数移动平均线 (EMA) 和 150 天简单移动平均线 (SMA)。通过比较快速移动平均线(EMA2)和慢速移动平均线(EMA),我们可以确定市场是处于上升趋势还是下降趋势。我们还使用相同的模块计算 12 天相对强弱指数 (RSI)。此外,我们通过将长度设置为 14(而不是 20)和标准差设置为 2.0(而不是 2.5)来修改布林线的参数。这些修改旨在降低系统的选择性,从而在回测期间产生更频繁的交易信号和更多的交易数量。

我们没有使用前面视频中讨论的 RDMI 信号或指数移动平均信号,而是使用两个 EMA 信号。这意味着我们考虑两种移动平均线,一种较快,一种较慢。如果快速移动平均线高于慢速移动平均线,我们就确定上升趋势。相反,如果快速移动平均线低于慢速移动平均线,我们就认为下降趋势。我们将这个信号(称为 EMA 信号)添加为数据框中的新列。

生成交易信号的功能与之前的视频类似。我们检查收盘价是否低于布林线下轨,以及 EMA 信号是否表明上升趋势(等于 2),从而触发买入信号。

在本视频中,演示者演示了一种极端优化方法来展示各种参数对交易系统的影响。目标是通过应用极端参数来实现高回报,但需要注意的是,由于存在相关风险,不建议将这些参数用于实际交易。然而,演讲者认为,如果谨慎使用,该策略本身就有巨大的潜力。

所采用的策略基于针对趋势市场的 Rhino Theo Bollinger Band 策略。演示者参考了之前的视频,他们在该视频中测试了该策略,结果良好且风险相对较低。优化过程的第一步是使用 Y Finance 模块加载必要的数据。演示者加载了2011年至2021年的罗素1000指数数据,涵盖了10年的时间段。

加载数据后,演示者会通过删除没有价格变动的日期(例如周末和节假日)来清理数据。然后使用 pandas_ta(pandas 技术分析)模块计算技术指标来准备数据。计算两条移动平均线:200 天指数移动平均线 (EMA) 和 150 天简单移动平均线 (SMA)。这些移动平均线有助于确定趋势:如果较快的 EMA 高于较慢的 SMA,则表明上升趋势,反之亦然。

演示者还使用 pandas_ta 模块计算 12 天相对强度指数 (RSI)。此外,布林线的长度和标准差参数也被修改。演示者没有像之前的视频那样使用长度 20 和标准差 2.5,而是使用长度 14 和标准差 2.0。此修改旨在降低系统的选择性,从而导致更频繁的交易信号。

演示者没有像之前的视频那样使用 RSI 或 EMA 信号,而是引入了一种称为 EMA 信号的新信号。它基于两条移动平均线之间的关系:如果较快的 EMA 高于较慢的 SMA,则 EMA 信号设置为 2,表示上升趋势。如果较快的 EMA 低于较慢的 SMA,则 EMA 信号设置为 1,表示下降趋势。

进入策略与之前的视频类似。演示者检查收盘价是否低于布林线下轨以及 EMA 信号是否表明上升趋势(EMA 信号 = 2)。在这种情况下,买入信号会在当前蜡烛的收盘价处生成。如果收盘价高于布林带上轨且 EMA 信号表明下降趋势(EMA 信号 = 1),则在当前蜡烛的收盘价处生成卖出信号。

为了退出交易,演示者引入了额外的标准。如果交易已开放超过 10 天,则交易将被关闭,因为不需要进行长期交易。此外,如果是多头交易且 RSI 高于 75,或者是空头交易且 RSI 低于 25,则交易将被平仓。如果 RSI 条件本身不足以触发退出,则止损机制落实。

止损计算为蜡烛当前最低价与前一个蜡烛最低价之间的最小值乘以(1 - 一定百分比)。该百分比由用户确定,代表触发止损前允许的损失。例如,百分比 2 表示止损设置为比最后两根蜡烛之间的最低点低 2%。此外,止盈水平设置为止损距离的两倍。

演示者通过使用优化参数运行回测来评估策略。他们在价格图表上绘制交易并为每笔交易提供详细的解释。回测结果显示,回报率高达 3000% 左右,资产曲线持续增长。

最后,演讲者强调,虽然这种极端的优化方法在回测中产生了高回报,但由于相关风险,不建议用于实际交易。此练习的目的是探索不同参数的影响并深入了解策略的行为。

Automated Rayner Teo Bollinger Bands Strategy Optimized For High Return
Automated Rayner Teo Bollinger Bands Strategy Optimized For High Return
  • 2022.07.22
  • www.youtube.com
This video is a continuation of the previous 2 videos describing the Rayner Teo Bollinger Bands Strategy. Here we present an optimized version leading to hig...
 

优化 Rayner Teo 的布林带策略以获得更好的结果



优化 Rayner Teo 的布林带策略以获得更好的结果

今天,我们将深入研究之前在视频中回测的 Reiner Theo Bollinger Band 策略的优化。如果您还没有观看过之前的视频,建议您在继续此优化部分之前先观看一下。该视频在描述中提供了一个链接,以便于访问。此外,对于那些对编码方面感兴趣的人,也可以通过描述中的链接下载 Python 代码。

正在优化的策略显示出巨大的潜力,胜率高达 91%,并且在 10 年回测中净值曲线持续增长。然而,这种优化背后的动机之一是回测期间观察到的交易数量较少。 10 年间,仅执行了 23 笔交易,平均每年约两笔交易。为了解决这个问题,提出了两种可能的解决方案。第一个涉及同时对多只股票运行该程序,目标是每年约 20 笔交易。然而,这种方法引起了人们对相关市场和其他相关问题的担忧。第二种解决方案涉及缩短时间范围以增加交易数量。

该策略包含多个用于生成入场和出场信号的技术指标。它利用移动平均线指标(在代码中称为 EMA,指数移动平均线)和布林带作为入场信号,而相对强弱指数 (RSI) 用于出场信号。视频中详细介绍了执行过程,这里不再赘述。

转到程序本身,数据加载到第一个单元格中,重点关注四小时的分析时间范围。使用两种不同的库存进行优化。通过删除没有移动的烛台来清理数据,其中最高价和最低价相等。添加了移动平均线(指数或简单)和 RSI 等技术指标,并且可以修改它们的长度。在本例中,移动平均线长度设置为 900 根蜡烛,RSI 长度设置为 12。对于日线图,200 天 EMA 和 2 天 RSI 用于退出信号。布林带参数与日线图相同,长度为 20,标准差为 2.5。

该程序还包括检查蜡烛的交易价格是否高于或低于移动平均线。在本例中,该数字设置为 6,表示移动平均曲线上方或下方的六根连续蜡烛。由于我们的工作时间为 4 小时,因此 6 乘以 4 等于 24 小时。因此,如果价格连续 24 小时高于或低于移动平均线,则可以得出上升趋势或下降趋势。订单在市场上的百分比头寸参数设置为零,以增加执行交易的数量。

程序的可视化部分显示布林带、移动平均曲线和趋势方向(确定为上升趋势)。入场信号由图表上的紫色点表示,表示买入信号。该视频展示了其中一些切入点,强调了它们在时尚市场中的有效性。通过在图表中选择不同的随机位置,可以检查各种进入点,从而分析它们的可行性。

演讲者指出,与入场信号相关的布林线参数运行良好,因此此时无需修改。优化的重点在于算法的其他部分。虽然视频没有深入探讨回测过程的所有细节,但某些参数值得注意。

在此优化过程中,退出的 RSI 阈值设置为 45。这个较低的阈值旨在通过允许更快的退出来捕获更短和更频繁的交易。演讲者提到RSI阈值的选择是主观的,可以根据个人喜好和风险承受能力进行调整。

为了评估策略的性能,程序会计算各种指标,包括交易总数、获胜率、平均交易持续时间和净值曲线。这些指标可以深入了解该策略的有效性和盈利能力。

优化过程涉及调整策略的参数,以找到最大化交易数量同时保持高赢率的最佳组合。正在优化的参数包括移动平均长度、RSI 长度和 RSI 退出阈值。

该视频演示了如何使用嵌套循环迭代不同的参数组合并评估每个组合的策略性能。该程序会跟踪表现最佳的参数组合并显示相应的指标和净值曲线。

通过运行优化过程,演示者发现使用 700 的移动平均长度、4 的 RSI 长度和 45 的 RSI 退出阈值会产生最佳结果。这些参数值增加了交易数量,同时仍保持高赢率。该视频展示了优化策略生成的净值曲线,与原始版本相比,该曲线呈现出更平滑的上升轨迹和更频繁的交易。

演讲者最后强调了优化在提高交易策略性能方面的重要性。通过系统的测试和参数调整,可以提高策略的盈利能力和效率。然而,谨慎行事并考虑与优化相关的限制和风险至关重要,例如对历史数据的过度拟合。

需要注意的是,这里提供的细节是视频的摘要,为了更全面的理解,建议观看原始视频,其中包括视觉演示和对优化过程的进一步解释。

Optimizing Rayner Teo's Bollinger Bands Strategy for Better Results
Optimizing Rayner Teo's Bollinger Bands Strategy for Better Results
  • 2022.07.08
  • www.youtube.com
This is a continuation of the previous video on the Bollinger Bands Winning Trading Strategy published by Rayner Teo. The backtest optimization is done in Py...