寻找市场模式 - 页 114

 
Svinozavr:

通过脉冲指示器。好像我还没有忘记。我现在正在 "完成 "它。这是迄今为止的图片(Eurobucks 5)。


图例如下:脉冲本身在条形上标有两个相应颜色的菱形(小和大)。一个强势的柱子,如果不是一个脉冲,会用一个小的菱形符号来标记(后面会有更多的介绍)。

逻辑:计算平均条形价差,即МА通过模数(开盘-收盘)。然后我们记住条形坡度超过平均坡度的超额值(只要它发生)。因此,当一个新的酒吧超过这个嗯...。好的,超限了某个阈值,那么这个条形就被算作一个脉冲。多余的金额被新的金额覆盖。如此等等,不一而足。当然,必须有一定的噪音阈值,否则你会明白,在平面上会有很多错误的信号。

===

我不知道我什么时候能完成它。也许是今天。也许在周一之前。也许在一般情况下...如果不是 "完全",我就在这里,在这个主题中发布。我不需要在科多巴兹进行一百次预调,在红军中进行二百次预调--评级。如果有,基本的逻辑描述都有,自己写没有问题。

作者保留部分修改指标的工作原理、完全改变其逻辑或完全拒绝它的权利。


彼得,我尽力了......如果我没有达到预期,请原谅。

#property copyright "Svinozavr"
#property indicator_chart_window // в окне инструмента
#property indicator_buffers 6
#property indicator_color1 Green
#property indicator_color2 Red  
#property indicator_color3 Green
#property indicator_color4 Red  
#property indicator_color5 Green
#property indicator_color6 Red  

// входные параметры
extern double MAperiod     = 200; 
extern double K            = 1.3;   // коэффициент умножения размаха (шумовой порог)
extern double Bord         = 0;     // превышение
              
extern bool   Fade         = false; // режим затухания
extern bool   OC.HL.range  = false; // способ расчёта размаха
extern bool   OC.HL.middle = false; // способ расчёта средней цены
extern bool   Hist         = true;

// массивы индикаторных и вспомогательных буферов
double Top[],Bot[],Sup[],Res[]; 
double up[],dn[];
// общие переменные 
double k0,k1,period; // коэфф. EMA и производный период
double brd; 
int    History=0; // 0- все бары

// инициализация
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() 
{ 
  brd=Bord*Point;
  if(MAperiod>1)
  {
    k0=2/(1+MAperiod); 
    period=MAperiod;
  }
  else 
  { 
    k0=MAperiod; 
    period=(2-MAperiod)/MAperiod;
  }
  k1=1-k0;
   
  if(Hist) 
  {
    int stl=3,sw=1;
  } 
  else 
  {
    stl=0;sw=2;
  }
  SetIndexBuffer(0,Top); // индикатор
  SetIndexStyle(0,DRAW_LINE);
  SetIndexEmptyValue(0,0.0);

  SetIndexBuffer(1,Bot); // вспомогательный буфер
  SetIndexStyle(1,DRAW_LINE);
  SetIndexEmptyValue(1,0.0);

  SetIndexBuffer(2,Sup); // вспомогательный буфер
  SetIndexStyle(2,stl,0,sw);
  SetIndexEmptyValue(2,0.0);
  SetIndexArrow(2,117);

  SetIndexBuffer(3,Res); // вспомогательный буфер
  SetIndexStyle(3,stl,0,sw);
  SetIndexEmptyValue(3,0.0);
  SetIndexArrow(3,117);
  
  SetIndexBuffer(4,up); // вспомогательный буфер
  SetIndexStyle(4,stl,0,sw+1);
  SetIndexEmptyValue(4,0.0);
  SetIndexArrow(4,117);
  
  SetIndexBuffer(5,dn); // вспомогательный буфер
  SetIndexStyle(5,stl,0,sw+1);
  SetIndexEmptyValue(5,0.0);
  SetIndexArrow(5,117);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() 
{
  int limit=Bars-IndicatorCounted()-1; 
  if(limit>1) 
  {
    limit=Bars-1;
    ArrayInitialize(Top,0.0);
    ArrayInitialize(Bot,0.0);
    ArrayInitialize(Sup,0.0);
    ArrayInitialize(Res,0.0);
  }
  if(History!=0 && limit>History) 
  {
    limit=History-1; // кол-во пересчетов по истории
  }  
  // цикл пересчета
  for(int i=limit; i>=0; i--) 
  { 
    // средняя цена
    if(OC.HL.middle)
    {
      double mid=(High[i]+Low[i])/2;
    }  
    else 
    {
      mid=(Close[i]+Open[i])/2;
    }  
    
    // размах
    if(OC.HL.range) 
    {
      double rng=High[i]-Low[i];
    }  
    else 
    {
      rng=MathAbs(Close[i]-Open[i]);
    }  
    
    // EMA
    static double dt,db;
    double ma0; 
    static double ma1;
    if(i==limit && i>1) 
    {
      ma0=rng; // начальное значение
      dt=0;db=0;
    }
    else 
    { // основной расчет
      if(rng>ma1 && Fade) 
      {
        ma0=rng;
      }  
      else 
      {
        ma0=k0*rng+k1*ma1;
      }  
    }
    if(i>0) 
    {
      ma1=ma0;
    }  
    
    // канал
    double diff=K*ma0;
    Top[i]=mid+diff;
    Bot[i]=mid-diff;
    
    // тренд
    static bool trend;
    if(i>0) 
    {
      double difft=Close[i]-Top[i];
      double diffb=Close[i]-Bot[i];
      if(difft>0) 
      {
        trend=1; 
        dt=difft;
        if(Hist) 
        {
          Sup[i]=(Close[i]+Open[i])/2;
          if(difft>=-db+brd) 
          {
            up[i]=Top[i];
          }  
        }
      }
      if(diffb<0) 
      {
        trend=0; 
        db=diffb;
        if(Hist) 
        {
          Res[i]=(Close[i]+Open[i])/2;
          if(diffb<=-dt-brd) 
          {
            dn[i]=Bot[i];
          }  
        }
      }
    }
    if(!Hist && i>0) 
    {
      if(trend) 
      {
        Sup[i]=Bot[i];
      }   
      else 
      {
        Res[i]=Top[i];
      }  
    }
//  Sup[i]=Sup[i+1]; Res[i]=Res[i+1];
  }
}
 

一些https://www.mql5.com/ru/forum/133986/page5,建议放弃寻找市场模式,而研究市场属性,这是不可否认的;让我们强调一下。

1.市场的波动属性。

2.任何趋势都是可以纠正的。这一特性是不可否认的。但绝不是一种模式,因为立法的前提是准确的数据。https://www.mql5.com/ru/forum/133986/page7

3.在价格变化中,存在一个自然和随机的成分https://www.mql5.com/ru/forum/133986/page5。

4.不同TFs上的规律性表现不同(仍有争议)https://www.mql5.com/ru/forum/133986/page11。

5.引文中存在 "噪音",但有些人确信,即使是一个勾,也包含有用的信息https://www.mql5.com/ru/forum/133986/page13

6.有一些货币对构成了市场板块,为目前的运动定下了基调https://www.mql5.com/ru/forum/133986/page16

7.存在一个 "公平 "的价格(由中央银行为今天提出的?),目前的价格向往https://www.mql5.com/ru/forum/133986/page19

8.固定(黄金,例如一天两次)https://www.mql5.com/ru/forum/133986/page20

9.必须把市场看作是一种野生动物,了解它的习性,研究它的踪迹,设置埋伏,设置陷阱,设置诱饵,准确地进行射击!这就需要把市场看作是野生动物。 https://www.mql5.com/ru/forum/133986/page24

10.市场是惯性的。 成功交易的本质是了解现在正在发生的事情并参与其中。TA是一种工具,告诉你--你在哪里。https://www.mql5.com/ru/forum/133986/page30。


建议更多的全球市场特征来完成这个清单。

让我们研究一下在TA中使用全球市场属性的后果,以及伴随着市场属性的其他模式会对交易造成什么潜在的伤害。例如,如果遵循这两个市场属性,就应该始终在反趋势中进行交易,希望获得回报或部分回报(修正)。但是,如果这些市场属性经常被违反呢?这种情况在多大程度上会对全球战略产生不利影响?修正是否能够弥补一些损失?

 
yosuf:

一些https://www.mql5.com/ru/forum/133986/page5,建议放弃寻找市场模式,而研究市场属性,这是不可否认的,让我们强调一下。

1.市场的波动属性。

2.任何趋势都是可以纠正的。这一特性是不可否认的。但绝不是一种模式,因为立法的前提是准确的数据。https://www.mql5.com/ru/forum/133986/page7

3.在价格变化中,存在一个自然和随机的成分https://www.mql5.com/ru/forum/133986/page5。

4.不同TFs上的规律性表现不同(到目前为止是有争议的)https://www.mql5.com/ru/forum/133986/page11

5.引文中存在 "噪音",但有些人确信,即使是一个勾,也包含有用的信息https://www.mql5.com/ru/forum/133986/page13

6.有一些货币对构成了市场板块,为目前的运动定下了基调https://www.mql5.com/ru/forum/133986/page16

7.存在一个 "公平 "的价格(由中央银行为今天提出的?),目前的价格向往https://www.mql5.com/ru/forum/133986/page19

8.固定(黄金,例如一天两次)https://www.mql5.com/ru/forum/133986/page20

9.必须把市场看作是一种野生动物,了解它的习性,研究它的踪迹,设置埋伏,设置陷阱,设置诱饵,准确地进行射击!这就需要把市场看作是野生动物。 https://www.mql5.com/ru/forum/133986/page24

10.市场是惯性的。 成功交易的本质是了解现在正在发生的事情并参与其中。TA是一种工具,告诉你--你在哪里。https://www.mql5.com/ru/forum/133986/page30。


建议更多的全球市场属性来完成这个清单。

让我们研究一下在TA中使用全球市场属性的后果,以及伴随着市场属性的其他模式会对交易造成什么潜在的伤害。例如,如果遵循这两个市场属性,就应该始终在反趋势中进行交易,希望获得回报或部分回报(修正)。但是,如果这些市场属性经常被违反呢?这种情况在多大程度上会对全球战略产生不利影响?修正是否能够弥补一些损失?


如果你采取两个对子,那么无论它们如何表现,你都可以区分出三种市场状态。

1)冲动运动(突然的运动)。

2)平均运动

3)慢动作(平缓)。

当然,如果我们在真实的报价上看所有这些东西,就很难选择任何东西,因为事实上,不断的噪音的存在引起了整体画面的扭曲(相当明显),寻找相似性是非常困难的......

 
yosuf:
///

10.市场是惯性的.....


建议更多的全球市场特征来完成这个清单。

....


这已经足够赚取利润了。
 
只有两种模式--回归和自我强化。其余的是过滤器)
 
Avals:
只有两种模式--回归和自我强化。其余的是过滤器)。
请澄清 "自我放大 "的概念。
 
Avals:
共有2种模式 - 复归和自我放大。其余的是过滤器)。

有自我强化的好主意。我建议将以下公式中的系数S作为一个自我强化的系数,并观察其在价格P变化时的行为。

P =S*O^a*H^b*L^c*C^d

使用15天的OHLC D1数据,得到了我之前在这里给出的系数值https://www.mql5.com/ru/forum/140329/page43

https://c.mql5.com/mql4/forum/2012/11/f1.jpg

例如,在进入第14个点之后,S增益的表现似乎很有趣,即最后的第15个点还没有进入,这显然表明可能出现逆转。


第15点的引入让人对反转没有任何怀疑,因为放大系数急剧增加了数百倍。


因此,由于阿瓦尔斯 的提示,我显然发现了一个预测反转开始的有力因素。但是,这个事实应该被反复检查几次。谢谢你,阿瓦尔斯 先生, 我建议后续建立一个指标

 
yosuf: 请澄清 "自我强化 "的概念。
积极的反馈。你看着不断上涨的价格,你也买了,你就会推动它更多的上涨。
 

如果我们通过OHLC来表达当前条形价格P的平均值,并研究方程系数的行为,就会出现有趣的事情。

P =S*O^a*H^b*L^c*C^d

所发现的确定系数的方法使得有可能获得实际价格值和计算价格值的完全(理想)重合,这一点在图表上可以看到。

下面是在这种情况下方程的系数如何变化。

现在,有必要用足够大的数据量来执行这一程序,并追踪价格反转时比率的行为,寻找反转的先行者。我相信他们一定会出现。我们应该得到一个像Alligator那样由四条线组成的指标,但它有另一个名字,我现在正在想该怎么称呼它。

值得注意的是,方程系数之和以及系数S几乎总是等于1,最后一次爆发可能是上升的预兆。


 
...

因此,由于阿瓦尔斯的 线索,显然已经找到了一个预测反转开始的有力因素。但是,这个事实应该被反复检查几次。谢谢你,阿瓦尔斯 先生, 我建议你把这件事带到创建一个指标



尤素福,初学者在初始阶段要寻找逆转预测因素。而当他们开始明白一点时,他们就会放弃寻找,并进行延续性交易。