Média móvel - página 105

 
person77:
Fantástico - funciona muito bem mladen! Muito obrigado.

Um par de pedidos se não fosse muito incômodo:

1. Enquanto 4 MA estão todos em sincronia, os preços recuam e tocam um MA designado

( neste caso o 2º MA mais curto, o EMA vermelho 15 ) eu gostaria que uma seta e um alerta fossem produzidos.

Eu então mudaria para um tempo menor de 1M para procurar por um sinal curto ali.

Introduzo linhas horizontais e verticais para que seja fácil localizar onde procurar (ponto A) em um intervalo de tempo menor de 1 M.

2. Posso pedir aos 4 ma synch indy que procurem apenas dois ou três ma's para estarem em sincronia, a fim de mostrar a barra de histograma? (veja o anexo de 1m de condições para o que estou tentando fazer aqui)

pessoa77

Receio que este indicador não tenha sido projetado ou previsto para mostrar toques nos preços. Também tenho certeza de que esses indicadores já são bons indicadores que estão fazendo exatamente esse tipo de trabalho.

A partir de 2 e 3 mas versão : simplesmente substitua o "" no código onde você vê a comparação que vai como "se (ma1<ma2 && ma2<3" ... e assim por diante, por "=" e então defina 2 mas para os mesmos valores para 3 mas diferentes ou 2 pares de mas para os mesmos valores para ter 2 mas mostrados pelo indicador

 

mladen

Obrigado pela sugestão.

Minha codificação está ao lado de inútil!

Mudei os > e < para = mas recebi alguns erros na compilação.

O que eu preciso fazer de diferente?

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

#propriedade copyright "www.forex-tsd.com"

#link da propriedade "www.forex-tsd.com"

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

#janela_indicadora de propriedade_separarate_window

#property indicator_buffers 2

#indicador de propriedade_color1 LimeGreen

#indicador de propriedade_color2 DarkOrange

#largura_do_indicador de propriedade1 2

#largura_do_indicador de propriedade2 2

#indicador de propriedade_mínimo 0

#indicador de propriedade_máximo 1

externo int período Ma1P = 5;

preço externo int Ma1Preço = PREÇO_CLOSE;

externo int Ma1Método = MODE_EMA;

externo int Ma1Shift = 0;

externo int Ma2Period = 15;

externo int Ma2Preço = PREÇO_PREÇO_PREÇO;

externo int Ma2Método = MODE_EMA;

externo int Ma2Shift = 0;

externo int Ma3Period = 28;

externamente int Ma3Preço = PREÇO_PREÇO_PREÇO;

externamente int Ma3Método = MODE_EMA;

externo int Ma3Shift = 0;

externo int Ma4Period = 45;

externo int Ma4Preço = PREÇO_PREÇO_PREÇO;

externamente int Ma4Método = MODE_EMA;

externo int Ma4Shift = 0;

//

//

//

//

//

dobro histu[];

duplo histu[];

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

//

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

//

//

//

//

//

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) retorno(-1);

se (barras_contadas > 0) barras_contadas..;

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

//

//

//

//

//

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

{

duplo ma1 = iMA(NULL,0,Ma1Periodo,Ma1Shift,Ma1Método,Ma1Preço,i);

duplo ma2 = iMA(NULL,0,Ma2Periodo,Ma2Shift,Ma2Método,Ma2Preço,i);

duplo ma3 = iMA(NULL,0,Ma3Periodo,Ma3Shift,Ma3Método,Ma3Preço,i);

duplo ma4 = iMA(NULL,0,Ma4Periodo,Ma4Shift,Ma4Método,Ma4Preço,i);

histu = EMPTY_VALUE;

histd = EMPTY_VALUE;

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

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

}

retorno(0);

}

 

oi

E quanto ao gráfico renko 2min usando MA?

obrigado antecipadamente

 
person77:
mladen

Obrigado pela sugestão.

Minha codificação está ao lado de inútil!

Mudei os > e < para = mas recebi alguns erros na compilação.

O que eu preciso fazer de diferente?

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

#propriedade copyright "www.forex-tsd.com"

#link da propriedade "www.forex-tsd.com"

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

#janela_indicadora de propriedade_separarate_window

#property indicator_buffers 2

#indicador de propriedade_color1 LimeGreen

#indicador de propriedade_color2 DarkOrange

#largura_do_indicador de propriedade1 2

#largura_do_indicador de propriedade2 2

#indicador de propriedade_mínimo 0

#indicador de propriedade_máximo 1

externo int período Ma1P = 5;

preço externo int Ma1Preço = PREÇO_CLOSE;

externo int Ma1Método = MODE_EMA;

externo int Ma1Shift = 0;

externo int Ma2Period = 15;

externo int Ma2Preço = PREÇO_PREÇO_PREÇO;

externo int Ma2Método = MODE_EMA;

externo int Ma2Shift = 0;

externo int Ma3Period = 28;

externamente int Ma3Preço = PREÇO_PREÇO_PREÇO;

externamente int Ma3Método = MODE_EMA;

externo int Ma3Shift = 0;

externo int Ma4Period = 45;

externamente int Ma4Price = PREÇO_PREÇO_PREÇO;

externamente int Ma4Método = MODE_EMA;

externo int Ma4Shift = 0;

//

//

//

//

//

dobro histu[];

duplo histu[];

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

//

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

//

//

//

//

//

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) retorno(-1);

se (barras_contadas > 0) barras_contadas..;

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

//

//

//

//

//

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

{

duplo ma1 = iMA(NULL,0,Ma1Periodo,Ma1Shift,Ma1Método,Ma1Preço,i);

duplo ma2 = iMA(NULL,0,Ma2Periodo,Ma2Shift,Ma2Método,Ma2Preço,i);

duplo ma3 = iMA(NULL,0,Ma3Periodo,Ma3Shift,Ma3Método,Ma3Preço,i);

duplo ma4 = iMA(NULL,0,Ma4Periodo,Ma4Shift,Ma4Método,Ma4Preço,i);

histu = EMPTY_VALUE;

histd = EMPTY_VALUE;

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

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

}

retorno(0);

}

pessoa77

Você deveria ter substituído "<" por "" por ">=" (não apenas "=")

_____________________

PS: esqueceu de dizer que 2 MAs estão sempre em sincronia

 

Isso funciona perfeitamente!

Obrigado mladen.

 

Média móvel adaptativa Kaufman

Média móvel adaptativa Kaufman (por Alexander Gettinger)

Kaufman Adaptive Moving Average (KAMA) foi criado por Perry Kaufman e apresentado pela primeira vez em seu livro Smarter Trading (1995).

Formulas:

KAMA = KAMA+sc*(Price-KAMA), onde

sc = (er*0,6015+0,0645)*(er*0,6015+0,0645),

er = Abs(Price-Price)/Sum1,

Sum1 = Sum(Abs(Price-Price)) de (i-Length+1) a i.

Arquivos anexados:
kama.mq4  2 kb
 

Duas versões de regressão linear (do mesmo autor)

 

Kaufman AMA pré-filtrado

Preparando o Kaufman AMA (média móvel adaptável) para algumas outras coisas, e aqui está uma versão que tem uma maneira muito simplificada de usar (o cálculo ama é feito uma função agora). Ele também pode ter preço por filtragem (em vez de usar preço bruto, pode ser usado preço filtrado (para transformar a filtragem de, defina o PriceFilter para 1)

Arquivos anexados:
 

MA28 (por Alexander Gettinger)

Arquivos anexados:
ma28.mq4  4 kb
ma28.png  83 kb
 

seria possível, por favor, tornar o indicador multitemporal? obrigado

mladen:
Preparando o Kaufman AMA (média móvel adaptável) para algumas outras coisas, e aqui está uma versão que tem uma maneira muito simplificada de usar (o cálculo ama é feito uma função agora). Ele também pode ter preço por filtragem (em vez de usar preço bruto, pode ser usado preço filtrado (para transformar a filtragem de, defina o PriceFilter para 1)
Razão: