¿Cómo codificar? - página 89

 
shanyang:
He descargado un indicador, que muestra la flecha verde/roja cuando la señal de compra/venta viene.

ahora quiero programar mi propio EA basado en este indicador.

pero solo tengo el archivo ex4 de este indicador(sin código fuente)

Quiero que mi EA lea la flecha del indicador en el gráfico principal y envíe la orden de compra/venta (flecha verde==>compra, flecha roja==>venta)

¿hay algún método para obtener la información de la flecha del indicador en el gráfico principal?

gracias

Una flecha puede ser dibujada como un valor de uno de los buffers del indicador; en este caso, el color en las propiedades del indicador debería darle el número del buffer, lo cual es suficiente para llamarlo por la función "ICustom()"; También necesita llenar todos los valores de la pestaña "Input" como parámetros de la llamada ICustom().

Si la flecha no es un valor de un buffer, es un objeto. Selecciónelo para ver sus propiedades. La mayoría de las veces, es fácil entender cómo se generan los nombres y entonces será posible utilizar ObjectFind().

El EA debe observar ObjectsTotal(), y sólo cuando se incremente puede intentar reconocer el último objeto. Si el nombre es desconocido, el EA no puede utilizar OjectFind() y tiene que escanear todos los objetos para identificar el último. El último objeto no es obviamente el que tiene el índice más alto (ObjectsTotal() - 1), pero es mejor empezar a escanear desde el índice más alto ya que probablemente pueda romper más rápido. Ahora tienes que comparar el OBJPROP_TIME1 obtenido por ObjectGet() con Time[0] o Time[1] por ejemplo, y comprobar el color o el tipo de flecha, o una subcadena del nombre, para identificar una señal de compra o de venta.

Parece complejo pero no lo es. Intenta escribirlo y no dudes en pedir más precisiones si es necesario.

 
Big Be:
La respuesta anterior estaba incompleta.

Si el indicador es estándar en MT4, se mostrará en el lugar normal. Si es llamado por iCustom, también se mostrará, si está bien codificado.

Los siguientes EAs incluso hacen que los indicadores se muestren en la ventana del gráfico. Estúdielos para aprender cómo:

bouncingPipEA_mpowerV42.mq4

bouncingPipEA_BigBear_v23.mq4

Big Be

Gracias Big Be, los revisaré.

 
Michel:
Una flecha se puede dibujar como un valor de uno de los buffers del indicador; en este caso, el color en las propiedades del indicador debería darte el número del buffer, que es suficiente para llamarlo por la función "ICustom()"; También necesitas llenar todos los valores de la pestaña "Input" como parámetros de la llamada ICustom().

Si la flecha no es un valor de un buffer, es un objeto. Selecciónelo para ver sus propiedades. La mayoría de las veces, es fácil entender cómo se generan los nombres y entonces será posible utilizar ObjectFind().

El EA debe observar ObjectsTotal(), y sólo cuando se incremente puede intentar reconocer el último objeto. Si el nombre es desconocido, el EA no puede usar OjectFind() y tiene que escanear todos los objetos para identificar el último. El último objeto no es obviamente el que tiene el índice más alto (ObjectsTotal() - 1), pero es mejor empezar a escanear desde el índice más alto ya que probablemente pueda romper más rápido. Ahora tienes que comparar el OBJPROP_TIME1 obtenido por ObjectGet() con Time[0] o Time[1] por ejemplo, y comprobar el color o el tipo de flecha, o una subcadena del nombre, para identificar una señal de compra o de venta.

Parece complejo pero no lo es. Intenta escribirlo y no dudes en pedir más precisiones si las necesitas.

Gran explicación Michel ... ¡100% más completa que la mía !

Gracias para quien esté interesado.

FerruFx

 

cambiar ind en un EA

Me gustaría cambiar el indicador en un EA que tengo, pero no sé cómo hacerlo

no soy un programador de hecho no mucho sobre este tipo de cosas, a continuación es la única parte que se refiere al indicador quiero cambiar el DiMA a MFA(14)

quiero comprar @ >60 y vender@<40

double diClose0=iClose(NULL,5,0);

double diMA1=iMA(NULL,5,7,0,MODE_SMA,PRICE_OPEN,0);

double diClose2=iClose(NULL,5,0);

double diMA3=iMA(NULL,5,6,0,MODE_SMA,PRICE_OPEN,0);

if(AccountFreeMargin()<(1000*Lots)){

Print("No tenemos dinero. Margen libre = ", AccountFreeMargin());

return(0);

}

if (!ExistPositions()){

if ((diClose0<diMA1)){

AbrirCompra();

return(0);

}

if ((diClose2>diMA3)){

AbrirVender();

return(0);

}

}

¿alguien podría ayudarme?

denis

 

Por favor, publica tu indicador MFA. Necesito ver los buffers. ¿Bajo qué lógica querrá cambiar los indicadores?

Dave

 

hola dave no puedo publicar el indicador MFI no esta en la carpeta de indicadores puedes obtener el indicador desde la barra de herramientas bajo volúmenes, no se a que te refieres con bajo que lógica.

denis

 
denis68:
hola dave no puedo publicar el indicador MFI no está en la carpeta de indicadores se puede obtener el indicador de la barra de herramientas en los volúmenes, no sé lo que quiere decir bajo qué lógica. denis

¿Éste? Índice de Facilitación del Mercado

Archivos adjuntos:
mfi.mq4  3 kb
 

hola linuxer no creo que sea ese pero gracias de todas formas, el que tengo se llama money flow index.

denis

 
denis68:
hola linuxer no creo que sea ese pero gracias de todas formas, el que tengo se llama money flow index. denis

Lo siento, he escrito mal el nombre, es ese.

Money Flow Index.mq4 aka MFI.mq4