Iscriviti ora
ProBacktest/probacktest · proorder

CONTRACT

CONTRACT è un'unità di quantità di ProBacktest e ProOrder che imposta la dimensione dell'ordine in contratti, come in BUY 5 CONTRACTS AT MARKET, interscambiabile con SHARES o LOT.

Sintassi

probuilder
x CONTRACT

Usato all'interno di un'istruzione di ordine:

probuilder
BUY 5 CONTRACTS AT MARKET

Parametri

NomeTipoPredefinitoDescrizione
xnumerico1 all'ingresso, posizione intera all'uscitaNumero di contratti per l'ordine. Accetta valori letterali o espressioni numeriche.

Come funziona

CONTRACT dichiara quanti contratti negozia un ordine. Non porta con sé alcuna direzione: BUY 5 CONTRACTS AT MARKET apre o incrementa un long, SELLSHORT 5 CONTRACTS AT MARKET apre o incrementa uno short, e SELL 2 CONTRACTS AT MARKET riduce una posizione long di due contratti.

La parola chiave è una delle diverse parole intercambiabili per le unità. SHARE, CONTRACTS, PERPOINT, LOT e LOTS sono accettati nella stessa posizione su qualsiasi tipo di strumento, e la grafia singolare o plurale non fa differenza funzionale. Sul Forex la quantità indicata viene moltiplicata per la dimensione di un lotto.

Quando non è indicata una quantità, si applicano i valori predefiniti. Un ordine di ingresso come BUY AT MARKET opera su un'unità. Un ordine di uscita come SELL AT MARKET o EXITSHORT AT MARKET chiude l'intera posizione aperta, qualunque sia la sua dimensione.

La quantità può essere una variabile, ed è così che le regole di position size, per esempio un numero di contratti derivato dalla volatilità o dall'equity del conto, vengono collegate al flusso degli ordini.

Esempi

Esempio 1, Ingresso fisso di cinque contratti (ProBacktest)

probuilder
long = close crosses over Average[50](close)
IF NOT LongOnMarket AND long THEN
    // Order size fixed at five contracts
    BUY 5 CONTRACTS AT MARKET
ENDIF
SET STOP PLOSS 40

L'incrocio delle medie mobili attiva un ingresso long di esattamente cinque contratti, la dimensione indicata dall'unità CONTRACT.

Esempio 2, Numero di contratti scalato sulla volatilità (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

// Fewer contracts when the market is volatile
atr = AverageTrueRange[14](close)
n = MAX(1, ROUND(200 / atr))

IF NOT OnMarket AND RSI[14](close) crosses over 50 THEN
    BUY n CONTRACT AT MARKET
ENDIF
SET STOP %LOSS 2

Il numero di contratti è una variabile ricalcolata a ogni bar: un mercato calmo permette più contratti, uno volatile meno, con un minimo di uno.

Esempio 3, Uscita parziale in contratti (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

IF NOT OnMarket AND close crosses over Highest[20](high)[1] THEN
    BUY 4 CONTRACTS AT MARKET
ENDIF

// Bank half the position after a favorable move, keep the rest running
IF LongOnMarket AND close >= TRADEPRICE * 1.02 THEN
    SELL 2 CONTRACTS AT MARKET
ENDIF
SET STOP %TRAILING 1.5

Indicare una quantità sull'ordine di uscita chiude solo quel numero di contratti, qui due dei quattro, mentre il resto resta aperto sotto il trailing stop.

Errori e insidie comuni

  • CONTRACT imposta la dimensione, non la direzione. La parola chiave non apre né chiude nulla da sola. L'istruzione circostante, BUY, SELL, SELLSHORT o EXITSHORT, decide la direzione dell'operazione.
  • Moltiplicazione dei lotti forex. Sugli strumenti Forex la quantità è moltiplicata per la dimensione del lotto, quindi BUY 1 CONTRACT opera un lotto intero, non un'unità di valuta. Controlla la definizione del lotto dello strumento prima di dimensionare.
  • Le quantità non indicate ricadono sui valori predefiniti. BUY AT MARKET negozia silenziosamente un'unità e SELL AT MARKET chiude l'intera posizione. Un numero mancante non è un errore, quindi un errore di battitura che elimina la quantità cambia la position size senza avvisare.
  • I conteggi frazionari vengono arrotondati. Un'espressione calcolata come capital / price raramente dà un numero intero. Racchiudi le formule di sizing in ROUND, oppure aggiungi un limite minimo esplicito, per mantenere intenzionale la quantità richiesta.
  • CASH, quantità dell'ordine come importo in denaro.
  • LOT, quantità dell'ordine in lotti.
  • SHARES, quantità dell'ordine come numero di azioni.
  • BUY, apre o incrementa una posizione long.
  • SELL, chiude o riduce una posizione long.
  • SELLSHORT, apre o incrementa una posizione short.
  • EXITSHORT, chiude o riduce una posizione short.
  • MARKET, esecuzione immediata al prezzo corrente.
  • COUNTOFPOSITION, dimensione della posizione aperta in unità.