Gestión cambio de posición

Esta semana vamos a tratar de resolver una cuestión que se está convirtiendo en común entre nuestros usuarios iniciados en el mundillo de la programación en la Plataforma Visual: Cómo podemos hacer para detectar el momento en el que se produce un cambio de posición en nuestro sistema. Es decir, en qué barra el sistema pasa de estar comprado a vendido o viceversa

Para nuestro propósito, vamos a partir de un ejemplo concreto: Supongamos que queremos añadir un Stop dinámico a nuestro sistema. Para ello, creamos una variable llamada PrecioSD la cual vamos variando conforme se desplaza el activo a favor de la posición abierta. No obstante, necesitamos que cada vez que se inicie un nuevo negocio, la variable se reinicie y empiece a contar desde 0.

Vamos a plantear dos posibles soluciones para resolver esta situación:

Solución 1. Añadir la función GetBarsSinceEntry

La función GetBarsSinceEntry nos informa de cuantas barras hay desde la barra donde se inició la última posición abierta (en caso de haberla) hasta la barra actual. Por tanto, podemos usar esta función para localizar la barra de inicio, que será cuando el valor devuelto por dicha función marque cero (es decir, la barra actual coincide con la barra de inicio de negocio).

Lo primero que hacemos es añadir al sistema la función.


Y posteriormente comprobamos, por un lado, si su valor es cero, y por otro, si el sistema en ese momento está dentro de mercado:




Solución 2. Añadir variable UltimoGMP

La segunda opción que proponemos consiste en añadir una variable a la que llamaremos UltimoGMP

Dicha variable va a recoger el valor devuelto por la función GetMarketPosition en cada barra.

Al inicio del cálculo de una nueva barra, comparamos el valor guardado en dicha variable con el valor actual de la función: Si el resultado es distinto, sabemos que estamos justo en la barra donde se ha generado un nuevo negocio, siempre y cuando, obviamente, el valor de la función no sea cero.

Seguidamente, actualizamos la variable con el valor actual de la función GetMarketPosition.


Este control funciona debido a que, una vez que el negocio lleva abierto varias barras, el valor de la variable UltimoGMP coincidirá con el valor devuelto por la función GetMarketPosition, de ahí que en esos casos la variable PrecioSD no se reinicie a cero.

Esta segunda opción, además, no sólo resuelve igualmente el problema, sino que además nos aporta un dato extra que no tenemos con la primera solución: Obtener la posición de la operación que acaba de cerrarse, lo cual nos puede servir para otro tipo de consultas, tales como gestión monetaria, control de número de operaciones cerradas, etcétera...

Comentarios

Entradas populares de este blog

Como consultar el GAP % de un conjunto de valores

Bollinger Volatility Oscillator N

MANEJO DE PLANTILLAS. Eliminar plantilla de un gráfico activa