贝叶斯回归 - 有没有人用这种算法做了一个EA? - 页 45

 
http://www.quantalgos.ru/?p=1898,也许这个主题的作者会受益......
Предсказание чего угодно с использованием Python | QuantAlgos
  • 2016.03.12
  • www.quantalgos.ru
Небольшая статья с ресурса http://www.talaikis.com/ о построении простой стратегии, использующую наивный байесовский классификатор при создании процесса возврата к среднему. Весь код в статье приведен на языке Python. Это достаточно большая область исследований, но расскажем все очень кратко. Мы попытаемся найти взаимоотношение между...
 
Ilnur Khasanov:
http://www.quantalgos.ru/?p=1898,也许这个主题的作者会受益...
在回到平均水平时做了类似的事情,方式略有不同。它是有效的,但它不能在真实的情况下发布。有些问题的解决方案是绝对不明确的。该方法的主要缺点是--你必须不断证明你是正确的,而不是市场。:)
 

伪随机数发生器。(PRNG)

使用上面建议的极坐标方法,我将МТ4 PRNG转换为具有正态分布随机值的PRNG。

为了直观地检查代码的正确性,我将结果投射在价格图表上。

这是基本PRNG在1000次调用后显示的情况。直方图矩形的区域与生成的符合垂直刻度的那个范围的随机数的数量成正比。


现在,使用该方法的公式对这几千次点击进行转换,结果是

一个完全足够的铃声。

 
Yuri Evseenkov:

使用上面提出的极坐标方法,将MT4 PRNG转换成具有正态分布随机变量的PRNG。

一辆远在mql4.com的旧自行车。
 

对应用贝叶斯公式的尝试。再一次。

任务。使用贝叶斯定理,确定尚未到达的刻度线的哪个值最有可能。

鉴于。时间序列x,y。

y=ax+b 从最后一个刻度到未来的直线。

P(a,b|x,y)=P(x,y|a,b)*P(a)*P(b)/P(x,y);(1)贝叶斯公式。

P(a,b|x,y)是系数a和b对应于未来刻度的x和y坐标的概率

我们需要找到这样的a和b,使这个概率(更正确地说是概率测量)是最大的

P(x,y|a,b) - 让我们把按价格水平分布的真实直方图作为一个似然函数。该函数由一个二维数组(矩阵)定义:价格范围--概率,落在该范围内的点数与总点数的百分比比。

P(b) - 增量的正态分布被当作先验概率b。使用具有正态分布值的PRNG。

P(a) 系数a决定了直线的斜率和预测增量的符号。到目前为止,我正在考虑使用我之前发布的线性回归 代码。即把那里发现的系数a的概率看作是统一的。在(1)中,考虑到这个a和给定的y的计算结果的差异,用计算出的概率P(a)代替。

也许你对每个刻度的增量符号的表现有一些想法?


 

绝对没有必要在公式中放入蜱虫。任何人都可以在FORTS上生成这些标签,这一点每天都在做。

问题不在于数学方法,而在于。但在选择适用的数据是否充分。

 
为什么要服用人工虱子?你可以学习预测它们,而不需要高等数学。询问MQ如何。

采取真正的蜱虫,1万件,看看分布情况。至少这将是实用的。
 
Alexey Burnakov:
为什么要采取人工抽搐?你可以学习预测它们,而不需要高等数学。询问MQ如何。

采取真正的蜱虫,1万件,看看分布情况。至少这将是实用的。

所以(1)中的似然函数P(x,y|a,b) 是真实刻度(刻度量)的真实分布。这是极少的正常现象。而P(a)和P(b)是纠正性概率,按规律取为先验概率。

要问MQ什么?在策略测试器中模拟蜱虫的原理是什么?是的,必须有一些原则。也许知道这一点,我们可能会创造出测试人员的 "圣杯"。但我不能在测试模式下开发它,因为我既没有打勾的历史,也没有用它工作的实践。 一切都将是实时的。

对你的话很感兴趣。

"我在实验中根本不做回归和价格值(或其转换),我预测的是符号,但你可以说,这也是价格信息的一部分。

我的错误看起来是这样的。

0 1

0 0,58 0,42

1 0,43 0,57

或者说,大致上和原来一样。

1 - 正确,0 - 错误:1, 1, 1, 0, 0, 0, 1 , 1, 1, 0, 1

而产生的概率分布应该尽可能地与0.5 / 0.5不同。如果我们获得这种结果的相互不可分割性,我们就会得出二项分布,而且有很多很多的公式和统计测试。" 引用完毕。

在预测一个符号的情况下,二项分布的真正规则是什么?什么是结果的相互独立性?谢谢你。

 
Yuri Evseenkov:

所以(1)中的似然函数P(x,y|a,b) 是真实刻度(刻度量)的真实分布。这是非常罕见的正常现象。而P(a)和P(b)是纠正性概率,按规律取为先验概率。

要问MQ什么?在策略测试器中模拟蜱虫的原理是什么?是的,必须有一些原则。也许知道这一点,我们可能会创造出测试人员的 "圣杯"。但到目前为止,我无法在测试模式下开发它,因为我既没有打勾的历史,也没有用它工作的实践。 一切都将是实时的。

对你的话很感兴趣。

"我在实验中根本不做回归和价格值(或其转换),我预测的是符号,但你可以说,这也是价格信息的一部分。

我的错误看起来是这样的。

0 1

0 0,58 0,42

1 0,43 0,57

或者说,大致上和原来一样。

1 - 正确,0 - 错误:1, 1, 1, 0, 0, 0, 1 , 1, 1, 0, 1

而产生的概率分布应该尽可能地与0.5 / 0.5不同。如果我们得到这种结果的相互独立性,我们就会得到二项分布,对于它有很多很多的公式和统计测试。" 引文结束。

在预测一个符号的情况下,二项分布是否真的占优势?什么是结果的相互独立性?谢谢你。

按顺序排列。是的,刻度线是由测试器中的算法产生的。对真实蜱虫的测试还没有发布。本网站上有一篇关于这些虱子是如何产生的文章。它们根本就不是真正的蜱虫。

关于二项分布。如果你预测一个二元变量,你会得到一个2*2的矩阵,显示识别的准确性。这本质上是两个二元变量的联合分布,即目标变量和模拟变量。

如果你的目标变量i.i.d.的实现序列是独立和相同的分布,这就为应用许多标准提供了可能。投掷硬币的结果正是如此。它是一个伯努利过程。因此,这些事件是相互独立的。如果这是有效的,你的概率分布服从二项分布。例如,成功的数量有其概率,近似正常。

我写得很漫不经心,已经很晚了。我真正喜欢的是二项分布,对于二元表应用卡方准则,显示你的结果与随机猜测不同的意义。你也可以对多项式(非约束性平方)表做同样的处理。同样对于二元变量,有许多机器学习技术。
 

在我看来,使用点数进行预测是很危险的,应该为每个经纪人分别建立模型。

如果我们从策略测试器中提取刻度线,将与真实的刻度线有严重的区别,因为测试器中的刻度线是使用分钟条的ohlc值模板生成的(https://www.mql5.com/en/articles/75)。这就是为什么从来没有人测试过黄牛,而是立即把他们放在一个真实的账户上,并一路优化。

关于真实的刻度线--它们在不同的经纪商之间可能有很大的不同。例如在这个主题https://www.mql5.com/en/forum/64228/page2#comment_1960403 (https://c.mql5.com/3/78/tbd.png ) 附上一张截图,这是两个不同经纪商在同一时间框架内的tick增量分布。我不记得间隔时间有多长,从一天到一周不等。一般来说,它们是重合的,但其中一个有两次以上的点,没有价格变化。如果你比较十家以上的经纪商,我想可能会有巨大的差异,特别是对于 "惊喜烛台"。
作为一种选择,可以在不改变价格的情况下删除所有蜱虫。然后有一个细微的差别,即在EA中OnTick()事件可以被跳过,终端将收到一个新的价格,并跳过前一个。也就是说,不是1.23456 -> 1.23490 -> 1.23410,而是简单的1.23456 -> 1.23410。而且,你的模型将得到一个变化,而不是两个变化。
结果会发现,两个相邻的tick之间的时间间隔没有被定义,会有数据空隙,我认为这很糟糕。
它仍然值得尝试,你需要使用MT4和Tickstory Lite程序(有一个免费版本),将真实的ticks插入测试器(它们取自经纪人Dukascopy)。只有MT4终端应使用小于950的构建,否则免费版的tickstory会使测试数据的点差为零。

我试过用ticks的方法,比如找到一个平均数,如果当前价格强烈偏离平均数,就买入和卖出。如果有任何利润,那么点差就会吞噬一切,我已经去了更大的时间框架。

The Algorithm of Ticks' Generation within the Strategy Tester of the MetaTrader 5 Terminal
The Algorithm of Ticks' Generation within the Strategy Tester of the MetaTrader 5 Terminal
  • 2010.06.02
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 allows us to simulate automatic trading, within an embedded strategy tester, by using Expert Advisors and the MQL5 language. This type of simulation is called testing of Expert Advisors, and can be implemented using multithreaded optimization, as well as simultaneously on a number of instruments. In order to provide a thorough testing, a generation of ticks based on the available minute history, needs to be performed. This article provides a detailed description of the algorithm, by which the ticks are generated for the historical testing in the MetaTrader 5 client terminal.