Calcular Indicador sobre Otro

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Responder
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12793
Registrado: 06 Sep 2004 10:18
Contactar:

Calcular Indicador sobre Otro

Mensaje por X-Trader »

Hola a todos,

Acudo a mi propio Foro a ver si algún crack del MQL me puede echar una mano rápida, porque estoy atascado. El problema es el siguiente: usando MQL4 quiero calcular un indicador sobre los datos de otro pero por más que lo intento usando iCustom no me sale ningún valor. Incluso he anidado dos iCustom pero no consigo que lo calcule, porque entiendo que iCustom solo trabaja con símbolos, no con indicadores personalizados.

¿Tenéis por ahí algún ejemplo? ¿Alguna sugerencia? Cualquier idea seguro que me ilumina un poco el camino.

Gracias de antemano.

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
Gamelu
Mensajes: 787
Registrado: 21 May 2009 16:49

Re: Calcular Indicador sobre Otro

Mensaje por Gamelu »

double val=iCustom(NULL, 0, "ZigZag",1,1,1,0,0,1);
Comment("valor:",val);


Este que te pongo funciona, todos esos 1 y 0 no son los mismos en todos los indicadores depende de los buffer del indicador en cuestion, y debido a eso no suele funcionar iCustom, yo me arte de probar y no le termine cogiendo el truco.
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12793
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Calcular Indicador sobre Otro

Mensaje por X-Trader »

Gracias Gamelu, pero no va por ahí. El tema es calcular por ejemplo el RSI del CCI pero con indicadores personalizados, es decir, algo como esto:

Indicador_Final = Indicador2(Indicador1, 0, params);

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
INtrader
Mensajes: 419
Registrado: 05 Nov 2009 13:54
Contactar:

Re: Calcular Indicador sobre Otro

Mensaje por INtrader »

Hola X,

Tienes que crear un indicador personalizado que contenga una llamada a tu otro indicador personalizado, de esta manera generas un Array de valores del nuevo indicador, que imagino es lo que quieres.

Luego te pongo un código de ejemplo si no lo resuelves.

Saludos
INtrader
I have not failed. I've just found 10,000 ways that won't work - Thomas A. Edison
Sigueme en Twitter: @INtrader_ :smt006
Avatar de Usuario
INtrader
Mensajes: 419
Registrado: 05 Nov 2009 13:54
Contactar:

Re: Calcular Indicador sobre Otro

Mensaje por INtrader »

Código: Seleccionar todo

//+------------------------------------------------------------------+
//|                                                   LF-sprdmed.mq4 |
//|                                         Copyright 2012, INtrader |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, INtrader"
#property link      "[email protected]"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1  Red
#property indicator_width1  1

extern int  Length   = 54;
extern int  ApplyTo  = PRICE_CLOSE;

double sprdmed[];

//+------------------------------------------------------------------+
int init()
{
   SetIndexStyle (0,DRAW_HISTOGRAM);// Line style
   SetIndexBuffer(0, sprdmed);
   IndicatorShortName("sprdmd ("+Length+")");

   return(0);
}

//+------------------------------------------------------------------+
int deinit() 

{ 
return(0);
}

//+------------------------------------------------------------------+
int start()
{
  
   int i,                           // Bar index
       Counted_bars;                // Number of counted bars
//--------------------------------------------------------------------
   Counted_bars=IndicatorCounted(); // Number of counted bars
   i=Bars-Counted_bars-1;           // Index of the first uncounted
   while(i>=0)                      // Loop for uncounted bars
     {
      sprdmed[i] = Close[i] - iCustom(NULL, 0, "Media", Length, ApplyTo, 0, i); 
      i--;                          // Calculating index of the next bar
     }
//--------------------------------------------------------------------
   return(0);

}
En el código anterior, perteneciente al indicador "sprdmed", se calcula la diferencia entre el valor de un indicador personalizado llamado "Media" y el precio de cierre de cada barra.

Espero que te sirva!!

Un saludo
INtrader
I have not failed. I've just found 10,000 ways that won't work - Thomas A. Edison
Sigueme en Twitter: @INtrader_ :smt006

Avatar de Usuario
X-Trader
Administrador
Mensajes: 12793
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Calcular Indicador sobre Otro

Mensaje por X-Trader »

Hola INtrader, gracias por el intento pero sigue sin servirme. Lo que necesito, siguiendo tu ejemplo, es que el indicador Media se calcule sobre Sprdmed, no que tome valores del símbolo actual (NULL).

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
INtrader
Mensajes: 419
Registrado: 05 Nov 2009 13:54
Contactar:

Re: Calcular Indicador sobre Otro

Mensaje por INtrader »

X-Trader escribió:Hola INtrader, gracias por el intento pero sigue sin servirme. Lo que necesito, siguiendo tu ejemplo, es que el indicador Media se calcule sobre Sprdmed, no que tome valores del símbolo actual (NULL).

Saludos,
X-Trader

Sería tal vez algo así ? :

Indicador1 = iCustom(NULL, 0, "Indi1", Length, ApplyTo, 0, i);
indicadorFinal = iCustom(NULL, 0, "Indi2", Indicador1, ApplyTo, 0, i);
I have not failed. I've just found 10,000 ways that won't work - Thomas A. Edison
Sigueme en Twitter: @INtrader_ :smt006
Avatar de Usuario
Traderday
Mensajes: 449
Registrado: 31 Jul 2008 18:43

Re: Calcular Indicador sobre Otro

Mensaje por Traderday »

una idea, por si te sirve X-trader: seria montar en la plataforma de rombos del visual chart lo que quieras programar , luego una vez compilado te vas al codigo interno del sistema y ahi buscas las lineas de codigo que se refieren a tu parte que dudas, no sera exactamente igual que en Mql, pero tendras la idea basica de que metodo se usa en visual basic para hacer lo mismo, solo tendras que adaptarlo a Mql

o a unas malas si lo que quieres probar es una idea y hacer pruebas, en visualchart era muy facil hacer funcionar un indicador sobre otro, de esa manera si luego ves que te sale rentable esa operativa ya te lias a fondo con el Mql.

(si buscas por Nick tenia de hace unos meses subido un sistema que usaba una media sobre el indicador de momento, incluso con los filtros ya puestos y todo el rollo)seria adaptarlo a tu indicador en particular en vez del de Momento.

te lo acabo de buscar para ahorrate trabajo, aqui lo tienes: http://www.x-trader.net/foro/viewtopic. ... ar#p197653

espero que te sirva, saludos.
Entrena ahora cada día para despues ganarte el jornal todos los días!!!
Avatar de Usuario
INtrader
Mensajes: 419
Registrado: 05 Nov 2009 13:54
Contactar:

Re: Calcular Indicador sobre Otro

Mensaje por INtrader »

Que tal X? Lo has conseguido? Cuéntanos la solución.

Saludos
INtrader
I have not failed. I've just found 10,000 ways that won't work - Thomas A. Edison
Sigueme en Twitter: @INtrader_ :smt006
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12793
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Calcular Indicador sobre Otro

Mensaje por X-Trader »

INtrader escribió:Sería tal vez algo así ? :

Indicador1 = iCustom(NULL, 0, "Indi1", Length, ApplyTo, 0, i);
indicadorFinal = iCustom(NULL, 0, "Indi2", Indicador1, ApplyTo, 0, i);


Hola INtrader, al final lo he resuelto pero por desgracia la solución que propones no sirve porque independientemente de lo que pongas en iCustom, siempre hace cálculos sobre el array de precios, nunca sobre otro array distinto. La solución ha sido recrear la lógica de ambos indicadores dentro de un nuevo indicador, no me ha quedado otra. Lo malo es que después del arduo trabajo informático el resultado no ha sido el esperado así que... a seguir investigando (nunca se termina en esto ;))

Traderday escribió:una idea, por si te sirve X-trader: seria montar en la plataforma de rombos del visual chart lo que quieras programar , luego una vez compilado te vas al codigo interno del sistema y ahi buscas las lineas de codigo que se refieren a tu parte que dudas, no sera exactamente igual que en Mql, pero tendras la idea basica de que metodo se usa en visual basic para hacer lo mismo, solo tendras que adaptarlo a Mql

o a unas malas si lo que quieres probar es una idea y hacer pruebas, en visualchart era muy facil hacer funcionar un indicador sobre otro, de esa manera si luego ves que te sale rentable esa operativa ya te lias a fondo con el Mql.

(si buscas por Nick tenia de hace unos meses subido un sistema que usaba una media sobre el indicador de momento, incluso con los filtros ya puestos y todo el rollo)seria adaptarlo a tu indicador en particular en vez del de Momento.

te lo acabo de buscar para ahorrate trabajo, aqui lo tienes: http://www.x-trader.net/foro/viewtopic. ... ar#p197653

espero que te sirva, saludos.


Gracias por la idea Traderday, esa ya me la sabía, la verdad es que lo pensé varias veces pero claro me obligaba a reprogramar los indicadores sueltos en Visual Chart y como ahora ya hago todo con Metatrader pues tampoco me salía a cuenta.

En fin, si algún encuentro una solución rápida os la comento, pero por ahora está claro que toca trabajar con arrays y copiar las fórmulas de cada indicador en un nuevo indicador.


Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
INtrader
Mensajes: 419
Registrado: 05 Nov 2009 13:54
Contactar:

Re: Calcular Indicador sobre Otro

Mensaje por INtrader »

X-Trader escribió:
INtrader escribió:Sería tal vez algo así ? :

Indicador1 = iCustom(NULL, 0, "Indi1", Length, ApplyTo, 0, i);
indicadorFinal = iCustom(NULL, 0, "Indi2", Indicador1, ApplyTo, 0, i);


Hola INtrader, al final lo he resuelto pero por desgracia la solución que propones no sirve porque independientemente de lo que pongas en iCustom, siempre hace cálculos sobre el array de precios, nunca sobre otro array distinto. La solución ha sido recrear la lógica de ambos indicadores dentro de un nuevo indicador, no me ha quedado otra. Lo malo es que después del arduo trabajo informático el resultado no ha sido el esperado así que... a seguir investigando (nunca se termina en esto ;))

X-Trader


Claro, es lo primero que te comenté :-D. Me alegro de que hayas dado con ello :D

Algún día llegaremos... no sé donde, pero llegaremos :lol:

INtrader escribió:Hola X,

Tienes que crear un indicador personalizado que contenga una llamada a tu otro indicador personalizado, de esta manera generas un Array de valores del nuevo indicador, que imagino es lo que quieres.

Luego te pongo un código de ejemplo si no lo resuelves.

Saludos
INtrader
I have not failed. I've just found 10,000 ways that won't work - Thomas A. Edison
Sigueme en Twitter: @INtrader_ :smt006
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”