Media mobile - pagina 105

 
person77:
Fantastico - funziona molto bene mladen! Grazie mille.

Un paio di richieste se non è troppo disturbo:

1. Mentre le 4 MA sono tutte in sincronia, il prezzo si ritira e tocca una MA designata

(in questo caso la 2a MA più corta, la 15 EMA rossa) vorrei che venisse prodotta una freccia e un allarme.

Poi passerei al più piccolo time frame 1M per cercare un segnale short lì.

Inserisco linee orizzontali e verticali in modo che sia facile individuare dove guardare (punto A) nel backtesting su timeframe 1M più piccolo

2. Posso chiedere al 4 ma synch indy di cercare solo due o tre ma che siano sincronizzati per mostrare la barra dell'istogramma? (si prega di vedere l'allegato condizioni 1m per quello che sto cercando di fare qui)

persona77

Temo che questo indicatore non sia progettato o previsto per mostrare i tocchi di prezzo. Inoltre sono abbastanza sicuro che thera sono già buoni indicatori che stanno facendo esattamente questo tipo di lavoro.

Per quanto riguarda la versione 2 e 3 mas: basta sostituire il "" nel codice dove si vede il confronto che va come "if (ma1<ma2 && ma2<3" ... e così via, con "=" e poi impostare 2 mas agli stessi valori per 3 mas diversi o 2 coppie di mas agli stessi valori per avere 2 mas mostrati dall'indicatore

 

mladen

Grazie per il suggerimento.

Il mio codice è quasi inutile!

Ho cambiato il > e il < in = ma ho avuto degli errori durante la compilazione.

Cosa devo fare diversamente?

//------------------------------------------------------------------

#proprietà copyright "www.forex-tsd.com"

#proprietà link "www.forex-tsd.com"

//------------------------------------------------------------------

#proprietà indicator_separate_window

#proprietà indicatore_buffer 2

#proprietà indicator_color1 LimeGreen

#proprietà indicator_color2 DarkOrange

#property indicator_width1 2

#property indicator_width2 2

#proprietà indicator_minimum 0

#proprietà indicator_maximum 1

extern int Ma1Period = 5;

extern int Ma1Price = PRICE_CLOSE;

extern int Ma1Method = MODE_EMA;

extern int Ma1Shift = 0;

extern int Ma2Period = 15;

extern int Ma2Price = PRICE_CLOSE;

extern int Ma2Method = MODE_EMA;

extern int Ma2Shift = 0;

extern int Ma3Period = 28;

extern int Ma3Price = PRICE_CLOSE;

extern int Ma3Method = MODE_EMA;

extern int Ma3Shift = 0;

extern int Ma4Period = 45;

extern int Ma4Price = PRICE_CLOSE;

extern int Ma4Method = MODE_EMA;

extern int Ma4Shift = 0;

//

//

//

//

//

doppio histu[];

doppio histd[];

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int init()

{

SetIndexBuffer(0,histu); SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexBuffer(1,histd); SetIndexStyle(1,DRAW_HISTOGRAM);

return(0);

}

int deinit() { return(0); }

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int start()

{

int counted_bars = IndicatorCounted();

se (counted_bars < 0) return(-1);

se (counted_bars > 0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

//

//

//

//

//

for(int i = limite; i >=0; i--)

{

double ma1 = iMA(NULL,0,Ma1Period,Ma1Shift,Ma1Method,Ma1Price,i);

double ma2 = iMA(NULL,0,Ma2Period,Ma2Shift,Ma2Method,Ma2Price,i);

double ma3 = iMA(NULL,0,Ma3Period,Ma3Shift,Ma3Method,Ma3Price,i);

double ma4 = iMA(NULL,0,Ma4Period,Ma4Shift,Ma4Method,Ma4Price,i);

histu = VUOTO_VALORE;

histd = VUOTO_VALORE;

se(ma1=ma2 && ma2=ma3 && ma3>ma4) histu = 1;

se(ma1=ma2 && ma2=ma3 && ma3<ma4) histd = 1;

}

return(0);

}

 

ciao

che dire di renko grafico 2min usando MA?

grazie in anticipo

 
person77:
mladen

Grazie per il suggerimento.

Il mio codice è quasi inutile!

Ho cambiato il > e il < in = ma ho avuto degli errori durante la compilazione.

Cosa devo fare diversamente?

//------------------------------------------------------------------

#proprietà copyright "www.forex-tsd.com"

#proprietà link "www.forex-tsd.com"

//------------------------------------------------------------------

#proprietà indicator_separate_window

#proprietà indicatore_buffer 2

#proprietà indicator_color1 LimeGreen

#proprietà indicator_color2 DarkOrange

#property indicator_width1 2

#property indicator_width2 2

#proprietà indicator_minimum 0

#proprietà indicator_maximum 1

extern int Ma1Period = 5;

extern int Ma1Price = PRICE_CLOSE;

extern int Ma1Method = MODE_EMA;

extern int Ma1Shift = 0;

extern int Ma2Period = 15;

extern int Ma2Price = PRICE_CLOSE;

extern int Ma2Method = MODE_EMA;

extern int Ma2Shift = 0;

extern int Ma3Period = 28;

extern int Ma3Price = PRICE_CLOSE;

extern int Ma3Method = MODE_EMA;

extern int Ma3Shift = 0;

extern int Ma4Period = 45;

extern int Ma4Price = PRICE_CLOSE;

extern int Ma4Method = MODE_EMA;

extern int Ma4Shift = 0;

//

//

//

//

//

doppio histu[];

doppio histd[];

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int init()

{

SetIndexBuffer(0,histu); SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexBuffer(1,histd); SetIndexStyle(1,DRAW_HISTOGRAM);

return(0);

}

int deinit() { return(0); }

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int start()

{

int counted_bars = IndicatorCounted();

se (counted_bars < 0) return(-1);

se (counted_bars > 0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

//

//

//

//

//

for(int i = limite; i >=0; i--)

{

double ma1 = iMA(NULL,0,Ma1Period,Ma1Shift,Ma1Method,Ma1Price,i);

double ma2 = iMA(NULL,0,Ma2Period,Ma2Shift,Ma2Method,Ma2Price,i);

double ma3 = iMA(NULL,0,Ma3Period,Ma3Shift,Ma3Method,Ma3Price,i);

double ma4 = iMA(NULL,0,Ma4Period,Ma4Shift,Ma4Method,Ma4Price,i);

histu = VUOTO_VALORE;

histd = EMPTY_VALUE;

se(ma1=ma2 && ma2=ma3 && ma3>ma4) histu = 1;

se(ma1=ma2 && ma2=ma3 && ma3<ma4) histd = 1;

}

return(0);

}

persona77

Avresti dovuto sostituire "<" con "" con ">=" (non solo "=")

_____________________

PS: ho dimenticato di dire che 2 MA sono sempre in sincronia

 

Funziona perfettamente!

Grazie mladen.

 

Media mobile adattiva di Kaufman

Media mobile adattiva Kaufman (di Alexander Gettinger)

Kaufman Adaptive Moving Average (KAMA) è stato creato da Perry Kaufman e presentato per la prima volta nel suo libro Smarter Trading (1995).

Formulas:

KAMA = KAMA+sc*(Prezzo-KAMA), dove

sc = (er*0.6015+0.0645)*(er*0.6015+0.0645),

er = Abs(Prezzo-Prezzo)/Somma1,

Sum1 = Somma(Abs(Prezzo-Prezzo)) da (i-Lunghezza+1) a i.

File:
kama.mq4  2 kb
 

Due versioni di regressione lineare (dallo stesso autore)

 

Kaufman AMA pre-filtrato

Sto preparando il Kaufman AMA (adaptive moving average) per alcune altre cose, e qui c'è una versione che ha un modo molto semplificato di usare (il calcolo dell'ama è diventato una funzione ora). Può anche avere il prezzo per-filtraggio (invece di usare il prezzo grezzo, si può usare il prezzo filtrato (per attivare il filtraggio, impostare PriceFilter a 1)

 

MA28 (di Alexander Gettinger)

File:
ma28.mq4  4 kb
ma28.png  83 kb
 

sarebbe, per favore, possibile fare l'indicatore multitimeframe? grazie

mladen:
Preparando Kaufman AMA (adaptive moving average) per alcune altre cose, ed ecco una versione che ha un modo molto semplificato di utilizzo (il calcolo dell'ama è reso una funzione ora). Può anche avere il prezzo per-filtraggio (invece di usare il prezzo grezzo, può essere usato il prezzo filtrato (per attivare il filtraggio, impostare PriceFilter a 1)