Función ICustom - página 12

 

Puede alguien publicar un ea sencillo que compre y venda, llamando a dos indicadores con icustom().

¿Hay alguna función para cerrar las órdenes pendientes?

Gracias

 

Ayuda de iCustom

Hola.

Estoy intentando modificar uno de los indicadores de FerruFX para utilizar indicadores personalizados. Ya he conseguido que todas las MAs funcionen correctamente, pero no estoy seguro de cómo obtener la información correcta para los otros dos indicadores. En última instancia, me gustaría que esto mostrara los datos MTF de los dos indicadores que he adjuntado, PerkyAsctrend1 y HeikenAshi MTF. Estoy usando iCustom para ambos y creo que he usado los comandos correctos hasta ese punto.

Soy capaz de producir datos (pero no los datos correctos) para el PerkyAsctrend1. Pensé que había entendido la lógica para que se mostrara correctamente, pero creo que no es así. Ferru utilizó MA, CCI, MACD, ADX, Bullspower y BearsPower en su indicador, pero son diferentes tipos de indicadores y desafortunadamente no son muy útiles como referencia (para mí) para PerkyAsctrend1 en esta configuración.

Pensé que el indicador HeikenAshi MTF sería bastante fácil de añadir al indicador. Aparentemente estaba equivocado. La columna Heiken está mostrando "Etiqueta" inexplicablemente y todos están desapareciendo después de la primera garrapata.

Espero que el código no te parezca tan asqueroso como a mí. Soy un programador aficionado. Si alguien puede ayudar, se lo agradecería mucho. Necesito un par de ojos más experimentados en esto. Creo que será bastante beneficioso cuando esté completo.

-

Aquí están los trozos de código que me están dando problemas. Ambos iCustoms me están dando valores de 2147483647, el número total de barras en el historial de precios/gráfico.

int RISK = 4;

int AllBars = 250;

int MaMethod = 1;

int MaPeriod = 20;

//...

// Pesky

//...

string Pesky_Trend_1 //-- , Pesky_Trend_5, Pesky_Trend_15, Pesky_Trend_30, Pesky_Trend_60, Pesky_Trend_240, Pesky_Trend_1440, Pesky_Trend_10080;

double Pesky_m_1=iCustom(NULL,PERIOD_M1, "PerkyAsctrend1", RISK, AllBars,0,shift_1);

if ((Pesky_m_1 > 0)) { Pesky_Trend_1 = "UP"; x = 416; color_indic = Lime; UP_33 = 1; DOWN_33 = 0; }

if ((Pesky_m_1 < 0)) { Pesky_Trend_1 = "DOWN"; x = 406; color_indic = Rojo; UP_33 = 0; DOWN_33 = 1; }

// ...

// Indicador (Heiken)

//...

string HA_Trend_1 //-- , HA_Trend_5, HA_Trend_15, HA_Trend_30, HA_Trend_60, HA_Trend_240, HA_Trend_1440, HA_Trend_10080;

double HA_1_1=iCustom(NULL,PERIOD_M1, "Heiken MTF",MaMethod,MaPeriod,shift_1);

double HA_2_1=iCustom(NULL,PERIOD_M1, "Heiken MTF",MaMethod,MaPeriod,shift_1+1);

if ((HA_1_1 > HA_2_1)) { HA_Trend_1 = "UP"; x = 466; color_indic = Lime; UP_41 = 1; DOWN_41 = 0; }

if ((HA_1_1 < HA_2_1)) { HA_Trend_1 = "DOWN"; x = 456; color_indic = Lime; UP_41 = 0; DOWN_41 = 1; }

//...

Sé que los valores de desplazamiento son poco ortodoxos pero así es como lo hizo el autor original.

int inicio()

{

//...

// Cálculo del desplazamiento para los indicadores (sólo para pruebas)

double shift_1, shift_5, shift_15, shift_30, shift_60, shift_240, shift_1440, shift_10080;

if( test == true )

{

shift_1=iBarShift(NULL,PERIOD_M1,look_time_shift,false);

shift_5=iBarShift(NULL,PERIOD_M5,look_time_shift,false);

shift_15=iBarShift(NULL,PERIOD_M15,look_time_shift,false);

shift_30=iBarShift(NULL,PERIOD_M30,look_time_shift,false);

shift_60=iBarShift(NULL,PERIOD_H1,look_time_shift,false);

shift_240=iBarShift(NULL,PERIOD_H4,look_time_shift,false);

shift_1440=iBarShift(NULL,PERIOD_D1,look_time_shift,false);

shift_10080=iBarShift(NULL,PERIOD_W1,look_time_shift,false);

}

si no

{

shift_1=shift_indicators;

shift_5=shift_indicators;

shift_15=shift_indicators;

shift_30=shift_indicators;

shift_60=shift_indicators;

shift_240=indicadores de turno;

shift_1440=indicadores_de_turno;

shift_10080=indicadores de turno;

Gracias...

Archivos adjuntos:
 

Versiones actualizadas

Bueno, he reorganizado todo como debe ser visualmente y he cambiado algunos nombres de parámetros. Todo sigue pareciendo correcto para el iCustom pero el valor de PerkyAsctrend no se está calculando correctamente y la lógica de Heiken es aparentemente completamente errónea. Parece que no está proporcionando por la noche un valor doble para el iCustom para el indicador Heiken MTF. ¡Todavía no los he comprobado, pero ambos valores dobles de iCustom para los indicadores eran iguales al número de barras de mi historial (2147483647)...! Tengo que estar haciendo algo completamente mal con iCustom pero no puedo encontrarlo por mi vida.

Si tienes tiempo o energía para revisar esto, te lo agradecería mucho.

Archivos adjuntos:
 

Para: Homicida & Ra457 re: iCustom

Hola.

Ese valor numérico grande que obtienes cuando usas iCustom, se parece a una dificultad que tuve yo.

Espero que esto te ayude.

Asegúrate de que los parámetros que introduces en iCustom son exactamente los mismos, y en el mismo orden que los dados en las variables externas en el propio código del indicador.

Saludos.

 

2147483647 no tiene nada que ver con su historia.

Es el valor más grande que puede tener un entero de 32 bits con signo y es utilizado por MT4 como el "Valor Vacío" por defecto de los indicadores.

Los indicadores devuelven "Empty Value" cuando el valor no debe ser mostrado.

 

iCustom()

Hola, necesito leer tres varaiables de un indicador.

He colocado un dobladillo en la parte superior del indicador:

Variables

double eaBid=0;

double eaAsk=0;

string eaType="";

//==========================

Variables

#property ventana_de_separación_del_indicador

#propiedad indicator_buffers 8

#propiedad indicador_color1 Negro

#property indicator_color2 Lime

#propiedad indicator_color3 Lime

#propiedad indicator_color4 Amarillo

#Propiedad indicador_color5 Rojo

#Indicador de propiedad_color6 Rojo

#Indicador de propiedad_color7 Negro

#propiedad indicador_color8 Negro

double eaEP=0;

double eaSL=0;

double eaType=0;

double iVars[];

Cosas

#propiedad indicador_buffers 2

#propiedad indicador_color1 Rojo

#propiedad indicador_color2 BosqueVerde

//---- parámetros de entrada

string IndicatorName="TradeWatch";

double EntryBid=0;

double EntryAsk=0;

string EntryType="";

double eaBid=0;

double eaAsk=0;

string eaType="";

int init()

{

return (0);

}

Inicio

{

EntryBid = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 1, 0);

EntryAsk = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 2, 0);

EntryType = iCustom(Symbol(), Period(), IndicatorName, eaBid, eaAsk, eaType, 3, 0);

}

¿Cómo leo las tres variables en mi EA?

No veo dónde me estoy equivocando.

Gracias.

 

¿Por qué no lee simplemente los resultados de las variables que deberían reflejarse en los valores del buffer del indicador? Si miras los colores en la configuración del indicador después de colocar el indicador en el gráfico, cada color representa un buffer. El color superior = buffer0, el segundo desde el color superior = buffer1 y así sucesivamente.

Utilice algo como esto en su EA:

Buff0=iCustom(NULL,0, "Nombre del indicador",0,0); /Color superior del indicador

Buff0=iCustom(NULL,0, "Nombre del Indicador",0,1); //1-Atrás

Buff1=iCustom(NULL,0, "Nombre del indicador",1,0); //Color superior del indicador

Buff1=iCustom(NULL,0, "Nombre del indicador",1,1); //1-Atrás

¡Modifica las variables en el propio indicador, y recompila el indicador que actualizará los buffers y el indicador en el gráfico!

Si sigues confundido, te enviaré un EA y un indicador reales para que los veas.

Dave

<<<

 

iCustom()

Gracias Dave.

Lo tengo funcionando.

 

que tengan un buen día todos

 

mi EA

He creado mi EA - ASCTrend.mq4 con MQ4 builder, que utiliza la señal asctrend con la función ICustom. puede abrir una operación de COMPRA cuando la señal es de SUBIDA, y de VENTA cuando es de BAJA.

Quiero añadir a mi EA algún filtro - con backtesting en algunos pares, su mirada buena fo filtro con BBands ind, bud i dont know how to add this filter in my EA - something like that I think, but have no luck.

double Buy1_1 = iCustom(Symbol(),0, "PerkyAsctrend1",0,1);

double Buy2_1 = iCustom(NULL, 0, "BBands_Stop_v1", 4, 0, Current + 1);

double Buy2_2 = 1;

double Sell1_1 = iCustom(Symbol(),0, "PerkyAsctrend1",1,1);

double Sell2_1 = iCustom(NULL, 0, "BBands_Stop_v1", 5, 0, Current + 1);

double Venta2_2 = 1;

if (Buy1_1 && Buy2_1 > Buy2_2) Order = SIGNAL_BUY;

si (Venta1_1 && Venta2_1 > Venta2_2) Orden = SEÑAL_VENTA;

Archivos adjuntos: