下载MetaTrader 5

用于预测市场价格的通用回归模型

8 一月 2014, 09:53
Yousufkhodja Sultonov
0
1 204

简介

市场价格是由于需求和供应之间缺乏稳定平衡而形成的,反之,又取决于各种各样的经济、政治和心理因素,由于性质以及影响原因的差异,直接考虑这些因素非常困难。

然而,必须能够预见并以一定程度地精确性来预测将来的市场价格行为,以便对当前情形下的货物的买卖(包括货币或股票),做出正确的决策。可以使用来自各种来源的、以一种或另一种方式处理的、不同性质的大量信息来解决这个问题。

使用了 4 类分析 /1/,依据研究者的目的、资格或倾向来制定有效的市场行为战略和战术:

  1. 依据市场价格考虑了所有能够对其产生影响的因素这一断言进行的技术分析。它采用先进的数学技术 /2/;
  2. 处理不同经济因素对市场价格的影响的基本分析。它实质上是采用宏观经济模型 /3-5/;
  3. 被对主要市场指数和指标的认识、预测它们的将来行为的方法所证实的直观分析,其结果不能通过将逻辑规则和数学方法直接应用到初始前提来证明,但是通常仍然费解地成为事实;
  4. 依据单独对每个客户就市场条件进行心理分析,以及作为一个整体导致各种成功的心理分析。

有关问题的认知状态

任何技术,包括新提议的市场价格预测新方法,在我们看来,都应考虑,并且在各种环境的幸运组合中,依据三个公理解释客观存在的规律,这三个公理被称为道氏理论 /6,7/,可以如下简单表述:

  1. 市场价格依据供求规律考虑所有影响因素,并且具备一段时间内的市场价格变化数据以对其进行预测便已足够;
  2. 市场价格与时间的依赖性与趋势有关,趋势主要是 S 形,其高点和低点通过水平(平坦)线连接的称为横摆趋势,或者没有趋势;
  3. 客观存在市场价格变化图形在一段时间内保持不变,称为“历史重演”或“它们过去管用,现在管用,将来也管用”的原则。

然而,在市场价格时间序列(例如汇率)的动态平静阶段之后会是非常复杂的阶段,以至于让人产生这种印象:完全不可预测的混乱在自组织过程中再次带来秩序。

但是在某一点,稳定性削弱的动态系统再次产生混乱,使我们有理由相信经济指标时间序列的性质是混合的。这意味着市场价格时序系列在某一点是确定和可分析的,但是在另一点就不能可靠地预测,并且遵循正态分布规律 /8/,在另一点用作一个随机变量。

因此,科学世界仍然缺少有关市场价格变化性质的共同意见,这阻碍了我们寻找充分定义它们并可在实践中运用的依赖性。


黑箱单腔模型的瞬态函数

由于过程的模糊性,我建议我们首先看一看黑箱单腔模型,该模型有时有助于解决正在讨论的问题 /1/ 并且应用物质平衡方程。

详细阐述以上公理之后,让我们假定平衡市场价格只在受到外力 D(t) 的影响时才改变,而外力的量和值将在与价格相同的维度上测量。

我们还假定市场价格 P(t) 随时间 t 的变化,从指定外力的影响开始,依据尚未知晓的某些规律从零值持续增大,试图在无穷大时达到值 P(∞) = D0。换言之,视影响力的性质和符号而定,D0 将表示市场价格的有限增量或减量。

这也暗示 D(t=0) = D0。我们进一步假定在无限小的时间范围 dt 内,影响力下降的值为 dD(t),与时间 t 时的力 D(t) 成正比:


据此,我们得出时间 t 上的指数依赖性 D(t),如下所示:

                                                                                                                  (1)

其中:                                                                                                                                       

t 是从失稳力开始影响时计起的时间,采用时间序列的单位:秒(分钟、小时、天、周、十年、月、年);

τ(希腊语的第十九个字母,发音“套”)是与处理时间常数:秒(分钟、小时、天、周、十年、月、年)成正比的系数。

让我们现在假定市场价格 P(t) 的变化速度 V(t) 与 D(t) 和时间 t 的值都成正比:

其中:                                                                                                                                    (2)

k 为比例系数,其量纲为 1/(time)^2;

β = k*τ*D0 是比例系数,其量纲为市场价格变化速度。

在指定时间 t 时价格在每单位时间的绝对增量或减量,表示为 H(t),在数字上等于 V(t):

H(t) = V(t) = β*m

毫无疑问,通过整合整个时间 t 范围内的 H(t) 变化,我们将获得在从其失去稳定开始计起的时间 t 时的市场价格 P(t) 的总变化值:   

其中:                                                                                                                    (3)

因为以 (3) 为基础,在 t = ∞  s = 1,时,我们得出以下结论:

P(∞) = β = D0

或者: β = D0/τ;

将 β 的上一等式与我们得出的结果相比,我们又得出以下结论:

   k = 1/τ^2;

现在,以下关系成立: 

         H(t) = D0*m;

         P(t) = D0*s。

因此,如果已经确定了系数 τ 和 β,则可以在价格变化的任何阶段(包括早期阶段),估计和预测价格变化极限值 D0。然而,这些说法仅在满足物质平衡条件时才成立:

D(t) + H(t) + P(t) = D0                                                                                                                                     (4)

或:  

   因此应满足正态化要求:

      ℓ + m + s = 1;                                                                                                                                          (5)

   让我们使用关系 (1-3) 验证此事实:

     

精确满足物质平衡条件 (4) 和正态化要求 (5) 表明我们做出的假定和提出的关系是成立的。


多腔模型的瞬态函数 

同理,以类似的方式考虑一个由 n 个腔组成的黑箱多腔模型,我们得到 D(t)、H(t) 和 P(t) 函数的以下关系:

  • D(t) = D0 * L;
  • H(t) = D0 * M;
  • P(t) = D0 * S;

其中:

eq6                                                                                                         (6)

现在,我将其称为“两参数累积指数分布函数”

eq7                                                                                                  (7)

是一种伽玛分布的概率密度函数,或者埃尔朗分布的概率密度函数;

eq8                                                                                                        (8)

是一种伽玛分布的累积分布函数,或者埃尔朗分布的累积分布函数,

  •  t/τ、n 是分布参数;
  • 1 是值为 "true" 的布尔表达式;
  • 0 是值为 "false" 的布尔表达式;

集分 (8) 可以证明:

eq8-2

或:         

eq8-1

因此,依据 (6-8),本例也精确满足正态化要求:

                                    L+M+S = 1;                                                                                                              (9)

我称 L 函数为“将来的函数”,因为将来的市场价格取决于其值;称 M 函数为“现在的函数”,因为它决定指定时间单元内市场价格的变化;称 S 函数为“过去的函数”,因为自价格失稳以来的整个期间内所取得的市场价格水平取决于此函数的值,这与瞬时概念并不矛盾,并且大大扩展了我们对所讨论的问题方面的了解。

通过将 n = 1 代换到 (6-8),我们可以看到 L、M 和 S 函数分别变为 ℓ、m 和 s 函数,因此出于预测目的,我们将仅考虑 L、M 和 S 函数作为此类函数的最常用案例。


依据展现的瞬态函数开发用于预测市场价格的通用回归模型

将按下述方式表示市场价格水平 P(h) 与从观察开始计起的时间 t 之间的依赖性:

在单腔模型中:

eq10a  (10a)

在多腔模型中: 

eq10b  (10b)

其中:    P0 是在其失稳前的价格水平,即时间 t = 0 时。

使用从其在市场中失稳时计起的实际市场价格值确定参数 n 和 τ 以及系数 β,由此分析每个单位时间 t 的市场价格变化 f,该值可用作 (10b) 的导数的值。可以看到,接受此假定造成的误差微不足道,仅是价格变化值的万分之几。接受此假定大大促进了确定以上参数和 β 系数的进程。

从分析 S 函数开始,现在我们能够真正地继续 M 函数的分析:

eq11                                                        (11)

将 (11) 的两部分都除以 t^n,并且对获得的关系取对数,则我们在半对数坐标中得到一条直线的方程:


现在,如果到对应时间点 t 的函数 f 的值是已知的,则可以通过以下方程确定参数 n 和 τ,以及系数 β:

                                                       (12)

                                                                                                        (13)

eq14                                                                                                                          (14)

其中:

到对应时间点 t 的函数 f 的值以及时间是依据从市场价格失稳开始计起的时间点 һ0,һ1,…,һк 时的实际市场价格值 Р0,Р1,…,Рк,采用在间隔中间值处的数字微分和积分确定的:

f1 = (P1 - P0)/(һ1 – һ0);

f2 = (P2 – P1)/( һ2– һ1);

f3 = (P3 – P2)/( һ3– һ2);依此类推;

t1 = (һ0 + һ1)/2;

t2 = (һ1 + һ2)/2;

t3 = (һ3 + һ2)/2;依此类推。


模型修正与调整 

作为一种回归模型,使用实际数据对方程 (10a) 和 (10b) 进行的实测表明应依据以下方程对 Р(0) 和 D0 的值进行修正:

                                                         (15)

                                                                                                     (16)

其中:Sf 和 Sr 分别是实际和理论曲线的面积;

∑Pf = P0+ P1 + P2 + …+ Pk 是实际价格值之和;

eq17                                                                                                      (17)

i = 0,1,2,......k; 

k>2 是为其确定价格变化的时间间隔的数量;

b 是确定实际数据的趋势方向的线性回归方程  的系数。

现在,用于预测市场价格 P(t) 的回归方程 (10b) 的最终形式如下:

eq18                                                                                           (18) 


模型测试

已经得出,用此方式计算出来的市场价格值 P(t) 以及在下面的 Forex 市场示例中提供的实际价格值 Pf 始终完全且精确地满足物质平衡条件:

∑ P(t) = ∑ Pf。                                                                                                                                                                    (19)

所研究的参数(特别是市场价格)的实际值与理论值之和,在任何变量值(尤其是时间)时是绝对精确匹配的,证明在函数输出时的计算、转换和接受的假定是正确的,可以表示所建议的回归模型的通用性。

下图显示了以指定方式使用方程 (18) 处理 Forex 市场的实际数据(1 分钟时间框架)的结果,其中,可以注意到在 EUR/USD 报价的实际值 (Pf)(带红点的黄线)、理论预测值 (P1)(蓝线)和出于计算目的未考虑的实际将来值 (Pff)(带红点的蓝线)之间存在令人满意的一致性。

                                                                      
     

总结

我们已经提议并找出了三个分别描述三个动态瞬时的函数,这三个函数被定义为伽玛分布的不同变化,用于依据从其失稳开始计起的过去、现在和将来的时间确定所研究的参数(尤其是市场价格)的行为。

在对指定过程进行分析之后,提出了一个用于预测市场价格的通用回归模型;它可作为比如各种用途的市场指标、优化交易者活动的 EA 交易、自动化交易系统的开发基础,甚至还能用于开发交易机器人 - 使某人收益的自行交易的机器人交易员。

注:本文中的所有关系、公式以及主要假定和结论都经过确定、阐述、介绍,并且在公开出版物中首次发布。


参考文献

  1. A. E. Kotenko. On Methods of Technical and Fundamental Analysis in the Forex Market Study.Electronic Magazine "INVESTIGATED IN RUSSIA", http://zhurnal.ape.relarn.ru/articles/2003/151.pdf
  2. V. N. Yakimkin. Forex Market – Your Way to Success, М., "Akmos-Media", 2001.
  3. V. N. Likhovidov. Fundamental Analysis of the Currency Markets:Methods for Prediction and Decision-Making.Vladivostok, 1999.
  4. M. K. Bunkina. A. M. Semenov. Principles of Currency Relations, М., Urait, 2000.
  5. Jeffrey D. Sachs, Felipe B. Larrain. Macroeconomics in the Global Economy.М., Delo, 1996.
  6. Rhea, Robert.Dow Theory,- New York; Barrons, 1932.
  7. Greiner, P. and H. C. Whitcomb:Dow Theory, New York:Investor’s Intelligence, 1969.
  8. O. S. Gulyaeva. Foreign Exchange Risk Management on the Basis of Currency Rate Pre-Prediction Analysis Using Fractal Methods. Ph.D. thesis, Moscow-Tver, TvGU, 2008. 

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

使用非托管导出将 C# 代码运用到 MQL5 使用非托管导出将 C# 代码运用到 MQL5

在本文中,我介绍了在 MQL5 代码和托管 C# 代码之间进行互动的不同方法。我还提供了几个例子来说明如何针对 C# 封送 MQL5 结构以及如何在 MQL5 脚本中调用导出的 DLL 函数。我相信提供的例子能用作以后研究用托管代码编写 DLL 的基础。本文也为 MetaTrader 使用已经在 C# 中实施了的多个库打开了大门。

随机游走和趋势指标 随机游走和趋势指标

随机游走和实际的市场数据看起来非常类似,但是它有一些重要的特征。在本文中,我们将通过用掷硬币游戏进行模拟,讨论随机游走的特性。为了研究数据的特性,开发了趋势指标。

使用带 ENCOG 机器学习框架的 MetaTrader 5 指标进行时间序列预测 使用带 ENCOG 机器学习框架的 MetaTrader 5 指标进行时间序列预测

本文介绍如何将 MetaTrader 5 连接到 ENCOG - 高级神经网络和机器学习框架。它包含一个基于标准技术指标的简单神经网络指标和一个基于神经指标的 EA 交易的描述和实施。本文还附带了所有源代码、编译后的二进制文件、DLL 和一个可仿效的经过训练的网络。

统计估计 统计估计

对某个序列的统计参数进行估计非常重要,因为大多数数学模型和方法均基于不同的假设。例如,正态分布规律或离差值(或其他参数)就是这样。因此,在分析和预测时间序列时,我们需要一个简单方便的工具,用于快速清晰地估计主要统计参数。本文简要说明了一个随机序列的最简单统计参数,以及其可视分析的几种方法。本文还说明了如何在 MQL5 中实现这些方法,以及使用 Gnuplot 应用程序对计算结果进行可视化的方法。