English Русский Español Deutsch 日本語 Português
preview
交易中的追踪止损

交易中的追踪止损

MetaTrader 5示例 | 5 九月 2024, 09:47
738 0
Aleksej Poljakov
Aleksej Poljakov

概述

追踪止损的主要目的是以最小的风险获得有保证的利润。追踪止损的工作原理非常简单。如果价格变动对交易者有利,止损点就会逐渐移至价格后面。如果价格朝相反方向移动,它将保持不变。

作为示意,追踪止损可以表示如下。我们假设交易者在上升趋势中建立了买入仓位。当价格上涨时,止损会自动移动到价格后面。当趋势改变方向时,交易者就可以获利。

追踪止损可以有很多选项,MetaTrader 交易平台有自己的追踪止损选项。

此外,追踪止损可以自动化,并包含在 EA 交易的代码中。例如,可以通过开启仓位的类来实现这一点。

追踪止损的效率很大程度上取决于价格波动和止损水平的选择。可以使用各种方法来设置止损。例如,如果存在明显可见的趋势,我们可以使用价格高点或低点的值。此外,可以使用技术指标确定追踪止损参数。此类方法在文章“如何创建您自己的追踪止损”中进行了描述。在本文中,我们将研究基于统计数据构建追踪止损的可能性。


简单的追踪止损

交易策略和追踪止损是相互独立的。它们之间的主要区别在于策略的开仓和平仓。追踪止损仅适用于平仓。

首先,让我们看看设置止损的限制。

止损的上限在交易品种属性中设置 - 仓位的平仓价与设置的止损之间的最小差额不能小于距仓位当前平仓价的最小偏移点数。

SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL)

至于下限,则需要我们自己去计算。最小止损的第一个要求是必须处于盈亏平衡区域。乍一看,一切都很简单 - 最低止损不应低于仓位的开仓价。是这样吗?错了。

开仓时可能会收取佣金。此外,仓位存在期间可能会累积库存费。在计算最低可能的止损时,应该考虑这些额外成本。为此,我们需要找出存款货币中一个点的成本。

PointValue=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)*SymbolInfoDouble(_Symbol,SYMBOL_POINT)/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)

现在我们可以计算出价格必须变动多少点才能补偿佣金和库存费。此外,我们不应忘记滑点。在交易过程中,滑点既可以起到好的作用,也可以起到坏的作用。但我们会小心谨慎,并假设滑点总是对交易者不利。

假设 PriceOpen 为开仓价格,Lot 为持仓数量。然后可以使用以下公式计算最小止损:

上方符号表示买入仓位,下方符号表示卖出仓位。

最低止损与仓位的保证盈亏平衡水平相对应。换句话说,如果以最小止损关闭头寸,那么其总利润(考虑到当前利润、库存费和佣金)将为非负数。

现在我们可以制定追踪止损的基本规则:

  • 新的止损点水平应位于最小值与最大值之间;
  • 新的止损点必须比之前的止损点更好。

如果满足这些要求,止损就可以升级。但是,在升级之前,有必要再进行一次检查 - 旧止损必须位于冻结水平之外(有关此内容的更多信息 - “交易机器人在市场发布前必须通过哪些检验?”)。

我们可以使用不同的方法来确定新的止损。我将使用文章“适合交易者的止损与止盈”中描述的水平。

不过,我会做一些小的改动来计算最佳止损。追踪止损应在当前柱上触发,因此持仓时间将始终等于 1 根柱的时间。此外,还将在随机选择的时间范围内收集价格变动的统计数据。这种方法可以调整追踪止损的灵敏度。

关于止盈,这里可能有几种不同的选择。

我们假设交易者采用指定了止盈的交易策略。然后止盈可以保持不变,而追踪止损只会修改止损。在这种情况下,追踪止损将使仓位达到盈亏平衡。

如果交易策略没有提供设置止盈,或者可以使用追踪止盈,那么追踪止损可以同时监控止损和止盈的水平。在这种情况下,交易的盈利能力可能会发生变化,因为一些仓位可能会以更好的价格平仓。

此外,在逐笔分时交易模式下也可以使用追踪止损。那么设置止盈就没有任何意义了 - 价格永远不会赶上止盈。平仓的唯一可能选择就是通过止损。

让我们检查一下简单的追踪止损在有止盈和无止盈的情况下如何运行。同时,我们将引入一个附加条件——只有追踪止损将止损移至盈亏平衡区域后,才可以设置和修改止盈。

我将使用 EURUSD H1。测试时间段 - 2023年1月1日至12月31日。追踪止损时间框架 M1。持仓方向和持仓交易量是随机确定的。不设置止损和止盈位置。

余额图如下所示。


测试结束时,一些仓位被强制关闭 - 这是所用策略的一个缺点。但是,该图表让我们了解了追踪止损是如何运行的。我们来看一下测试结果。

PERIOD_M1 净利润总额 毛利润 毛损失
UseTakeProfit=false 4 758.48 10 689.84 -5 931.36
UseTakeProfit=true 5 483.94 11 297.68 -5 813.74

我们可以看出,使用止盈会影响交易的盈利能力。现在,让我们尝试在相同条件下运行测试,但将追踪止损时间框架设置为 M15。

PERIOD_M15 净利润总额 毛利润 毛损失
UseTakeProfit=false 16 371.11 33 435.31 -17 064.20
UseTakeProfit=true 17 038.63 34 042.13 -17 003.50

改变时间框架对测试结果有重大影响。这是由于最佳止损和获利水平的变化造成的。我们可以得出结论,较小的追踪止损时间框架适合剥头皮交易,而较大的时间框架适合趋势策略。


道德期望与追踪止损

道德期望(Moral expectation)是一种风险评估方法,由 丹尼尔·伯努利于 1732 年首次提出。道德期望使我们能够评估游戏的实用性。同时,它还考虑玩家的资本、可能的胜利和失败,以及它们的概率。

让我们从稍微不同的角度来看待交易过程,将每个仓位视为一个独立的玩家。那么这个仓位就有了资本 - 即该仓位的总利润。如果以止盈的方式平仓,该资本可能会增加。如果通过止损平仓,它也可能会下降。

假设 ProfitPoint 是持仓盈利点数,p 是止盈平仓的概率。那么该仓位的心理预期可以如下得出:

显然,交易者需要选择这样的止损和获利,使道德期望达到最大。让我们看看借助道德期望来支持某一仓位的特点。

止损必须严格小于利润。唯有这样,道德期望才是正的。但这个条件还不够。我们假设我们已经找到了最佳止损和止盈。这些水平对于理想市场来说是理想的,而真实的市场可能带来意外。

假设追踪止损已设置了最佳止损,但由于滑点,仓位可能以更糟糕的价格平仓。在这种情况下,实际止损可能会大于仓位的盈利。这是不允许的。因此,止损要受到限制:

在计算道德期望时,使用止盈值。但其使用并非强制性的。在这件事情上,交易策略的特点更为重要。

这种结果是通过基于道德期望的追踪止损来体现的。

PERIOD_M1 净利润总额 毛利润 毛损失
UseTakeProfit=false 4 482.35 8 175.37 -3 693.02
UseTakeProfit=true 4 747.94 8 434.11 -3 686.17

其结果比简单的追踪止损略差一些。这是因为,当仓位受到道德期望支撑时,仓位会比简单的追踪止损更早地转为盈亏平衡。因此,这种追踪止损最适合用于剥头皮策略。

另一个严重的缺点是需要大量的操作。计算可以进行优化。但即使在这种情况下,道德期望的追踪止损时间范围也应该很小。


多个仓位的追踪止损

到目前为止,我们已经对每个仓位分别应用了追踪止损。是否可以同时将其应用于多个仓位?让我们探讨一下这种可能性。我们假设仓位可以同时属于不同类型且具有不同的交易量。

首先我们要确定哪一类仓位更有优势。为此,我们将找到买入仓位的交易量总和,并从中减去卖出仓位的交易量总和。

结果将显示哪种类型的仓位更强。正数表示买入仓位较强,负数表示卖出仓位占上风。如果结果为零,则仓位强度相等。

接下来,我们需要找到每个仓位的最低可能平仓价。它们的计算方式与最低止损相同,但不考虑滑点。

现在我们需要将这些平仓价转换为卖价/买价并找到它们的加权平均值。持仓量将起到权重的作用。

将这两个值减少为一个最佳出价值更为方便,稍后将需要该值来跟踪仓位。

现在我们有三个选项:

  • 如果买入和卖出仓位的数量相等,则最佳买入价将对应于最小损失。换句话说,如果实际买入价格与最优价格匹配,交易者可以平仓所有仓位。
  • 如果买入仓位的数量较大,则需要将 BidOpt 增加滑点量。这将是所有仓位的最低止损。
  • 如果卖出仓位的数量较大,则 BidOpt 值应减少滑点量。

持仓的维持方式与简单的追踪止损相同。新的止损水平将根据价格进行计算和调整。唯一的区别是,这个止损是虚拟的。因此,我们必须跟踪每次的价格变化。

我已经根据简单追踪止损的原则实施了对多个仓位的支持。这是应用时余额图的变化情况。


注意,所有仓位的支持和各个仓位单独的支持并不会带来冲突。例如,简单的追踪止损 + 所有仓位的追踪止损提供以下结果。


净利润总额 毛利润 毛损失
PERIOD_M1 4 907.90 10 425.52 -5 517.62
PERIOD_M15 16 524.44 32 304.01 -15 779.57

总体而言,追踪止损是一个有用的工具。然而,交易者应该记住,使用它并不能保证盈亏平衡。它并不会改善不够完善的交易策略。


结论

撰写本文时使用了以下程序。

名称 类型 特征
Trailing stop EA
  • TFTS - 追踪止损时间框架
  • Seed - 一系列随机数的种子数。如果不为 0,则持仓及其交易量的顺序将重复
  • Slippage - 滑点
  • TypeTS - 追踪止损类型选择
  • UseTakeProfit - 使用止盈
  • MultiTS - 所有未平仓头寸的追踪止损

本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/14167

附加的文件 |
Trailing_stop.mq5 (32.67 KB)
神经网络变得简单(第 70 部分):封闭式政策改进运算器(CFPI) 神经网络变得简单(第 70 部分):封闭式政策改进运算器(CFPI)
在本文中,我们将领略一种算法,其使用封闭式政策改进运算器来优化离线模式下的智能体动作。
神经网络变得简单(第 69 部分):基于密度的行为政策支持约束(SPOT) 神经网络变得简单(第 69 部分):基于密度的行为政策支持约束(SPOT)
在离线学习中,我们使用固定的数据集,这限制了环境多样性的覆盖范围。在学习过程中,我们的 Agent 能生成超出该数据集之外的动作。如果没有来自环境的反馈,我们如何判定针对该动作的估测是正确的?在训练数据集中维护 Agent 的政策成为确保训练可靠性的一个重要方面。这就是我们将在本文中讨论的内容。
GIT:它是什么? GIT:它是什么?
在本文中,我将为开发人员介绍一个非常重要的工具。如果您不熟悉 GIT,请阅读本文,以了解它是什么以及如何在 MQL5 中使用它。
时间序列分类问题中的因果推理 时间序列分类问题中的因果推理
在本文中,我们将研究使用机器学习的因果推理理论,以及 Python 中的自定义方法实现。因果推理和因果思维植根于哲学和心理学,在我们理解现实中起着重要作用。