Iscriviti ora
ProBacktest/probacktest · proorder

BUY

BUY in ProBacktest e ProOrder apre una posizione long. Copre le unità di quantità, i tipi di ordine AT MARKET, LIMIT e STOP, oltre agli errori comuni di dimensionamento e di ingresso.

Sintassi

probuilder
BUY x SHARES AT MARKET
probuilder
BUY x CONTRACT AT price LIMIT
probuilder
BUY x CONTRACT AT price STOP

Parametri

NomeTipoPredefinitoDescrizione
xnumeroobbligatorioQuantità dell'ordine, interpretata attraverso l'unità che segue.
unitàSHARES, CONTRACT, LOT, CASHobbligatorioUnità di dimensionamento. CASH indica un importo nella valuta del conto invece di un numero di unità.
tipo di ordineAT MARKET, AT price LIMIT, AT price STOPobbligatorioEsecuzione immediata al prezzo corrente, oppure un ordine pendente a un livello indicato.

Come funziona

BUY inserisce un ordine di ingresso long. Con AT MARKET, l'ordine viene eseguito al prossimo prezzo disponibile. Con AT price LIMIT, un ordine pendente attende di acquistare al livello indicato o migliore, sotto il prezzo attuale. Con AT price STOP, un ordine pendente acquista quando il prezzo sale oltre il livello indicato, la forma consueta per gli ingressi in breakout.

L'unità di quantità deve corrispondere allo strumento: SHARES per le azioni, CONTRACT per futures e CFD, LOT per il forex, e CASH per dimensionare l'ordine come importo nella valuta del conto. L'accumulo di posizione è governato da CumulateOrders. Quando è attivo, come da impostazione predefinita, gli ordini BUY ripetuti si accumulano in una posizione più grande; con DEFPARAM CumulateOrders = false, un nuovo BUY mentre si è già long viene ignorato.

Gli ingressi sono normalmente racchiusi in un controllo dello stato della posizione come IF NOT LongOnMarket THEN o IF NOT OnMarket THEN, così gli ordini partono solo quando la strategia intende assumere una nuova posizione.

Esempi

Esempio 1, Ingresso a mercato condizionale (ProBacktest)

probuilder
// Enter long at market when flat and the entry conditions hold
IF NOT LongOnMarket AND LongConditions THEN
    BUY 1 SHARES AT MARKET
ENDIF

Viene acquistata un'azione al prezzo corrente di mercato, ma solo quando non è già aperta una posizione long. Questo è l'esempio della documentazione ufficiale.

Esempio 2, Ingresso in breakout con un ordine stop pendente (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

// Buy a break of the 20-bar high
entryLevel = Highest[20](high)

IF NOT onmarket THEN
  BUY 1 CONTRACT AT entryLevel STOP
ENDIF

L'ordine stop pendente resta sopra il mercato e viene eseguito solo se il prezzo sale oltre il massimo delle 20 bar precedenti.

Esempio 3, Ingresso dimensionato in valuta con un filtro di trend (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

// Size the position as 5000 units of account currency
IF NOT onmarket AND close > Average[50](close) THEN
  BUY 5000 CASH AT MARKET
ENDIF

// Exit when price loses the average
IF longonmarket AND close < Average[50](close) THEN
  SELL AT MARKET
ENDIF

CASH il sizing mantiene l'esposizione costante in termini di valuta su strumenti con prezzi diversi, invece di fissare un numero di unità.

Errori e insidie comuni

  • Piramidazione involontaria. CumulateOrders è abilitato per impostazione predefinita, quindi una condizione di ingresso che resta vera per diverse barre accumula un nuovo BUY su ognuna di esse. Imposta DEFPARAM CumulateOrders = false o proteggere l'ingresso con NOT LongOnMarket.
  • Gli ordini pendenti scadono dopo una bar. A LIMIT o STOP ordine che non viene eseguito sulla bar successiva viene annullato. Gli ingressi in attesa persistenti devono essere reinviati a ogni bar finché il setup resta valido.
  • Unità sbagliata per lo strumento. SHARES su una coppia forex o LOT su un'azione non dimensiona l'ordine come previsto. Adatta l'unità al mercato, oppure usa CASH per una dimensione espressa in valuta.
  • BUY come uscita da una short. Chiudere una posizione short è compito di EXITSHORT. Un BUY di dimensione maggiore della short aperta inverte la posizione invece di limitarsi a chiuderla, che raramente è il comportamento voluto.
  • SELL, chiude una posizione long.
  • SELLSHORT, apre una posizione short.
  • EXITSHORT, chiude una posizione short.
  • MARKET, esecuzione immediata al prezzo corrente.
  • LIMIT, ordine pendente a un prezzo indicato o migliore.
  • STOP, ordine pendente attivato quando il prezzo attraversa un livello.
  • CONTRACT, unità di quantità per futures e CFD.
  • SHARES, unità di quantità per le azioni.
  • LOT, unità di quantità per il forex.
  • CASH, dimensiona un ordine nella valuta del conto.
  • ONMARKET, vero mentre una qualsiasi posizione è aperta.
  • CumulateOrders, controlla se gli ingressi ripetuti si cumulano.