Media móvil - página 105

 
person77:
¡Fantástico - funciona muy bien mladen! Muchas gracias.

Un par de peticiones si no es mucha molestia:

1. Mientras las 4 MA están sincronizadas, el precio retrocede y toca una MA designada

(en este caso la segunda MA más corta, la EMA 15 roja) me gustaría que se produjera una flecha y una alerta.

Luego cambiaría a un marco de tiempo más pequeño de 1M para buscar una señal de venta allí.

Inserto líneas horizontales y verticales para que sea fácil detectar dónde mirar (punto A) en el marco temporal más pequeño de 1M.

2. ¿Puedo pedirle al indy de sincronización de 4 ma que sólo busque dos o tres ma's que estén sincronizados para mostrar la barra del histograma? (por favor, vea el archivo adjunto de las condiciones de 1m para lo que estoy tratando de hacer aquí)

persona77

Me temo que este indicador no está diseñado ni previsto para mostrar toques de precio. También estoy bastante seguro de que thera ya son buenos indicadores que están haciendo exactamente ese tipo de trabajo.

En cuanto a la versión de 2 y 3 mas : simplemente reemplazar el "" en el código donde se ve la comparación que va como "si (ma1<ma2 && ma2<3" ... y así sucesivamente, con "=" y luego establecer 2 mas a los mismos valores para 3 diferentes mas o 2 pares de mas a los mismos valores para tener 2 mas mostrados por el indicador

 

mladen

Gracias por la sugerencia.

Mi código es casi inútil.

He cambiado el > y el < por = pero me da errores al compilar.

¿Qué tengo que hacer de forma diferente?

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

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

#property link "www.forex-tsd.com"

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

#property ventana_de_separación

#propiedad indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_color2 DarkOrange

#property indicator_width1 2

#propiedad indicator_width2 2

#propiedad indicador_mínimo 0

#propiedad indicador_máximo 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;

//

//

//

//

//

double histu[];

double histd[];

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

//

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

//

//

//

//

//

int init()

{

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

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

return(0);

}

int deinit() { return(0); }

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

//

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

//

//

//

//

//

int inicio()

{

int barras_contadas = IndicadorContado();

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

if (counted_bars > 0) counted_bars--;

int límite = MathMin(Bares-barras contadas,Bares-1);

//

//

//

//

//

for(int i = límite; 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 = EMPTY_VALUE;

histd = EMPTY_VALUE;

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

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

}

return(0);

}

 

hola

¿qué pasa con el gráfico renko 2min usando MA?

gracias por adelantado

 
person77:
mladen

Gracias por la sugerencia.

Mi código es casi inútil.

He cambiado el > y el < por = pero me da errores al compilar.

¿Qué tengo que hacer de forma diferente?

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

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

#property link "www.forex-tsd.com"

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

#property ventana_de_separación

#property indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_color2 DarkOrange

#property indicator_width1 2

#propiedad indicator_width2 2

#propiedad indicador_mínimo 0

#propiedad indicador_máximo 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;

//

//

//

//

//

double histu[];

double histd[];

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

//

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

//

//

//

//

//

int init()

{

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

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

return(0);

}

int deinit() { return(0); }

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

//

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

//

//

//

//

//

int inicio()

{

int barras_contadas = IndicadorContado();

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

if (counted_bars > 0) counted_bars--;

int límite = MathMin(Bares-contados_barras,Bares-1);

//

//

//

//

//

for(int i = límite; 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 = EMPTY_VALUE;

histd = EMPTY_VALUE;

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

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

}

return(0);

}

persona77

Deberías haber sustituido "<" por "" con ">=" (no sólo "=")

_____________________

PD: se me olvidó decir que 2 MAs están siempre sincronizados

 

Funciona perfectamente.

Gracias mladen.

 

Media móvil adaptativa de Kaufman

Media móvil adaptativa de Kaufman (por Alexander Gettinger)

La media móvil adaptativa de Kaufman (KAMA) fue creada por Perry Kaufman y presentada por primera vez en su libro Smarter Trading (1995).

Formulas:

KAMA = KAMA+sc*(Precio-KAMA), donde

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

er = Abs(Precio-Precio)/Suma1,

Sum1 = Suma(Abs(Precio-Precio)) desde (i-Longitud+1) hasta i.

Archivos adjuntos:
kama.mq4  2 kb
 

Dos versiones de la regresión lineal (del mismo autor)

 

Kaufman AMA pre-filtrado

Preparar Kaufman AMA (media móvil adaptativa) para algunas otras cosas, y aquí es una versión que tiene una forma muy simplificada de usar (el cálculo de ama se hace una función ahora). Puede tener precio por filtrado también (en lugar de utilizar el precio crudo, el precio filtrado puede ser utilizado (para activar el filtrado de, establecer el PriceFilter a 1)

Archivos adjuntos:
 

MA28 (por Alexander Gettinger)

Archivos adjuntos:
ma28.mq4  4 kb
ma28.png  83 kb
 

¿sería, por favor, posible hacer el indicador multitimeframe? gracias

mladen:
Preparando Kaufman AMA (media móvil adaptativa) para algunas otras cosas, y aquí es una versión que tiene una forma muy simplificada de usar (el cálculo de ama se hace una función ahora). Puede tener el precio por el filtrado también (en lugar de utilizar el precio en bruto, el precio filtrado se puede utilizar (para activar el filtrado de, establecer el PriceFilter a 1)
Razón de la queja: