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
TRADEPRICETRADEPRICE(N)Parametri
| Nome | Tipo | Predefinito | Descrizione |
|---|---|---|---|
N | intero | 1 | Indice 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)
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.5TRADEPRICE(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)
// Move the stop to entry after 20 points of open profit
IF longonmarket THEN
IF close - tradeprice >= 20 * pointsize THEN
SET STOP BREAKEVEN
ENDIF
ENDIFLa 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)
// Close the long if price drops 2 percent below the last entry
IF longonmarket AND close < TRADEPRICE(1) * 0.98 THEN
SELL AT MARKET
ENDIFEsprimere 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.
Nconta 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 - tradepricemisura 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.
Istruzioni correlate
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.