una strategia di trading basata sulla teoria dell'onda di Elliott - pagina 34

 
Ho derivato un sistema di equazioni per trovare i coefficienti di una parabola usando il metodo dei minimi quadrati. Chi si ricorda del sovrano? O devo entrare io stesso nei fattori determinanti... <br / translate="no">

Ecco un algoritmo per risolvere un sistema di equazioni lineari e l'implementazione sotto forma di regressione polinomiale.
Se m=1, è una linea,
con m=2 è una parabola,
se m=3, c'è un cubo, e così via.
//--------------------------------
#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;
}
//********************************************************************** 


Sulla base di ciò, puoi costruire sia i livelli RMS che quelli di probabilità e ottimizzare la lunghezza e l'estrapolazione.
Anche se con un'estrapolazione affidabile non mi è ancora tutto chiaro, qualcuno può illuminarmi?
Se qualcuno ci ha prestato attenzione? O forse ho tirato fuori tutto questo per niente?

 
Ho derivato un sistema di equazioni per trovare i coefficienti di una parabola usando il metodo dei minimi quadrati. Chi si ricorda del sovrano? O devo entrare io stesso nei fattori determinanti...

Rosh, perché è tutto così complicato? Come farete a trovare i coefficienti se non sapete in anticipo che questo particolare campione contiene ciò che vi serve? In effetti si può rendere tutto più semplice! Vladislav ha detto all'inizio che gli errori di approssimazione mostrano l'ordine di approssimazione. E ne ho già scritto. Posso ripeterlo ancora una volta. Se abbiamo un'equazione della seguente forma: y=ax^2+bx+c, allora approssimando il campione con il canale di regressione lineare y1=b1X+c1 si ottiene effettivamente il coefficiente b1 uguale al coefficiente b dell'equazione iniziale. Quindi sottraendo l'equazione di regressione lineare dalla prima equazione si ottiene un'equazione della forma y=ax^2+c2. Cioè, si può dire da questa equazione che la parte superiore della parabola sarà spostata di c2 contro l'asse x. Tieni anche conto del fatto che il vertice della parabola sarà al centro del campione. Se prendiamo il vertice della parabola a (0,c2), cioè l'origine del campione al vertice della parabola avremo a che fare con l'equazione (y-c2)=ax^2. Ma naturalmente non conosciamo i parametri 2x a e c2 in questa equazione. Ma sappiamo come dipendono l'uno dall'altro c2=y-ax^2. Conosciamo anche i punti di intersezione della parabola con l'asse x. Quindi abbiamo tre punti sull'asse delle x - il vertice e l'intersezione con l'asse delle x, con cui dobbiamo trovare la parabola desiderata. Qui non vedo altro modo di risolvere il problema che trovare per approssimazioni successive tale a e di conseguenza tale parametro c2 , al quale l'errore RMS di approssimazione con una parabola sarà minimo. E poi per il noto c2 possiamo anche ottenere il parametro c dalla prima equazione, grazie al quale abbiamo l'equazione completa della funzione quadratica. Penso che questo sia ciò che richiede la maggior parte del tempo di calcolo di Vladislava, poiché tutto il resto può richiedere meno tempo di calcolo.
 
Yuri, sei assolutamente seccato per niente. Non ho davvero capito la sua domanda. Ti rispondo come hai chiesto: per il problema che stai risolvendo - questo è il modo giusto di farlo.

Buona fortuna e buone tendenze.
 
Vladislav, nell'immagine che hai presentato, puoi vedere che nell'indicatore MMLevls_VG il parametro MMPeriod è 240. È così? Stai dicendo che tutto porta ad un grafico giornaliero. Forse qualcosa che non capisco?
 
Вывел систему уравнений для нахождения коэ-тов параболы по методу наименьших квадратов. Кто помнит линейку? Или самому придется лезть в детерминанты...

Rosh, perché è tutto così complicato? Come farai a cercare i coefficienti se non sai in anticipo che questo particolare campione contiene ciò di cui hai bisogno? In effetti, puoi rendere tutto più semplice! Vladislav ha detto all'inizio che gli errori di approssimazione mostrano l'ordine di approssimazione. E ne ho già scritto. Posso ripeterlo ancora una volta. Se abbiamo un'equazione della seguente forma: y=ax^2+bx+c, allora approssimando il campione con il canale di regressione lineare y1=b1X+c1 si ottiene effettivamente il coefficiente b1 uguale al coefficiente b dell'equazione iniziale. Quindi sottraendo l'equazione di regressione lineare dalla prima equazione si ottiene un'equazione della forma y=ax^2+c2. Cioè, si può dire da questa equazione che la parte superiore della parabola sarà spostata di c2 contro l'asse x. Tieni anche conto del fatto che il vertice della parabola sarà al centro del campione. Se prendiamo il vertice della parabola a (0,c2), cioè l'origine del campione al vertice della parabola avremo a che fare con l'equazione (y-c2)=ax^2. Ma naturalmente non conosciamo i parametri 2x a e c2 in questa equazione. Ma sappiamo come dipendono l'uno dall'altro c2=y-ax^2. Conosciamo anche i punti di intersezione della parabola con l'asse x. Quindi abbiamo tre punti sull'asse delle x - il vertice e l'intersezione con l'asse delle x, con cui dobbiamo trovare la parabola desiderata. Qui non vedo altro modo di risolvere il problema che trovare per approssimazioni successive tale a e di conseguenza tale parametro c2 , al quale l'errore RMS di approssimazione con una parabola sarà minimo. E poi per il noto c2 possiamo anche ottenere il parametro c dalla prima equazione, grazie al quale abbiamo l'equazione completa della funzione quadratica. Penso che questo sia ciò che richiede la maggior parte del tempo di calcolo di Vladislava, poiché tutto il resto può richiedere meno tempo di calcolo.


Non capisco - quali sono i problemi. L'equazione della parabola è ricercata dalle stesse considerazioni del canale della regressione lineare - tramite MNC. La soluzione di questo sistema di equazioni è univoca, e non richiede iterazioni, si risolve di petto.
Zi=Deti/Det , dove Zi sono i coefficienti della parabola, Det è il determinante della matrice, Deti è il determinante della matrice ottenuto sostituendo la colonna dei termini liberi (Ti) nella colonna i. Allo stesso modo, possiamo applicare lo stesso criterio al canale curvilineo risultante (descritto senza ambiguità in futuro) - l'RMS dell'intero campione nel canale della parabola non è maggiore dell'RMS di 2/3 del campione. Per ora tacerò su Hurst, perché non ho una risposta, ma sto per farlo :)

HZ Ho trovato un libro di riferimento di matematica del 1986, quindi sono molto intelligente :)
(Kolmogorov o Demidovich sarebbe stato meglio).
 
Rispondo come chiesto: per il tipo di problematica che si sta risolvendo - questa è la valutazione giusta.


Grazie, capisco. Anche se non sono d'accordo e resto della mia opinione.
 
Ho trovato un libro di riferimento di matematica del 1986, quindi sto diventando molto più intelligente :)

È MOLTO buono che ci sia una soluzione semplice che non richiede iterazioni. Sono solo un po' arrugginito anche su linal :o(. Dovrò dare un'occhiata anche a qualche libro. Rosh, se hai già risolto definitivamente, penso che tutti gli interessati sarebbero anche interessati a vedere la soluzione completa che hai già abbozzato sopra. E forse puoi anche farne un articolo separato su Alpari?
 
Ho iniziato a fare delle foto dal libro, e poi ho rinunciato - la qualità non era buona. Trovato attraverso Yandex http://www.exponenta.ru/educat/class/courses/la/theme3/theory.asp#4

Ed ecco un tipo di corso - http://www.exponenta.ru/educat/class/courses/student/la/examples.asp
 
Вывел систему уравнений для нахождения коэ-тов параболы по методу наименьших квадратов. Кто помнит линейку? Или самому придется лезть в детерминанты...

Ecco l'algoritmo per risolvere un sistema di equazioni lineari e l'implementazione in forma di regressione polinomiale.
Se m=1 - una linea,
a m=2 è una parabola,
Se m=3 - un cubo, ecc.


Sì, questo è esattamente quello che voleva Solandr. Tuttavia, c'era una domanda - per scrivere un codice così complicato così velocemente usando le mie formule - bisogna essere uno specialista. Ma ho guardato il codice e ho il mio algoritmo, almeno l'indicizzazione dei termini della matrice rispecchia il mio sistema di equazioni. Ora vedo, che ANG3110 ha mangiato un cane su queste cose (un ramo su un ragno mi ricordo) :)
 
Vedo ora che ANG3110 ha mangiato il cane su queste cose (ramo sul ragno che ricordo) :)

Infatti, lo appoggio pienamente!!!
Molto bello e un indicatore necessario!
ANG3110, potresti spiegare il codice? È difficile da capire subito. Forse avete un vostro blog sul forum, dove tutto è scritto in dettaglio su questo indicatore? Grazie in anticipo per le informazioni.
Motivazione: