Iscriviti ora
ProBacktest/probacktest · proorder

TRADEPRICE

TRADEPRICE in ProBacktest e ProOrder restituisce il prezzo di esecuzione di un'operazione passata. TRADEPRICE(1) è la più recente. Sintassi, esempi e insidie trattati.

Sintassi

probuilder
TRADEPRICE
probuilder
TRADEPRICE(N)

Parametri

NomeTipoPredefinitoDescrizione
Nintero1Indice dell'ordine, contato all'indietro dall'esecuzione più recente. TRADEPRICE(1) è l'ordine più recente, TRADEPRICE(2) quello precedente.

Come funziona

Ogni ordine eseguito in una strategia, ingressi e uscite allo stesso modo, viene registrato con il suo prezzo di esecuzione. TRADEPRICE legge quella storia: senza argomento o con N = 1 restituisce il prezzo di esecuzione più recente, e valori più alti di N passo più indietro.

L'uso più comune è misurare quanto il prezzo si è mosso dall'ingresso, per esempio close - tradeprice >= 15 * pointsize come innesco per stringere uno stop. Nelle strategie di piramidazione con CumulateOrders, TRADEPRICE(1) segna l'ultima aggiunta, così i nuovi ingressi possono essere distanziati di una distanza minima da essa. TRADEINDEX è la funzione complementare che restituisce l'indice di barra dello stesso ordine.

TRADEPRICE indicizza i singoli ordini, non la posizione aggregata. Quando più ingressi sono stati cumulati in una sola posizione, ciascuno conserva il proprio prezzo di operazione, mentre POSITIONPRICE restituisce il prezzo medio ponderato della posizione aperta.

Esempi

Esempio 1, Piramidazione con distanza e spaziatura in barre (ProBacktest)

probuilder
myMACD = MACD[12,26,9](close)
long = myMACD crosses over 0
exit = myMACD crosses under 0

// Initial entry on the MACD signal
IF NOT LongOnMarket AND long THEN
    BUY 1 CONTRACTS AT MARKET
ENDIF

If LongOnMarket AND exit THEN
    SELL AT MARKET
ENDIF

// Add a contract once price is 10 points above the last fill
// and at least 5 bars have passed since it
IF BARINDEX - TRADEINDEX(1) > 5 AND Close - TRADEPRICE(1) > 10 AND LongOnMarket THEN
    BUY 1 CONTRACTS AT MARKET
ENDIF

// Trail the whole position
SET STOP %TRAILING 1.5

TRADEPRICE(1) e TRADEINDEX(1) distanziano gli ingressi aggiuntivi per prezzo e per tempo. Questo è l'esempio tratto dal riferimento ufficiale.

Esempio 2, Spostamento a breakeven misurato dall'ingresso (ProOrder)

probuilder
// Move the stop to entry after 20 points of open profit
IF longonmarket THEN
  IF close - tradeprice >= 20 * pointsize THEN
    SET STOP BREAKEVEN
  ENDIF
ENDIF

La forma senza argomenti si riferisce all'ultima esecuzione, qui l'ingresso long, quindi il confronto misura il profitto aperto in punti rispetto al prezzo di esecuzione.

Esempio 3, Uscita d'emergenza percentuale dall'ultima esecuzione (ProOrder)

probuilder
// Close the long if price drops 2 percent below the last entry
IF longonmarket AND close < TRADEPRICE(1) * 0.98 THEN
  SELL AT MARKET
ENDIF

Esprimere l'uscita come percentuale del prezzo di ingresso registrato mantiene la regola trasferibile tra strumenti con valori del punto diversi.

Errori e insidie comuni

  • Ordini, non posizioni. N conta le singole esecuzioni, comprese le uscite. Dopo la chiusura di una posizione, TRADEPRICE(1) si riferisce all'esecuzione di uscita, non al vecchio ingresso. Per il prezzo medio della posizione attualmente aperta, usa POSITIONPRICE.
  • Chiamate non protette prima di qualsiasi operazione. All'inizio di un backtest, prima della prima esecuzione, non c'è storico delle operazioni da leggere. Racchiudi la logica con TRADEPRICE in una protezione ONMARKET o LONGONMARKET, così viene eseguita solo con una posizione effettiva alle spalle.
  • Gli ingressi cumulati divergono dalla media. Sotto CumulateOrders, close - tradeprice misura la distanza dall'ultima aggiunta, mentre il profitto è determinato dalla media di posizione. Mescolare i due produce stop che appaiono più stretti o più larghi del previsto.
  • Esecuzioni in backtest rispetto a esecuzioni live. ProBacktest registra prezzi di esecuzione idealizzati. Le esecuzioni live di ProOrder includono lo slippage, quindi soglie di distanza calibrate al tick possono comportarsi diversamente in produzione.
  • TRADEINDEX, l'indice di barra di un'operazione passata, con la stessa indicizzazione di TRADEPRICE.
  • POSITIONPRICE, il prezzo medio ponderato della posizione aperta.
  • POSITIONPERF, la performance della posizione aperta.
  • LONGONMARKET, vero mentre una posizione long è aperta.
  • ONMARKET, vero mentre una qualsiasi posizione è aperta.
  • BREAKEVEN, sposta lo stop o il target al prezzo di ingresso.
  • %TRAILING, trailing stop in percentuale.
  • CumulateOrders, permette a più ingressi di sommarsi in una sola posizione.