Elliot Dalga Teorisine dayalı ticaret stratejisi - sayfa 34

 
En küçük kareler yöntemini kullanarak bir parabolün katsayılarını bulmak için bir denklem sistemi çıkardı. Çizgiyi kim hatırlıyor? Yoksa belirleyicilere kendiniz tırmanmanız gerekecek ...

İşte bir lineer denklem sistemini çözmek için bir algoritma ve polinom regresyon şeklinde bir uygulama.
m=1 - satır olduğunda,
m=2 ile - bir parabol olacak,
m=3 ile - bir küp, vb.
//--------------------------------
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 LightSkyBlue
//-----------------------------------
extern double hours = 24;
extern int m = 2;
extern int i0 = 0;
//-----------------------
double fx[];
double a[10,10],b[10],x[10],sx[20];
double sum; 
int p;
int nn;
//*******************************************
int init() 
{
   IndicatorShortName("at_PR (Din)");
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,fx);
   p=hours*60/Period(); 
   nn=m+1; 
   return(0);
}
//**********************************************************
int start()
{ 
  int i,n,k;
  sx[1]=p+1;
  SetIndexDrawBegin(0,Bars-p+i0);
  //----------------------sx---------------------
  for(i=1; i<=nn*2-2; i++) 
  {
    sum=0.0; 
    for(n=i0; n<=i0+p; n++) {sum+=MathPow(n,i);} 
    sx[i+1]=sum;
  }  
  //----------------------syx--------------------
  for(i=1; i<=nn; i++) 
  {
    sum=0.0; 
    for(n=i0; n<=i0+p; n++) 
    {
      if (i==1) sum+=Close[n]; 
      else 
      sum+=Close[n]*MathPow(n,i-1);
    } 
    b[i]=sum;
  } 
  //===============Matrix========================
  for(int j=1; j<=nn; j++) 
  {
    for(i=1; i<=nn; i++) 
    {
      k=i+j-1; 
      a[i,j]=sx[k];
    }
  }  
  //===============Gauss=========================
  af_Gauss(nn,a,b,x);
  //=============================================
  for (i=i0; i<=i0+p; i++) 
  {
    sum=0; 
    for(k=1; k<=m; k++) sum+=x[k+1]*MathPow(i,k); 
    fx[i]=x[1]+sum;
  } 
  //-------------------------------------------------------------
  return(0);
}
//*************************************************************** 
void af_Gauss(int n, double& a[][],double& b[], double& x[])
{
  int i,j,k,l;
  double q,m,t;

  for(k=1; k<=n-1; k++) 
  {
    l=0; 
    m=0; 
    for(i=k; i<=n; i++) 
    {
      if (MathAbs(a[i,k])>m) {m=MathAbs(a[i,k]); l=i;}
    } 
    if (l==0) return(0);   

    if (l!=k) 
    {
      for(j=1; j<=n; j++) 
      {
        t=a[k,j]; 
        a[k,j]=a[l,j]; 
        a[l,j]=t;
      } 
      t=b[k]; 
      b[k]=b[l]; 
      b[l]=t;
    }  

    for(i=k+1;i<=n;i++) 
    {
      q=a[i,k]/a[k,k]; 
      for(j=1;j<=n;j++) 
      {
        if (j==k) a[i,j]=0; 
        else 
        a[i,j]=a[i,j]-q*a[k,j];
      } 
      b[i]=b[i]-q*b[k];
    }
  }  
  
  x[n]=b[n]/a[n,n]; 
  
  for(i=n-1;i>=1;i--) 
  {
    t=0; 
    for(j=1;j<=n-i;j++) 
    {
      t=t+a[i,i+j]*x[i+j]; 
      x[i]=(1/a[i,i])*(b[i]-t);
    }
  }
  return;
}
//********************************************************************** 


Buna dayanarak, hem standart sapma hem de olasılık seviyeleri oluşturulabilir ve uzunluk ve ekstrapolasyon optimize edilebilir.
Güvenilir ekstrapolasyonla hala her şeyi anlamıyorum, biri beni aydınlatabilir mi?
Eğer öyleyse, birisi buna dikkat etti mi? Ve sonra belki tüm bunları boşuna getiriyorum?

 
En küçük kareler yöntemini kullanarak bir parabolün katsayılarını bulmak için bir denklem sistemi çıkardı. Çizgiyi kim hatırlıyor? Yoksa belirleyicilere kendiniz tırmanmanız gerekecek ...

Rosh, neden her şey bu kadar karmaşık? Bu belirli örneğin ihtiyacınız olan şeye sahip olduğunu önceden bilmiyorsanız, katsayıları nasıl arayacaksınız? Aslında, her şey daha kolay hale getirilebilir! Vladislav, en başta, yaklaşım hatalarının yaklaşıklık sırasını gösterdiğini söyledi. Ve bunun hakkında zaten yazdım. Tekrar tekrar edebilirim. y=ax^2+bx+c biçiminde bir denklemimiz varsa, örneğe doğrusal regresyon kanalı y1=b1X+c1 ile yaklaşırsak, aslında ilk denklemin b katsayısına eşit b1 katsayısını elde edersiniz. Ayrıca, lineer regresyon denklemini birinci denklemden çıkararak, y=ax^2+c2 biçiminde bir denklem elde ederiz. Yani, bu denklemden, parabolün tepesinin x eksenine göre c2 ile kaydırılacağını hemen söyleyebiliriz. Ayrıca, parabolün tepesinin kesinlikle numunenin ortasında olacağı gerçeğini de hesaba katmanız gerekir. (0,c2) noktasında parabolün tepesini alırsak, yani parabolün tepesindeki örnek için referans merkezini işaretlersek, o zaman (y-c2)=ax^ denklemiyle ilgileneceğiz. 2. Ama doğal olarak bu denklemdeki 2 parametre a ve c2'yi bilmiyoruz. Ama birbirlerine nasıl bağlı olduklarını biliyoruz c2=y-ax^2. Ayrıca parabolün x ekseni ile kesişme noktalarını da biliyoruz.Toplamda, x ekseni boyunca üç noktamız var - köşe ve istenen parabolü bulmamız gereken x ekseni ile kesişmeler. Ve burada, böyle bir a ve dolayısıyla c2 parametresini bulmak için basit bir ardışık yaklaşım yöntemiyle sorunu çözmenin başka bir yolunu görmüyorum, bunun için hatanın bir parabol ile yaklaşıklıktan standart sapması minimum olacaktır. Ayrıca, bilinen c2'yi kullanarak, ikinci dereceden fonksiyonun tam denklemine sahip olduğumuz için ilk denklemden c parametresini de elde edebiliriz. Vladislava'nın hesaplama süresinin çoğunu alan şeyin tam olarak bu olduğunu düşünüyorum, çünkü diğer her şey hesaplamaların süresi açısından daha az önemli bir rol oynayabilir.
 
Yuri, boş yere kesinlikle sinirlisin. Sorunuzu gerçekten anlamadım. Sorulduğunda cevap veriyorum: Çözülmekte olan sorunun formülasyonu için, orada böyle bir değerlendirmeye ihtiyaç olduğu doğrudur.

İyi şanslar ve geçen trendler.
 
Vladislav, verdiğin resim MMLevls_VG göstergesindeki MMPeriod parametresinin 240 olduğunu gösteriyor. Bu doğru mu? Her şeyin günlere yol açtığını söylüyorsunuz. Belki anlamıyorum?
 
Вывел систему уравнений для нахождения коэ-тов параболы по методу наименьших квадратов. Кто помнит линейку? Или самому придется лезть в детерминанты...

Rosh, neden her şey bu kadar karmaşık? Bu belirli örneğin ihtiyacınız olan şeye sahip olduğunu önceden bilmiyorsanız, katsayıları nasıl arayacaksınız? Aslında, her şey daha kolay hale getirilebilir! Vladislav, en başta, yaklaşım hatalarının yaklaşıklık sırasını gösterdiğini söyledi. Ve bunun hakkında zaten yazdım. Tekrar tekrar edebilirim. y=ax^2+bx+c biçiminde bir denklemimiz varsa, örneğe doğrusal regresyon kanalı y1=b1X+c1 ile yaklaşırsak, aslında ilk denklemin b katsayısına eşit b1 katsayısını elde edersiniz. Ayrıca, lineer regresyon denklemini birinci denklemden çıkararak, y=ax^2+c2 biçiminde bir denklem elde ederiz. Yani, bu denklemden, parabolün tepesinin x eksenine göre c2 ile kaydırılacağını hemen söyleyebiliriz. Ayrıca, parabolün tepesinin kesinlikle numunenin ortasında olacağı gerçeğini de hesaba katmanız gerekir. (0,c2) noktasında parabolün tepesini alırsak, yani parabolün tepesindeki örnek için referans merkezini işaretlersek, o zaman (y-c2)=ax^ denklemiyle ilgileneceğiz. 2. Ama doğal olarak bu denklemdeki 2 parametre a ve c2'yi bilmiyoruz. Ama birbirlerine nasıl bağlı olduklarını biliyoruz c2=y-ax^2. Ayrıca parabolün x ekseni ile kesişme noktalarını da biliyoruz.Toplamda, x ekseni boyunca üç noktamız var - köşe ve istenen parabolü bulmamız gereken x ekseni ile kesişmeler. Ve burada, böyle bir a ve dolayısıyla c2 parametresini bulmak için basit bir ardışık yaklaşım yöntemiyle sorunu çözmenin başka bir yolunu görmüyorum, bunun için hatanın bir parabol ile yaklaşıklıktan standart sapması minimum olacaktır. Ayrıca, bilinen c2'yi kullanarak, ikinci dereceden fonksiyonun tam denklemine sahip olduğumuz için ilk denklemden c parametresini de elde edebiliriz. Vladislava'nın hesaplama süresinin çoğunu alan şeyin tam olarak bu olduğunu düşünüyorum, çünkü diğer her şey hesaplamaların süresi açısından daha az önemli bir rol oynayabilir.


Sorunun ne olduğunu anlamıyorum. Parabol denklemi, lineer regresyon kanalıyla aynı düşüncelerle - LSM aracılığıyla aranır. Bu denklem sisteminin çözümü kesindir ve yineleme gerektirmez, kafa kafaya çözülür.
Zi=Deti/Det , burada Zi parabolün katsayılarıdır, Det matris determinantıdır, Deti serbest terim sütununun (Ti) i sütununa ikame edilerek elde edilen matris determinantıdır. Benzer şekilde, aynı kriterleri elde edilen eğrisel kanala da uygulayabiliriz (gelecekte açık bir şekilde açıklanacaktır) - parabol kanalındaki tüm örneğin RMS'si, örneğin 2/3'ünün RMS'sinden daha fazla değildir. Bu kanala Hurst'a gelince - Şimdilik bir şey söylemeyeceğim çünkü bir cevabım yok ama elim yapmak üzere :)

PS 1986'da matematikle ilgili bir referans kitabı buldum ve bu nedenle çok daha akıllı oldum :)
(Kolmogorov veya Demidovich daha iyi olurdu)
 
Sorulduğunda cevap veriyorum: Çözülmekte olan sorunun formülasyonu için, orada böyle bir değerlendirmeye ihtiyaç olduğu doğrudur.


Teşekkürler, anladım. Buna katılmasam da fikrimin arkasındayım.
 
PS 1986'da matematikle ilgili bir referans kitabı buldum ve bu nedenle çok daha akıllı oldum :)

Yineleme gerektirmeyen basit bir çözümün olması ÇOK iyi. Ben sadece linali çok unuttum :o(. Kitaplara da bakmam gerekecek. Rosh, zaten tam olarak anladıysan, o zaman ilgilenen herkesin tanışması da ilginç olacağını düşünüyorum. Yukarıda ana hatlarıyla belirttiğiniz çözümün tam sürümü veya belki Alpari hakkında ayrı bir makale olarak yayınlayabilir misiniz?
 
Kitaptan fotoğraf çekmeye ve tükürmeye başladım - kalite o kadar sıcak değil. Yandex aracılığıyla bulundu http://www.exponenta.ru/educat/class/courses/la/theme3/theory.asp#4

Ve burada, olduğu gibi, bir kurs - http://www.exponenta.ru/educat/class/courses/student/la/examples.asp
 
Вывел систему уравнений для нахождения коэ-тов параболы по методу наименьших квадратов. Кто помнит линейку? Или самому придется лезть в детерминанты...

İşte bir lineer denklem sistemini çözmek için bir algoritma ve polinom regresyon şeklinde bir uygulama.
m=1 - satır olduğunda,
m=2 ile - bir parabol olacak,
m=3 ile - bir küp, vb.


Evet, Solandr'ın istediği buydu. Doğru, soru ortaya çıktı - formüllerime göre bu kadar hızlı bir şekilde biraz zor bir kod yazmak için - bir uzman olmanız gerekiyor. Doğru, kodu inceledim ve algoritma orada, en azından matris terimlerinin indekslenmesi denklem sistemimin ayna görüntüsü. Şimdi görüyorum ki ANG3110 böyle şeylerde köpek yedi (örümceğin üzerindeki dalı hatırlıyorum) :)
 
Şimdi görüyorum ki ANG3110 böyle şeylerde köpek yedi (örümceğin üzerindeki dalı hatırlıyorum) :)

Gerçekten, tamamen destekliyorum!
Çok güzel ve GEREKLİ gösterge!
ANG3110, kodu açıklayabilir misiniz? Bir bakışta anlamak zor. Belki de bu gösterge hakkında her şeyin ayrıntılı olarak açıklandığı forumda kendi konunuz vardır? Bilgi için şimdiden teşekkürler.