在金融市场中不使用适当的交易系统来交易,很可能会让交易者的资金灰飞烟灭。无论选择哪个市场,对于一个缺乏经验的交易者来说,长期结果都是一样的。获取利润是需要一个交易系统或算法的。
有很多不同的交易系统和算法,包括一类特定的数学上的盈利算法,如套利策略,高频交易,期权策略和现货符号交易衍生品。然而,所有已知的算法都有其缺点。它们要么盈利能力低,要么对流动性和订单执行速度要求很高。这就是为什么交易者试图根据独特的逻辑开发自己的算法。
通常,大多数交易算法都利用资产价格分析来预测未来的价格。其他算法不仅使用价格分析,还使用外部数据,以及考虑基本面和新闻背景,包括对谣言的分析。
问题是很少有人确切地了解如何寻找模式,哪些是有效的,哪些不是,以及为什么。为什么,在一张图表上附加了标准指标或任何其他找到的指标,他们就不能得到一个有利可图的算法。他们试图在优化器中优化策略参数以获得利润,但实际上他们只是将策略参数调整到历史的一小部分,然后在未来一段时间内蒙受损失。优化器是一个必要且有用的工具,但它应该被用来为一个有利可图的算法寻找最佳参数,而不是试图通过调整历史数据上的参数来使一个有利可图的系统从一个亏损的系统中脱颖而出。
与其他领域不同,由于竞争激烈,市场交易的发展很差。有利可图和破坏性的想法通常是保密的,不会在网上讨论。而无利可图的想法或不产生利润的想法传播得很快。这是因为,如果一个人或一群人开发了一些真正有价值的东西,他们不需要与其他人分享他们的开发成果——他们靠自己的知识赚钱。如果他们公布了自己的基本思路,这将产生竞争对手,他们也将试图攫取流动性,而流动性远不是无限的。因此,每个人谁来到算法交易必须收集任何信息从头开始,并获得自己的经验。而理解基本规则可能需要几年的时间。
由于所有这些因素,交易中的迷信比实际操作规则要多。当谈到科学方法时,它在所有领域都是相同的,允许您在开发有利可图的算法时进步更快。因此,让我们来探讨在开发交易算法的过程中,如何坚持科学的方法,避免迷信。我们将以一个简单的交易系统为例来探讨本文中的一些想法。
一个交易算法的开发应该从一个价格模式的搜索开始,这个价格模式将在交易期间提供一个正的利润数学预期。这种模式可能源于先前提出的价格假设,也可能是偶然发现的。这两种可能性在科学中经常发生:一些发明是偶然的,而另一些是长期研究的产物。在之前的文章"价格序列离散化、随机分量与噪声"中,探讨了区块图的使用方法,并说明了其使用的原因。所以,我将使用区块图,而不是烛形图。
在我之前的叫做"什么是趋势?市场结构是基于趋势还是横盘?"的文章中,我为趋势的概念制定了一个定义,并研究了市场结构是基于趋势还是横盘。我建议你阅读这篇文章,这样你就能理解更多的思路。
分析表明,大多数市场都有趋势结构,这意味着趋势延续的概率高于反转的概率。这是因为价格序列的N步增量分布密度比每一步反转概率为50%的过程的N步增量分布密度更宽、更低。图1显示了一个示例。
图 1.
在该图中,红色表示40步过程中增量概率密度的参考分布,其中下一步的反转概率等于50%。这里使用了5000个样本。白色柱状图显示了AMD股票40步的测量值(同样,5000个样本)。计算了5000次测量的垂直步数和通过40步价格的次数;结果显示为直方图。
换言之,使用40步的5000段来计算每个段垂直通过的步数,结果显示为直方图。如果我们以AMD股票(40步)为例,价格通过0个垂直步390倍;作为参考,价格必须通过626.85倍。
这张图表显示,市场价格在40个步骤中通过零垂直步骤的频率远低于下一步反转概率为50%的过程。因此,分析图表的趋势延续概率在50%以上,因此该股有可能延续趋势。换言之,在超过10点之后,价格更可能向同一方向再移动10点,而不是反转。
图 2.
图2显示了如何计算垂直步数的示例。在这里,我们计算这40个区块(步骤)的价格垂直传递了多少区块。在上图中,价格在40步中通过了7个垂直步长。然后我们分析了另外4999个样本,每个样品40步,并测量了它们的垂直运动。测量结果显示为直方图,其中X轴显示振幅,Y轴显示振幅命中数。
一旦发现一种模式,就需要对其进行分析。采用其他交易品种和区块大小尺度,以了解发现的模式是否仅适用于具有特定交易工具,还是否适用于任何尺度的所有交易工具。在这个例子中,我分析了30种货币对,在俄罗斯和美国市场交易的大量股票,十几种主要的加密货币和商品交易品种。每个交易品种都使用从一个点到数千个点的块大小的所有尺度。根据分析结论,所有交易工具在任何尺度下都倾向于具有趋势性结构,但趋势性随着尺度的增大而减弱。
我们发现了以下模式:市场可能在任何尺度上都有趋势,但在更高尺度上趋势强度减弱。这意味着,在垂直通过N个点后,价格向同一方向移动相同距离的概率超过50%。这种模式的优点是,它允许使用简单的趋势策略进行交易,即在每个向上步骤后可以打开买入头寸,在每个向下步骤后打开卖出头寸。
在此基础上,对所采用的方法进行了分析。也许这不是我们发现的模式,而是市场结构分析方法中的一个错误。在这种情况下,市场没有趋势,我们无法从上述假设中产生利润。我们需要从基础开始,了解我们发现趋势的区块是如何构建的。您可以使用在之前文章 "什么是趋势,行情结构是基于趋势还是横盘?" 中所提供的区块指标,在这种情况下,价格序列是按照每N个点的方式分配("切片")的。每当价格从之前的参考点通过了N个点后,就生成一个大小为N个点的新区块。如果区块的大小是10个点,价格的变化达到10个点的时候,就生成一个含有开盘价和收盘价的区块。然后再等待价格在一个方向上移动另外10个点,以此类推。乍一看,这似乎很简单,但区块是用1分钟烛形的收盘价建造的——这在以后会很重要。
图 3.
进一步分析后会发现两个问题:
因此,已经确定了两个问题,这会阻止您从检测到的模式中产生利润。以下内容有助于理解问题对最终利润的影响:
执行上述所有步骤是正确的,但一个更有趣的解决方案是编写一个简单的交易机器人并在实践中检查这一点。至少,在本文中查看现成算法的运算结果会更有趣。我们还可能遗漏了其他一些特定的功能。现在,假设我们已经计算了一切,得到了一个正面的结果,并希望创建一个基于此模式的交易算法。所以,让我们进入下一步。
在没有解释其本质的假设的情况下使用发现的模式是危险的。我们仍然不知道这种模式为什么存在,是否稳定。我们不知道它什么时候会消失,什么时候又会出现。当投资真正的资金进行交易时,必须能够跟踪某个模式的存在,并了解存款何时从最大值长期下降并很快恢复,以及模式何时消失,是时候停止机器人了。这正是把盈利机器人和亏损机器人区分开来的时刻。这就是为什么有必要提出一个假说来解释这种模式的存在。这一假设可以进一步转化为理论,用于调整算法的运行模式。
这种模式存在于所有被分析的工具和所有的尺度中,但在更大的尺度上趋势性降低。也许,上面提到的两个因素(价差和佣金)确实影响了这种模式。因此,我们提出两个论点:
这里有一个小提示:即使我们在小范围内消除了价格误差,市场确实是趋势性的,但它们的趋势只足以补偿价差和佣金。剥头皮算法的开发人员经常犯错误,因为他们不知道这个事实。他们的想法是:“我需要找一个佣金较低的经纪商,我的剥头皮机器人就会开始产生利润。如果我能减少差价和佣金的话,会有很好的效果。”但事实并非如此,因为小规模的市场趋势只能涵盖差价和佣金。如果价差和佣金较小,那么其他市场参与者就已经使用了这种模式,并将其摧毁。这并不是指所有的剥头皮算法-我只是指简单的交易机器人,不使用前端运行,市场深度和成交量分析和其他工作技术。
假设不仅分析了市场,而且所有其他市场都基于趋势。但为什么所有的市场都基于趋势呢?
让我们从一个简单的问题开始:金融市场交易的利润来自哪里?由于参与者之间互相交易(即使你在场外交易外汇),你赚的钱和损失的钱加上经纪人的佣金是一样的。交易参与者相互买卖资产,每个人都在寻求利益。这意味着买卖双方都试图从交易中获得最大的利益。同时,买方认为买是有利可图的,卖方认为卖是有利可图的。其中一个明显错了吗?当买方将资产出售给第三方时,这两个机构都可以因此获利,但迟早会有一个交易对手亏损。因此,交易是基于这样一种想法,即一个交易对手在确定利润时会犯错误。
如果您不了解外汇市场的定价,我建议您首先阅读一篇题为 "莫斯科交易所衍生品市场的外汇定价原则"的文章。如果你知道基本知识,你就更容易理解这个想法。实际上,你在哪个市场交易, 如交易所、加密货币或外汇并不重要。定价的基本原理在任何地方都是一样的。但是,交易条件和分析可能性可能不同。
为了简单起见,让我们考虑价格序列形状的边界选项。价格图可能有两种相反的情况:线性无限趋势和正弦曲线。正弦曲线很方便,因为每个人都知道何时买卖资产。一个线性上升的图表也很方便:很明显,你需要不断购买才能产生利润。但这样的图表形式是不可能的,因为高点不会有买家,低点也不会有卖家。图1显示了一个当价格图表是正弦曲线,并且有适当的市场深度时的一个假定的例子。
图 4.
因此,如果价格图表是正弦曲线,那么就不会有人愿意在市场深度较低时出售资产,因为大家都知道价格不会走低。相反,每个人都会希望以最低价格购买这样的资产。由于没有人愿意出售该资产,因此不会执行任何交易,而且价格也无法沿着这样的轨迹移动。市场将开始寻找一个均衡价格,这将是适合买方购买和卖方出售。
线性上升的图表也会出现类似的情况。既然大家都知道资产价格一直在上涨,就没人会卖,如果没人卖资产,那就没人能买了。这意味着这样的价格图也是不可能的。所以,买家必须买,卖家必须卖,才能有一张价格表。一定有人在确定收益时犯了错误。然而,由于每个参与者都寻求利润最大化,并且不想犯错误,所以图表应该比正弦图更复杂,比线性升序图更复杂。
有效市场中的价格图应该在线性图和正弦图之间的中间位置。它的结构必须足够复杂,这样买卖双方的利润就不明显了。正弦图和线性图的特点是低熵。熵必须更大,以提供执行交易的可能性。市场参与者越多,他们越“聪明”,价格图表就越倾向于最大熵。
如果你考虑香农熵,那么它在均匀分布上取最大值。市场过程不是一成不变的,而是更像一个正常的过程。然而,正态分布可以从均匀分布得到,反之亦然。此外,我们使用具有固定步长的区块。换句话说,最大熵是一个没有规律的过程的特征,在这个过程中,下一个运动的方向变化概率为50%。但我们的分析表明,市场图的方向变化概率不同于50%,这意味着存在记忆,熵不是最大值。
市场将争取最大熵,但只有当参与者数量无限(流动性非常高)或参与者无限“聪明”时,才会达到这种状态。这里的“聪明”指的是确定复杂模式的能力。“更聪明”的参与者可以识别更复杂和不太明显的模式。一个无限“聪明”的参与者可以识别和利用绝对所有的模式。使用该条件(无限多个参与者或无限聪明的参与者)是因为无限多的参与者将具有无限的计算能力,并且他们将能够使用暴力识别所有模式,即使他们不是非常“聪明”。
这个假设解释了为什么金融工具价格图表变得越来越复杂。在20世纪初,人们可以通过简单地使用MA获利。现在,随着算法交易的发展,参与者变得更加“聪明”,模式变得更加复杂,熵增加,在市场上赚钱变得更加困难。“变得更聪明”是什么意思?他们有更强大的计算能力,更快的决策能力,更快更准确地确定他们的利益的能力,以及发现更复杂模式的能力。
但我们发现了一个非常简单的模式。这可以用资本不断流入市场来解释。市场参与者并没有获得全部利润,出现了一个趋势成分。资本流入与货币创造有关。各国不断发行本国货币,保持一定的通货膨胀水平。这种货币发行可能创造了趋势成分。
从解释这种模式的假设可以得出以下结论:
在上一节“发展一个解释这种模式存在的假设”中,我们提出一个假设只是为了解释一种模式的存在。假设并非100%正确,可能包含不准确的地方,因为这只是算法开发过程中的一个步骤。这是一个如何在解释模式时发展逻辑推理的例子。这种做法是为了尽量避免市场迷信。例如,如果我们有这样一个模式:“如果RSI(随机振荡/MACD/Elliott波/你的变型)进入超买区域并形成一个模式,然后卖出”,那么你应该问自己:“为什么这会起作用?”以及“这起作用的根本原因是什么?”
我们将粗略地检验假设,而不深入细节,同时我们需要了解结论是否与实际数据相关。我们可以比较不同交易工具的趋势性程度。根据这一假设,积极发展的、具有投资吸引力的交易工具应比发达国家或投资吸引力较弱的交易工具具有更强的趋势性。根据第二个假设,交易一项资产的参与者越多,流动性就越高,趋势性就越差。让我们简单地检查一下这个假设。
在文章“什么是趋势?市场结构是基于趋势还是横盘?”的结尾,我们比较了几种资产的趋势程度,包括EURUSD、AMD、AAPL等。让我们以4个交易品种为例进行类似的比较:
图 5a.
图 5b.
图 5c.
图 5d.
从图5可以看出,欧元兑美元的趋势性程度较低=1.068,Appl股票的趋势性程度较高=1.3,Sberbank的趋势性程度为1.168,即低于Appl,但高于EURUSD。AMEZ 股票是横盘结构,它们的趋势性程度低于 1.
可以得出以下结论:高投资吸引力增加趋势性程度,高流动性和大量参与者降低交易程度的假设与实验数据并不矛盾,这意味着该假设可以在未来使用。
开发交易算法
让我们为找到的模式开发一个交易算法。模式很简单,因此交易算法也很简单。交易将以区块为基础,这意味着M1烛形图应转换为每块N点的区块图。区块构建算法将集成到交易机器人中。交易算法将直接遵循确定预期收益的公式:
m=(P(tp)*tp)-(P(sl)*sl)
其中:
其工作原理如下:
由此产生的机器人附在下面。这个机器人有更多的功能,但我们不会在本文中探讨它。
算法的操作将在我们分析的那些资产上进行测试。之前,我们预测了算法应该在哪些资产上盈利。现在,让我们检查算法如何在这些资产上工作,以检查假设的正确性。
让我们用 EURUSD 进行测试。这个交易品种有一个微弱的趋势,也许,这可能不足以涵盖佣金和价差。最后的算法操作如图6a和6b所示。
图 6a.
图 6b.
测试时间为2018年1月1日至2020年7月28日,在M1时间段内,使用真实点模式进行。参数没有得到优化,因为我想说明的是,没有必要为每个货币对优化一个完全准备好的算法。我们将改变块大小,最小块大小和手数,努力使利润大大超过佣金。
图7.
对于EURUSD,正如预期的那样,点差和价差拿走了我们本应从资产趋势中获得的所有利润。因此,预期收益为每笔交易-1.67美元。根据区块大小,手数动态变化,平均手数为0.078。让我们试着了解损失从何而来。机器人记录有关点差的信息。开盘和收盘时的平均点差为0.00008。我们支付了 $159.76 的隔夜息, 开启了 614 个仓位。所以,平均每个仓位的隔夜息是 159.76/614=$0.2602.
如果平均点差是 0.00008 而平均手数是 0.078, 1 EURUSD pip 手数为 0.078 就等于 $0.078, 所以点差使我们花费了 0.078*8=$0.624. 佣金的总计就等于 $0.624+$0.2602=$1.104。如果我们在每笔交易中都损失了佣金,那么预期的回报将是-1.104美元,但它是1.67美元,比原来多了0.566美元。在设置中,最小块大小被设置为0.002,因此平均每手0.078可以赚15.6美元。如果余额图是一个随机游走,而区块大小总是最小的,那么让我们粗略估计余额的减少。算式是 15,6*(614^0.5)=386.55$. 现在,将每笔交易的平均佣金乘以交易数量。1.104*614+386.55=$1064.406.
该值等于1064.406美元,这意味着如果头寸在正确方向打开的概率为50%,并且每个打开的头寸都支付佣金,余额图的平均回撤。实际上,我们得到了1027.45美元的亏损,接近这个价值。我们可以得出这样的结论,我们是亏损得,因为我们的算法的预期收益对于EURUSD是零。
让我们看看更具趋势的AAPL股票的结果。结果如下图8所示。
图 8.
结果稳定为正,预期收益为19.33。这是一个使用动态手数(根据块大小设置)的测试,块大小随波动性而动态变化。让我们看看如果我们不改变手数会发生什么。图8中的平均手数为39。让我们使用固定手数39并检查图9中的结果。
图 9.
结果并没有太大变化,除了最后一次获利交易和一些增加的资金回撤。苹果公司股票的区块规模随着时间的推移而增长,一个固定地段的较大区块可以显示出较大的利润,但减少的概率可以成比例地增加。
接下来,让我们看看如果只允许卖出头寸会发生什么。结果如图10所示。
图 10.
仅售模式显示出较小的损失,但图5b显示了相对于零的分布不对称,因此这一结果是可以预期的。接下来,让我们检查只购买模式。结果如图11所示。
图 11.
如图11所示,只买模式显示了正面的结果,但不如买卖模式好。由于股票有交替上升和下降趋势部分,买入和卖出头寸的使用使余额图更加均衡。
让我们来看看算法是如何在其他正面发展的公司股票上工作的。让我们从 AMD 开始。测试将在2018.06.01至2020.07.28期间进行,因为经纪商提供从该日期开始的1分钟历史记录。此测试是使用动态批量与买入和卖出仓位。结果显示在图12中。
图 12.
对于AMD股票,该算法显示了一个稳定的正结果,与基于图1所示分布的假设相匹配。现在,让我们看看另一家正在积极发展的公司,特斯拉。算法显示在图13中。
图 13.
该算法对特斯拉的股票显示出稳定的结果,因为这家公司和以前的公司一样,具有很高的投资吸引力和巨大的增长潜力。
为了进行比较,让我们用俄罗斯领先企业之一的Sberbank股票来测试这个算法。显示相同的测试周期。佣金相当于Otkrytie经纪人提供的佣金=每手0.057%。测试是在没有杠杆的条件下进行的,使用了实时点模式。测试结果显示在图14中。
图 14.
尽管Sberbank不如上述资产具有吸引力,但由于流动性较低,该股仍采用如此简单的算法呈现趋势。
所有设置和测试报告都附在下面,因此您可以详细分析它们。
通过分析创建的交易算法的行为可以得出以下结论:
思路以及开发的作者是Maxim Romanov, EA交易的代码是由 Sergey Chalyshev 根据先前提供的版权书写的。
本社区仅针对特定人员开放
查看需注册登录并通过风险意识测评
5秒后跳转登录页面...
移动端课程