Iscriviti ora
ProBacktest/probacktest · proorder

MARKET

MARKET in ProBacktest e ProOrder esegue gli ordini BUY e SELL al prezzo di mercato corrente. Gli ordini vengono eseguiti all'apertura del bar successivo senza limite di prezzo.

Sintassi

probuilder
BUY quantity SHARES AT MARKET
SELL quantity SHARES AT MARKET

Come funziona

Ogni istruzione di ordine termina con un tipo di ordine. AT MARKET significa che l'ordine non porta alcuna condizione di prezzo: viene eseguito al prezzo che il mercato offre nel momento dell'esecuzione. Le alternative, LIMIT e STOP, crea invece ordini pendenti che attendono un livello di prezzo specifico.

Poiché il codice della strategia viene eseguito una volta per bar alla chiusura, un ordine a mercato generato su un bar viene trasmesso ed eseguito all'apertura del bar successivo. ProBacktest modella questo eseguendo al prezzo di apertura del bar successivo. In ProOrder in tempo reale l'ordine raggiunge il broker in quel momento e viene eseguito al miglior prezzo disponibile, che può differire dal prezzo di apertura registrato in mercati rapidi o poco liquidi.

Un ordine a mercato scambia la certezza dell'esecuzione con l'incertezza del prezzo. È adatto ai segnali in cui essere dentro l'operazione conta più del livello esatto, come gli ingressi trend-following o le uscite forzate. Quando il livello di ingresso è esso stesso parte dell'edge, un ordine pendente LIMIT o STOP è l'ordine che esprime meglio tale intento.

AT MARKET si combina con tutti i verbi di ordine: BUY e SELLSHORT per aprire posizioni, SELL e EXITSHORT per chiuderle.

Esempi

Esempio 1, Acquisto immediato di dieci azioni (ProBacktest)

probuilder
// enter when price closes above the 50-bar average
IF NOT OnMarket AND close > Average[50](close) THEN
  BUY 10 SHARES AT MARKET
ENDIF

Quando non si è in posizione e la condizione è verificata alla chiusura del bar, viene inviato un ordine per dieci azioni che viene eseguito all'apertura del bar successivo al prezzo corrente.

Esempio 2, Uscita forzata da uno short a mercato (ProOrder)

probuilder
// cover the short as soon as momentum turns positive
exitSignal = RSI[14](close) crosses under 30

IF ShortOnMarket AND exitSignal THEN
  EXITSHORT AT MARKET
ENDIF

L'intera posizione short viene chiusa a mercato. Non è indicata alcuna quantità, quindi si applica il valore predefinito e tutta la posizione viene coperta.

Esempio 3, Incrocio di medie mobili in entrambe le direzioni (ProOrder)

probuilder
fastMA = Average[20](close)
slowMA = Average[50](close)

IF fastMA crosses over slowMA THEN
  IF ShortOnMarket THEN
    EXITSHORT AT MARKET
  ENDIF
  BUY 1 CONTRACT AT MARKET
ENDIF

IF fastMA crosses under slowMA THEN
  IF LongOnMarket THEN
    SELL AT MARKET
  ENDIF
  SELLSHORT 1 CONTRACT AT MARKET
ENDIF

Un sistema stop-and-reverse. Ogni incrocio chiude qualsiasi posizione opposta e ne apre una nuova, tutto con ordini a mercato, così la strategia è sempre posizionata con l'incrocio.

Errori e insidie comuni

  • Le esecuzioni avvengono all'apertura del bar successivo. La condizione viene valutata alla chiusura del bar, ma il prezzo di esecuzione è l'apertura del bar successivo. I calcoli di backtest che presuppongono l'ingresso alla chiusura del bar del segnale sovrastimano i risultati ogni volta che i bar presentano gap.
  • Nessuna garanzia di prezzo. Gli ordini a mercato garantiscono l'esecuzione, non il prezzo. Le esecuzioni in tempo reale possono slittare oltre il prezzo di apertura del backtest in condizioni volatili, quindi i risultati reali peggiorano rispetto a ProBacktest, che presuppone esecuzioni pulite.
  • SELL e EXITSHORT non sono interscambiabili. SELL AT MARKET chiude le posizioni long e EXITSHORT AT MARKET chiude le posizioni short. Usare il verbo sbagliato per il lato aperto lascia la posizione intatta.
  • MARKET non è un'istruzione autonoma. La parola chiave esiste solo come parte di un'istruzione di ordine dopo AT. Scrivere MARKET su una riga a sé non compila.
  • BUY, apre o incrementa una posizione long.
  • SELL, chiude parzialmente o totalmente una posizione long.
  • SELLSHORT, apre o incrementa una posizione short.
  • EXITSHORT, chiude parzialmente o totalmente una posizione short.
  • LIMIT, ordine pendente che viene eseguito a un prezzo stabilito o migliore.
  • STOP, ordine pendente che si attiva quando il prezzo raggiunge un livello.
  • ONMARKET, vero mentre una qualsiasi posizione è aperta.
  • LONGONMARKET, vero mentre una posizione long è aperta.
  • SHORTONMARKET, vero mentre una posizione short è aperta.