La differenza di Cauchy è un precursore di un'inversione e/o correzione? - pagina 3

 

Allego l'indicatore richiesto.

Si basa sulla media mobile personalizzata della cartella con esempi di indicatori.

Funzione di calcolo SMA senza modifiche.
Il GMA è calcolato in una funzione separata.
Alla fine calcoliamo la loro differenza.

File:
Koshi.mq5  6 kb
 
elibrarius:

Allego l'indicatore richiesto.

Si basa sulla media mobile personalizzata della cartella con esempi di indicatori.

Funzione di calcolo SMA senza modifiche.
Il GMA è calcolato in una funzione separata.
Alla fine calcoliamo la loro differenza.

Una foto del grafico è meglio.
 
 
elibrarius:

Allego l'indicatore richiesto.

Si basa sulla media mobile personalizzata della cartella con esempi di indicatori.

La funzione di calcolo SMA non è stata modificata.
Il GMA è calcolato in una funzione separata.
Alla fine calcoliamo la loro differenza.

Grazie! Si può vedere dal grafico sopra che l'indicatore sta adempiendo alla sua funzione. O non lo è? Ho ancora bisogno di lavorarci molto per capirlo meglio.

Domanda: che periodo si usa?

 
elibrarius:

Non si vede nulla, tranne quello che si vede senza indicatori.

Periodo M1. È scritto nell'angolo sinistro).

 
Yuriy Asaulenko:
Non vedo niente, tranne quello che si può vedere senza indicatori.
Perché non vuoi vedere. Vedo che l'indicatore ha inequivocabilmente previsto un calo anche prima (al rialzo) di quanto il prezzo sia effettivamente sceso.
 
Yousufkhodja Sultonov:
Grazie! Dal grafico qui sopra, si può vedere che l'indicatore sta adempiendo alla sua funzione. O forse sì?
L'indicatore legge ciò che è dato nella formula. Ma l'interpretazione dei risultati e lo sviluppo della ST sulla sua base è un compito molto più difficile.
A proposito, per favore controllate se il GMA sta contando correttamente?

void CalculateGeometricalMA(int rates_total,int prev_calculated,int begin,const double &price[])
  {
   int i,limit;
//--- first calculation or number of bars was changed
   double powr=1/(double)InpMAPeriod;
   if(prev_calculated==0)// first calculation
     {
      limit=InpMAPeriod+begin;
      //--- set empty value for first limit bars
      for(i=0;i<limit-1;i++) gma[i]=1.0;
      //--- calculate first visible value
      double firstValue=1;
     
      for(i=begin;i<limit;i++)
         firstValue*=price[i];
      firstValue=MathPow(firstValue, powr);
      gma[limit-1]=firstValue;
     }
   else limit=prev_calculated-1;
//--- main loop
   for(i=limit;i<rates_total && !IsStopped();i++){
      gma[i]=gma[i-1] * (MathPow(price[i], powr) / MathPow(price[i-InpMAPeriod], powr));
   }
//---
  }
 
Yuriy Asaulenko:

Non si vede niente, tranne quello che si vede senza indicatori.

Periodo M1. È scritto nell'angolo sinistro).

Per periodo intendo il numero delle ultime barre della storia utilizzate per calcolare la linea dell'indicatore.
 
Yousufkhodja Sultonov:
Perché non vuoi vedere. Vedo che l'indicatore ha inequivocabilmente previsto un calo anche prima (al rialzo) di quanto il prezzo sia effettivamente sceso.

Lo è?

L'ha anche guardato di nuovo.

Zy Un derivato da MA avrebbe dato la stessa cosa. Anche ancora prevedeva la direzione).

 
elibrarius:
L'indicatore conta ciò che è dato nella formula. Ma interpretare i risultati è un compito molto più difficile.
A proposito, per favore controllate se il GMA è corretto?

void CalculateGeometricalMA(int rates_total,int prev_calculated,int begin,const double &price[])
  {
   int i,limit;
//--- first calculation or number of bars was changed
   double powr=1/(double)InpMAPeriod;
   if(prev_calculated==0)// first calculation
     {
      limit=InpMAPeriod+begin;
      //--- set empty value for first limit bars
      for(i=0;i<limit-1;i++) gma[i]=1.0;
      //--- calculate first visible value
      double firstValue=1;
     
      for(i=begin;i<limit;i++)
         firstValue*=price[i];
      firstValue=MathPow(firstValue, powr);
      gma[limit-1]=firstValue;
     }
   else limit=prev_calculated-1;
//--- main loop
   for(i=limit;i<rates_total && !IsStopped();i++){
      gma[i]=gma[i-1] * (MathPow(price[i], powr) / MathPow(price[i-InpMAPeriod], powr));
   }
//---
  }
Sfortunatamente, non so molto del codice, lasciate che qualcuno esperto controlli confrontando con le formule date o inserendo i prezzi del test dato nella tabella originale. Sento, dall'ordine dei numeri, che state contando correttamente.
Motivazione: