Очень много индикаторов используют для рассчета своих значений так называемый "период". Обычно это количество баров которое учавствует в расчете очередного значения. Возьмем например RSI. Если очень грубо - этот индикатор показывает отношение длинны "пробега" цены вверх по отношению к аналогичной длине пробега цены вниз. При очень маленьких периодах получается жуткая болтанка, при очень длинных - нечто слабопульсирующее около нуля. Однако рынок не всегда равномерен. Точнее всегда не равномерен. После выхода новостей смены торговых сессий да еще на коротких таймах, чтобы поймать все движения период нужно выбирать не очень большой. С другой стороны во время длинного "затяжного" тренда (или флэта) этот период вполне разумно увеличить чтобы отслеживать тенденцию самого тренда, а не колебаний внутри его канала.
Кто нибудь пробовал строить индикаторы которые сами адаптируют длину периода под меняющиеся условия? Вот, например "здесь", когда какойто другой индикатор (или какието вычисления внутри текущего индикатора) в таком то диапазоне мы пропорционально сокращаем длинну перода для этого бара, а при таких то условиях (уже на другом баре) - наоборот увеличиваем.
Если да - то какие получались результаты? да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?
我已经通过与参考谐波的关联性进行了尝试。
但事实证明,有时时期急剧跳跃,然后又回到最初的时期,从而破坏了整个画面。
此外,这种方法非常长,如果在实时情况下,它仍然可以在测试器中使用,但在优化中,它是完全失败的。
嗯,总的来说,这是一个很有前途的话题。
Очень много индикаторов используют для рассчета своих значений так называемый "период". Обычно это количество баров которое учавствует в расчете очередного значения. Возьмем например RSI. Если очень грубо - этот индикатор показывает отношение длинны "пробега" цены вверх по отношению к аналогичной длине пробега цены вниз. При очень маленьких периодах получается жуткая болтанка, при очень длинных - нечто слабопульсирующее около нуля. Однако рынок не всегда равномерен. Точнее всегда не равномерен. После выхода новостей смены торговых сессий да еще на коротких таймах, чтобы поймать все движения период нужно выбирать не очень большой. С другой стороны во время длинного "затяжного" тренда (или флэта) этот период вполне разумно увеличить чтобы отслеживать тенденцию самого тренда, а не колебаний внутри его канала.
Кто нибудь пробовал строить индикаторы которые сами адаптируют длину периода под меняющиеся условия? Вот, например "здесь", когда какойто другой индикатор (или какието вычисления внутри текущего индикатора) в таком то диапазоне мы пропорционально сокращаем длинну перода для этого бара, а при таких то условиях (уже на другом баре) - наоборот увеличиваем.
Если да - то какие получались результаты? да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?
是的,我有。许多次,以不同的方式。结果当然有所改善(对于标准应用),但它仍然是--正如我已经写过几次--在章鱼上的短语对的拟合,因为考虑的是BP,而不是一系列的脉冲。例如,一个非常简单的方法(除了我已经在代码库中提出的方法):如果条形图的振幅小于指定的阈值,那么指标的周期将增加1。当然,条件是可以通过各种方式发明的(当然是逻辑上的)。
例如,这个初级选择的RSI会是这样的:他们选择摆动幅度大于2点的条形图(周期增加,直到达到必要的最小值;周期在顶部受到一个给定参数的限制--这里是从14到33(蓝色--正常RSI,红色--有阈值)。下面的窗口显示了这一时期的变化情况。
不要看第0个窗口--它只是没有抹去指标。这与它没有关系。// )))尽管那里也使用了EMA系数的周期适应。
是的,但是--我再说一遍--有总比没有好,但是......))
顺便说一下,如果你不知道,还有所谓的DMI(动态动量指数),RSI的周期也会变化,但取决于RMS。你可以看到威廉姆斯和钱德的描述。
===
而我所描述的简单方法可以应用于任何东西,其中有一个采样长度。如果你需要更复杂的东西,有一个特殊的转向指示器--MsterSlave(见底座中)。
===========
而在这里,周期长度的上限实际上是无限的。即RSI的周期将不断增加,直到它达到14个柱子,有超过2个点的点差。正如你所看到的,作为一项规则,对于一个给定的工具和时间框架,100条就足够了 - 换句话说,周期不超过100条。
![](https://c.mql5.com/mql4/forum/2010/04/zozhty3.jpg)
期限适应性指标是将系统的一部分和交易理念转移到其代码中。也就是说,时机不是取决于指标,而是取决于交易理念,而指标只是价格的一种转化。
TA试图识别市场中客观发生的过程,并允许在它们仍然存在的时候使用它们。即初始过程,而图表上的事件是检测它处于哪个阶段的机会。这样一来,对于适应性来说,不需要计算周期的数值,而是计算新的参考点。即有某个TA事件(突破、冲动等)--有一个新的时间点,从这个时间点开始参考。事实上,它是一个新的T形挡板。该指标在自适应窗口上计数,其周期等于当前时间时刻与参考t-case的转变。如果确定了一个新的基准点,就从它开始计算周期。但也许这个变体是有用的,当新的TA事件出现时,指标的周期会变成某个默认值,这实际上意味着对这个事件形成的价格的捕获。或者用最近的TA事件之间的时间来计算指标的周期
我决定加入科学家之间的对话,并贡献我自己的烹饪秘方。在过去的几年里,我一直在制作几乎所有的指标,这些指标的参数都是自适应变化的。原始的解决方案在市场上是行不通的,我很久以前就得出了这个结论,我一直在酝酿做一个完全自适应的系统,但我还没有时间去做,我在指标中做单独的适应性片段。下面是最新指标的一个片段的例子。一般来说,该指标由几个功能块组成,每个功能块形成其目标信号,总共有24个信号,我只举出一个形成通道的块。我还没有对时间框架和符号的变化进行自动调整,因此每个变体都应该单独调整。
//===================================================================================================================================== extern int PIB= 33; extern int PIS= 37; extern double PMB= 3.98; extern double PMS= 3.98; //==================================================================================================================================== //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { PPB=NormalizeDouble(PIB*Point,Digits); PPS=NormalizeDouble(PIS*Point,Digits); PMB=NormalizeDouble(PMB*Point,Digits); PMS=NormalizeDouble(PMS*Point,Digits); }专家启动功能 :
PR=NormalizeDouble((High[1]-Low[1])+(High[2]-Low[2])+(High[3]-Low[3])+(High[4]-Low[4])+(High[5]-Low[5])+(High[6]-Low[6])+(High[7]-Low[7]),Digits); PRB=NormalizeDouble(PMB/PR,Digits); PRS=NormalizeDouble(PMS/PR,Digits); BTH[0]=High[0]-PR/17-PRB/2; if ((MathAbs(BTH[0]-BTH[1])<=PPB)) BTH[0]=BTH[1]; BTC[0]=Close[0]-PR/10; if ((MathAbs(BTC[0]-BTC[1])<=PPB)) BTC[0]=BTC[1]; BTC[0]=0.4*BTC[0]+0.6*BTC[1]; BTL[0]=Low[0]-PR/17+PRB/2; if ((MathAbs(BTL[0]-BTL[1])<=PPB)) BTL[0]=BTL[1]; STH[0]=High[0]+PR/17-PRS/2; if ((MathAbs(STH[0]-STH[1])<=PPS)) STH[0]=STH[1]; STC[0]=Close[0]+PR/10; if ((MathAbs(STC[0]-STC[1])<=PPS)) STC[0]=STC[1]; STC[0]=0.4*STC[0]+0.6*STC[1]; STL[0]=Low[0]+PR/17+PRS/2; if ((MathAbs(STL[0]-STL[1])<=PPS)) STL[0]=STL[1];正如你所看到的,通道的参数是根据过去几个柱子的平均动态指标而自适应调整的。
结果是以下图片。
![](https://c.mql5.com/mql4/forum/2010/04/1_1_small.gif)
VTN - 蓝色,BTL - 黄色,BTL - 粉红色,STH - 蓝色,STC - 红色,STL - 紫色。
当然,这是一个简化的方法,为了更准确地适应不断变化的市场阶段,我们需要一个更复杂的解决方案,但尽管如此,这个变体大大改善了指标的特性。
有没有人试着建立能使周期长度适应 变化条件的指标?例如,"这里",当另一个指标(或当前指标内的一些计算)在这样的范围内,我们按比例减少这个酒吧的周期长度,在这样的条件下(在另一个酒吧)-反之亦然。
如果是的话--得到了什么结果? 一般来说--这个想法(周期长度的自动调整)有什么常识吗?