下载MetaTrader 5

您喜欢这篇文章?
分享或-
发布链接

使用MetaTrader 5新的可能性

技术分析:我们分析什么?

29 八月 2013, 09:11
Victor
0
1 395

介绍

如今,很容易针对货币价格波动进行交易。仅需在您的计算机上安装 MetaTrader(MT)客户端软件,并在交易中心开户后,您就可以开始交易了。当然,大家都希望通过交易获利。本文汇集的来自全世界的交易经验将会帮助我们。

MetaTrader 包含了几乎所有流行的技术分析工具,它们都以指标形式存在,在互联网上,您也可以找到很多最受欢迎的作者写的关于这一主题的出版物。

不幸的是,即使您严格遵循那些最受人尊敬的技术分析大师们的指示和建议,您依旧不能每次都获得您期望的结果。这是为什么呢?本文不打算给出这个问题的答案。但是,让我们试着去理解,我们如何分析?


我们如何分析?

现代金融市场是一个非常敏感的有机体。几乎世界上发生的任何事件,都会在某种程度上产生影响。海量的各种因素持续影响市场,结果造成行情的不断波动。在进行市场技术分析时,这些确切的不断变化的货币行情,为研究提供了充足的对象。

假设我们的计算机通过 MetaTrader 的客户终端连接到交易中心。在此情况下,客户端接收到的是离散形式的行情数据 - 独立的即时价格(ticks)。我们知道,如果采样频率高于原始连续信号最大频率范围的 2 倍,就可以将原始连续信号还原。我们并不需要在此阶段恢复原始连续信号,但是,如果在我们的例子中,它在理论上是可能的,这意味着在采样的过程中的原始信号不失真。

不幸的是,即时价格的采样频率为可变频率。即时价格(ticks)抵达客户端时,间隔大概从半秒种到几分钟。我们不知道动态采样频率的算法,此外,我们也不知道原始信号的最大频率范围。所有这些都阻碍我们评估采样过程中的失真。

如果仅假设这样的量化方式不会造成原始连续信号(市场货币报价)的过渡失真。基于这一假设,并考虑事实上,采样频率可能达到 2 Hz,我们得到的估算(近似)的原始信号频率范围的上限是 1 Hz。

当采样频率可变时,信号处理变得非常困难,但实际上,依据客户端的即时价格来分析市场行情是非常罕见的。大多数人喜欢使用 30 分钟或更高的时间框架。

如果您在 MetaTrader 客户端选择折线图模式,您将会看到一列固定采样间隔的走势线,等同于当前时间框架的值。让我们跳过一些细节,考虑该序列是由客户端收到的即时价格构成。

之后,如果我们每 30 分钟从输入序列中选择一个即时价格,结果我们将获得固定采样频率为 1/1800 Hz的序列,这便是 30 分钟时间框架的走势线序列。其它时间框架的走势线序列都以同样的方式构成。很显然,这样形成的走势线序列,几乎等同于将原始连续信号以所选时间框架的间隔进行量化后的结果。

行情描绘的构成

图 1:行情描绘的构成

上述讨论的结论是:技术分析的对象是持续变化的市场行情,而我们可获得的是离散的即时价格(ticks)和具有固定离散频率的走势线(timeframe)。其原始行情频谱介于 0 Hz至 1 Hz。

由于 MetaTrader 中最小的时间框架 M1 的周期等于 1 分钟,基于我们的模型,将原始行情信号以 1/60 Hz频率离散化以便构成新的走势线序列。这个采样频率低于原始信号(2 Hz)频谱上限两倍值的 120 倍。这种信号转换肯定会导致不可逆转的失真。图 2 示意出这种失真的本质。

频谱重叠
图 2:频谱重叠

假设原始信号的频谱如图 2 中所示的第一图,其上限等于 Fh。如果采样频率 Fd1 高于 Fh,则量化之后的走势线序列有一段非重叠的频谱。这样的序列是对原始信号比较合适的离散结果。

若采样频率降于Fh两倍,将导致结果序列的频谱重叠,并且它意味着与原始连续信号不再保持一致。图 2 演示了一个例子,采样频率 Fd2 稍低于 Fh 的两倍。正如之前已经提及的,M1 时间框架的采样频率低于原始信号可能出现频率的 120 倍。

图 2 中,对低频产生的序列导致的多频谱重叠,和更高的失真情况进行了比较。当我们切换到更大的时间框架,采样频率变得更低,失真水平增加。实际上,不同时间框架内的走势线序列并非彼此镜像,而且也不能正确显示原始行情。

因此,当我们在不同时间框架上使用不同的指标和系统来分析一个失真的行情时,在这种​​情况下,技术分析显然十分复杂,并且在大多数情况下,使用严格的数学方法就变得毫无意义。

例如,通过离散傅里叶变换得到的任意时间框架的频谱,都不等同于原始行情信号的频谱。它是一个在原始行情频谱基础上反复覆盖与偏移的频谱。频谱的重复覆盖,也可能导致在所得到的序列中形成分形结构。

量化评估原始行情的失真度超出了本文的范围,在此我们只是试图证明它的存在。

我们随机截取英镑兑美元M5行情的序列片段作为原始信号。图 3(绿线)表明该信号经过低通滤波器滤波,它类似于 MetaTrader 中使用周期为 45 的均线效果。

接着,从原初序列中每隔 15 抽取一次走势线,并组成一个 M75 时间框架的序列(MetaTrder 4 中不存在)。因此,将原始序列简单减薄,我们就已经降低了其 15 倍的采样频率。

图 3(红色线)展示了使用低通滤波器滤波后得到的信号,它类似于周期为 3 的均线效果。过滤器的周期降低成比例地降低频率,同时保持低通滤波器的截止频率不变。

英镑兑美元行情过滤

图 3:英镑兑美元行情过滤

如果我们假设降低离散化的频率时该信号不失真,那么它的滤波结果应该与原始信号的滤波结果相似。图 3 中清楚地表明 M5 序列和 M75 序列经处理后的曲线之间的差异。最有可能对失真造成影响的是来自于降低采样频率时产生的重叠频谱。

也许,使用一个低通滤波器来测试频谱的叠加所造成的失真不是最佳方式,但展示的例子表明,即使您用简单的分析方法,它也可以影响实际行情。

使用不同时间框架的序列可以方便的观察行情,而且,如果我们用数学方法分析它们,那么切换到较大的时间框架,由于可用于处理的走势线减少,则计算量相应减少。

如果不考虑计算的量级,那么切换到一个较大的时间框架是没有意义的,因为它只会增加原始信号失真。从理论上讲,最佳方法是分析来自客户端的即时价格。如果我们有历史即时价格,然后用插值法(例如,样条),我们就可以切换到某个固定采样频率的序列,并选择较佳的一个。

以行情失真角度来看,若无数据表明这一点,那么使用较小的 M1 时间框架更有利于分析。若有必要,我们可以减少这个序列的采样频率,但在这样做之前,我们应该限制其频率高于离散频率的一半。

行情分析的结果,其失真的影响程度,强烈取决于分析算法的敏感度。在某些情况下,可能这种失真不会对结果产生显著影响;然而,对于正确解读结果,您应该记住它的存在。

以上篇幅中的一系列假设,都在提请注意频谱重叠引起的失真。事实上,有许多因素可以阻碍我们使用严格的数学方法在 MetaTrader 中进行数字处理 - 行情数据之间缝隙的存在,缺失柱线,以及 MetaTrader 中构成时间序列的方法,它按时间接收即时价格,即使该价格明显与该时刻的行情不协调 。

还有一个问题,与客户端的行情描绘相关。我想您要注意,到现在为止,我们没有提到任何有关显示 K线(蜡烛)模式。

现在有很多专门分析 K线的文献,他们考虑根据不同的 K线形状或它们的组合形态的基础上,来预测行情的走势。我们不怀疑这些方法的有效性,但让我们看看,试图以数学分析任何时间框架内的“最低价”和“最高价”时,我们将面临什么?

正如您所知道的,“最低价”和“最高价”与所选时间框架内的最小和最大的价位是相等的。我们不知道这些价位何时会到达。 “最低价”和“最高价”不会明确的与时间轴绑定,我们仅知道在选定的时间框架内的某个时间点,行情最终会抵达这些价位。无论是“最低价”或“最高价”,在序列中周期是变化的,这是个随机值,范围从零至序列的整个时间框架。

对于数字信号处理,诸如“最低价”和“最高价” - 作为时间的函数 - 从数学方法的角度来看,是相当特殊的。当然,我们可以免费使用标准算法处理这些序列,但如何解释得到的结果呢?例如,对这些信号滤波时,一个简单的一阶低通滤波器的截止频率是多少呢?

使用为固定采样频率序列开发的算法,通过数学工具,来处理随机改变采样频率构成的序列,将会在分析结果中产生不确定的“最低价”和“最高价”,因此,用数学分析序列“最低价”和“最高价”,并预测行情的走势,必须非常的小心。

每根 K线不仅由“最低价”和“最高价”组成,而且还有“开盘价”和“收盘价”,它们一起构成了一根 K线。让我们看看,一根 K线是如何明确描述时间框架内的一个时间段的行情。 

K线的格式
图 4:K线的格式

图 4 显示了三个完全不同的序列,但结果形成相同的一根 K线。正如您所看到的,通过这根 K线,几乎不可能确定这个时间段内行情的走势,并且“最低价”和“最高价”,没有与时间绑定。

这样的例子有无数。也许,行情以 K线形式描绘是一个方便的工具,可以快速而直观地评估走势,但K线的“最低价”和“最高价”,及形成的阴影部分对数学分析并无大用。 “开盘价”和“收盘价”稍微好一点,但要面对的一个问题是,这些序列的发生时间并不确定。

例如,“开盘价”,我们采用分析期间内的第一个即时价格;如果该周期内没有即时价格,则 K线不会形成。此外,当使用“开盘价”和“收盘价”,我们不应该忘记频谱重叠产生的错误。

这里有个结论,最好的办法是从最小的时间框架,使用数学方法分析行情“收盘价”。其它附加的“最低价”,“最高价”和“开盘价”,是一根 K线的组成部分,但它们很大可能不会携带任何新的信息。

为了分析行情,您可以尝试使用当前柱线的开盘价与前一根柱线的收盘价之和的一半(即除以 2),来替代当前柱的收盘价。或许,这种方法可以降低尚未确定的“开盘价”和“收盘价”对分析结果产生的不良影响。


结论

本文中描述的行情描绘方法已经广为传播。不仅在 MetaTrader,在其它平台也同样应用。新的 MetaTrader 5 中可以观察到相同的时间框架,柱线和 K线。我们可以说,这是传统的行情描绘方式,几乎可以肯定的是,它有一些优势,但以较严谨的观点来看,用户得到的用于数学分析的行情是失真的。

计算性能的增长,允许使用越来越复杂的数学算法进行技术分析,这些算法往往对轻微的误差非常敏感。一个很好的例子是推断功能的算法。尽管所有技术指标的文档都不包括任何有关在时间框架之间切换时可能产生误差的警告。

这篇文章的主要目的是提醒技术指标和交易系统的开发者注意以上事实,当使用一个失真的市场行情数据进行动态分析时,他们应该考虑这些失真对分析结果的影响,除非影响是无关紧要的。

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
原文地址: https://www.mql5.com/ru/articles/173

将指标应用至其他指标 将指标应用至其他指标

在编写使用 OnCalculate() 函数调用的简短形式的指标时,您可能会忽略这样一个事实,即指标的计算不仅可以通过价格数据完成,还可以通过其他指标(无论是内置指标还是自定义指标)的数据实现。是否要改进指标以使其可以正确应用至其他指标的数据?在本文中,我们将回顾修改所需的所有步骤。

MQL5:创建自己的指标 MQL5:创建自己的指标

什么是指标?指标是我们希望以便利方式在荧幕上显示的一组计算值。这一组值在程序中以数组表示。因此,创建指标意即编写用于处理数组(价格数组)的算法并将处理结果记录在其他数组(指标值)中。本文通过描述“真实强弱指数”(True Strength Index) 的创建说明了如何在 MQL5 中编写指标。

技术分析:我们如何分析? 技术分析:我们如何分析?

本文简要介绍笔者对于指标重绘,多时间框架指标和日本蜡烛图(K线)的一些观点。本文内容只论及一般特征,不包含编程细节。

MetaTrader 5终端策略测试器中的订单生成算法 MetaTrader 5终端策略测试器中的订单生成算法

MetaTrader 5 通过EA交易程序和MQL5编程语言使我们可以在内嵌的策略测试器中模拟自动交易,这种模拟称为EA交易程序的测试,它可以在实现中用多线程优化,也可以在多个设备中同步进行。为了提供完整的测试,我们需要基于可用的分钟历史来生成订单。本文提供了这种算法的详细描述,即在MetaTrader 5客户终端中怎样通过历史生成这些订单。