Pregunta sobre Indicador

Comparte y analiza indicadores para la plataforma creada por MetaQuotes.

Pregunta sobre Indicador

Notapor MF1Forex » 08 May 2014, 11:54

Hola!
Me podríais decir cual es la instrucción que hace la línea en la pantalla de este indicador básico??

Lo que quiero hacer es replicar la línea movil por arriba y por abajo, como si se tratara de unos Envelopes.
Estaba intentando de programarlo yo, pero con la ayuda del Metaeditor solo no me entero.

Entiendo la línea SetIndexShift, para adelantar o atrasar la MA.
Pero se podría tocar algo de este código para elevar o bajar la MA o hay que añadir algo mas??
//---- drawing settings
SetIndexStyle(0,DRAW_LINE);
SetIndexShift(0,MA_Shift);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
if(MA_Period<2) MA_Period=13;
draw_begin=MA_Period-1;


Adjunto el Indicador.
Gracias.
Adjuntos
Moving_Averages.mq4
(5.34 KiB) 471 veces
Avatar de Usuario
MF1Forex
 
Mensajes: 1078
Registrado: 02 Dic 2013, 10:54
Ubicación: Cyberdyne Systems
Karma: 13

Re: Pregunta sobre Indicador

Notapor FXWizard » 09 May 2014, 10:12

Hola MF1Forex, no es complicado pero observa que hay tres casos a considerar tal y como se indica al principio del código:

Código: Seleccionar todo
   switch(MA_Method)
     {
      case 1 : short_name="EMA(";  draw_begin=0; break;
      case 2 : short_name="SMMA("; break;
      case 3 : short_name="LWMA("; break;
      default :
         MA_Method=0;
         short_name="SMA(";
     }


Por tanto tienes que crear 2 buffers más y copiar y modificar las siguientes líneas:

Código: Seleccionar todo
Línea 87:  ExtMapBuffer[pos]=sum/MA_Period;

Línea 107: ExtMapBuffer[pos]=Close[pos]*pr+ExtMapBuffer[pos+1]*(1-pr);

Línea 134: ExtMapBuffer[pos]=sum/MA_Period;


Te dejo como deberes el modificar eso para que sume y reste la cantidad que desees ;) No es complicado pero recuerda que debes crear un buffer para cada línea adicional. Eso sí, el indicador Envelopes no hace ya eso?


Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Re: Pregunta sobre Indicador

Notapor MF1Forex » 10 May 2014, 10:53

Hola FXWizard!
Lo que no localizo, es cual es la instrucción que hace que pinte en pantalla la línea.
O sea, si por ejemplo quiero que la media movil en general se eleve 20 puntos... donde tengo que poner el +20 exactamente??

FXWizard escribió:Eso sí, el indicador Envelopes no hace ya eso?

Si... todo es experimental, es solo para aprender como va.
Gracias.
Avatar de Usuario
MF1Forex
 
Mensajes: 1078
Registrado: 02 Dic 2013, 10:54
Ubicación: Cyberdyne Systems
Karma: 13

Re: Pregunta sobre Indicador

Notapor FXWizard » 12 May 2014, 15:04

El +20 debes ponerlo después de las fórmulas que te puesto aunque para que sea más cómodo te recomiendo que declares una variable al principio de tipo double (admite decimales) poniendo extern MiVariable=0.0020;

Después le sumas +MiVariable al final de cada fórmula y ya lo tienes.

Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Re: Pregunta sobre Indicador

Notapor MF1Forex » 12 May 2014, 15:13

FXWizard escribió:El +20 debes ponerlo después de las fórmulas que te puesto aunque para que sea más cómodo te recomiendo que declares una variable al principio de tipo double (admite decimales) poniendo extern MiVariable=0.0020;

Después le sumas +MiVariable al final de cada fórmula y ya lo tienes.

Saludos,
FXWizard

Ok, se hacer lo de poner una variable en los parámetros de entrada y después meterla en la fórmula... pero sigo con la duda de:
¿¿Cual es la instrucción que hace que pinte la línea en la pantalla?? :eyebrow:
Avatar de Usuario
MF1Forex
 
Mensajes: 1078
Registrado: 02 Dic 2013, 10:54
Ubicación: Cyberdyne Systems
Karma: 13

Re: Pregunta sobre Indicador

Notapor FXWizard » 12 May 2014, 15:28

Es ExtMapBuffer, en esa línea se determina qué datos se pintan ;)

Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Re: Pregunta sobre Indicador

Notapor MF1Forex » 13 May 2014, 16:09

Vale... tu me nombras la variable, pero quien ejecuta la línea en pantalla??... la instrucción!
Por ejemplo, la instrucción PRINT escribe un texto en pantalla.

No será: SetIndexBuffer ?
Yo lo que quiero es poner directamente la altura en vertical, de la misma manera que la pongo en horizontal con la instrucción: SetIndexShift(0,Shift);
Donde Shift es el número de desplazamiento a la derecha o a la izquierda.
Avatar de Usuario
MF1Forex
 
Mensajes: 1078
Registrado: 02 Dic 2013, 10:54
Ubicación: Cyberdyne Systems
Karma: 13

Re: Pregunta sobre Indicador

Notapor FXWizard » 13 May 2014, 18:27

A ver por si no ha quedado claro:

- ExtMapBuffer calcula los datos para pintar la línea. Ahí es donde tienes que sumar 20.
- SetIndexBuffer indica el orden de las líneas, nada más.

Lo que creo es que se me olvidó decirte que debes configurar más de 1 buffer si tu indicador tiene más de una línea... :oops: ¿Es ese el caso?

Saludos,
FXWizard
Avatar de Usuario
FXWizard
 
Mensajes: 8493
Registrado: 12 Feb 2008, 15:17
Karma: 35

Siguiente

Volver a Indicadores

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron