基于艾略特波浪理论的交易策略 - 页 256

 
<br / translate="no"> 谢谢你,谢尔盖,现在很多事情都变得更清楚了。这不是关于你计算什么和如何计算的问题,而是关于理解你想要展示什么。


是的,我知道我是一个糟糕的讲故事者。我尽可能地解释,我想我最好不要重复太多次。:о)))


就我现在的理解,在某一点上PE的值会随着当前计数越来越向右移动而改变?毕竟,连接这个点和当前基准点的通道正在发生变化。


完全正确。现在再加上变革的动力,你可以扩大你对这个过程的了解。回到摩托车手的问题上,你只需要从一个经典的物理学问题中抽象出一点。假设在某个时间点,我们知道平衡点,而且只知道它。要一下子说清楚(我提醒你,我们是从特定的问题中抽象出来的,对特定的系统知之甚少)他在做什么,是直行还是开始转弯,以及是否是急转弯,这都是相当困难的。当然,这个问题可以间接地通过对过去运动时间线上的平衡的了解来回答。

我所做的是追踪本地极值(在这种情况下是低点)相对于窗口N的变化动态,在每个时间段我们都观察到长度为N的过程(它是华丽的)。 在图片中,你可以看到窗户是如何在时间中 "形成 "的。接下来,我简单地将它们结合起来。



对于这种方法,长度为N的窗口必须始终保持一个恒定值。矩阵,或表面,具有以下大小[N:(N-区)]。N的选择本身是一个单独的故事。
 
所以你的PE图是相对于当前参考框架的局部极值的轨迹?
 
尊敬的会众们,下午好。
昨天我看到了一个帖子,我觉得非常有趣,而且在某些方面与这里讨论的话题重叠(我认为)。
http://forum.fxclub.org/showthread.php?t=22097&page=3
这是一个UP主在一个主题中的前言(很长)。
 
晚上好
情况是这样的
如果我们取一个样本(Close),在任何地方的欧元兑美元h1 216条,并在这个样本上计算抛物线回归的系数。F(x)=A0+A1*x+A2*x^2
计算势能梯度后
int shift=215;
for (int j=shift-3;j>=0;j--)
{
ArrayResize(a_Price,shift+3-j);
ArrayInitialize(a_Price,0);
int s=1;
for (int i=shift;i>=j; i--)
{
a_Price[s]=Close[i];
s++;
}
Raschet_koefficientov_paraboli(a_Price,shift-j);
double summGradienta=0;
for (int x=1;x<=shift-j;x++)
{
summGradienta+=Close[shift-x+1]-(A0+A1*x+A2*MathPow(x,2));
}
GP[j]=summGradienta*100000000000;
}
结果是一个有趣的数字(它总是负的),大约在-0.0278区域
如果你在可视化上通过历史运行指标,这个指标的轮廓保持不变,特别是越多的样本越稳定。
最重要的是轮廓不依赖于时间框架和货币对

函数的本质
Raschet_koefficientov_paraboli
IOC和系统解决方案通过逆矩阵
如何使用它?
PS。这是我 "不成功 "的尝试,来自solandr 08.07.06 20:12
我没有这样的图片,因为有
尊敬的

PPS 如果有人需要,我将在这里发布我的代码全文。
 
2olyakish

插入代码,请使用代码 标签。那么你的文本将更容易阅读。
另外,当你用ANC做抛物线回归系数的计算时,你会得到一个3个铀的系统。它很有能力以一般形式得到解决。这导致了3个回归系数的3个公式,并不太复杂。它们的计算要容易得多,最重要的是,比起逆矩阵的构造,它们更可靠。

事实上,我没有什么可说的,因为没有代码。但如果你把它摆出来,我想solandr 会帮你弄清楚。
 
以下是该指标的文本
//+------------------------------------------------------------------+
//|                                      Gradient_Potenciala_ind.mq4 |
//|                                                         olyakish |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "olyakish"
#property link      ""
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_level1 0
/*
#property indicator_level2 0.0254
#property indicator_level3 -0.0229
*/
#property indicator_minimum -0.03
#property indicator_maximum 0.03

double Matrica[4,5];
double det,det1; 
double Matrica`[4,4];
double A0,A1,A2;
double a_Price[];
double GP[],MA[],GP_Rev[];
int shift;
double NullGradient;

//---- функция расчета коэффициентов параболы типа F(x)=A0+A1*x+A2*x^2 
//---- передаем массив цен по которым происходит расчет коэффициентов и количество баров для расчета

int init()
  {
     SetIndexStyle(0, DRAW_LINE);
     SetIndexBuffer(0, GP);
     SetIndexLabel(0, "Gradient_Potenciala");
     SetIndexStyle(1, DRAW_LINE);
     SetIndexBuffer(1, MA);
     SetIndexLabel(1, "MA");
     
     shift=iBarShift(NULL, 0, ObjectGet("Start", OBJPROP_TIME1),false);
     SetIndexDrawBegin(0, 10);
    return(0);
  }

void Raschet_koefficientov_paraboli(double Mass_Price[], int bars_in)
   {
     
    //---- метод наименьших квадратов и решение системы уравнений обратной матрицей
    // --- имеем заполненную матрицу 3*4   
   ArrayInitialize(Matrica,0);
   ArrayInitialize(Matrica`,0);
   Matrica[1,1]=bars_in;
   for (int i=1;i<=bars_in;i++)
      {
         Matrica[1,2]+=i;
         Matrica[1,3]+=MathPow(i,2);
         Matrica[2,3]+=MathPow(i,3);
         Matrica[3,3]+=MathPow(i,4);
         Matrica[1,4]+=Mass_Price[i];
         Matrica[2,4]+=Mass_Price[i]*i;
         Matrica[3,4]+=MathPow(i,2)*Mass_Price[i];
      } 
    
    Matrica[2,1]=Matrica[1,2];
    Matrica[2,2]=Matrica[1,3];
    Matrica[3,1]=Matrica[2,2];
    Matrica[3,2]=Matrica[2,3];


   
   // ее det
    det= (Matrica[1,1]*Matrica[2,2]*Matrica[3,3]+Matrica[2,1]*Matrica[3,2]*Matrica[1,3]+Matrica[1,2]*Matrica[2,3]*Matrica[3,1])-
         (Matrica[1,3]*Matrica[2,2]*Matrica[3,1]+Matrica[1,2]*Matrica[2,1]*Matrica[3,3]+Matrica[1,1]*Matrica[2,3]*Matrica[3,2]);
   //Comment ("det=",det);
   //обратную матрицу
   Matrica`[1,1]=((Matrica[2,2]*Matrica[3,3])-(Matrica[2,3]*Matrica[3,2]));
   Matrica`[1,2]=-((Matrica[2,1]*Matrica[3,3])-(Matrica[2,3]*Matrica[3,1]));
   Matrica`[1,3]=((Matrica[2,1]*Matrica[3,2])-(Matrica[2,2]*Matrica[3,1]));
   
   Matrica`[2,1]=-((Matrica[1,2]*Matrica[3,3])-(Matrica[1,3]*Matrica[3,2]));
   Matrica`[2,2]=((Matrica[1,1]*Matrica[3,3])-(Matrica[1,3]*Matrica[3,1]));
   Matrica`[2,3]=-((Matrica[1,1]*Matrica[3,2])-(Matrica[1,2]*Matrica[3,1]));
    
   Matrica`[3,1]=((Matrica[1,2]*Matrica[2,3])-(Matrica[1,3]*Matrica[2,2]));
   Matrica`[3,2]=-((Matrica[1,1]*Matrica[2,3])-(Matrica[1,3]*Matrica[2,1]));
   Matrica`[3,3]=((Matrica[1,1]*Matrica[2,2])-(Matrica[1,2]*Matrica[2,1]));
   //расчет коэффициентов параболы A0-с, A1-b, A2=a
      
   A0=(Matrica`[1,1]*Matrica[1,4]+Matrica`[1,2]*Matrica[2,4]+Matrica`[1,3]*Matrica[3,4])/det;
   A1=(Matrica`[2,1]*Matrica[1,4]+Matrica`[2,2]*Matrica[2,4]+Matrica`[2,3]*Matrica[3,4])/det;     
   A2=(Matrica`[3,1]*Matrica[1,4]+Matrica`[3,2]*Matrica[2,4]+Matrica`[3,3]*Matrica[3,4])/det; 

   
   return(0); 
   }
   



int start()
  {
  if(ObjectFind("Start")!=0) {Comment ("Вертикальная линия Start не найдена");}////return(0);}
  else {Comment ("Вертикальная линия Start на баре  ",iBarShift(NULL, 0, ObjectGet("Start", OBJPROP_TIME1),false) );}
shift=iBarShift(NULL, 0, ObjectGet("Start", OBJPROP_TIME1),false);

shift=215;
GP[shift+1]=0;
GP[shift]=0;
GP[shift-1]=0;
GP[shift-2]=0;
for (int j=shift-3;j>=0;j--)  
   {
      ArrayResize(a_Price,shift+3-j); 
      ArrayInitialize(a_Price,0);
      int s=1;
      for (int i=shift;i>=j;i--) 
         {
          a_Price[s]=Close[i];   
          s++;
         }
         Raschet_koefficientov_paraboli(a_Price,shift-j); 
      double summGradienta=0;
      for (int x=1;x<=shift-j;x++)
          {
          summGradienta+=Close[shift-x+1]-(A0+A1*x+A2*MathPow(x,2));
          }
   GP[j]=summGradienta*100000000000;
   }
   SetIndexLabel(0, "Gradient_Potenciala"+GP[1] );
   Comment (GP[1]);
 ////////////////////////------------------------------------------------------------ 
  //-0.0216
      
    /*  
      
      ArrayResize(a_Price,shift+2); 
      ArrayInitialize(a_Price,0);
      int s=1;
      for (i=shift;i>=1;i--) 
         {
          a_Price[s]=Close[i];   
          s++;
         }
     */
  /*   
     for(i=1;i<=200;i++)
      {
       a_Price[s]=Close[2]-100*Point+i*Point;      
       Raschet_koefficientov_paraboli(a_Price,shift-1);
       summGradienta=0;
       for (x=1;x<=shift-j;x++)
          {
          summGradienta+=Close[shift-x+1]-(A0+A1*x+A2*MathPow(x,2));
          }
    summGradienta =summGradienta*1000000000;  
 //   Alert(Close[2]-100*Point+i*Point,"=",summGradienta);
      }
      
*/
  /*
   
   ArrayResize(GP_Rev,ArrayRange(GP,0));
   ArrayCopy(GP_Rev,GP,0,0,WHOLE_ARRAY);
  // ArrayIsSeries(GP_Rev);
  ArraySetAsSeries(GP_Rev,1);
   int ma_period=25;
   for(i=shift-ma_period-15;i>=1;i--)
   {
  MA[i]= iMAOnArray(GP_Rev,0,ma_period,0,MODE_SMA,i);
   }

*/   
   
 //  MA[2]= iMAOnArray(GP_Rev,0,10,0,MODE_SMA,2);
 //  MA[3]= iMAOnArray(GP_Rev,0,10,0,MODE_SMA,15);
 //  Comment ("MA[1]",MA[1]);
   return(0);
  }
//+------------------------------------------------------------------+



看看它在可视化上画了什么。

 
说实话,要理解别人的代码是非常困难的。我只能假设,这并不是你做求和的确切方式。我只能再次陈述我的计算理念。也许一个更清晰的解释会有帮助?我的算法是这样的。
1.我们取一个样本,比如最近的100条[99,0]。对于这个样本,我们想看看影响价格球沿着弯曲的倾斜槽滚动的力梯度是如何变化的。我们假设这个相同的谷底从第99条开始,在0点结束。
2.我们假设,为了计算在轨迹的某个特定点上作用在球上的力的梯度,例如在45杆上,我们对它在这个杆之后将通过的沟槽的形式完全不感兴趣。也就是说,我们对区间[44,0]不感兴趣。因此,为了计算作用在45号杆上的小球上的力的梯度,我们考虑段[99,45]。
3.对于这个区间[99,45],我们通过MNA的方法找到抛物线。作用在球价上的力的梯度将等于45点的价格和近似抛物线的值之间的差。
4.然后我们要得到作用在价格球上的梯度值,即它沿[99,0]段运动的整个长度。为此,我们将不得不重复步骤1-3。也就是说,我们把[99,95],[99,94],[99,93]........[99,2],[99,1],[99,0]这几个线段,找出每个线段的梯度值。
5.现在我们把第4项中得到的梯度相加,就可以得到给定的99点作用在球价上的力的梯度之和的值。所以这是我们可以在图上画出的数值。这将是时间轴上位于第99条的那个点。
6.接下来,我们要得到我们这个谷底[99,0]的其他点的梯度之和的值。要做到这一点,我们必须依次取相应的谷底[98,0], [97,0], [96,0]......[6,0], [5,0], [4,0]。而对于每个凹槽,重复步骤1-5。因此,在图表上我们将得到这样一个波浪结构,从第99条开始,在第0条上衰落。

PS: 在solandr 08.07.06 20:12的图片中,梯度的求和是modulo。但后来我开始使用简单的algabraic求和法,这个结构中通过0的过渡点是在当前时间点上发挥作用的真实通道的出现点。"基于艾略特波理论的交易策略" solandr 27.08.06 21:05
我正在进行完全相同的程序,以利于回归渠道。我还得到了波浪结构,并从中得到了在当前时间点上发挥作用的通道的时间框架。
 
<br/ translate="no">所以你的PE图是相对于当前基准点的局部极值的轨迹?


嗨,尤里!抱歉耽搁了,有点忙于重要的事情。好吧,我试着按顺序解释一切。特别是我正在谈论赫斯特指数,而我还没有推理出势能的问题。 总的来说,我有点困惑,因为我下面要写的东西,我们已经讨论过很多次了,包括渠道、PE和死区,(除了一些小的方面)。好吧,没关系,至少我们会重复我们所学到的东西,而弗拉迪斯拉夫作为一个思想家,会纠正我们。:о)当然,这并不是我的全部模式,或者说根本就不是一个模式。没有艾略特波浪理论的片段,模型的基础--赫斯特指数,MSP的全部内容,"分形结构的波 "和许多其他东西,以及这些组成部分之间的联系。我孤立地考虑PE和它的使用,而不是描述我的模型。





通道的势能(PE)

我将从PE图本身开始。从当前的基准点(换句话说,从某个明确的时间点的零开始)抽取一个价格样本,例如(H+L)/2的N个条(或样本)。这个价格样本是用于计算EP的输入。如果我们在历史上以+1为增量,每次这样的迭代都会将样本限制在n到N的长度。在这种情况下,从0到N或从N到0并不重要。 对于每一个这样的通道,都要计算PE。因此,一个通道被分配一个势能值。这一点在数字中得到了雄辩的证明(注意高大上的艺术品 :o) n=5 正如我前面写的,长度小于死区边界的通道没有被考虑在内,但应该注意的是,在计算PI时,剩余的通道包括这部分。对于Hurst指数也有一个类似的部分,当对一个非常小的样本进行计算时,可能先验地包含很大的误差,而不对它进行计算。在我的模型中,这个区间的长度没有设定;它是根据对当前基准点附近的价格系列的分析来选择的。而这是n=8的变体。下一次迭代给我们提供了一个由8个样本组成的价格样本,为其计算一个PE值。得到的PE函数有其极值,每个极值对应于一定长度的通道。鉴于计算PE的方法的特殊性,对应于局部最小值(即不仅仅是最小的极值)的通道是特别有意义的。它们的值,相对于长度为N的窗口的位置,结合额外的通道特征,给出一个嵌套层次。在候选人中确定了一个具有高潜力的上层(父母)渠道。这不一定是最长的通道。更大的 "潜力 "这一概念在这里是根据MSP来解释的。再加上势能的最小值,这可以说是最稳定的通道。关于可持续发展的一点看法。一般来说,这个概念是相当有弹性的,对于我们的情况,它也具有概率性质。例如,在物理学教科书的书页上,一个骑自行车的人正在骑行。处于平衡状态并考虑到其存在的理想条件,他可以永远骑行。在街上,它并不那么完美。例如,我认识一个骑自行车的人,我不会在他身上赌一分钱,他将处于平衡状态,即至少再骑10分钟。诚然,那是我。:о)))赫斯特指标的持久性估计也是类似的情况,它也具有概率的性质。 计算出的图形以及其他特征应被视为系统存在的初始条件,当然,这些条件会改变。为了清楚起见,我将用通道的 "能量 "代替 "潜能"。这个渠道会永远存在吗?当然不是,有一天它将失去能量,不复存在。它将在哪里花钱?我的拙见是--它将把它交给其他渠道。或者,从哲学上讲,其他渠道会把它带走。那么你如何追踪能量从通道中的泄漏呢?...我刚才说什么来着,啊,是的,对不起,我分心了。我就不多说了。让我给你一个从 "随机 "零条计算的例子。"随机性 "是由于非随机地选择了一个典型的、在我看来是困难的图上区域。这在后面会变得很明显。因此,我固定当前的读数,并计算N=130的PE,死区被假定为30。结果,我们有130-30=100个通道,对于每个通道,我计算出PE值。我已经得到了这样一张图表,上面叠加了(H+L)/2的价格系列。 这个图表包含四个具有最小PI值的通道。此外,通道是通过其计数来识别的(通道长度计算为130-(局部极值的计数))。25个计数 51个计数 88个计数 117个计数 结果,我们从100个通道的系统变成了4个系统。让我们单独看一下每个通道:































25计数PE 最高级别的通道(父级)。较低级别的渠道





51 PE计数


相当好奇的一个渠道。似乎同样强大,但你可以看到,通道是分散的。这意味着这两个通道将争夺能量:一个将携带它到一个方向,另一个将携带它到另一个方向。转移的方向,一般来说,不是很相同。我想知道谁将从谁那里获取能量。





88 PE计数



117 PE计数 该通道的势能值与其他通道相比最小。 那么,该如何处理这些渠道呢?当然,要寻找反转区。这需要一个好的模型。在这个论坛上讨论的最简单的方法之一是寻找低阶通道相互之间以及与父通道的交点。只需要知道寻找哪些交叉点就可以了;此外,通道边界的选择也很重要。毕竟,每个通道由三条线表示:中心线,通常是



线性回归,以及下边界和上边界。两个通道的交叉点形成九个点。如果你找到所有通道与所有通道的交点,你会得到一个体面的数字。 我将跳过关于构建反转区的繁琐故事,而直接进入结果。首先,这只适用于用我的方法计算的特定PE。我只注意到,计算出的PE函数只是系统的初始条件(在这种情况下,系统是四个通道,而不是100个), 我们得到了以下通道的枢轴区,参与者 让我们看看事实。这可能不是最难预测的部分,但它的不同之处在于,稳定的通道开始失去能量,而将继承的新通道还没有明确形成。它正处于起步阶段,介于两者之间。

















动态模型

为了建立一个动态模型,图形必须满足一个简单的条件,即计算值必须不依赖于样本长度。这应理解为:从固定的电流基准点的大样本应包括较小的估计样本的值。例如: N=5 数值:0 1 2 3 4 值。3 4 2 2 7 N=10 Counts: 0 1 2 3 4 5 6 7 8 9 Values:3 4 2 2 7 5 1 2 2 1 在实践中,它看起来是这样的: 一般来说,它没有什么特别之处,但这个属性只是对动态模型非常重要,为此我强调了它。 现在说说动态模型本身。让我们以一小时图为例。假设现在是某个交易日的16:00。我想做什么?粗略地说,执行上述简单描述的行动。从对应于16:00的零条开始,我绘制了一个具有N个历史条(计数)长度的EP图。该图显示了这一事实: 现在让我们回忆一下一小时前我在做什么,即15:00时。如果你不喝啤酒,你一定是以同样的方式绘制了PE图。16:00和15:00的价格系列输入样本,彼此之间只有两个最极端的数值不同。而这无疑应该对PE图表产生无足轻重的影响。但怎么做呢?让我们把上面的当前例子(让我们假设EP图是为16:00计算的),并绘制一小时前,即15:00: 。我们可以看到,本地极值的数量保持不变,但有轻微的变化,即相对于窗口的内部运动。实际上,我期待什么呢?局部极值也会改变它们相对于长度为N的窗口的位置(记住,窗口是一个固定值),能量水平也会改变,而曲线的形状实际上保持不变。16:00时,PE地块上的母体通道有24个计数(通道长度为106)。在15:00(也仍然是母频道),读数为22,等于频道长度108。还应注意的是,没有重新安排渠道的级别。主通道失去了长度和稳定性。 在某些时候,我想,为什么不进一步研究这个故事,就像 "冻结 "窗户一样,通过它观察这个过程。 剩下的就是把N个小时的所有图形结合起来(尽管这不是唯一的结构)(当然,时间在这里并不重要,可以是分钟、小时、天等)。我们得到以下结果。这是获得动态分析的原始数据(矩阵)的一个简单方法。这只是最开始的步骤,应用被认为是分析局部最小点的动态,一般来说,可以从中获得更多的额外信息。而即使这个简单的应用程序也提供了很多有用的信息。你可以看到通道是如何被重新安排的,改变它们的结构和层次。例如,两个频道如何合并成一个,或者反之,分裂成几个。而我在上一篇文章中谈到了一个这样的标准。下面是这个例子的矩阵(它不仅是美丽的,而且是认知的,主要的是扩大意识 :)PS:尤里,把所有的艺术和视觉词汇的力量都放在这个帖子里。我希望它能变得更容易理解。在这里,我只有一个要求,如果再不清楚,就写上一切清楚,否则你会在我身上形成一种自卑感,我就得花钱买一个昂贵的脑残粉。开个玩笑!!!。:о))))对不起,图片比我想的要大一些。
 
嗨,Sergei !
现在很清楚,你的PE不是一个函数,而是一个功能,很清楚动态画面是如何建立的,通道是如何定义的,它们与PE有什么关系。

只有计算PE的方法被排除在外,但这是正确的。否则,对该模型某些方面的讨论就会变成一份初级出版物。而这样的目标,我希望是不值得的。

因此,我想知道这样一个多成分和数学上丰富的系统会导致什么结果。
 
谢谢你,grasn,你再一次让我相信,我在正确的轨道上。诚然,我的势能分布函数是多维的,但在函数空间的任何正交平面上,它看起来大致相同。对于我的分析,我使用了一个神经网络的综合体,在结构上相互连接。
网格必须考虑到能量从通道到通道的 "流动"。并为每个通道分别定义反转区。之后,我做了一个抛物线近似,并利用波函数合成了一个函数图(价格图)。边缘效应造成的强烈失真问题仍未解决。我现在正在努力--我有一些想法。 结果还不是很理想。计算需要5分钟。我需要24小时来训练网格

P.S. 所有与你的系统的巧合,请考虑随意。因为我不能复制,因为你的系统没有看到:)。

不能复制你的系统,因为我没有看到你的系统。我不会在Cagi paternas身上浪费我的时间。我认为!
原因: