![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¡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
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)
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.
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)
MA28 (por Alexander Gettinger)
¿sería, por favor, posible hacer el indicador multitimeframe? gracias![](https://c.mql5.com/forextsd/smiles/regular_smile.png)
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)