POSITIONPRICE
POSITIONPRICE devuelve el precio de entrada promedio de toda la posición abierta en ProBacktest y ProOrder, a diferencia de TRADEPRICE, que lee órdenes de entrada individuales.
Sintaxis
POSITIONPRICELos valores pasados están disponibles con un desplazamiento de índice, así que PositionPrice[1] lee el precio medio de la posición tal como estaba en la bar anterior.
Cómo funciona
POSITIONPRICE informa del precio promedio al que se construyó la posición abierta. Mientras la posición conste de una única orden de entrada, equivale al precio de ejecución de esa orden. En cuanto la estrategia añade contratos, mediante piramidación o promediando a la baja, el valor pasa a ser el promedio de todas las entradas abiertas ponderado por sus tamaños, y cada adición posterior lo vuelve a mover.
La distinción respecto a TRADEPRICE importa y es una fuente frecuente de errores. TRADEPRICE es a nivel de orden: TRADEPRICE(1) devuelve el precio de entrada de la orden individual más reciente, TRADEPRICE(2) el anterior. POSITIONPRICE opera a nivel de posición: un único número que resume toda la posición abierta. Ambos coinciden solo mientras hay exactamente una orden de entrada abierta. La lógica de salida que debe reaccionar al punto de equilibrio global de la posición corresponde a POSITIONPRICE; la lógica que reacciona a la última ejecución, como las reglas de separación entre entradas de promediado, corresponde a TRADEPRICE.
Las instrucciones que miden distancias desde la entrada, como SET STOP PLOSS, también están ancladas a esta media, así que entender cómo se desplaza la media cuando se añaden contratos es parte de predecir dónde acaban esos niveles.
Ejemplos
Ejemplo 1, Promediar a la baja y salir por encima del promedio (ProOrder)
// Unrealized profit of the whole position
floatingprofit = (((close - positionprice) * pointvalue) * countofposition) / pipsize
myMACD = MACD[12,26,9](close)
// Initial entry on a MACD zero-line cross
long = myMACD CROSSES OVER 0
IF NOT LongOnMarket AND long THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Add a contract if the last order is aged and price fell 20 points below it
IF TRADEINDEX(1) > 5 AND TRADEPRICE(1) - Close > 20 AND LongOnMarket THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Exit the averaged position once price recovers above its average entry
IF COUNTOFPOSITION >= 2 AND Close > POSITIONPRICE THEN
SELL AT MARKET
ENDIF
SET TARGET PROFIT 20La regla de promediado espacia las nuevas entradas usando TRADEPRICE a nivel de orden, mientras que la salida compara el mercado con POSITIONPRICE a nivel de posición, cerrando todo en cuanto la operación promediada vuelve a estar en positivo. Este es el ejemplo de referencia de la documentación original con los comentarios reescritos.
Ejemplo 2, Promedio de la posición frente al precio de la última orden (ProBacktest)
// Plot the two entry price references side by side
IF onmarket THEN
GRAPH positionprice AS "Average position price"
GRAPH tradeprice AS "Latest order entry price"
ENDIFMientras solo hay una orden abierta las dos líneas se superponen. Después de cada entrada adicional TRADEPRICE salta a la ejecución más reciente mientras POSITIONPRICE se mueve solo parcialmente, mostrando el promedio ponderado en acción.
Ejemplo 3, Stop a punto de equilibrio medido desde el promedio de la posición (ProOrder)
// Promote the stop to the average entry after a 15 point gain
IF longonmarket AND (close - positionprice) >= 15 * pointsize THEN
SET STOP BREAKEVEN
ENDIFLa condición de beneficio se mide desde POSITIONPRICE, por lo que después de promediar, el requisito de 15 puntos se aplica a toda la posición y no a la primera ejecución.
Errores y trampas habituales
- Confundirlo con TRADEPRICE. POSITIONPRICE es el promedio de toda la posición, TRADEPRICE el precio de una sola orden. Las reglas de salida escritas sobre TRADEPRICE se comportan de forma inesperada en cuanto la posición contiene más de una entrada, y viceversa.
- Leerlo estando fuera de mercado. Sin posición abierta el valor no contiene un precio de entrada significativo. Protege cualquier operación aritmética sobre POSITIONPRICE con
ONMARKET,LONGONMARKET, oSHORTONMARKETpara evitar comparar con un valor obsoleto o cero. - El promedio se mueve. Cada orden añadida desplaza POSITIONPRICE hacia la nueva ejecución. Los stops y las condiciones de beneficio ancladas a él también se mueven, lo que puede ampliar o reducir el riesgo de forma silenciosa después de piramidar.
- Los desplazamientos de índice leen el historial, no las órdenes.
PositionPrice[1]es la instantánea de la media de la bar anterior, no el precio de la orden anterior. El acceso orden por orden requiereTRADEPRICE(N).
Instrucciones relacionadas
TRADEPRICE, precio de entrada de una orden individual, el equivalente a nivel de orden.TRADEINDEX, el índice de bar en el que se ejecutó una orden.COUNTOFPOSITION, el tamaño con signo de la posición abierta.POSITIONPERF, rendimiento de una posición como relación entre ganancia y coste.POINTVALUE, el valor en efectivo de un movimiento de un punto.PIPSIZE, el tamaño de un pip en unidades de precio.ONMARKET, verdadero mientras hay alguna posición abierta.BREAKEVEN, mueve el stop o el objetivo al precio de entrada.