Buenos días.
Tengo un problema cuando lanzo un sistema para hacer trading automático. Estoy casi seguro que es por el indicador “positivevolumeindex” ya que cuando lo quito de mi sistema, entonces funciona.
Cuando lo muestro en un indicador o hago backtest, funciona perfectamente, pero cuando lo lanzo en un sistema automático, en cuanto se ejecuta la primera vela, me detiene el proceso con el mensaje que no tiene velas suficientes cargadas para el cálculo de algún indicador, lo cual no es cierto.
¿alguien me puede ayudar?
Gracias.
El indicador PositiveVolumeIndex comienza desde la primera barra del historial para acumular volúmenes. Si no hay una barra precargada, podría llevar a este mensaje. Agregue esta instrucción en la parte superior del código para ver cómo funciona:
defparam preloadbars=10000
Pues muchas gracias. Parece que funciona.
Tenía ese parámetro pero en 5000 que era el máximo que según el manual se podía poner.
Bueno…. pues vamos de curiosidad en curiosidad…
Después de todo el día con el sistema lanzado, y después de pensar que ya estaba resuelto cuando te di las gracias… pues ahora mismo me acaba de detener el programa el sistema con el mismo mensaje….
¿alguna idea?
Gracias de nuevo
Bueno, todo depende de la forma en que esté utilizando PositiveVolumeIndex. Para saber por qué recibe este mensaje de error, comparta el código que está utilizando. Gracias.
Hola. Pues este es:
pvi=PositiveVolumeIndex(close)
pvim=Average[15,1](pvi)
pvimax=highest[90](pvim)
pvimin=lowest[90](pvim)
oscp=(pvi-pvim)*100/(pvimax-pvimin)
gracias.
pongo el código con el PRT code. Lo siento.
pvi=PositiveVolumeIndex(close)
pvim=Average[15,1](pvi)
pvimax=highest[90](pvim)
pvimin=lowest[90](pvim)
oscp=(pvi-pvim)*100/(pvimax-pvimin)
¿Con qué instrumento estás usando esta fórmula? Creo que podría haber un problema si no hay volumen durante la noche o antes de la apertura del mercado.
Ok, entonces el problema seguramente proviene de la falta de volúmenes en algunos períodos, intente cambiar el código con esto:
if volume>0 and PositiveVolumeIndex(close)>0 then
pvi=PositiveVolumeIndex(close)
pvim=Average[15,1](pvi)
pvimax=highest[90](pvim)
pvimin=lowest[90](pvim)
oscp=(pvi-pvim)*100/(pvimax-pvimin)
else
oscp=oscp[1]
endif
Pues muchisimas gracias, Nicolas. Parece que está funcionando.
saludos