Iscriviti ora
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.

Sintassi

probuilder
SET TARGET PROFIT value
SET STOP LOSS value

Parametri

NomeTipoPredefinitoDescrizione
valuenumeronessunoDistanza dal prezzo di ingresso alla quale si attiva l'uscita, nell'unità implicata dalla parola chiave che segue STOP o TARGET. Accetta valori letterali, variabili ed espressioni.

Come funziona

SET introduces the two families of exit declarations. SET STOP definisce dove la posizione si chiude in perdita, e SET TARGET definisce dove si chiude in profitto. Ogni famiglia accetta diverse parole chiave di unità: LOSS e PROFIT misurano la distanza in unità di prezzo, PLOSS e PPROFIT in punti, %LOSS e %PROFIT in percentuale, $LOSS e $PROFIT nella valuta del conto. Oltre alle distanze fisse, SET STOP accetta anche le varianti trailing TRAILING, PTRAILING, %TRAILING e $TRAILING, ed entrambi i lati accettano BREAKEVEN.

Una dichiarazione SET è persistente. Si applica alla posizione attualmente aperta e a ogni posizione aperta successivamente, finché un'altra chiamata SET sullo stesso lato non la sostituisce. Esistono esattamente due slot, uno sul lato stop e uno sul lato target; all'interno di uno slot vince la chiamata più recente. Scritta senza condizioni alla fine del codice, una dichiarazione funziona come bracket permanente su tutte le operazioni. Scritta dentro blocchi IF, adatta l'uscita mentre l'operazione si sviluppa, ed è così che si esprime la logica di breakeven e di protezione del profitto.

I valori sono distanze dal prezzo di ingresso, non livelli di prezzo assoluti. Per una posizione long la distanza dello stop si estende sotto l'ingresso e la distanza del target sopra; una posizione short rispecchia entrambe.

Esempi

Esempio 1, Bracket permanente su ogni operazione (ProBacktest)

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

Ogni operazione ha un take profit a 120 unità di prezzo dall'ingresso e uno stop a 100 unità dall'ingresso. Questo è l'esempio del riferimento ufficiale.

Esempio 2, Bracket basato su percentuale (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

Le varianti percentuali mantengono il bracket proporzionale al prezzo dello strumento, il che rende lo stesso codice riutilizzabile su mercati con prezzi diversi.

Esempio 3, Restringere lo stop mentre l'operazione lavora (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

Lo slot dello stop viene riscritto a ogni bar, uno stop fisso di 20 punti all'inizio dell'operazione, poi un trailing stop di 10 punti quando la posizione è in profitto di 20 punti. L'ultima chiamata SET sul lato stop è sempre quella attiva.

Errori e insidie comuni

  • SET is not assignment. Le variabili vengono assegnate con =, come in a = 10. SET precede solo le parole chiave di gestione degli ordini; SET a 10 non compila, e STOP LOSS 100 senza SET non compila nemmeno.
  • Distanze, non livelli di prezzo. SET STOP LOSS 100 piazza lo stop a 100 unità di prezzo dall'ingresso, non al prezzo 100. I livelli assoluti devono prima essere convertiti in una distanza da TRADEPRICE.
  • Uno slot per lato, vince l'ultima chiamata. Due SET STOP righe che vengono eseguite entrambe sulla stessa barra lasciano attiva solo la seconda. I blocchi IF sovrapposti sono la fonte abituale di uno stop che silenziosamente differisce da quanto previsto.
  • Le dichiarazioni sopravvivono all'operazione. Una chiamata SET continua ad applicarsi alle posizioni future finché non viene sostituita. Un restringimento condizionale che scatta tardi in un'operazione si trasferisce al bar di ingresso dell'operazione successiva, a meno che il codice non reimposti il bracket quando non vi sono posizioni aperte.
  • STOP, il lato stop loss dell'istruzione SET.
  • TARGET, il lato take profit dell'istruzione SET.
  • BREAKEVEN, sposta lo stop o il target al prezzo di ingresso.
  • TRAILING, distanza del trailing stop in unità di prezzo.
  • PTRAILING, distanza del trailing stop in punti.
  • Set Stop Profit, ordine stop collocato a una distanza di profitto dall'ingresso.
  • Set Target Loss, ordine target collocato a una distanza di perdita dall'ingresso.
  • PROFIT, distanza di take profit in unità di prezzo.
  • LOSS, distanza dello stop loss in unità di prezzo.
  • PPROFIT, distanza del take profit in punti.
  • PLOSS, distanza di stop loss in punti.