Precisión numérica de indicador

Foro dedicado a esta excelente herramienta de desarrollo e implementación de sistemas de trading
Responder
Speculari
Mensajes: 36
Registrado: 10 May 2012 10:57

Precisión numérica de indicador

Mensaje por Speculari »

Buenas a todos,

Estoy dando mis primeros pasos en la programación de indicadores en NinjaTrader y, como era de esperar, me he encontrado con "pequeños" inconveientes. En concreto, necesito grafiar un indicador con una precisión de 4 decimales, pero parece que más de dos no consigo. Si, por ejemplo, quiero indicar el valor 1,2770, se me redondea gráficamente a 1,28. Lo mismo sucede en el Data Box.
¿Hay alguna forma de aumentar la precisión o está limitada a dos decimales?

Saludos y gracias de antemano.
baltic46
Mensajes: 387
Registrado: 15 Jun 2012 14:26

Re: Precisión numérica de indicador

Mensaje por baltic46 »

Prueba a que te indique 127,70 mientras sepas que realmente significa 1,2770 no creo que tengas problemas, aunque igual existe la forma que no te redondee.
Saludos
Speculari
Mensajes: 36
Registrado: 10 May 2012 10:57

Re: Precisión numérica de indicador

Mensaje por Speculari »

Gracias por la rapidez.
El caso es que es un indicador que se grafiará sobre el de la cotización y necesito esos cuatro decimales, ya que la propia cotización tiene cuatro decimales. Había pensado en lo que me propones, pero supongo que, de alguna manera, el valor del indicador se podría expresar con esa precisión de cuatro decimales.

Saludos
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Re: Precisión numérica de indicador

Mensaje por cls »

Hola,

los números decimales que puedes usar en C# (que es lo que está detrás de Ninjascript) junto con su precisión son:
float: 7 dígitos
double : 15 dígitos
decimal: 28 dígitos.

Normalmente todos los indicadores que precisen de datos decimales trabajan con variables de tipo double por lo que no tienen una limitación a dos decimales.

Si ves dos decimales (supongo que te refieres a lo que muestra el DataBox) es porque la salida está formateada. Para salir de dudas, imprime los valores con Print para que puedas comprobar en la ventana Output que efectivamente los datos guardan todos sus decimales.

Si quieres formatear la salida a un número de decimales específico usa las cadenas con formato:
http://msdn.microsoft.com/es-es/library ... .110).aspx

Un ejemplo sencillo para formatear el precio a cinco decimales, independientemente de su TickSize:
Print( Close[0].ToString("N5") );

S2
Speculari
Mensajes: 36
Registrado: 10 May 2012 10:57

Re: Precisión numérica de indicador

Mensaje por Speculari »

Gracias cls. Efectivamente, en la Output Window me sale la información correcta y en la ventana gráfica aparece dibujado correctamente, pero en el Data Box y en la etiqueta de cotización (en la escala vertical de la ventana gráfica) aparece redondeado a dos decimales. La variable que contiene el valor la tengo declarada como double, así que ese no es el origen del problema.
¿Cómo es posible que si inserto una media móvil, ésta sí aparezca etiquetada en la cotización y en en el Data Box con más de dos decimales y en mi caso no lo consiga?

Saludos

Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Re: Precisión numérica de indicador

Mensaje por cls »

Speculari, el número de decimales que se ven va acorde con el TickSize del instrumento.
Si estás con el ES siempre verás dos decimales tanto en el DataBox como en las escalas verticales del chart.
Si estás con el 6J verás seis decimales, etc. Depende del instrumento.

Pero por supuesto, en todos los cálculos internos que tengan lugar, no se perderá ni un solo decimal (salvo los debidos al error de la aritmética de punto flotante, pero esa es otra historia).

Saludos
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Ninja Trader”