Función ICustom - página 15

 

¿hay algún ejemplo para usar la función icustom para obtener dos marcos de tiempo en el mismo buffer?

ya que 2 tf buffer tiene el mismo nombre, ¿cómo puedo determinar el marco de tiempo diferente?

marco de tiempoactual

double trend = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0);

marco temporal superior

double trend = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);

 
Prueba así :
double trend1minute = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0); double trend5minute = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);

Y luego utilizar las 2 variables como usted necesita (por ejemplo : si (trend1minute == ... && trend5minute ==... ) hacer algo)

mtuppers:
¿hay algún ejemplo para usar la función icustom para obtener dos marcos de tiempo en el mismo buffer?

ya que 2 tf buffer tiene el mismo nombre, ¿cómo puedo determinar el marco de tiempo diferente?

marco de tiempo actual

double trend = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0);

marco de tiempo superior

double trend = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);
 

Uso de iCustom en un EA, instancia única

Hola a todos,

Estoy trabajando en la escritura de un EA para utilizar un indicador personalizado, cuando backtest, me doy cuenta de que parece cargar un nuevo instande del indicador cada vez que se llama a la función iCustom. ¿Alguien sabe una manera de cargar el indicador personalizado una vez y la referencia de nuevo a ella en cada sucesión?

void OnBar()

{

RSIPL = iCustom(NULL,0,"NCH_DI",0,4,BarIndex);

TSL = iCustom(NULL,0,"NCH_DI",0,5,BarIndex);

HAOpen = iCustom(NULL,0,"HeikenAshi",0,2,BarIndex);

HAClose = iCustom(NULL,0,"HeikenAshi",0,3,BarIndex);

PACHigh = iMA(NULL,0,5,0,MODE_SMMA,PRICE_HIGH,BarIndex);

PACLow = iMA(NULL,0,5,0,MODE_SMMA,PRICE_LOW,BarIndex);

// DO MY OTHER STUFF HERE

}

El código anterior carga una nueva instancia del NCH_DI con cada llamada........

Gracias

 

No se puede hacer

Así es como funciona MT4. La mejor solución es minimizar el número de llamadas a iCustom() en su código. HA normalmente sólo necesita ser llamado cuando se forma una nueva barra. Llamarla cada vez que se forme una barra no es óptimo.

 
CodeMeister:
Así es como funciona MT4. La mejor solución es minimizar el número de llamadas a iCustom() en su código. HA normalmente sólo necesita ser llamado cuando se forma una nueva barra. Llamarla cada tick no es lo óptimo.

Tengo todas mis llamadas en una nueva formación de barras. El NCH_DI es, por desgracia, una pieza de código relativamente intensiva en memoria. ¿Tendrías alguna sugerencia sobre la forma en que puedo volcar las instancias antiguas?

 

Pruebe esto

Elprobador de estrategias no es el objetivo final de este EA. Ejecutarlo en vivo en un gráfico es. Creo que la carga de iCustom() ocurre una vez en un gráfico siempre que se tenga suficiente memoria, así que no gastaría mucho tiempo trabajando en algo que se adapte a las peculiaridades de Strategy Tester. La única otra alternativa a iCustom() es codificar el indicador directamente en el EA.

 

Pensé en recodificarlo en el EA.... Decidí que no sería práctico en este caso. He descubierto que si comento #property indicator_separate_window en el indicador se cargará y descargará una vez que la llamada se haya completado, voy a terminar la codificación principal y la demostración durante una semana o así y controlar mi uso de la memoria. Gracias chicos, les haré saber cómo va.

 

Problemas con el indicador iCustom

Hola,

mi EA está utilizando un indicador propio con iCustom.

En la apertura de una nueva vela el indicador es llamado por iCustom.

Ahora me he dado cuenta de que el valor de iCustom[1] no es igual a iCustom[0] de la barra anterior.

El valor es similar pero no es exactamente lo que debería ser y lo que verifiqué para el RSI por ejemplo.

¿Alguna idea de dónde puede estar el problema?

Gracias por cualquier pista al respecto.

Camilo

 

Depende del precio que utiliza el indicador personalizado. Si su indicador personalizado está usando el precio de cierre, alto, bajo o cualquier otro precio que esté cambiando durante el desarrollo de la vela actual, entonces el valor del índice [0] será cambiado.

Por ejemplo, si usted llama al indicador que está usando el precio personalizado y compara el valor [0] y después de que la barra se cierre lo compara con el resultado en [1] es casi seguro que el valor será diferente. Pero, si usted configura el indicador personalizado para usar el precio ABIERTO en lugar del cierre, entonces el valor será igual (es simplemente porque el precio abierto no cambia durante el desarrollo de la vela)

 

Gracias por la respuesta rápida, Kalenzo.

He comprobado los valores de [2] y me he dado cuenta de que para [1] -> [2] todo parece correcto

Aquí tengo un ejemplo de los valores de mi indicador

.... [0]..........[1].........[2]

t4 31,8711 42,6700 52,1915

t3 44,6881 52,1915 60,3014

t2 53,0572 60,3014 67,6553

t1 59,8860 67,6553 74,5797

Así que parece que el problema es la identificación de la apertura de la barra.

Sólo estoy usando como comprobación antes

if(Volumen[0]>1) return;

¿No está bien?

Razón de la queja: