Función ICustom - página 20

 
Jeeves:
¿Podría algún alma bondadosa sacarme de mi miseria y rehacer el material de abajo para permitir el uso del indicador 'Advanced_ADX'? Sé que requiere el uso de la función 'icustom', pero no tengo ni idea de cómo hacerlo.

/datos h1

double h1adm = iadm(NULL,PERIOD_H1,2,MODE_CLOSE);

/datos de h4

double h4adx = iadx(NULL,PERIOD_H4,2,MODE_CLOSE);

//d1 datos

double d1adx = iadx(NULL,PERIOD_D1,2,MODE_CLOSE);

//definir color

color color_h1, color_h4, color_d1;

//definir cadena

cadena flecha_h1, flecha_h4, flecha_d1;

/h1 tendencia alcista

if (h1adx < Bid ) { color_h1 = ColorUpGood; }

//h1 tendencia a la baja

si (h1adx > Oferta ) { color_h1 = ColorDownGood; }

//h4 tendencia alcista

if (h4adx < Bid ) { color_h4 = ColorUpGood; }

//h4 tendencia a la baja

si (h4adx > Oferta ) { color_h4 = ColorDownGood; }

//d1 tendencia alcista

if (d1adx < Bid ) { color_d1 = ColorUpGood; }

//d1 tendencia a la baja

if (d1adx > Bid ) { color_d1 = ColorDownGood; }

utilice algo como esto :

double h1adp=iADX(NULL,PERIOD_H1,ADXPeriod,PRICE_CLOSE,MODE_PLUSDI, 0);

double h1adm=iADX(NULL,PERIOD_H1,ADXPeriod,PRICE_CLOSE,MODE_MINUSDI,0);

if (h1adp > h1adm ) { color_h1 = ColorUpGood; }

si (h1adp < h1adm ) { color_h1 = ColorDownGood; }

y haga eso para todos los marcos de tiempo que quiera probar (podría reemplazar el 0 al final con algún otro número - 0 => barra actual, 1 => primera barra cerrada y así sucesivamente)

 

Problemas de programación 2 Preguntas pls Ayuda (archivos de registro)(Indicador personalizado / Standard Ind

Hola espero poder encontrar a alguien que me ayude a resolver este problema, estaría muy agradecido

  • Situación inicial:
  • Hemos desarrollado un indicador de filtro multicanal basado en los cálculos de diferentes indicadores estándar de Metatrader.

    Este indicador fue concebido para ser utilizado en nuestro asesor experto. El reto es

    que en cada tick todos los cálculos basados en estos indicadores estándar causan innumerables entradas de registro.

    Debido a esto nuestras operaciones se retrasan.

    ¿Es posible evitar las entradas de registro?

  • Nuestro intento de resolver el problema:

Tenemos indicadores personalizados programados como los indicadores estándar. Intentamos cambiar el cálculo del curso estándar utilizado por los diferentes indicadores. Pero esto no trae el resultado esperado.

Usando el cálculo de curso estándar el indicador estándar trae el mismo resultado que el indicador personalizado. Pero el cambio del cálculo del recorrido

¿se producen diferencias entre el indicador personalizado y el indicador estándar correspondiente?

¿Es posible obtener indicadores personalizados que se comporten exactamente igual que los indicadores estándar (sin importar el cálculo del curso elegido)?

 
spongebozz:
Hola espero poder encontrar a alguien que me ayude a resolver este problema, se lo agradecería mucho
  • Situación inicial:
  • Desarrollamos un indicador de filtro multicanal basado en diferentes cálculos de indicadores estándar de Metatrader.

    Este indicador fue concebido para ser utilizado en nuestro asesor experto. El reto es

    que en cada tick todos los cálculos basados en estos indicadores estándar causan innumerables entradas de registro.

    Debido a esto nuestras operaciones se retrasan.

    ¿Es posible evitar las entradas de registro?

  • Nuestro intento de resolver el problema:

Tenemos indicadores personalizados programados como los indicadores estándar. Intentamos cambiar el cálculo del curso estándar utilizado por los diferentes indicadores. Pero esto no trae el resultado esperado.

Usando el cálculo de curso estándar el indicador estándar trae el mismo resultado que el indicador personalizado. Pero el cambio del cálculo del recorrido

¿Induce a diferencias con respecto al indicador personalizado y al indicador estándar correspondiente?

¿Es posible obtener indicadores personalizados que se comporten exactamente igual que los indicadores estándar (independientemente del curso de cálculo elegido)?

Hola Spongebozz,

Esto es para la primera parte de tus preguntas... respecto a los registros demasiado grandes y que ralentizan tu sistema...

Lo más probable es que los registros se creen a partir de declaraciones PRINT... demasiadas... ya sea en sus EAs y/o en sus indicadores...

Puede eliminar o dejar en blanco las sentencias PRINT colocando 2 barras inclinadas a la derecha (//) delante de cada sentencia PRINT que desee dejar de imprimir en el registro.

Ejemplo:

// Print("Esto es un ejemplo"); El // borrará la línea de código y no se imprimirá en el registro...

Si quiere...TODAS...las sentencias PRINT en blanco...puede hacer un find/replace...

Buscar: Imprimir

Reemplazar: // Imprimir

El tipo de indicador estándar o personalizado... no debería importar...

Sólo importa si tiene muchas sentencias PRINT que necesitas eliminar o poner en blanco...

Y más tarde siempre puedes volver atrás y quitar las sentencias PRINT que quieras...y dejar las otras en blanco o eliminarlas por completo.

Espero que esto te ayude,

Robert

 

¡Hola chicos!

Estoy haciendo un EA para Opciones Binarias y quiero obtener "señales" de un indicador para recibirlas en mi EA. Como probablemente sabéis, las Opciones Binarias sólo hacen una PUT o una CALL así que quiero que iCustom sólo escuche mi indicador y haga las puts y las calls en mi EA. ¿Tiene sentido?

Entonces, ¿qué tengo que hacer?

En el indi sólo necesito poner algo como esto:

// PUT

if (AlignsForAput == true){

PutBuffer[] = 1;

}

// CALL

if (AlignsForAcall == true){

CallBuffer[] = 1;

}

PutBuffer[] = 0;

CallBuffer[] = 0;

Por favor, ayúdame a escribir un buen ejemplo sobre cómo hacer que esto funcione. ¿Qué necesito escribir y DÓNDE lo escribo?

Gracias.

 

Me gustaría mucho que alguien escribiera un ejemplo sencillo de cómo debería ser el código de indi y el código de EA. Por favor, vea arriba mi pregunta.

 
SantaClaus:
Me gustaría que alguien escribiera un ejemplo sencillo de cómo debería ser el código de los indicadores y el código de los EAs. Por favor, vea arriba mi pregunta.

Para los indicadores compruebe esto : https://www.mql5.com/en/forum/173032 y esto https://www.mql5.com/en/forum/173054

Para los EAs comprueba esto : https://www.mql5.com/en/forum/173136 y esto : https://www.mql5.com/en/forum/173171

 

¿Me estás diciendo que hay buenos ejemplos de cómo usar iCustom para el propósito anterior?

 
SantaClaus:
¿Así que me estás diciendo que hay buenos ejemplos allí de cómo usar iCustom para el propósito anterior?

Sí, eso es exactamente lo que estoy diciendo (usted pidió "un ejemplo simple de cómo el código indi y el código EA debe ser como" - esos hilos pueden ayudarle)

 
mladen:
Sí, eso es exactamente lo que estoy diciendo (usted pidió "un ejemplo simple de cómo el código indi y el código EA debe ser como" - esos hilos pueden ayudarle)

No, en ninguno de los enlaces se explica cómo utilizar iCustom como me gustaría en mi primera pregunta.

 
SantaClaus:
No, en ninguno de los enlaces se explica cómo uso iCustom como me gustaría en mi primera pregunta.

Estás posteando en un hilo que explica en detalle cómo usar iCostom() (todo lo que tienes que hacer es ir a la primera página de este hilo) y no puedes encontrar cómo hacerlo?

Aquí tienes una versión corta :

_________________________

iCustom

Calcula el indicador personalizado especificado y devuelve su valor.

[TABLA] double iCustom(

string symbol, // símbolo

int timeframe, // timeframe

string name, // ruta/nombre del programa compilado del indicador personalizado

... // parámetros de entrada del indicador personalizado (si es necesario)

int mode, // índice de línea

int shift// turno

);[/TD]

[/TR]

[/TABLE]

Parámetros

símbolo

Nombre del símbolo sobre el que se calculará el indicador. NULL significa el símbolo actual.

timeframe

Marco temporal. Puede ser cualquiera de los valores de la enumeración ENUM_TIMEFRAMES. 0 significa el marco de tiempo del gráfico actual.

nombre

Nombre del programa compilado del indicador personalizado, relativo al directorio raíz de los indicadores (MQL4/Indicators/). Si el indicador se encuentra en un subdirectorio, por ejemplo, en MQL4/Indicators/Examples, su nombre debe especificarse como"Examples\indicator_name" (debe especificarse como separador la doble barra invertida "\\\N en lugar de una sola).

...

Parámetros de entrada del indicador personalizado, separados por comas.

Los parámetros pasados y su orden deben coincidir con el orden de declaración y el tipo de variables externas del indicador personalizado. Si no se especifican los valores de los parámetros de entrada, se utilizarán los valores por defecto.

modo

Índice de línea. Puede ser de 0 a 7 y debe corresponder con el índice, especificado en la llamada de la función SetIndexBuffer().

desplazamiento

Índice del valor tomado del búfer del indicador (desplazamiento relativo a la barra actual la cantidad dada de períodos atrás).

Valor devuelto

Valor numérico del indicador personalizado especificado. El indicador personalizado debe ser compilado (archivo *.EX4) y estar en el directorio terminal_directory\MQL4\Indicators\.

Ejemplo:

[TABLE]

[TR]

[TD] double val=iCustom(NULL,0,"SampleInd",13,1,0); [/TABLE]

_________________________

PS: el "Índice de línea. Puede ser de 0 a 7" es el error que sigue teniendo metatrader en su documentación (debería ser "Line index. Can be from 0 to 511"), pero mientras no cambien oficialmente su documentación, me ceñiré a su definición de la función iCustom()

Feliz codificación