Únete hoy
ProBacktest/probacktest · proorder

SET

SET in ProBacktest and ProOrder introduces order management commands such as SET TARGET PROFIT and SET STOP LOSS. Variants, syntax, and errors explained.

Sintaxis

probuilder
SET TARGET PROFIT value
SET STOP LOSS value

Parámetros

NombreTipoPor defectoDescripción
valuenúmeroningunoDistancia desde el precio de entrada a la que se activa la salida, en la unidad implícita en la palabra clave que sigue a STOP o TARGET. Acepta literales, variables y expresiones.

Cómo funciona

SET introduces the two families of exit declarations. SET STOP define dónde se cierra la posición con pérdidas, y SET TARGET define dónde se cierra con beneficio. Cada familia acepta varias palabras clave de unidad: LOSS y PROFIT miden la distancia en unidades de precio, PLOSS y PPROFIT en puntos, %LOSS y %PROFIT en porcentaje, y $LOSS y $PROFIT en la divisa de la cuenta. Más allá de las distancias fijas, SET STOP también acepta las variantes de trailing TRAILING, PTRAILING, %TRAILING y $TRAILING, y ambos lados aceptan BREAKEVEN.

Una declaración SET es persistente. Se aplica a la posición abierta actualmente y a todas las posiciones abiertas después, hasta que otra llamada a SET en el mismo lado la reemplace. Hay exactamente dos ranuras, una del lado del stop y otra del lado del objetivo; dentro de una ranura gana la llamada más reciente. Escrita sin condiciones al final del código, una declaración actúa como un bracket permanente sobre todas las operaciones. Escrita dentro de bloques IF, ajusta la salida a medida que la operación evoluciona, que es la forma de expresar la lógica de breakeven y de asegurar beneficios.

Los valores son distancias desde el precio de entrada, no niveles de precio absolutos. En una posición long la distancia del stop se extiende por debajo de la entrada y la distancia del objetivo por encima; una posición short invierte ambas.

Ejemplos

Ejemplo 1, Bracket permanente en cada operación (ProBacktest)

probuilder
// Standing exit bracket, applies to each position the strategy opens
SET TARGET PROFIT 120
SET STOP LOSS 100

Cada operación lleva un take profit a 120 unidades de precio de la entrada y un stop a 100 unidades de la entrada. Este es el ejemplo de la referencia oficial.

Ejemplo 2, Bracket basado en porcentaje (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

IF NOT onmarket AND close CROSSES OVER Average[50](close) THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

// Exit at plus 2 percent or minus 1 percent from entry
SET TARGET %PROFIT 2
SET STOP %LOSS 1

Las variantes porcentuales mantienen el bracket proporcional al precio del instrumento, lo que hace que el mismo código sea reutilizable en mercados con precios distintos.

Ejemplo 3, Ajustar el stop a medida que la operación avanza (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

IF NOT onmarket AND close CROSSES OVER highest[20](high)[1] THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

// Initial stop, replaced by a tighter trailing stop once in profit
IF onmarket AND close - tradeprice < 20 * pointsize THEN
  SET STOP PLOSS 20
ELSIF onmarket THEN
  SET STOP PTRAILING 10
ENDIF

La ranura del stop se reescribe en cada bar, un stop fijo de 20 puntos al principio de la operación y luego un trailing stop de 10 puntos una vez que la posición acumula 20 puntos de beneficio. La última llamada a SET en el lado del stop es siempre la activa.

Errores y trampas habituales

  • SET is not assignment. Las variables se asignan con =, como en a = 10. SET solo precede a palabras clave de gestión de órdenes; SET a 10 no compila, y STOP LOSS 100 sin SET tampoco compila.
  • Distancias, no niveles de precio. SET STOP LOSS 100 coloca el stop a 100 unidades de precio de la entrada, no en el precio 100. Los niveles absolutos deben convertirse primero en una distancia desde TRADEPRICE.
  • Una ranura por lado, gana la última llamada. Dos SET STOP líneas que se ejecutan ambas en el mismo bar dejan activa solo la segunda. Los bloques IF solapados son la causa habitual de un stop que, sin avisar, es distinto del que se pretendía.
  • Las declaraciones sobreviven a la operación. Una llamada a SET sigue aplicándose a las posiciones futuras hasta que se reemplaza. Un ajuste condicional que se activa tarde en una operación se traslada al bar de entrada de la siguiente operación, salvo que el código reinicie el bracket cuando no hay posición.
  • STOP, el lado stop-loss de la instrucción SET.
  • TARGET, el lado del take profit de la instrucción SET.
  • BREAKEVEN, mueve el stop o el objetivo al precio de entrada.
  • TRAILING, distancia del trailing stop en unidades de precio.
  • PTRAILING, distancia del trailing stop en puntos.
  • Set Stop Profit, orden stop colocada a una distancia de beneficio desde la entrada.
  • Set Target Loss, orden de objetivo colocada a una distancia de pérdida desde la entrada.
  • PROFIT, distancia del take-profit en unidades de precio.
  • LOSS, distancia del stop loss en unidades de precio.
  • PPROFIT, distancia del take profit en puntos.
  • PLOSS, distancia del stop-loss en puntos.