Página 1 de 1
Calculo de indicadores... ¿siempre desde el principio?
Publicado: 02 Ago 2010 13:34
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
Re: Calculo de indicadores... ¿siempre desde el principio?
Publicado: 05 Ago 2010 17:11
por Bizancio
¿Hay alguien ahí?
Re: Calculo de indicadores... ¿siempre desde el principio?
Publicado: 05 Ago 2010 17:53
por Fer137
Re: Calculo de indicadores... ¿siempre desde el principio?
Publicado: 05 Ago 2010 23:36
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
Re: Calculo de indicadores... ¿siempre desde el principio?
Publicado: 06 Ago 2010 00:35
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
Re: Calculo de indicadores... ¿siempre desde el principio?
Publicado: 06 Ago 2010 10:01
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.
Re: Calculo de indicadores... ¿siempre desde el principio?
Publicado: 06 Ago 2010 10:33
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
Re: Calculo de indicadores... ¿siempre desde el principio?
Publicado: 06 Ago 2010 10:41
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?
Re: Calculo de indicadores... ¿siempre desde el principio?
Publicado: 06 Ago 2010 10:49
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
Re: Calculo de indicadores... ¿siempre desde el principio?
Publicado: 06 Ago 2010 11:54
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.