Chiarimento Trailing MFE
Forums › ProRealTime forum Italiano › Supporto ProOrder › Chiarimento Trailing MFE
- This topic has 11 replies, 2 voices, and was last updated 3 years ago by MauroPro.
-
-
02/25/2021 at 10:43 AM #162597
Un chiarimento sul trailing MFE. Mi “sembrava” che il funzionamento era questo (esempio long): una volta che il prezzo raggiunge il livello di attivazione viene inserito o dal close o dal massimo raggiunto (nel mio caso il massimo: MaxPrice=Max(MaxPrice,high) una certa percentuale\punti di ritracciamento.
Preferisco attivare il ritracciamento dal massimo raggiunto in quanto, a differenza del close, è un punto fisso indipendentemente dal timeframe utilizzato.
Una volta quindi che viene attivato da un massimo assoluto, il livello del trailing dovrebbe solo salire se vengono fatti nuovi massimi, invece ho notato che a volte viene abbassato in automatico e non capisco il motivo.
Posto la formula utilizzata ed una sequenza di immagini in cui si vede questo fatto: nella foto di sx ancora non è attivato il trailing. In quella centrale viene attivato e contemporaneamente cancellato lo stop loss e nell’ultima immagine a dx viene leggermente abbassato (STP da 19 punti a 18.90).
Ecco la formula:
123456789101112131415161718192021If not onmarket thenMaxPrice=0MinPrice=closepriceExit=0endifIf longonmarket thenMaxPrice=Max(MaxPrice,high)if MaxPrice-tradeprice(1)>trailingActivation*pointsize thenpriceExit=MaxPrice-trailingDelta*pointsizeendifendifif shortonmarket thenMinPrice=Min(MinPrice,low)if tradeprice(1)-MinPrice>trailingActivation*pointsize thenpriceExit=Minprice+trailingDelta*pointsizeendifendifif onmarket and priceExit>0 thensell at priceExit STOPexitshort at priceExit STOPendif02/25/2021 at 11:05 AM #162599Questi sono i parametri del trailing-stop-profit che si vedono nel grafico con l’operazione in tempo reale:
trailingActivation = (close * 0.7 / 100) / pointsize
trailingDelta = (close * 0.6 / 100) / pointsizeSet stop %loss 1
Set target %profit 1.202/25/2021 at 11:37 AM #162604Qual’è la tua richiesta?
Cosa dovrei vedere sulle foto?
Nel caso LONG tu usi HIGH per assegnare i valori massimi a MaxPrice. Tieni presente che la strategia viene eseguita alla chiusura della candela, quindi il prezzo può avere ritracciato anche parecchio. Hai messo appena lo 0.1% di differenza tra l’attivazione e lo stop (sul dax sono circa 14 pip). Se la chiusura (CLOSE) è scesa di 10-11 punti (rispetto ad HIGH), non ne rimangono abbastanza per i requisiti minimi di distanza dall’ordine pendente STOP, quindi può non essere eseguito alle righe 19-20, oppure la strategia può essere interrotta.
02/25/2021 at 11:56 AM #162605La domanda: una volta raggiunto il livello di attivazione (trailing activation) che si attiva quando il prezzo sale dello 0.7% e viene quindi inserito un trailing profit (trailing delta) dello 0.6% (poco sopra quindi del prezzo di entrata), MI ASPETTEREI che questo venga alzato ad ogni nuovo massimo raggiunto dal prezzo e mai più abbassato in ogni caso. Nella foto non accade questo: nella foto centrale (ora 17:30) il prezzo è 13172 ed il trailing profit a 13115.7. Nella foto di dx il prezzo è salito ancora a mio favore a 13201 (ora 17:52). ed il trailing profit è sceso a 13115.6. Come è possibile?
Il TS gira su un timeframe a 3 minuti (ho postato l’orario perchè sono più visibili i livelli del money management).
Ho scelto high come specificato in quanto mi sembra più preciso: è indipendente dal timeframe (come lo è invece close)
La differenza tra il livello di attivazione ed il trailing non è lo 0.1%, ma lo 0.6% quindi di tempo ce ne è anche troppo!
La strategia viene eseguita alla chiusura certo, ma una volta raggiunto un massimo assoluto e tracciato un livello di trailing, come fa questo ad abbassarsi dato che è fissato e può solo salire?
02/25/2021 at 1:15 PM #162613Ok, adesso ho capito il meccanismo del delta.
No, per mantenere il massimo/minimo, tra il calcolo attuale e quello precedente devi variare le righe 9 e 15 così:
12priceExit=max(priceExit,MaxPrice-trailingDelta*pointsize)priceExit=min(priceExit,Minprice+trailingDelta*pointsize)02/25/2021 at 7:26 PM #162635Ciao Roberto, ho inserito quelle righe nel codice e fatto molti test, ma non mi sembra che ci sia nessuna differenza per quanto riguarda il trailing, dal backtest almeno non si vede nulla, dovrò provarlo in real.
Unica cosa veramente stranissima, elimina molte (non ho controllato se tutte) quelle operazioni in cui ci sono 3 operazioni su una candela che chiudono lo stop&reverse appena aperto (sto ancora aspettando una risposta dall’assistenza, in quanto mi dicevi che nella versione 10.3 quel problema non c’era).
Pensi che ci sia qualche spiegazione per cui il tuo leggero cambiamento in priceExit possa: 1)non avere effetto sul fatto che si abbassa il trailing al salire del prezzo, e 2)sul fatto che “sembra” scomparire il problema sullo stop&reverse? (posto un immagine dello stesso TS con (TS in alto) e senza il tuo cambiamento).
02/26/2021 at 12:20 AM #162641Credo che il problema sia dovuto alle righe:
12trailingActivation = (close * 0.7 / 100) / pointsizetrailingDelta = (close * 0.6 / 100) / pointsizeperché variando CLOSE ad ogni candela variano anch’esse. Dovresti inserirle subito dopo BUY e SELLSHORT, in modoo che non siano più eseguite fino alla prossima entrata.
02/26/2021 at 8:01 AM #162656Ti ringrazio. Faccio delle prove con i punti in modo da controllare meglio il funzionamento. Provo lasciando la formula come è, poi con:
priceExit=max(priceExit,MaxPrice–trailingDelta*pointsize)priceExit=min(priceExit,Minprice+trailingDelta*pointsize)e poi entrambi i casi inserendo i trailing dopo buy e sellshort come da tuo ultimo consiglio e ti faccio sapere.In ogni caso quello che uso (sono cambiati SOLO i nomi) è lo snippet code originale che TUTTI usano in Prt nel forum e che viene ripreso dall’articolo del blog di Nicolas.02/26/2021 at 11:42 AM #1626751) Ho chiamato il TS con i trailing all’inizio: Z
2)Ho chiamato il TS con i trailing all’inizio e con la sostituzione: priceExit=max(priceExit,MaxPrice–trailingDelta*pointsize: 2) Z-priceExit
3)Ho chiamato il TS con i trailing spostati dopo Buy-SellShort: 1B) Z-buySellshort
4)Ho chiamato il TS con i trailing spostati dopo Buy-SellShort e con la sostituzione: priceExit=max(priceExit,MaxPrice–trailingDelta*pointsize: 2B ZpriceExit-buySellshort
I sistemi 1 e 3 ed 2 e 4 sono identici (foto 1), quindi spostando, come da tuo ultimo suggerimento, il trailing posto all’inizio dopo Buy-SellShort è completamente ininfluente.
Rimane quindi la differenza se si scrive: priceExit=max(priceExit,maxPrice-trailingDelta*pointSize) al posto del classico: priceExit=maxPrice-trailingDelta*pointSize. La formula classica sembra funzionare con i punti, la variazione con il Max che hai proposto nel primo suggerimento non funziona, non chiude le posizioni (foto 2) . Il TS in basso chiude dopo un ritracciamento di 60 punti, quello in alto con la modifica priceExit=max(priceExit,maxPrice-trailingDelta*pointSizr) non chiude quindi non funziona.
QUINDI APPROFONDIRO SOLO IL SISTEMA INIZIALE Z, quello che usano tutti ed abbassa il livello del trailing inspiegabilmente in tempo reale. CIAO
03/01/2021 at 10:24 AM #162813Ciao Roberto, ti confermo che si sposta il trailing senza che venga fatto nessun nuovo massimo. Posto due immagini di questa mattina. Vorrei postare qualcosa anche nel forum in inglese per sentire Nicolas, dato che il trailing MFE è una sua invenzione. Pensi che sarebbe un duplicato del topic?
(nelle due immagini in tempo reale e con trade reale si vede che non viene fatto nessun nuovo massimo, il prezzo si abbassa ed il trailing viene leggermente alzato: non si dovrebbe spostare fino a nuovi massimi)
03/01/2021 at 10:52 AM #162827Nicolas legge tutti i post, in qualunque lingua siano.
Occorre però un codice completo e funzionante per testarlo, finché si tratta di domande generiche si resta sul generico!
03/01/2021 at 12:30 PM #162849Ciao Roberto, in effetti rileggendo l’articolo del blog di Nicolas, scrive: ” The “exitprice” levels are moving accordingly to the MFE at each new candlestick.”.
La soluzione potrebbe essere quella di non far aggiornare il massimo a maxPrice, finche non venga registrato un nuovo massimo da quando si è attivato (con trailingActivation).
Sai come si può riscrivere la formula per ottenere questo risultato? (la formula la ritrovi completa all’inizio del topic) Grazie
-
AuthorPosts
Find exclusive trading pro-tools on