Il filtro perfetto - pagina 4

 

Se è così, guardate il mio tacchino, piccolo e liscio come il sedere di un bambino)))))

Su un principio così semplice da far paura...

File:
vaMA.ex5  8 kb
 
J.B:

Su un principio così semplice fa paura...

Indicatore interessante, forse anche non inferiore al JJMA, come mi è sembrato a prima vista, le impostazioni del periodo sono troppo sproporzionate, ma se si prende si può ottenere un quadro abbastanza simile, e in alcuni punti uno è più veloce in altri. Ma hai mischiato il file molto probabilmente, in modo che la gente potesse valutare la qualità del principio spaventoso:) Hai bisogno di un file *.mql5.

Документация по MQL5: Файловые операции / FileMove
Документация по MQL5: Файловые операции / FileMove
  • www.mql5.com
Файловые операции / FileMove - Документация по MQL5
 
EvMir:

così la gente può valutare la qualità del principio spaventoso:) Ho bisogno di un file *.mql5.

Sì, sono un po' timido... faranno ridere un principiante, si incazzeranno(((

 
J.B:

Sono un po' timido... si prenderanno gioco di un nuovo arrivato, mi faranno sentire male(((

Non dovrebbero, è una caduta troppo bassa per lasciarsi mettere in imbarazzo da uno studioso principiante.
 
server:
Non dovrebbero, è una caduta troppo bassa per permettersi di essere disonorati come studiosi novizi.

Ok, correrò il rischio. Il codice è piccolo, non c'è niente di cui vergognarsi.

//+------------------------------------------------------------------+
//|                                                              vaMA|
//|                                              Copyright 2013,  J.B|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2013, J.B"

#property version   "1.00"

#include <MovingAverages.mqh>

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   1

#property indicator_type1   DRAW_LINE
#property indicator_color1  Blue

input int vaMA_period=15;
input bool use_double_smooth=1;

double vaMA_buffer[],EMA[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+  
void OnInit()
  {
   SetIndexBuffer(0,vaMA_buffer,INDICATOR_DATA);
   SetIndexBuffer(1,EMA,INDICATOR_CALCULATIONS);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,const int prev_calculated,const int begin,const double &price[])
  {

   int first,bar;
   double vel,acc,aaa;

   ExponentialMAOnBuffer(rates_total,prev_calculated,begin,vaMA_period,price,EMA);                                   //Сгененрировать EMA c прайса

   if(rates_total<vaMA_period-1)return(0);                                                                            //
   if(prev_calculated==0)first=vaMA_period-1+begin;                                                                  //Проверка количества данных для цикла                                                                                      //
   else first=prev_calculated-1;                                                                                     //

   for(bar=first; bar<rates_total; bar++)                                                                            //Цикл по массиву баров
     {
      vel = EMA[bar]-EMA[bar-vaMA_period/4];                                                                         //Приращение между барами
      acc = EMA[bar]-2*EMA[bar-vaMA_period/4]+EMA[bar-vaMA_period/8];                                                //Приращение приращения между барами
      aaa = EMA[bar]-3*EMA[bar-vaMA_period/4]+3*EMA[bar-vaMA_period/8]-EMA[bar-vaMA_period/12];                      //Приращение приращения приращения...                                                                                         
      vaMA_buffer[bar] = EMA[bar]+vel+acc/2+aaa/6;                                                                   //Алхимический микс
     }
     
   if(use_double_smooth)  
   ExponentialMAOnBuffer(rates_total,prev_calculated,begin,vaMA_period/4,vaMA_buffer,vaMA_buffer);                   //Повторное EMA сглаживание


   return(rates_total);
  }
 
J.B:

Sono un po' timido... si prenderanno gioco di un nuovo arrivato, mi faranno sentire male(((

Non credo. Possono punzecchiarti con critiche costruttive, questo è sicuro. È meglio così. Coda.
 

Volevo farlo come una funzione da un array come"ExponentialMAOnBuffer" in un file di libreria separato, ma non era così facile per me(((

 

L'idea è di compensare l'EMA con "derivati" con coefficienti ala decomposizione di Taylor... Tecnicamente semplice, ma abbastanza plausibile rispetto al non banale JJMA, che è considerato il migliore.

 

Versione a colori.


File:
vaMAColor.mq5  5 kb
 

Buon filtro, approvo. L'idea è concisa ed efficace. Solo lo spostamento per slancio è un argomento ben noto, ma per incrementi di ordine superiore, non ho visto.

Ma comunque dovremo (in modo adattivo) nelle aree piatte, aumentare il periodo di smoothing per evitare molti segnali sbagliati. Cioè, non potrai evitarlo così facilmente:) Fate ZZ sui punti in cui il colore cambia e vedrete come un semplice TS funzionerebbe con un tale filtro.