STRATEGYPROFIT
STRATEGYPROFIT devuelve el beneficio o la pérdida acumulados, en dinero, de todas las operaciones cerradas en una estrategia de ProBacktest o ProOrder. Las posiciones abiertas quedan excluidas.
Sintaxis
myCurrentProfit = STRATEGYPROFITCómo funciona
Cada vez que la estrategia cierra una operación, el resultado realizado de esa operación se suma a un total acumulado. STRATEGYPROFIT expone ese total en cada bar, expresado en dinero en lugar de en puntos o porcentaje. Un valor de 0 en los primeros bars simplemente significa que todavía no se ha cerrado ninguna operación.
Solo cuentan las operaciones cerradas. Una posición que sigue abierta, por mucho beneficio que acumule, no cambia el valor hasta que se cierra. Para leer el resultado no realizado de la posición actual, usa POSITIONPERF en su lugar. Las dos son complementarias: STRATEGYPROFIT describe el pasado, POSITIONPERF describe el presente.
La variable se usa habitualmente para lógica dependiente del equity, por ejemplo detener el sistema tras un umbral de drawdown, reducir el tamaño después de una racha de pérdidas, o cerrar la sesión una vez alcanzado un objetivo de beneficio. Cuando las posiciones se acumulan a lo largo de varios bars, establece DEFPARAM CumulateOrders = true de modo que el motor mantiene abierta la posición combinada y materializa el beneficio como espera la lógica.
Ejemplos
Ejemplo 1, Reducir posición al alcanzar un umbral de beneficio (ProBacktest)
DEFPARAM CumulateOrders = true // allow accumulated positions
myCurrentProfit = STRATEGYPROFIT
IF myCurrentProfit > 1000 THEN
SELL 100 SHARES AT MARKET
ENDIFUna vez que el beneficio realizado de todas las operaciones cerradas supera 1000 unidades monetarias, la estrategia vende 100 acciones a mercado. Este es el patrón de uso canónico de la referencia oficial.
Ejemplo 2, Stop de equity que detiene la estrategia (ProOrder)
// Stop the system permanently after 500 units of realized loss
IF STRATEGYPROFIT < -500 THEN
SELL AT MARKET
EXITSHORT AT MARKET
QUIT
ENDIFUna protección de preservación del capital. Cuando la pérdida realizada supera el límite, cualquier posición abierta se cierra y QUIT impide que la estrategia coloque más órdenes.
Ejemplo 3, Representar la curva de equity realizada (ProBacktest)
// Inspect the realized equity curve while backtesting
GRAPH STRATEGYPROFIT AS "Realized PnL"
IF NOT onmarket AND close > average[50](close) THEN
BUY 1 CONTRACT AT MARKET
SET STOP LOSS 30
SET TARGET PROFIT 60
ENDIFGRAPH dibuja el beneficio realizado acumulado debajo del gráfico del backtest, lo que permite ver con facilidad cuándo la estrategia ganó o devolvió dinero.
Errores y trampas habituales
- Las posiciones abiertas son invisibles.
STRATEGYPROFITsolo cambia cuando se cierra una operación. Una estrategia que lo consulta mientras hay una posición grande abierta ve información desactualizada. Combínalo conPOSITIONPERFcuando importa la operación actual. - Dinero, no puntos. El valor está denominado en la divisa de la cuenta, por lo que umbrales como
> 1000significa 1000 unidades monetarias, no 1000 puntos. El mismo umbral se comporta de forma muy distinta en instrumentos con valores de punto diferentes. - Los valores del backtest y en real difieren. En una ejecución en real de ProOrder el total se reinicia desde cero al lanzar la estrategia, no hereda el historial del backtest. Por eso las reglas basadas en equity se comportan de forma distinta justo después del despliegue.
- GRAPH is backtest only.
GRAPH STRATEGYPROFITfunciona en ProBacktest pero se ignora en la ejecución en vivo de ProOrder, por lo que los gráficos de diagnóstico desaparecen cuando el sistema opera en real.
Instrucciones relacionadas
POSITIONPERF, rendimiento no realizado de la posición actualmente abierta.PROFIT, configuración de take profit en porcentaje para una posición.LOSS, configuración de stop loss en porcentaje para una posición.CumulateOrders, DEFPARAM que controla si las órdenes se acumulan en una sola posición.GRAPH, representa un valor bajo el gráfico del backtest para inspeccionarlo.ONMARKET, verdadero mientras hay alguna posición abierta.TRADEPRICE, precio de entrada de la posición actual.COUNTOFPOSITION, tamaño de la posición actualmente abierta.