Bli medlem idag
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.

Syntax

probuilder
SET TARGET PROFIT value
SET STOP LOSS value

Parametrar

NamnTypStandardBeskrivning
valuetalingenAvstånd från entrypriset där exiten utlöses, i den enhet som anges av nyckelordet efter STOP eller TARGET. Godtar literaler, variabler och uttryck.

Så fungerar det

SET introduces the two families of exit declarations. SET STOP definierar var positionen stängs med förlust, och SET TARGET definierar var den stängs med vinst. Varje familj accepterar flera enhetsnyckelord: LOSS och PROFIT mäter avståndet i prisenheter, PLOSS och PPROFIT i punkter, %LOSS och %PROFIT i procent, $LOSS och $PROFIT i kontovaluta. Utöver fasta avstånd, SET STOP accepterar även de trailing-varianterna TRAILING, PTRAILING, %TRAILING och $TRAILING, och båda sidor accepterar BREAKEVEN.

En SET-deklaration är bestående. Den gäller den position som är öppen nu och varje position som öppnas därefter, till dess att ett annat SET-anrop på samma sida ersätter den. Det finns exakt två platser, en på stop-sidan och en på target-sidan; inom en plats vinner det senaste anropet. Skriven utan villkor i slutet av koden fungerar en deklaration som en permanent bracket på alla affärer. Skriven inne i IF-block justerar den exiten medan affären utvecklas, och det är så logik för breakeven och vinstlåsning uttrycks.

Värdena är avstånd från entrypriset, inte absoluta prisnivåer. För en long-position sträcker sig stoppavståndet under entryn och targetavståndet över den; en short-position speglar båda.

Exempel

Exempel 1, Permanent bracket på varje affär (ProBacktest)

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

Varje affär har en take profit 120 prisenheter från entry och en stop 100 enheter från entry. Detta är exemplet från den officiella referensen.

Exempel 2, Procentbaserad bracket (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

Procentvarianterna håller bracketen proportionell mot instrumentets pris, vilket gör att samma kod kan återanvändas på marknader med olika prisnivåer.

Exempel 3, Dra åt stoppen medan affären går (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

Stop-platsen skrivs om varje bar, en fast stop på 20 punkter tidigt i affären, därefter en trailing stop på 10 punkter när positionen ligger 20 punkter i vinst. Det senaste SET-anropet på stop-sidan är alltid det aktiva.

Vanliga fel och fallgropar

  • SET is not assignment. Variabler tilldelas med =, som i a = 10. SET föregår endast nyckelord för orderhantering; SET a 10 kompilerar inte, och STOP LOSS 100 utan SET kompilerar inte heller.
  • Avstånd, inte prisnivåer. SET STOP LOSS 100 lägger stoppen 100 prisenheter från entry, inte vid priset 100. Absoluta nivåer måste först omvandlas till ett avstånd från TRADEPRICE.
  • En plats per sida, det sista anropet vinner. Två SET STOP rader som båda exekveras på samma bar lämnar bara den andra aktiv. Överlappande IF-block är den vanliga källan till ett stop som i tysthet skiljer sig från det som var avsett.
  • Deklarationer lever längre än affären. Ett SET-anrop fortsätter att gälla för framtida positioner till det ersätts. En villkorad åtstramning som utlöses sent i en affär följer med till nästa affärs entrybar om inte koden återställer bracketen när den är utan position.
  • STOP, stop loss-sidan av SET-instruktionen.
  • TARGET, take profit-sidan av SET-instruktionen.
  • BREAKEVEN, flyttar stoppen eller målet till entrypriset.
  • TRAILING, trailing stop-avstånd i prisenheter.
  • PTRAILING, trailing stop-avstånd i punkter.
  • Set Stop Profit, stoporder placerad på ett vinstavstånd från entryn.
  • Set Target Loss, targetorder placerad på ett förlustavstånd från entry.
  • PROFIT, take profit-avstånd i prisenheter.
  • LOSS, stop loss-avstånd i prisenheter.
  • PPROFIT, take profit-avstånd i punkter.
  • PLOSS, stop loss-avstånd i punkter.