Indicador chulo

Foro dedicado a esta excelente herramienta de desarrollo e implementación de sistemas de trading
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Indicador chulo

Mensaje por cls »

este indicador parece bueno ...

http://www.ninjatrader-support2.com/vb/ ... hp?t=14328

... la pena que cuesta pasta ...

Te permite encontrar el precio más visitado (con más ticks) y en el que se ha negociado más volumen. (El POC de un market profile).

Es perfecto para encontrar soportes y resistencias.

Tal vez le falta una columna más con el gráfico de los trades (igual que la que tiene el volumen), pues para forex posiblemente sea más útil que no el volumen.

El autor se lo ha montado bien ... 200$ al mes 8) . Joer con los rusos.
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12798
Registrado: 06 Sep 2004 10:18
Contactar:

Mensaje por X-Trader »

Parece ser que tiene la posibilidad de probarse en demo unos días, si te animas cuéntanos a ver qué tal va.

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

X-Trader escribió:Parece ser que tiene la posibilidad de probarse en demo unos días, si te animas cuéntanos a ver qué tal va.

Saludos,
X-Trader
X-Trader, hace tiempo instalé una demo de un market profile y ... se me repetó el ninja. Así que ya paso de instalar nada, sorry. ... Prefiero programarlo conmigo mismo 8) .

La verdad que el hilo lo abrí por si despertaba el interés de la gente, y alguien se animara a programarlo o aportar ideas ... :wink:

El indicador saca los ticks del gráfico en el que esté cargado (segundos, minutos, días, ...) y luego no hace más que barrerlos e ir contando (precio y volumen). Por último organiza la información en un formulario windows, se viste de bonito y a correr.

Hace unos meses colgué un ejemplo de cómo sacar los ticks de cualquier chart (en realidad era conseguir el multi-timeframe en indicadores algo que supuestamente no soportaba la versión actual del ninja).
La información está conseguida, ahora hay que organizarla en el formulario. El formulario está compuesto por un control creo que del tipo DataGridView . Y en una de las columnas muestra una barra tipo histograma horizontal para representar el volumen histórico.

Y eso es todo, no tiene más.

No se trata de joder el invento al autor. Me parece bien que lo venda, su trabajo le ha costado, y mucha gente ganará dinero con él y lo amortizará rápido.
Pero mi idea es mejorarlo y utilizarlo para "autoconsumo", nada de venderlo.

Posibles mejoras:
- Añadir la columna con el histograma de trades acumulados (es idéntica a la de volumen histórico pero aplicada al número de trades)
- Calcular el Value Area ( en un market profile es la zona que rodea al POC en un porcentaje determinado, normalmente el 66%). El POC es el precio con más volumen negociado, o bien el precio más visitado si no se dispone de información fiable de volumen (caso de forex).
- Funcionamiento en TR. Hay un botón Reload en el formulario que me hace sospechar que el indicador no funciona en TR. Se le puede mejorar con la opción de que funcione en TR o no.
- Al añadir el TR se podría utilizar en estrategias automáticas.

Particularmente dispongo de la lógica para construir el indicador (código para extraer los ticks y contarlos cuantitativamente - trades - y cualitativamente - volumen ).
Me faltaría construir un formulario "bonito" como el del ejemplo. Aquí es donde me hace falta colaboración.

Si alguien se anima ... :D

S2
H.Seldon
Mensajes: 546
Registrado: 26 Abr 2005 14:38

Mensaje por H.Seldon »

si te apetece, yo me animo con reservas (mi tiempo últimamente es muy escaso), pero como me interesa el tema, pues me animo. Estamos en contacto.

saludetes
Avatar de Usuario
polxx
Mensajes: 847
Registrado: 09 Dic 2005 10:25
Ubicación: Albacete

Mensaje por polxx »

CLS, lo interesante seria que el formulario que representa los datos estuviera ajustado con el propio gráfico del precio. Osea algo como esto:
http://www.fipertec.de/MarketProfileSettings.jpg

Seria eso posible con ninja?

Aunque tambien hay otro camino para hacerlo. Seria calcular cual es el nivel de máximo volumen contratado y cual el de mayor número de contratos intercambiados. Y despues simplemente representar ambas lineas sobre el gráfico.
Esta claro que ver gráficamente el market profile es mas aclaratorio, pero si al final es para un sistema automático, el dibujo que forma el market profile no puede usarse, y como sólo tomaremos el punto máximo, pues con representar ese punto quizás sea suficiente.
O representar los 3 niveles donde más volumen se ha ejecutado con la condicion de que esten separados una distancia de x puntos (donde x sea optimizable).
El camino equivocado es INVENTAR un SISTEMA ganador. El camino correcto es DESCUBRIR que hace el PRECIO, para adelantarse a el, y con eso poder hacer un sistema ganador.

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

Mensaje por cls »

H.Seldon escribió:si te apetece, yo me animo con reservas (mi tiempo últimamente es muy escaso), pero como me interesa el tema, pues me animo. Estamos en contacto.

saludetes
estupendo Seldon :D voy a buscar el código que tengo y vemos cómo organizarlo.

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

Mensaje por cls »

polxx escribió:CLS, lo interesante seria que el formulario que representa los datos estuviera ajustado con el propio gráfico del precio. Osea algo como esto:
http://www.fipertec.de/MarketProfileSettings.jpg

Seria eso posible con ninja?

Aunque tambien hay otro camino para hacerlo. Seria calcular cual es el nivel de máximo volumen contratado y cual el de mayor número de contratos intercambiados. Y despues simplemente representar ambas lineas sobre el gráfico.
Esta claro que ver gráficamente el market profile es mas aclaratorio, pero si al final es para un sistema automático, el dibujo que forma el market profile no puede usarse, y como sólo tomaremos el punto máximo, pues con representar ese punto quizás sea suficiente.
O representar los 3 niveles donde más volumen se ha ejecutado con la condicion de que esten separados una distancia de x puntos (donde x sea optimizable).
Hola Polxx,

bueno, con ninja hay pocas cosas que no se puedan hacer. Y si además programas en .NET2.0, no tienes límites.

Sobre el market profile ...

el market profile tiene un problema en ninja, y es que los TPO's se suelen mostrar en cada nivel de precio (en cada tick). Si el chart que estás abriendo tiene una distancia de 200 ticks entre los extremos superior e inferior, los TPO's quedan muy amontonados y no se ven bien.

Este un ejemplo de un indicador que programé hace tiempo.

Imagen

Se ve el market profile dibujado como un heatmap y por sesiones (si uso letras para los TPO's salen muy juntas y no se ve nada). Cada sesión un market profile. La región azul es el Value Area y la naranja la zona Initial Balance. La línea verde oscura es el POC.

Este indicador en concreto está orientado a contar el precio, no el volumen. Es decir, cuenta las veces que el precio es visitado o pisado (como sueles decir tú 8) ).
Transcurre desde el amarillo (al inicio de la sesión) al rojo (al final de la sesión).
No funciona en TR, sólo en backtesting.


El indicador que vamos a construir ahora - eso espero :-D - contará precio, volumen, calculará el Value Area y cualquier región de densidad, el POC, funcionará en TR y backtesting, podríamos hacer que despliege el diagrama sobre el chart o no, etc. Cualquier cosa que se nos ocurra.
El código necesario para extraer la información y organizarla más o menos ya lo tengo trabajado (a la vista está el indicador). Quedaría la parte windows y ver la mejor manera para ofrecerlo en estrategias.


Este indicador que hice está totalmente programado en ninja.
Pero el del ruso, está hecho fuera del ninja con un formulario externo y sólo usa el ninja para recibir los ticks y dibujar la línea del POC.


S2
Avatar de Usuario
polxx
Mensajes: 847
Registrado: 09 Dic 2005 10:25
Ubicación: Albacete

Mensaje por polxx »

CLS, no puedo ayudarte en el tema de programación porque no tengo ese nivel. :(
el market profile tiene un problema en ninja, y es que los TPO's se suelen mostrar en cada nivel de precio (en cada tick). Si el chart que estás abriendo tiene una distancia de 200 ticks entre los extremos superior e inferior, los TPO's quedan muy amontonados y no se ven bien.
No entiendo eso, perdon puedes explicarmelo?

En el primer dia que muestras, se ve claramente 2 POC, yo los mostraria asi, osea que sean puntos con mucho volumen contratado y que ademas sean maximos relativos.

Ademas mostrarlo por dias lo veo limitado, hay otra alternativa. Al inicio de cada sesion se comienza a dibujar un market profile, que mirara hacia atras en el tiempo unos determinados dias que podremos elegir. Es decir, al inicio del dia se muestra el market profile de los ultimos 3 dias, pero a la vez que se va dibujando nuevo grafico conforme avanza el dia, deberia irse borrando lo que paso hace mas de 3 dias. Al terminar el dia queda ahi dibujado y al siguiente dia se continua en otro nuevo.

Y en cuanto a contar el precio que se ha pisado o contar el volumen especifico de cada precio, yo lo haria con 2 indicadores separados. O mejor aun con un indicador que pueda elegir que modo de representación utiliza. Porque representar ambas cosas creo que es engorroso visualmente.

Despues con simples sistemas se buscarian las posibilidades de todo esto a ver que se puede sacar.
El camino equivocado es INVENTAR un SISTEMA ganador. El camino correcto es DESCUBRIR que hace el PRECIO, para adelantarse a el, y con eso poder hacer un sistema ganador.
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

polxx escribió:CLS, no puedo ayudarte en el tema de programación porque no tengo ese nivel. :(
el market profile tiene un problema en ninja, y es que los TPO's se suelen mostrar en cada nivel de precio (en cada tick). Si el chart que estás abriendo tiene una distancia de 200 ticks entre los extremos superior e inferior, los TPO's quedan muy amontonados y no se ven bien.
No entiendo eso, perdon puedes explicarmelo?

En el primer dia que muestras, se ve claramente 2 POC, yo los mostraria asi, osea que sean puntos con mucho volumen contratado y que ademas sean maximos relativos.

Ademas mostrarlo por dias lo veo limitado, hay otra alternativa. Al inicio de cada sesion se comienza a dibujar un market profile, que mirara hacia atras en el tiempo unos determinados dias que podremos elegir. Es decir, al inicio del dia se muestra el market profile de los ultimos 3 dias, pero a la vez que se va dibujando nuevo grafico conforme avanza el dia, deberia irse borrando lo que paso hace mas de 3 dias. Al terminar el dia queda ahi dibujado y al siguiente dia se continua en otro nuevo.

Y en cuanto a contar el precio que se ha pisado o contar el volumen especifico de cada precio, yo lo haria con 2 indicadores separados. O mejor aun con un indicador que pueda elegir que modo de representación utiliza. Porque representar ambas cosas creo que es engorroso visualmente.

Despues con simples sistemas se buscarian las posibilidades de todo esto a ver que se puede sacar.
No te preocupes, se puede ayudar de otras maneras.

Los TPOs (Time-Price Opportunities) son las letras que construyen un market profile clásico. Yo las cambién por puntos de color porque las letras se amontonan demasiado y no ves nada. Pego una imagen de ejemplo. ( Si el ninja tuviera un zoom vertical decente no sería problema. Pero no lo tiene, espero que lo arreglen en la próxima versión).

Imagen

La idea es que el indicador sea totalmente configurable. Que se puedan comprimir varias sesiones, o customizar una sesión con una fecha de inicio y otra de fin, elegir entre volumen o precio, dibujar el mayor POC, dibujar los n puntos que más se aproximan al POC. Esto último sí es muy útil.
Todos los market profile te suelen sacar el POC, normalmente sólo habrá uno. Pero puede tener varios (si todos tienen el mismo valor) o bien que habiendo uno existan varios precios con un valor muy parecido al del POC que también merecerían ser representados en el diagrama.

S2
H.Seldon
Mensajes: 546
Registrado: 26 Abr 2005 14:38

Mensaje por H.Seldon »

Programar el formulario externo no tiene ninguna complicación, pero sólo me pregunto para qué.

- El ValueArea y su POC ya están programados (precios pisados)
- Para volúmenes, sólo habría que cambiar una pequeña parte del código, para contar volumen negociado en cada precio.
- Se podría mejorar contando volumen comprado, volumen vendido, y delta.

Así, tendríamos un juego de 5 indicadores o POC en uno.

También se podría guardar la información de ticks en archivos binarios para poder recalcular. Creo que el ninja no guarda la información del tick, es decir, tiempo, precio, bid, bidVol, ask, askVol, sin embargo dices que sí la guarda, no sé, no estoy seguro. De todas formas eso no costaría nada.

La duda que se me plantea es: ¿ lo del formulario es útil ?

Luego además otra cosa es que, como todos los indicadores, se dibujan a la vez que se van formando, es decir, se dibujan cuando ya ha pasado todo, no antes de que pase. Es decir que cuando vemos aparecer un POC, ese POC ya ha hecho que el precio rebote y se vaya.

Finalmente, queda la cuestión del comienzo de la cuenta. Es decir, se reinicia el/los indicadores cada hora ? o cada día ?

Bueno, son muchas dudas, pero como ya está casi todo programado :-D
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Mensaje por cls »

H.Seldon escribió:Programar el formulario externo no tiene ninguna complicación, pero sólo me pregunto para qué.

- El ValueArea y su POC ya están programados (precios pisados)
- Para volúmenes, sólo habría que cambiar una pequeña parte del código, para contar volumen negociado en cada precio.
- Se podría mejorar contando volumen comprado, volumen vendido, y delta.

Así, tendríamos un juego de 5 indicadores o POC en uno.

También se podría guardar la información de ticks en archivos binarios para poder recalcular. Creo que el ninja no guarda la información del tick, es decir, tiempo, precio, bid, bidVol, ask, askVol, sin embargo dices que sí la guarda, no sé, no estoy seguro. De todas formas eso no costaría nada.

La duda que se me plantea es: ¿ lo del formulario es útil ?

Luego además otra cosa es que, como todos los indicadores, se dibujan a la vez que se van formando, es decir, se dibujan cuando ya ha pasado todo, no antes de que pase. Es decir que cuando vemos aparecer un POC, ese POC ya ha hecho que el precio rebote y se vaya.

Finalmente, queda la cuestión del comienzo de la cuenta. Es decir, se reinicia el/los indicadores cada hora ? o cada día ?

Bueno, son muchas dudas, pero como ya está casi todo programado :-D
Lo del formulario lo veo como otra manera de manejar la información. A mí me resultaría más práctica, pero es cuestión de gustos.

El ninja guarda las barras en el archivo Ninjatrader.mdb. Es una base de datos con sus tablas y demás. La tabla nt_barsintraday es la que guarda el histórico y en una de sus columnas, en formato binario, guarda los ticks. He podido acceder a toda la info no binaria, pero lo que me interesaba que eran los ticks no he podido entenderlos. Supongo que esos bytes son fruto de algún algortimo de compresión pero ni idea.

De todos modos no creo que se guarde el Bid y el Ask. Sólo el LastPrice, volumen, fecha y hora.

Sobre los POC, yo la utilidad la veo en coger los pasados. Y usarlos como zonas de soporte / resistencia. Son zonas donde ha habido mucha negociación, mucho interés comprador-vendedor, y necesariamente son puntos significativos en donde aunque no sepamos hacia dónde tirará el precio, por lo menos "sabemos" que lo hará con fuerza.

Sobre el inicio de sesión, lo mejor es usar unos campos de fecha inicio y fin. Cargando varias veces el indicador con distintas fechas ini/fin podemos cubrir todas las posibilidades que se nos ocurran.

S2
H.Seldon
Mensajes: 546
Registrado: 26 Abr 2005 14:38

Mensaje por H.Seldon »

cls escribió:
Lo del formulario lo veo como otra manera de manejar la información. A mí me resultaría más práctica, pero es cuestión de gustos.
bueno pues venga, hagámoslo.
cls escribió:
El ninja guarda las barras en el archivo Ninjatrader.mdb. Es una base de datos con sus tablas y demás. La tabla nt_barsintraday es la que guarda el histórico y en una de sus columnas, en formato binario, guarda los ticks. He podido acceder a toda la info no binaria, pero lo que me interesaba que eran los ticks no he podido entenderlos. Supongo que esos bytes son fruto de algún algortimo de compresión pero ni idea.
No creo que guarde la información de ticks, sobre todo en un formato tan poco eficiente como el mdb. También creo que si guardara esa información, debería ser accesible.

Por otra parte, también hay razones para guardarla, y es por ejemplo la formación de barras de rango y de volumen, que sólo puede hacerse mediante los ticks.

En cualquier caso, si la guardara, debería ser una serie de bloques de 48 ó 32 bytes. Dentro de cada bloque, tendríamos una sucesión de Longs (8 bytes), un Long para cada dato (DateTime, last, Bid, Ask, BidVol, AskVol).

Al menos así es en DukasCopy, y algún otro formato estándar.
De todas formas, esta tarde-noche miraré la base de datos del Ninja a ver qué aclaro.

Bueno, yendo al grano, tu ponme los deberes y yo ya los iré haciendo.
Saludos.
Spirit
Mensajes: 4739
Registrado: 12 Jun 2008 19:49

Mensaje por Spirit »

:smt006
Última edición por Spirit el 16 Nov 2009 15:01, editado 1 vez en total.
H.Seldon
Mensajes: 546
Registrado: 26 Abr 2005 14:38

Mensaje por H.Seldon »

cls, estoy viendo que de aquí al MarketDelta hay un pasito. Buf, ¿ no nos estaremos metiendo en un jardín ? jeje, yo soy bastante aficionado a eso. Bueno, si sale bien lo podemos vender. El tipo original lo alquila por $200 ¡¡¡al mes!!!

spirit, un año entero de ticks en formato binario ocupa entre 0.5 y 1.5 Gigas, dependiendo del proveedor, o sea no mucho la verdad. Si llegas a llenar unos pocos años, el siguiente disco que te compres ya será de varios Teras.

seguimos ...
H.Seldon
Mensajes: 546
Registrado: 26 Abr 2005 14:38

Mensaje por H.Seldon »

Hola cls, ya recibio el stream de datos en el formulario externo, ahora sólo tengo que ir sumándolos y poniendo en las celdillas de la tabla.

Mañana te paso la dll, a partir de ahora el trabajo está perfectamente separado. Tu programas tus cosas en el indicador (lo que se verá en el Ninja, los POCs y todo eso) y yo me encargo del formulario.

saludos.

Imagen
Adjuntos
datos.png
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Ninja Trader”