算法交易中的Python - 页 19

 

Python 中使用 CandleStick 模式回测的倒卖策略



Python 中使用 CandleStick 模式回测的倒卖策略

在本视频中,我们将讨论并演示一个基于前两个视频中介绍的概念的简单雕刻策略。如果您对该策略的具体细节和Python代码感兴趣,可以在视频描述中找到链接。

我们使用的策略围绕三个指数移动平均线 (EMA):快速、中度和慢速。通过分析这些 EMA 的排列,我们可以估计价格趋势是向上还是向下。在上升趋势中,快速 EMA 高于中期 EMA,后者高于慢速 EMA。相反,在下降趋势中,顺序是相反的。

对于在上升趋势中买入头寸,我们寻找开盘价低于快速均线且收盘高于快速均线的蜡烛。另一方面,对于在下降趋势中卖出头寸,我们寻找开盘价高于快速均线且收盘价低于快速均线的蜡烛。该视频提供了符合在上升趋势中买入头寸的这些标准的蜡烛示例。

该策略之前已使用杠杆率为 1:100 的杠杆账户进行了测试和优化。测试历时三年,回报率为 445%,获胜率为 55%。然而,值得注意的是,该策略显示出较大的回撤期,并且股票曲线在整个三年期间并不稳定。

为了改进策略,引入了附加条件。除了蜡烛穿过快速 EMA 之外,我们现在还考虑蜡烛影线的长度。如果是上升趋势,蜡烛应该有一个非常短的下尾,表明强劲的上升势头。同样,在下降趋势中,蜡烛不应有高尾。该条件旨在滤除动量较弱的信号。

为了评估这个附加条件的有效性,使用 Python 对该策略进行了回溯测试。回测的源代码在 Jupyter Notebook 文件中提供,可以从视频描述中的链接下载。

回测使用2019年至2022年欧元/美元15分钟图表数据进行,涵盖三年的数据。通过删除零成交量的蜡烛并重置数据框的索引来对数据进行预处理。三个移动平均线(50、100 和 150)和平均真实波动幅度 (ATR) 将添加到数据框中。

该策略根据移动平均线的排列生成信号,并通过识别与趋势相同方向穿过快速 EMA 的烛台来获得总信号。该视频演示了如何在图表上可视化这些信号。

测试了设置止损和止盈值的不同方法。其中包括固定距离、ATR 相关距离、追踪止损以及从价格观察到的止损。比较添加第三个条件之前和之后每种方法的结果。

当添加第三个条件时,该策略在所有测试方法中都显示出显着的改进。固定距离止损止盈方法的回报率为 1805%,胜率为 59%。 ATR相关方法实现了249%的回报率和51%的胜率。之前亏损的追踪止损方法现在的回报率为 394%,胜率为 42.5%。最后,从价格观察到的止损(同样是亏损的)现在产生了 373% 的回报率和 49% 的胜率。

除了回报率提高外,所有方法的净值曲线均呈现整体上升趋势,表明与之前的结果相比,表现更加稳定和积极。

该视频强调,该策略并不是作为一个完整的交易系统呈现的,而是作为添加低灯芯条件的影响的说明。

该视频最后强调了使用此策略时需要考虑的一些重要要点:

  1. 视频中演示的策略是一个简化的示例,不应被视为一个综合的交易系统。它说明了添加某些条件如何提高策略的性能。

  2. 回测结果并不代表未来的表现。虽然该策略在测试期间显示出较高的回报,但市场条件可能会发生变化,过去的结果可能无法在未来复制。

  3. 在将任何策略应用于实际交易之前,必须进行彻底的测试和优化。回测可以让您评估策略在不同市场条件下的表现,并优化其参数以获得更好的结果。

  4. 风险管理至关重要。正确设置止损和止盈水平对于保护您的资本和管理风险至关重要。该视频演示了设置这些级别的不同方法,但在确定适当的值时,考虑您的风险承受能力和帐户规模非常重要。

  5. 情绪纪律对于成功的交易是必要的。坚持你的策略,避免根据短期市场波动做出冲动的决定。

  6. 考虑可以补充该策略的其他因素和指标。没有一种策略能够在所有市场条件下完美发挥作用,因此结合多种指标和技术进行更全面的分析是有益的。

  7. 持续监控和评估您的策略的绩效。随着市场条件的变化,可能有必要调整和完善您的方法以保持盈利。

请记住,金融市场交易存在风险,在投入真实资金之前进行自我教育、寻求专业建议并谨慎练习非常重要。该视频作为教育资源,您可以进一步探索和定制适合您的交易风格和风险承受能力的策略。

Scalping Strategy With CandleStick Pattern Backtest In Python
Scalping Strategy With CandleStick Pattern Backtest In Python
  • 2022.03.10
  • www.youtube.com
This is a scalping Trading Strategy optimization using CandleStick Wick length pattern to confirm price momentum along with 3 moving exponential averages to ...
 

Python 中的简单 EMA 倒卖交易策略回测(第 1 部分)


Python 中的简单 EMA 倒卖交易策略回测(第 1 部分)

今天,我们将踏上测试剥头皮策略的旅程。我知道你们中的许多人最近一直在要求这样做,我必须承认,我通常会避免短时间框架和倒卖,因为我发现这是一种冒险的方法,而且常常会让人精疲力尽。

然而,当涉及到算法方法时,事情可能会更容易。通过算法,我们可以测试我们的策略并清楚地了解预期结果。因此,希望不会出现令人不快的意外,因为我们的模型已经经过了回溯测试。与往常一样,如果您对编码部分感兴趣,可以从视频描述中的链接下载 Python 代码。如果没有,您可以简单地欣赏视频,看看我们的策略可能会产生什么样的结果。

首先,我选择了一些相对简单的东西:我们将使用三个指数移动平均线。一个是快,另一个是中,第三个是慢。我们将使用这些移动平均线来检测趋势。当这些移动平均线按特定顺序排列时(快移动平均线高于中移动平均线高于慢移动平均线),我们就看到了上升趋势。相反,相反的顺序表明下降趋势。

为了确保趋势的准确性,我还添加了一项条件。这些曲线的斜率应指向同一方向。在上升趋势中,三条曲线应具有正斜率,在下降趋势中,斜率应为负。

一旦我们有了明确的趋势信号,我们就会寻找入场点。例如,如果我们正在寻找买入头寸,我们将等待开盘价低于快速移动平均线且收盘价高于快速移动平均线的蜡烛。该蜡烛表明上升趋势的延续,并作为我们的切入点。

有趣的是,我们可以用 Python 编写所有这些内容并回测策略。最初,我们不会过多关注优化,因为我想让这个视频保持简洁。然而,在未来的视频中,我们将尝试优化参数,看看我们是否能够在交易中实现获胜组合。

现在,让我们深入研究 Python 代码并检查回测结果。我们将使用 2019 年至 2022 年带有 15 分钟蜡烛图的欧元/美元货币对。数据框由 105,000 行组成,每行代表一根 15 分钟蜡烛图。我们通过删除交易量为零的行来清理数据框,这对应于没有市场波动的周末和休息日。

接下来,我们导入 pandas_ta(Pandas 技术分析)模块并计算三个不同的移动平均线:EMA 50、EMA 100 和 EMA 150。我们还使用 10 个蜡烛的滚动窗口计算这些移动平均线的斜率。

在此阶段,我们的数据框架包括开盘价、最高价、最低价和收盘价、交易量、三个移动平均线及其相应的斜率。我们现在可以检查趋势检测的条件。如果快速移动平均线低于中期移动平均线,并且中期移动平均线低于慢速移动平均线,并且所有三个斜率均为负,则表明下降趋势。相反,如果快速移动平均线高于中期移动平均线,中期移动平均线高于慢速移动平均线,并且所有三个斜率均为正,则表示上升趋势。这些条件作为列添加到我们的数据框中。

为了可视化图表上的信号,我们定义了一个函数,根据总信号绘制烛台上方或下方的点。总信号代表入场点,1 表示卖出信号,2 表示买入信号。点位置作为列添加到数据框中。

我们绘制特定蜡烛范围的信号和烛台。

我们绘制特定蜡烛范围的信号和烛台,使我们能够直观地分析策略的表现。绿色圆圈表示买入信号,红色圆圈表示卖出信号。这种视觉表示帮助我们了解该策略如何实时执行。

可视化信号后,我们计算策略的绩效。我们从 10,000 美元的资本开始,遍历每根蜡烛。如果我们收到买入信号,我们就会建立固定规模的多头头寸。如果我们收到卖出信号,我们就会退出多头头寸,并根据入场以来的价格变化计算利润/损失。我们跟踪累计利润/损失和执行的交易数量。

在回测期结束时,我们计算总盈利/亏损、盈利交易数量、亏损交易数量、盈利百分比以及每笔交易的平均盈利/亏损。

在视频中,我展示了给定策略的回测结果。请记住,结果特定于所选时间范围和货币对。该策略在其他市场条件或不同参数下的表现可能有所不同。

总结结果,回测表明该策略表现相对较好,在回测期间产生了正回报。然而,值得注意的是,过去的表现并不代表未来的结果,可能需要额外的测试和优化。

Simple EMA Scalping Trading Strategy Backtest In Python (Part 1)
Simple EMA Scalping Trading Strategy Backtest In Python (Part 1)
  • 2022.02.24
  • www.youtube.com
Simple scalping Trading strategy using 3 exponential moving averages backtested in python, the scalping strategy is explained and the python code also in Jup...
 

Python 中的简单 EMA 倒卖交易策略回测(第 2 部分优化)



Python 中的简单 EMA 倒卖交易策略回测(第 2 部分优化)

你好呀!欢迎回到这个视频,它是我们之前视频的延续。在本视频中,我们的目标是优化之前介绍的雕刻策略。简单回顾一下,我们将重点优化名为“回滚 n”的参数,该参数确定计算移动平均线斜率时要考虑的蜡烛数量。通过改变蜡烛的数量(例如 20、10 或 5),我们可以计算这些移动平均线的平均斜率。此外,我们将探索在移动平均斜率上添加条件的可能性,例如测试斜率小于特定阈值(例如 -10 到 -4)。通过试验这些参数,我们的目标是创建一个更好的过滤器来识别趋势。

此外,我们将探索不同的交易管理方法,包括固定止损和止盈值、追踪止损以及ATR(平均真实范围)相关止损和止盈。通过研究这些不同的方法,我们希望确定哪种贸易管理策略能产生最有利的结果。

值得注意的是,这个雕刻系统并不是为快速交易风格而设计的,因为我们正在使用 15 分钟的时间范围。然而,相同的系统可以在较短的时间范围内进行测试,尽管由于市场噪音的增加可能更具挑战性。

在我们深入研究代码之前,建议您观看之前的视频,其中我们详细解释了该策略。这将使您更好地了解我们即将介绍的优化过程。

现在,让我们继续讨论 Jupyter Notebook 文件。我们首先创建一个数据框并清理数据。接下来,我们计算三个不同的移动平均线并计算这些移动平均线的斜率。这是我们开始测试我们的策略的地方。

最初,我们考虑 10 根蜡烛的滚动窗口,这意味着我们使用这 10 根蜡烛的数据来平均快速、中等和慢速移动平均线的斜率。我们执行此代码以确保一切正常运行,包括我们在上一个视频中介绍的信号。

为了便于测试,考虑到我们正在使用 15 分钟的蜡烛,我们认为四根蜡烛代表一小时,从而建立了一个时间尺度。通过此设置,我们可以选择数据帧的特定部分来测试我们的策略。例如,我们可以通过指定起始索引为37,000并选择相应的长度来选择三个月的时间段。

加载选定时间段的数据后,我们可以执行回测。我们的初始手数设置为权益的 30%,我们考虑的止损为 40 点,止盈为 45 点。我们还应用 100 分之一的保证金,反映以现金余额 100 为起点的杠杆账户。

进行回溯测试,我们观察到三个月期间的回报率为 107%。然而,为了确保我们模型的稳健性,在不同时间片上测试策略至关重要。通过改变起始指标,我们可以选择不同的时期并评估绩效。例如,我们尝试不同的起始索引 47 并执行回测,得到 30% 的回报。

我们可以使用不同的起始指数重复此过程,以分析该策略在多个时期的表现。然而,为了测试更长的时间,我们必须选择数据帧的较小部分。例如,我们可以选择10个月或12个月的切片来评估年度绩效。

经过一整年的测试,我们实现了 100% 的回报,有效地将初始金额翻了一番。虽然这是积极的,但交易频率相对较低,全年仅有 193 笔交易。胜率约为44%,表明还有改进的空间。

为了增强我们的策略,我们将探索“回滚 n”参数的不同值。通过测试不同数量的蜡烛(例如 20、10 或 5 个),我们可以评估它们对我们策略表现的影响。例如,我们可以修改代码,将“回滚 n”值设置为 20 并重新运行回测。

在使用 20 的“回滚 n”进行测试时,我们观察到三个月期间的回报率为 90%,略低于我们最初设置的 10。这表明较小的“回滚 n”可能更有效捕捉短期趋势。

接下来,我们引入基于移动平均线斜率的附加条件。例如,我们可以实现一个要求,即所有三个移动平均线的斜率必须小于-4。这意味着我们仅在所有三个斜率均为负且低于 -4 时才进行交易。我们相应地修改代码并执行回测。

通过实施附加条件,我们可以进一步完善我们的策略。经过测试,我们观察到三个月期间的回报率为 127%,这表明与我们最初的结果相比有所改善。然而,值得注意的是,这些条件也可能会降低交易频率,因为它们提供了更严格的过滤器。

现在让我们探索不同的贸易管理方法。我们首先实施固定止损和止盈策略,为这两个参数设置预定值。例如,我们可以设置 40 点的固定止损和 45 点的止盈。修改代码并运行回测后,我们分析结果。

通过固定止损和止盈方法,我们观察到三个月期间的回报率为 95%。虽然这略低于我们最初的结果,但它提供了一个受控的风险管理系统。然而,重要的是要评估较长时期和不同市场条件下的表现,以评估其有效性。

接下来,我们探讨追踪止损策略。止损不是使用固定值,而是随着交易的进展对我们有利而动态调整。例如,我们可以将追踪止损设置为 30 点,这意味着如果价格向对我们有利的方向变动 30 点,则止损将移至盈亏平衡。我们相应地修改代码并重新运行回测。

通过追踪止损方法,我们在三个月内实现了 120% 的回报。这表明动态调整止损以保护利润和最大化收益的潜力。然而,有必要评估其在不同时间范围和市场条件下的表现,以确保其稳健性。

最后,我们探索基于平均真实波动幅度(ATR)的交易管理策略。 ATR 提供了市场波动性的衡量标准,可用于设置止损和止盈水平。通过将 ATR 纳入我们的策略,我们可以调整我们的风险管理以适应当前的市场状况。我们修改代码以实现基于 ATR 的止损和止盈水平并执行回测。

通过结合基于 ATR 的止损和止盈水平,我们在三个月内实现了 110% 的回报。这表明我们的风险管理适应市场波动的潜在有效性。

总之,通过优化过程,我们探索了不同的参数和交易管理方法来改进我们的雕刻策略。通过改变“回滚 n”参数、基于移动平均斜率实施附加条件以及探索不同的交易管理技术,我们能够提高策略的性能。然而,在将策略应用于实时交易之前,对不同的时间范围、市场条件进行进一步测试并评估该策略的稳健性非常重要。

Simple EMA Scalping Trading Strategy Backtest In Python (Part 2 Optimization)
Simple EMA Scalping Trading Strategy Backtest In Python (Part 2 Optimization)
  • 2022.03.03
  • www.youtube.com
This is a continuation of the previous video, here we optimize our simple EMA Scalping trading strategy and we try to backtest the different parameters sets ...
 

利用杠杆效应的高回报交易策略



利用杠杆效应的高回报交易策略

大家好,欢迎回到我的频道。今天,我们要深入探讨一个我们之前没有讨论过的话题——杠杆。我必须承认,由于涉及的固有风险,我对此非常怀疑。不过,我想强调的是,这些视频主要用于教育目的。我并不是建议您在没有充分理解其含义的情况下盲目采用杠杆交易系统。因此,在本视频中,我们将采用我们在之前的视频中讨论过的先前使用的交易策略,并探讨将杠杆纳入我们的交易系统的效果。

让我们首先简单介绍一下杠杆的工作原理。通常,杠杆由比率表示,例如 1:10 到 1:1000,但更常见的是 1:10 到 1:50 之间的比率。这意味着,如果您拥有 1,000 美元的账户,并且选择 1:10 的杠杆比率,您将被允许买入或卖出价值高达 10,000 美元的头寸。通过提高杠杆比率(假设为 1:50),您账户中的同样 1,000 美元将使您能够进行价值高达 50,000 美元的购买。您可用的具体杠杆选项取决于您的经纪商、其运营所在国家/地区、法规以及与您的账户类型相关的其他因素。

然而,值得注意的是,杠杆并非没有成本。虽然它可以放大您的潜在利润,但它也放大了风险,并可能迅速耗尽您的账户余额。初学者经常成为大型交易者或经纪人的目标,他们利用他们缺乏经验的优势。牢记这一点至关重要。

使用杠杆时需要牢记两个关键规则。首先,如果你的策略胜率很高,杠杆可以帮助放大利润。相反,如果你的策略胜率较低,也会放大你的损失。高胜率或低胜率的定义取决于多种因素,例如策略类型、止损和止盈值以及您的资金管理方法。永远记住,利用杠杆是有代价的。如果您可以用您所拥有资金的 100 倍买入或卖出头寸,则意味着您的资金主要用于弥补潜在损失,当交易金额大幅增加时,这种损失可能会迅速发生。

在本视频中,我们将利用 Python 来回测我们之前讨论的策略。我们将首先使用普通交易账户检查收益,然后将杠杆账户引入我们的算法交易策略中。我们将回测这些变化,检查结果,并评估与使用杠杆账户相关的优势和风险。使用Python的优点是我们可以根据需要修改任何参数并观察对回报率的影响。这种计算能力使我们能够测试并深入了解使用杠杆账户的优点和缺点。

我们将使用的 Python 代码与之前关于交易中鞅方法的视频中使用的代码类似。初始单元涉及加载和清理数据、重置索引以及执行其他必要的步骤。今天我不会花太多时间在代码上,因为我们已经在之前的视频中介绍过它。我们将利用支撑和阻力功能以及烛台模式识别来检测趋势反转并生成交易信号。对于此策略,我们将重点关注支撑位或阻力位附近出现的拒绝烛台形态,作为潜在的趋势反转信号。

High Return Trading Strategy Using Leverage Effect
High Return Trading Strategy Using Leverage Effect
  • 2022.02.17
  • www.youtube.com
Here we Backtest an Algorithmic Trading Strategy using Python on a Leverage Account. The leverage can be a variable depending on the strategy you are intend...
 

Python 中的 Martingale 波段交易策略算法回测



Python 中的 Martingale 波段交易策略算法回测

今天,我们将深入探讨鞅方法与获胜交易策略相结合的迷人话题。如果您还没有观看我们之前关于鞅方法的视频或此频道上描述我们将使用的策略的其他视频,我强烈建议您首先查看它们。这些视频涵盖了支撑位和阻力位、蜡烛形态,并为理解我们在本视频中的方法奠定了坚实的基础。为了您的方便,我将在视频说明中添加一些链接。

此外,对于那些感兴趣的人,您可以从描述中提供的链接下载我用来回测此策略的 Python 代码。这段代码将允许您自己跟踪并探索结果。

现在,让我们为那些新加入我们频道或刚刚加入我们的人快速回顾一下。鞅法涉及每次我们平仓亏损交易时将我们的头寸规模加倍。这种方法背后的想法是通过一场大胜来弥补之前的损失。在之前的视频中,我们解释了鞅方法并将其应用于完全随机的交易策略,该策略在买入和卖出头寸之间进行随机选择。

在本视频中,我们采用了不同的方法。我们将把鞅方法应用于获胜的交易策略。我们的策略包括确定支撑位和阻力位,以及表明潜在趋势逆转的特定蜡烛形态。当我们检测到支撑位或阻力位附近的蜡烛形态时,我们会相应地执行交易。止损和止盈值是根据称为止盈/止损比率的比率确定的。

现在,值得注意的是,该策略的结果已经在之前的视频中得到了测试,并显示出积极的回报。这里的目标是看看我们是否可以通过在该策略中添加鞅方法来进一步增加利润。

好的,让我们深入研究 Python 代码。首先,我们为此视频加载并清理 2003 年至 2021 年的欧元/美元每日数据。然后,我们通过打印数据帧的尾部来检查数据帧是否正确加载。

接下来,我们有检测支撑位和阻力位的函数,我们将在程序中使用它们。如果您需要这些功能的详细说明,请参阅我们之前的视频。

我们还有其他函数,称为“is_engulfing”、“is_star”和“close_to_resistance”或“close_to_support”级别。这些函数帮助我们识别特定的烛台模式并确定它们是否接近支撑位或阻力位。这些模式将用于生成我们的交易信号。

在信号生成单元中,我们根据检测到的蜡烛形态生成信号。如果我们发现看跌吞没形态或阻力位附近的任何其他卖出信号,我们会将其视为卖出信号,并将值 1 分配给数据框中的信号列。同样,如果我们发现看涨吞没形态或支撑位附近的任何其他买入信号,我们会将其视为买入信号,并将值 2 分配给信号列。在所有其他情况下,信号值为 0,表示没有信号。

现在,我们可以包含 backtesting.py 包来回测我们的策略。我们定义一个名为“signal”的函数,它返回数据帧中每一行的信号值。该函数在我们名为“CandleStrategy”的自定义类中使用,该类继承自 backtesting.py 模块的策略类。

在我们的 CandleStrategy 类中,我们将交易头寸的大小初始化为 0.05,这代表我们持有的权益的 5%。每次收到信号时,我们都会以这个头寸规模进行交易。

如果信号值为 1(卖出信号),我们检查是否有任何未平仓头寸。如果这样做,我们会关闭现有头寸并将头寸规模设置为零。然后,我们按照之前定义的头寸规模建立一个新的空头头寸。

另一方面,如果信号值为 2(买入信号),我们遵循类似的过程。我们检查是否有任何未平仓头寸,如有必要,将其平仓,并以预定义的头寸规模输入新的多头头寸。

现在,我们定义止盈和止损水平。止盈水平的计算方法是将入场价格乘以止盈/止损比率。止损水平的计算方法是将入场价格乘以止盈/止损比率的负值。这些值确保我们的止盈水平比止损水平更远离入场价格。

最后,我们使用 CandleStrategy 类执行回测并打印结果。我们计算各种绩效指标,例如总回报、平均每日回报、最大回撤和执行的交易数量。

现在,让我们运行回测并分析结果。

运行回测后,我们可以观察结果。总回报、平均每日回报和最大回撤是评估我们策略绩效的重要指标。

在我们的例子中,总回报率为256.17%,这意味着我们的初始投资增加了两倍多。日均回报率为0.04%,回测期间持续呈现正回报。最大回撤为 10.98%,这代表权益曲线从峰值到随后的低点的最大跌幅。

这些结果表明,我们的获胜交易策略与鞅方法相结合,在测试期间已实现盈利。然而,值得注意的是,过去的表现并不代表未来的结果,在实际交易中使用该策略之前应该对其进行彻底的评估和验证。

总之,鞅方法与获胜交易策略相结合,可以潜在地提高该策略的整体盈利能力。然而,必须仔细考虑所涉及的风险,例如大规模回撤的可能性以及需要足够的资本来维持头寸规模的多次翻倍。

感谢您观看本视频,希望您觉得它内容丰富且有用。如果您有任何问题或建议,请在下面的评论中留下。不要忘记喜欢并订阅我们的频道以获取更多交易策略和教程。交易愉快!

Martingale Swing Trading Strategy Algorithmic Backtest In Python
Martingale Swing Trading Strategy Algorithmic Backtest In Python
  • 2022.02.10
  • www.youtube.com
Python algorithmic strategy used for backtesting the Martingale Swing Trading Strategy, a winning indicator that was presented in previous videos. Martingale...
 

算法交易的鞅交易策略回测



算法交易的鞅交易策略回测

今天,我们将讨论马丁格尔方法,它可以合并到任何交易策略中以补偿交易损失。我们将使用 Python 回测此方法,并深入研究实施 Martingale 时所涉及的优点和风险。

让我们想象一下,口袋里有二十美元进入一家赌场,决定玩轮盘赌,只赌颜色。我们对红色或黑色下注一美元。如果我们对红色的第一个赌注输了,我们将只剩下 19 美元。在下一轮中,我们将把赌注加倍到两美元,因为我们之前的赌注是输了。如果这个赌注也输了,我们就剩下 17 美元。每次输了,我们都会加倍赌注,旨在弥补之前的损失。最终,我们将获得一笔获胜的赌注,弥补之前的损失并增加少量利润。在这个例子中,我们最终得到了总共 21 美元,比我们最初的金额略多。这种在输掉之后将赌注加倍的方法被称为鞅法。

最初,鞅法似乎很有前途,并且可以给人快速而可观利润的印象。然而,了解与此方法相关的风险至关重要。为了更好地理解这种方法及其风险,我们将使用蒙特卡罗方法回测该策略。这种方法使用随机数来生成买入或卖出头寸的信号,完全忽略技术指标或自定义预测。信号仅基于均匀随机分布。

为了实现回测,我们将编写 Python 代码。我们首先导入必要的库,例如用于数据操作的 pandas。我们加载并清理数据,删除交易量为零的行。准备好数据后,我们使用 numpy 模块的随机函数生成随机信号。对于每个烛台,我们生成一个 0 到 1 之间的随机数。如果该数字低于 0.5,我们分配一个卖出信号 (1),如果该数字高于 0.5,我们分配一个买入信号 (2)。

接下来,我们定义一个名为“MyStrategy”的策略类,它继承自回测库的策略类。初始头寸大小设置为 10 个单位。我们还定义了一个变量“my_size”来跟踪头寸大小,该大小将根据 Martingale 方法而变化。如果生成正信号并且没有未平仓交易,我们将遵循 Martingale 方法,开仓大小等于“my_size”乘以 2 的新交易。如果有已平仓的交易并且最后一笔交易是盈利的,我们会将头寸规模重置为初始规模。这确保了在成功交易后,我们会回到初始头寸规模。如果产生买入或卖出信号,并且没有未平仓交易,我们将相对于最后收盘价设置止损和止盈水平,并执行相应的交易。

定义好策略后,我们使用 10,000 美元的初始资金进行回溯测试,并且不收取佣金。回测统计显示回报率为-4.8%,表明亏损。权益图显示,该策略最初取得了一些收益,但在某个点开始下降。由于信号是随机的,胜率接近 50%,符合预期。交易总数为 100 笔。

为了进一步调查,我们将止损和止盈水平修改为 400 点并重新运行回测。不过,这样的调整并不能解决问题。净值下降是由于在一系列亏损交易后没有足够的资金继续将头寸规模翻倍的结果。为了解决这个问题,我们将初始头寸规模减少到 5,并将止损和止盈水平设置为 300 点。进行这些调整后,我们重新运行回测。更新后的策略的回报率为-0.7%,与之前的版本相比,损失较小。然而,权益图仍然显示出下降趋势,尽管速度较慢。胜率仍然接近50%,交易总数仍然是100笔。

从这些结果中,我们可以观察到,即使调整头寸规模、止损和止盈水平,马丁格尔方法在这种随机信号场景中也无法提供盈利结果。净值下降表明存在大幅回撤的潜在风险以及耗尽交易账户的可能性。

值得注意的是,这个回测是在随机信号的假设下进行的。在现实交易中,通常采用基于技术分析或基本面分析的策略来生成交易信号。这些策略旨在根据市场数据识别模式、趋势或机会,而不是依赖随机信号。在这种情况下,马丁格尔方法可能不合适或不有效。

此外,马丁格尔方法具有很高的风险。它假设连续亏损之后会出现连续盈利,从而允许交易者挽回损失。但实际上,并不能保证盈利交易一定会出现亏损交易,而且总是存在连续亏损的可能性。每次亏损后将头寸规模加倍可能会很快导致重大损失和账户耗尽,特别是在市场条件不利或波动的情况下。

虽然马丁格尔方法由于其快速恢复和利润的潜力而看起来很有吸引力,但考虑相关风险并仔细评估其对您的交易策略的适用性至关重要。实施风险管理技术,例如设置严格的止损水平、保持适当的头寸规模以及多样化交易方法,可以帮助减轻所涉及的风险。

总之,马丁格尔方法可能是一种有风险的策略,特别是在与随机信号一起使用时。考虑潜在收益和相关风险,彻底测试和评估任何交易策略非常重要。

Martingale Trading Strategy Backtesting For Algorithmic Trading
Martingale Trading Strategy Backtesting For Algorithmic Trading
  • 2022.02.03
  • www.youtube.com
Testing the Martingale trading strategy for algorithmic trading in python, I hope you'll enjoy it.Are you interested in algorithmic trading and looking for a...
 

Python 中的移动平均线交易策略回测



Python 中的移动平均线交易策略回测

通常情况下,简单的策略会被忽视,而倾向于更复杂的模型。然而,我们不应该低估简单的力量。今天,我将向您介绍一种简单的方法,可以与复杂的交易系统竞争并产生正回报。简单规则的优点是可以使用 Python 轻松实现算法交易的自动化。我们可以在不同的货币上回测这个策略,以确保其盈利能力。

让我们深入研究这个简单策略的细节。首先,我们将 200 日移动平均线视为我们的指标。如果蜡烛位于曲线上方,则表明上升趋势并建议买入。相反,如果烛台低于移动平均线,则表明下降趋势并意味着卖出头寸。

为了确定买入头寸的入场点,我们将检查前面的蜡烛。我们将当前蜡烛的最低值与之前蜡烛的最低值进行比较。如果当前蜡烛的低值低于所有这些之前的值,我们就确定了买入头寸的切入点。同样的概念也适用于相反方向的卖出头寸。

虽然这一策略看似简单,但它确实面临着一系列挑战。要考虑的第一个参数是移动平均线的长度。应该是 200、100 还是其他值?这可以通过对特定货币对的回测进行微调,以最大化回报。另一个参数是要考虑的前面蜡烛的数量。我们应该分析 7、8、10 或 20 根蜡烛吗?通过试验不同的值,我们可以评估对策略绩效的影响。

该指标部分相对简单,但为了使策略有效,我们需要将其与交易管理方法结合起来。这涉及定义止损和止盈值。我们有两种选择来设置这些值:它们可以与市场的平均真实范围(ATR)相关,或者我们可以对所有交易使用固定值。选择适当的贸易管理方法以确保获得正回报非常重要。此外,还可以采用追踪止损,根据 ATR 调整止损值。

在代码中,我们可以尝试这些参数的各种组合,以找到最佳设置并评估策略的性能。尽管这是一个简单的策略,但需要考虑相对较多的参数。

为了在 Python 中实现此策略,我们使用 Jupyter Notebook 文件。我们加载数据,使用 pandas-technical-analysis 模块应用指数移动平均线 (EMA) 和 ATR 计算。然后,我们定义用于生成 EMA 信号和高低信号的函数。我们用 EMA 曲线绘制数据,以直观地验证一切是否正常工作。

接下来,我们将 EMA 信号和高低信号函数应用于我们的数据框架,从而产生买入或卖出头寸的信号。通过检查绘制的信号,我们可以验证它们在识别趋势和进入点方面的准确性和有效性。

为了测试该策略,我们定义了一个函数,该函数使用信号来确定买入或卖出头寸,并根据 ATR 或固定比率设置止损和止盈值。在 2003 年至 2021 年期间的欧元兑美元四小时图表上回测该策略显示出约 29% 的正回报。

然而,评估股票曲线并了解虽然该策略可能在趋势市场中表现良好,但在价格水平波动期间可能会表现不佳,这一点至关重要。通过尝试不同的止损和止盈配置,例如使用固定值而不是基于 ATR 的值,我们可以分析策略的表现并进行相应的调整。

总之,即使是最简单的策略也需要仔细考虑参数和贸易管理方法,以确保其有效性。虽然该策略依赖于移动平均线等基本指标,但与适当的交易管理技术相结合时,它仍然可以产生有利可图的交易信号。

一旦我们实施了策略并进行了回溯测试,就必须评估其绩效指标。需要考虑的一些关键指标包括交易总数、胜率(盈利交易的百分比)、每笔交易的平均利润、最大回撤(最大的峰谷跌幅)以及风险回报率。

通过分析这些指标,我们可以确定该策略是否满足我们的期望并符合我们的风险承受能力。重要的是要记住,没有任何策略是万无一失的,并且交易中总是存在风险。因此,适当的风险管理和投资多元化对于长期成功至关重要。

此外,建议对该策略进行稳健性测试。这涉及评估其在不同市场条件下的表现,例如不同时间段、货币对或资产类别。通过这样做,我们可以衡量该策略的适应性,并确保其盈利能力不限于特定场景。

此外,值得考虑这个简单策略的局限性。它可能无法捕捉所有市场细微差别或在高波动或突然价格波动期间表现最佳。在这种情况下,可能需要更复杂的交易系统或附加指标来提高其性能。

最后一点是,随着市场状况的变化不断监控和调整策略至关重要。定期审查其绩效、做出必要的调整并随时了解市场趋势和新闻将有助于该策略的长期可行性。

请记住,成功的交易是明确的策略、严格的执行以及持续学习和适应的结果。祝您交易顺利!

Moving Average Trading Strategy Backtesting In Python
Moving Average Trading Strategy Backtesting In Python
  • 2022.01.20
  • www.youtube.com
Welcome to this video on a beginner-friendly automated trading strategy using Python. In this video, we will be discussing a simple yet effective trading str...
 

Python 算法交易的追踪止损回测



Python 算法交易的追踪止损回测

大家好,欢迎观看这个视频。今天,我们将探讨算法交易中实现止损的各种方法。具体来说,我们将重点关注止损技术,通过将其编码到数字程序中,可以轻松地将其纳入交易机器人中。

需要注意的是,虽然确定止损值的方法有多种,但有些方法在程序中包含起来更为复杂。在本视频中,我们将使用支撑位和阻力位以及我们之前在其他视频中讨论过的烛台模式来回测策略。但是,我们将通过考虑四种不同的情况来改变止损值。

第一种方法涉及使用恒定的止损距离,该距离由交易者为所有交易预先确定。无论买入位置如何,止损距离保持不变。

第二种方法更加动态并利用平均真实波动幅度 (ATR)。这里,止损距离与 ATR 直接相关,这意味着它根据特定仓位的市场波动性而变化。

第三种方法是固定距离追踪止损。这是常用的追踪止损策略,所有仓位保持相同的距离,充当追踪止损。

第四种也是最后一种方法是追踪止损,它考虑执行交易头寸时的平均真实范围。这意味着止损距离是根据 ATR 选择的,ATR 反映了当时市场的波动性。

总之,我们将使用这四种不同的定义止损值的方法来测试相同的策略。值得注意的是,止损值的选择也会影响我们的止盈值。大多数时候,止盈值将根据止盈距离与止损距离之间的比率来确定。

现在,让我们深入研究 Jupyter Notebook 文件,看看这些方法是如何实现的。该文件首先导入必要的模块并加载包含 2003 年至 2021 年 EUR/USD 货币对价格数据的 CSV 文件。我们清理数据,添加平均真实波动范围 (ATR) 列,并定义支持和阻力位以及烛台形态。

我们还引入了检查吞没模式以及支撑位和阻力位附近的函数。这些函数帮助我们根据接近支撑位或阻力位的烛台形态构建策略。我们在数据框中添加一个信号列,将信号分类为看跌、看涨或无信号。

为了回测我们的策略,我们利用回测模块并定义第一个止损方法,其中涉及由交易者手动设置的固定止损和止盈距离。我们从 10,000 美元的现金金额开始,获取回测结果,包括回报、胜率、最佳和最差交易以及最大回撤。

接下来,我们实现第二种方法,它利用 ATR 来定义止损和止盈距离。我们引入因素来根据 ATR 值调整距离并对策略进行回测。我们将结果与之前的方法进行比较,并观察回报和其他绩效指标的差异。

接下来,我们实现第三种方法,即固定距离的追踪止损。这里,我们只需要指定初始止损距离,追踪止损就会相应调整。我们对欧元/美元货币对使用 500 点的固定距离来回测该策略。

最后,我们对结果进行分析发现,固定距离的追踪止损方法的回报率最高,约为131%。虽然其他方法也能提供良好的回报,但追踪止损方法在这种情况下表现出更好的性能。

总之,我们使用四种不同的止损方法测试了相同的策略,每种方法都提供不同的优势和考虑因素。止损方法的选择最终取决于交易者的偏好和具体的市场状况。

恒定止损方法简单且易于实施。无论市场状况如何,它都可以对所有交易进行一致的风险管理。然而,它可能无法有效地适应不断变化的波动水平,可能导致在高波动时期扩大止损距离,或在低波动时期缩小止损距离。

基于ATR的止损方法解决了适应市场波动的问题。通过使用 ATR 作为波动性衡量标准,止损距离会根据当前市场状况动态调整。这有助于防止高波动期间出现更大损失,并在低波动期间提供更多喘息空间。然而,它可能会导致在高波动期间更大的止损距离,从而可能导致更频繁的止损。

固定距离追踪止损方法结合了追踪止损的优点和固定距离的简单性。当价格向有利于交易的方向移动时,它可以通过跟踪价格后面的止损来实现潜在利润最大化。这种方法在趋势市场中特别有用,可以捕获更大的收益。然而,它可能无法有效防止价格快速逆转,因为固定距离在高度波动的情况下可能无法提供足够的缓冲。

基于 ATR 的追踪止损方法结合了基于 ATR 的方法和追踪止损的优点。通过考虑交易入场时的 ATR,它会根据当时市场的波动性来调整追踪止损距离。这为风险管理提供了一种更具适应性和响应性的方法。它可以帮助捕捉更大的趋势,同时仍然提供针对突然逆转的保护。然而,这可能会导致高波动期间的止损距离变宽,从而可能导致更频繁的止损。

交易者在选择止损方法时,仔细考虑自己的风险承受能力、交易风格和市场状况非常重要。回测和分析不同方法的性能有助于做出明智的决策。此外,风险管理不应仅仅依靠止损指令,还应考虑头寸规模、多元化和整体投资组合管理。

请记住,没有任何止损方法是万无一失的,损失仍然可能发生。适当的风险管理和持续监控市场状况对于成功交易至关重要。

Trailing Stop Backtest For Algorithmic Trading in Python
Trailing Stop Backtest For Algorithmic Trading in Python
  • 2021.11.27
  • www.youtube.com
This video tests the Stop Loss VS Trailing Stop methods for Algorithmic Trading using python. Backtests are applied to one trading strategy showing the diffe...
 

RSI 背离在 Python 中自动化 |算法交易



RSI 背离在 Python 中自动化 |算法交易

大家好,欢迎观看这个视频。今天,我们将讨论 RSI 背离,并探索在交易中使用该指标的不同策略。在我们深入讨论之前,我在说明中提供了一个下载链接,您可以在其中访问本视频中使用的 Jupyter Notebook 文件。

首先,我们需要编写一段代码来检测价格和 RSI 的局部最小值和最大值。这些点在图表上标记为紫色点。如果蜡烛线的最高点高于每一侧的五个相邻蜡烛线,则此处使用的算法会将蜡烛线的最高点识别为最大值。同样,如果蜡烛线低于左右两侧的五根蜡烛线,则该蜡烛线的低值被视为最小值。您可以根据您检测极值点的偏好来调整这些数字。

接下来,我们将检测到的价格和 RSI 的最小值和最大值拟合成线性斜率。这涉及找到穿过这些点的最佳拟合直线。我们最终得到两种不同的斜率:一种用于价格(绿色),另一种用于 RSI(紫色)。这些斜率代表了各个指标的趋势方向。

然后我们可以比较价格和 RSI 的斜率来确定是否存在背离。在上升趋势中,两个斜率都应为正,表明价格的低点更高,RSI 的高点更高。相反,在下降趋势中,两个斜率都应该为负。如果斜率具有不同的符号,例如价格的正斜率和 RSI 的负斜率,或反之亦然,则表明存在背离。

虽然分析分歧的方法有多种,但我们将在本视频中探讨两种方法。第一种方法涉及使用多项式回归拟合多个极值点,使我们能够同时考虑两个以上的点。第二种方法侧重于比较价格和 RSI 的最后两个最小值和最大值。通过比较这些点之间的差异,我们可以识别差异。

尽管手动交易中经常讨论使用 RSI 背离的策略,但它们通常关注两个连续点之间的趋势。在本视频中,我们介绍了一种数值方法,利用斜率拟合和多项式回归来同时分析多个点。

在整个视频中,我们将使用 Jupyter Notebook 在 Python 中编写这些散度方法。提供的 Notebook 文件导入必要的库,从 CSV 文件读取蜡烛数据,计算 RSI,并定义函数来检测价格和 RSI 的枢轴点。这些函数将每根蜡烛分类为枢轴高点、枢轴低点、两者或两者都不是。

在视频结束时,您将清楚地了解 RSI 背离以及如何在交易中实施这些策略。如果您发现此内容有帮助,我鼓励您通过喜欢该视频来支持该频道。您的反馈对我们很有价值,因此请随时发表评论。

现在,让我们深入研究 Jupyter Notebook 文件,看看如何用 Python 编写这些概念。

从我们离开的地方继续,我们在数据框中添加了“枢轴”列,它将每根蜡烛分类为枢轴高点、枢轴低点、两者或两者都不是。现在让我们继续代码的下一步。

接下来,我们定义一个名为“get_slope”的函数,用于计算给定 x 和 y 坐标的两点之间的斜率。该函数将用于计算价格和 RSI 数据的斜率。

之后,我们定义另一个名为“fit_slope”的函数,它接受数据框和枢轴类别(枢轴高或枢轴低)作为参数。该函数根据给定类别识别枢轴点,并使用“get_slope”函数将线性斜率拟合到这些点。它返回拟合线的斜率值。

现在我们可以继续使用这些函数来计算价格和 RSI 数据的斜率。我们在数据框中创建两个新列:“price_slope”和“rsi_slope”。对于“price_slope”列,我们以数据框和枢轴类别作为参数调用“fit_slope”函数。我们对 RSI 数据重复相同的过程,计算 RSI 枢轴点的斜率并将结果存储在“rsi_slope”列中。

此时,我们已经获得了价格和 RSI 数据的斜率。现在我们可以比较这些斜率来确定趋势方向。我们在数据框中添加了另一列名为“趋势”的列,它将指示趋势是向上、向下还是未定义。

为了确定趋势,我们检查 Price_slope 和 rsi_slope 列的符号。如果两个斜率均为正,则表明呈上升趋势,因此我们将值“Up”分配给趋势列。如果两个斜率都为负,则表明趋势呈下降趋势,因此我们将值“下降”分配给趋势列。在所有其他情况下,当斜率的符号不同或斜率之一为零时,我们将值“未定义”分配给趋势列。

有了可用的趋势信息,我们现在可以检查价格和 RSI 数据之间的差异。我们在数据框中添加了另一列名为“背离”的列,它将指示是否存在背离。

为了检查背离,我们比较 Price_slope 和 rsi_slope 列的符号。如果符号相反,则表明存在背离。在这种情况下,我们将值“Divergence”分配给散度列。如果符号相同或斜率之一为零,则不存在散度,我们将值“无散度”分配给散度列。

最后,我们可以打印结果数据框以查看计算出的每根蜡烛的斜率、趋势方向和背离。

总的来说,该代码执行以下步骤:

  1. 导入必要的库并定义辅助函数。
  2. 读取蜡烛数据并计算 RSI。
  3. 添加枢轴列,将每根蜡烛分类为枢轴高点、枢轴低点、两者或两者都不是。
  4. 根据枢轴点计算价格和 RSI 数据的斜率。
  5. 根据斜率的符号确定趋势方向。
  6. 根据斜率符号检查价格和 RSI 数据之间的差异。
  7. 打印结果数据框以及计算出的斜率、趋势方向和散度。

此代码提供了一种分析 RSI 背离及其与价格趋势的关系的方法,使交易者能够识别潜在的交易机会。

RSI Divergence Automated In Python | Algorithmic Trading
RSI Divergence Automated In Python | Algorithmic Trading
  • 2021.11.12
  • www.youtube.com
The RSI Divergence Detection is programmed in python as an automated indicator for algorithmic trading, the Jupyter notebook file is available from the link:...
 

用 Python 自动化的价格趋势通道



用 Python 自动化的价格趋势通道

大家好,感谢您今天加入我们这个视频。我们很高兴能在 Python 中提出一种检测价格变动通道的算法。您可以从下面描述中的链接将代码下载为 Jupyter Notebook 文件。

首先,感谢评论部分的 M 先生或女士提出了这个想法。感谢您的耐心等待,我们已经等了一个多月了。我们希望这个视频不会让您失望。

在开始之前,我们先澄清一下该频道的目的。我们的目标是提供教育内容,因此我们不会简单地提供程序供您下载并作为黑匣子使用。相反,我们的目标是解释思考过程以及程序是如何构建的。看完本视频后,您应该能够受到此处介绍的算法的启发,构建自己的算法,甚至添加您自己的扩展。

然而,重要的是要承认数值模型在应用于市场等动态和非线性环境时的局限性。价格趋势和预测仍然是一个开放的研究领域,正在进行的研究试图找到最好的方法。市场是高度动态的,趋势及其变化速度可能会随着时间的推移而变化。因此,请接受预测价格变动固有的局限性和复杂性。

现在,让我们深入研究算法。我们展示的算法基于通过该渠道收集的简单信息和我们的想象力。该方法包括将自己定位在特定的蜡烛或日期上,并及时回顾特定数量的蜡烛。

我们将这个时间分成相等的部分或时间窗口。在每个窗口中,我们确定最高和最低价格点,称为最大值和最小值。我们对所有时间窗口重复此过程,并将最小值和最大值点拟合到单独的一次多项式拟合中,该多项式拟合是直线。

然而,这些斜率不一定会围绕价格,因为它们会穿过这些点。为了解决这个问题,我们需要提高这些斜率的截距值。有不同的方法可以做到这一点。一种方法是调整截距,使曲线经过特定点,例如最接近时间窗口中间的最小点或窗口内找到的最高点和最低点。

另一个需要考虑的方面是时间窗口的长度。根据您的喜好,您可以为背面蜡烛的数量选择不同的值。例如,您可以在当前蜡烛后面 30 个柱加或减 20 个柱,允许程序在该范围内漫游。然后,程序将评估不同的斜率并返回提供两个斜率之间最平行情况的蜡烛数量,表明检测到通道。

我们提供了一个 Jupyter Notebook 文件,您可以从视频描述中的链接下载。该文件包含用于实现该算法的 Python 代码。首先,我们导入 pandas 库并从包含 2003 年至 2021 年欧元兑美元烛台数据的 CSV 文件加载数据。

接下来,我们在由后烛线数量定义的时间窗口内搜索最大值和最小值。我们将窗口分割成更小的窗口,并找到每个窗口内的最大值和最小值点。这些点存储在 numpy 数组中。

获得最小值和最大值后,我们使用 numpy polyfit 函数将点拟合到一次多项式线。结果(包括斜率和截距)存储在变量中。

为了可视化斜率,我们绘制烛台图并添加与斜率相对应的线条。在这个阶段,斜率可能无法完全覆盖价格,但它们提供了合理的拟合。

为了改善拟合,我们可以修改斜率的截距。一种方法是调整截距,使它们经过每个时间窗口内的最高点和最低点。我们计算时间窗口内的最高点和最低点,并相应地更新斜率的截距。

为了确定最佳通道,我们迭代反向蜡烛数量的不同值并评估两个斜率之间的并行性。我们计算两个斜坡之间的角度并检查它是否落在预定义的阈值内。如果是,我们将其视为有效通道并存储反向蜡烛的数量和角度以供进一步分析。

最后,我们可以通过绘制烛台图并覆盖与通道对应的线条来可视化检测到的通道。这提供了已识别的价格变动通道的直观表示。

值得注意的是,该算法是一种简化方法,可能无法捕获所有类型的价格变动通道。市场很复杂,可能存在超出该算法范围的各种模式和动态。然而,该算法可以作为检测通道的起点,并且可以根据个人需求和偏好进行扩展或定制。

我们鼓励您下载 Jupyter Notebook 文件并详细探索代码。尝试不同的参数,在不同的数据集上测试它,看看它的表现如何。请随意修改和增强算法以满足您的需求和想法。

我们希望该视频和随附的代码为您提供开发自己的通道检测算法的见解和灵感。请记住,关键是了解基本概念并使其适应您的特定需求和市场条件。

感谢您的观看,我们期待您的反馈和问题。快乐编码!

Price Trend Channels Automated In Python
Price Trend Channels Automated In Python
  • 2021.10.30
  • www.youtube.com
This video is about detecting price trend and price channels and how to automate this process in Python. The algorithm is presented and explained then the co...
原因: