Únete hoy
ProBacktest/probacktest · proorder

POSITIONPERF

POSITIONPERF devuelve el rendimiento porcentual de una posición abierta o cerrada en ProBacktest y ProOrder. PositionPerf(0) lee la operación abierta actual.

Sintaxis

probuilder
PositionPerf(N)

Parámetros

NombreTipoPor defectoDescripción
Nentero0Índice de posición. 0 lee la posición abierta actualmente. Un valor mayor que 0 lee la N-ésima posición cerrada más reciente, así que 1 es la última operación cerrada.

Cómo funciona

POSITIONPERF mide el rendimiento de una sola posición, expresado como la relación entre su ganancia o pérdida y su coste. Un valor de 0.05 corresponde a una ganancia del 5 por ciento y -0.02 a una pérdida del 2 por ciento, así que multiplica por 100 cuando se necesite mostrar una cifra en porcentaje.

El argumento de índice selecciona qué posición evaluar. Con N = 0, o con el argumento omitido, la función informa del rendimiento actual de la posición que está abierta. Con N > 0 recorre hacia atrás las operaciones cerradas, PositionPerf(1) siendo la salida más reciente, PositionPerf(2) la anterior a esa, y así sucesivamente. Eso lo convierte en la pieza natural para la lógica operación por operación, como las rachas de pérdidas o los filtros de rendimiento.

El cálculo es bruto. Las comisiones de corretaje, los spreads modelados como costes y la financiación no se deducen, por lo que los resultados netos en real son inferiores a los valores brutos. Para el resultado acumulado en efectivo de toda la estrategia, usa STRATEGYPROFIT en su lugar; POSITIONPERF siempre describe una posición a la vez.

Ejemplos

Ejemplo 1, leer la última operación cerrada (ProBacktest)

probuilder
// Gain-to-cost ratio of the most recently closed position
positionPerformance = PositionPerf(1)
GRAPH positionPerformance * 100 AS "Last trade performance in percent"

Recupera el rendimiento de la última operación completada y lo representa como porcentaje. Este es el ejemplo de referencia de la documentación original con una línea de visualización añadida.

Ejemplo 2, salida de emergencia por drawdown de la operación abierta (ProOrder)

probuilder
// Close a long when the open position loses more than 2 percent
IF longonmarket AND positionperf(0) < -0.02 THEN
  SELL AT MARKET
ENDIF

La posición abierta se supervisa bar por bar y se abandona en cuanto su rendimiento acumulado cae por debajo de -0.02, una salida de seguridad basada en porcentaje que funciona de forma independiente de cualquier stop basado en puntos.

Ejemplo 3, reducir el tamaño tras dos operaciones perdedoras consecutivas (ProOrder)

probuilder
// Halve exposure after two losing trades in a row
baseSize = 4
IF positionperf(1) < 0 AND positionperf(2) < 0 THEN
  tradeSize = max(1, baseSize / 2)
ELSE
  tradeSize = baseSize
ENDIF

IF NOT onmarket AND close CROSSES OVER average[50](close) THEN
  BUY tradeSize CONTRACTS AT MARKET
ENDIF

Las dos operaciones cerradas más recientes se examinan antes de cada entrada. Tras dos pérdidas consecutivas la estrategia opera con la mitad del tamaño hasta que una operación cierre en positivo.

Errores y trampas habituales

  • Relación, no porcentaje. La función devuelve un ratio, por lo que una ganancia del 3 por ciento se lee como 0.03. Compararla con números enteros como positionperf(0) > 3 casi nunca se activa. Multiplica por 100 solo para mostrarlo.
  • Antes de costes. Las tarifas y las comisiones no se incluyen, por lo que una operación que parece ligeramente positiva puede ser una pérdida neta en real. Los umbrales cercanos a cero son los más afectados.
  • No hay posición abierta. Sin nada en mercado, la lectura del índice 0 no tiene sentido para la lógica de decisión. Protege las lecturas de positionperf(0) con ONMARKET, LONGONMARKET, o SHORTONMARKET.
  • Alcance por posición. POSITIONPERF nunca agrega. Sumar resultados a nivel de cuenta recorriendo índices en un bucle es frágil; STRATEGYPROFIT ya proporciona la cifra acumulada en efectivo.
  • STRATEGYPROFIT, beneficio realizado acumulado de la estrategia en efectivo.
  • POSITIONPRICE, el precio medio de entrada de la posición abierta.
  • TRADEPRICE, el precio de entrada de las órdenes individuales.
  • TRADEINDEX, el índice de bar en el que se ejecutó una orden.
  • COUNTOFPOSITION, el tamaño con signo de la posición abierta.
  • ONMARKET, verdadero mientras hay alguna posición abierta.
  • LONGONMARKET, verdadero mientras hay una posición long abierta.
  • SELL, cierra una posición long.