Calculo de indicadores... ¿siempre desde el principio?

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Responder
Avatar de Usuario
Bizancio
Mensajes: 254
Registrado: 15 Jun 2009 12:42

Calculo de indicadores... ¿siempre desde el principio?

Mensaje por Bizancio »

Estimados todos:

Cuando programo un indicador, cada vez que recibe un tick, me recalcula TODA la linea, desde el principio. He tratado de resolverlo poniendo el cálculo de todos los datos anteriores al dato actual en OnInit, pero no me deja gestionar el array del indicador.

¿Habeis resuelto este problema?

Muchas gracias y un saludo
Bizancio

Busca la media de esa serie... ahora ya sabes cual es el punto en el que nunca estarás.
Avatar de Usuario
Bizancio
Mensajes: 254
Registrado: 15 Jun 2009 12:42

Re: Calculo de indicadores... ¿siempre desde el principio?

Mensaje por Bizancio »

¿Hay alguien ahí?
Bizancio

Busca la media de esa serie... ahora ya sabes cual es el punto en el que nunca estarás.
Avatar de Usuario
Bizancio
Mensajes: 254
Registrado: 15 Jun 2009 12:42

Re: Calculo de indicadores... ¿siempre desde el principio?

Mensaje por Bizancio »

Gracias Fer. No conocía esa función. Yo trabajo en MQL5 pero supongo que en esta versión también existirá.

Por otra parte, si bien el texto que acompaña al link que me mandas dice que solo se calculan las últimas barras, si le dices en el bucle de OnCalculate que te imprima lo que quieras cuando el contador esté en 100 (es decir, cada vez que en un OnCalculate recalcule el valor del indicador para la barra 100; como sabes normalmente la última barra está muy lejos de ese 100) resulta que cada vez que viene un tick te imprime lo que le has pedido.

Entiendo que esto es síntoma de que el contador toma en cierto momento el valor 100, lo que me llevó a pensar que cada vez que llega un tick se recalcula TODA la serie.

¿Tienes algún dato al respecto?

Un saludo
Bizancio

Busca la media de esa serie... ahora ya sabes cual es el punto en el que nunca estarás.
Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Re: Calculo de indicadores... ¿siempre desde el principio?

Mensaje por Fer137 »

No se a que te refieres, pero si haces un bucle que lo incluya es normal que el contador pase por ese punto.

Conozco el mql4 (el 5 aún no funciona en ningun broker).
En mql5 se utilizaría 'prev_calculated'.
Lo mas facil es que edites algun indicador ya hecho en mql5 y mires como va.
http://www.mql5.com/en/code/indicators

Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Re: Calculo de indicadores... ¿siempre desde el principio?

Mensaje por Fer137 »

Bizancio escribió: si le dices en el bucle de OnCalculate que te imprima lo que quieras cuando el contador esté en 100 (es decir, cada vez que en un OnCalculate recalcule el valor del indicador para la barra 100; como sabes normalmente la última barra está muy lejos de ese 100) resulta que cada vez que viene un tick te imprime lo que le has pedido.

Entiendo que esto es síntoma de que el contador toma en cierto momento el valor 100, lo que me llevó a pensar que cada vez que llega un tick se recalcula TODA la serie.
Quizas te confunde la palabra "OnCalculate", en mql4 está la funcion start() que funciona cada vez que llega un tick.
Si dentro de start o de OnCalculate pones Print( bufferTal[100]) obviamente te imprimirá esa posicion 100 del array aunque no la haya calculado en ese momento.
Avatar de Usuario
Bizancio
Mensajes: 254
Registrado: 15 Jun 2009 12:42

Re: Calculo de indicadores... ¿siempre desde el principio?

Mensaje por Bizancio »

Perdoname Fer. Creo que debería haber hecho esto desde el principio.

Este es el código:
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
{
int i; //Contador
double Factor=(double)(ExtMomentumPeriod-1)/ExtMomentumPeriod;
ExtMomentumBuffer[0]=0;
for(i=1;i<rates_total;i++){
ExtMomentumBuffer=ExtMomentumBuffer[i-1]*Factor+100*log(price/price[i-1]);
if (i==100) Print ("Hola");
}
return(rates_total);
}


(siento que no salgan los tabuladores)

Como ves, hay un bucle central que calcula el valor del indicador en cada punto. Le pido que cuando pase por el punto 100 imprima "Hola". El problema es que cada vez que llega un tick me vuelve a imprimir "Hola", lo que indica que recalcula el indicador desde el principio cada vez.

Saludos
Bizancio

Busca la media de esa serie... ahora ya sabes cual es el punto en el que nunca estarás.
Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Re: Calculo de indicadores... ¿siempre desde el principio?

Mensaje por Fer137 »

Hombre, si le dices que te calcule todo el array, te calcula todo el array. No le pongas i<rates_total en el bucle.
De todas formas no estoy muy puesto en indicadores, y menos aún en mql5. Por cierto ¿porque trabajas con mql5 si no se utiliza en los brokers?
Avatar de Usuario
Bizancio
Mensajes: 254
Registrado: 15 Jun 2009 12:42

Re: Calculo de indicadores... ¿siempre desde el principio?

Mensaje por Bizancio »

Hola Fer.

Ok, trataré de eliminar el i<rates_total, pero entonces no sé que poner para que llegue hasta el final.

Utilizo el mql5 porque me he puesto a aprenderlo hace cosa de tres meses, y me pareció que si me ponía desde cero, debía utilizar el 5 en lugar del 4. Espero que los brokers cambien de opinión y empiecen a utilizarlo...

PD: Gracias por lo de "code". A la proxima lo usaré.

Un saludo
Bizancio

Busca la media de esa serie... ahora ya sabes cual es el punto en el que nunca estarás.
Avatar de Usuario
Fer137
Mensajes: 1371
Registrado: 12 Nov 2007 18:43

Re: Calculo de indicadores... ¿siempre desde el principio?

Mensaje por Fer137 »

Bizancio escribió:Hola Fer.
Ok, trataré de eliminar el i<rates_total, pero entonces no sé que poner para que llegue hasta el final.
Mira algún indicador sencillo en http://www.mql5.com/en/code/
Por ejemplo: http://www.mql5.com/en/code/viewcode/146/1497/ima.mq5

Código: Seleccionar todo

...
if(prev_calculated==0)start=MAPeriod-1; else start=prev_calculated-1;
for(j=start;j<rates_total;j++){...
Saludos.
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Metatrader 4”