Aprovechando el encierro, aquí va otro tocho-post.
Cuando la gente habla de orderflow se está refiriendo exclusivamente a la cinta (que sólo contiene órdenes a mercado). Un término más correcto que evitaría confusiones sería marketorderflow.
Porque el flujo de órdenes también incluye a las limitadas que están en el DOM (y que incluso es más voluminoso que las órdenes a mercado) y que sería el limitorderflow.
Un trade es un cruce entre una orden a mercado y una limitada, y a fin de día habrá participado el mismo volumen de unas y otras en los cruces, pero el flujo de datos (adiciones, modificaciones, removes) es muchísimo mayor en las limitadas.
Guille escribió: 15 Mar 2020 10:31
Realmente si conozco algo de programación de objetos en Easylanguage para tradestation y hay métodos para obtener datos de profundidad de mercado, pero me gustaría aclararme con algunos conceptos que no tengo muy claros
El volumen up/dwn que puse es referido futuros (sobre divisas) pero no forex... porque en futuros se que el volumen es real y según el manual de Easylanguage, cuando usas la palabra Upticks se obtiene el volumen tradeado en los ticks up y la palabra Downticks se obtiene el volumen tradeado en los Downs ticks, de forma que en cada barra tienes un valor para upticks y otro para Downticks
Ahí no puedo ayudarte porque desconozco cómo se maneja en EasyLanguage el tema de orderflow. Todo lo que comento es para NinjaTrader.
El problema radica en saber si un tick es de compra o de venta. Cuando se recibe un tick no se sabe per se, si es compra o venta. Se lleva al volumen y ya está. Si la barra cierra alcista, pues volumen de compra. Es muy simple pero así lo usan muchos (me suena que hay metodologías muy renombradas que usan algo así).
Un paso más allá es trabajar a nivel de tick en vez de a cierre de barra, y comprobar el precio del tick recibido con el inmediato anterior.
Si el nuevo tick tiene un precio mayor, se supone que es una compra (no siempre, pero es una aproximación razonable). Y si tiene un precio menor es una venta, lo que también es razonable. Pero si viene con el mismo precio, se asume que se repite la acción compra o venta, asignada al último tick. Y en esta asunción es donde se acumulan los errores. Porque ya no es razonable y muchas veces no se cumple. Y así es como funciona el up-down. Cuando no tienes cinta, es lo que hay.
El bid-ask funciona parecido en cuanto a que se realizan comparaciones de precios, pero accediendo a la horquilla para saber si el tick es compra o venta. Si el precio del tick recibido coincide con el precio Bid de la horquilla se trata indefectiblemente de una venta, y si coincide con el ask, de una compra. Aquí no hay suposiciones y el cálculo es exacto. La horquilla te la da el propio marketorderflow, así que no hay que acceder al DOM.
(Se podría hablar de los ticks AboveAsk, BelowBid, Between que no coinciden con el Bid Ask de la horquilla, pero es otro tema y se debe a limitaciones de la tecnología para la transmisión de datos; si eso, para otro post).
Guille escribió: 15 Mar 2020 10:31
Luego hay otras palabras reservadas (bidsize y asksize) que se refieren al número de unidades en el mejor bid y en el ask y entonces una cosa es el volumen tradeado realmente en contratos de compras/ventas y otra son los volúmenes ofertados/demandados en el bid/ask ¿cierto?
Entonces no se como interpretar esto bien... un mayor volumen tradeado en Upticks pero hay mayor unidades en el ask, ¿significa que esa fuerza de compra es débil o fuerte? Es que no encuentro información sobre esto... y son cosas que hay que tener muy claras para poder empezar a interpretarlo y hacer algún sistemilla
BidSize es el volumen en el bid de la horquilla (órdenes limitadas de compra) y el AskSize es el volumen (no el número) de las órdenes limitadas de venta en el ask de la horquilla. (Sin contar las icebergs). Y a la espera de ser filled. Estos datos no se suelen usar salvo que quieres comprobar que hay liquidez suficiente en la horquilla.
Lo que se usa es el BidPrice y el AskPrice (precios de la horquilla) para hacer las comparaciones que ya mencioné.
Los volúmenes de las órdenes a mercado se cruzan con los volúmenes de la horquilla y originan los prints de la cinta (son las barras de 1-tick que verías en ninja en un chart de 1-tick). El volumen tradeado es el volumen de órdenes a mercado que se ha cruzado con el volumen de órdenes limitadas, y que será el mismo por ambas partes. Eso es lo que se contabiliza y lo que muestran todos los indicadores de OrderFlow. Cuanto mayor volumen de compras, mayor será el acumulado del Ask. Y cuantas más ventas, mayor el volumen acumulado en el Bid. Si la barra es alcista lo normal es que el Ask > Bid y la Delta positiva. Y al revés, si la barra es bajista la Delta será negativa. Pero esto no siempre pasa y da lugar a divergencias, y a partir de ahí se pueden sacar sistemas. Las divergencias delta es de lo primero que se analiza en OF.
Guille escribió: 15 Mar 2020 10:31
lo malo es que en tradestation no tiene datos históricos de profundidad de mercado y eso es un problema
Saludos
El DOM no lo necesitas para los cálculos bid/ask; sólo la cinta. Pero si conviene tener histórico de la cinta, o al menos un replayer de la sesión, para procesar datos offline.
Guille escribió: 15 Mar 2020 10:34
¿alguien sabe donde puedo encontrar información sobre todo esto del funcionamiento de la profundidad de mercado en castellano?
En su día visitaba el blog de marketdelta y me leí su manual. No sé si seguirá existiendo, pero habían buenos pdfs. Y por aquél entonces era lo único que existía. Ahora hasta tienes código abierto en el foro de ninja, etc para poder ver cómo se codifica el OnMarketData (método que va recibiendo todos los prints de la cinta) e ir aprendiendo.
La siguiente aplicación no la conozco más que de oídas, pero tiene un paper muy bueno sobre órdenes icebergs, supongo que también tendrá información más básica sobre la cinta.
https://bookmap.com/wiki/Main_Page
S2