Discussione: Come ottimizzare un Trading System
Visualizzazione Ibrida
-
06-12-14, 16:48 #1
- Data Registrazione
- Aug 2010
- Località
- Padova
- Messaggi
- 738
segnalo questo link per la valutazione
http://www.playoptions.it/vbforum/sh...ll=1#post73681
( Cagalli Tiziano )
Tutti i valori che abbiamo graficato o calcolato servono per avere un quadro generale della strategia.Ad ogni domanda che ti poni, ci deve essere una risposta: se ad esempio vuoi sapere come il tuo TS è "Buono(efficente)" nelle entrate e nelle uscite guardi la rappresentazione dell'efficenza.
Il 100% indica che più di così non potevi fare. Se tutti i tui trade hanno efficenza di entrata attorno all'80% e uscita attorno al 20% significa che il TS è ben fatto per le entrate ma deve essere aggiustato per le uscite.
Il ragionamento è speculare per un caso opposto.
Profit factor è un numero che determina se il tuo TS è da tradare o no. Se ti posizioni con il mouse sopra la riga vedrai che in calce c'è la spiegazione del calcolo.
UN Profit Factor superiore a 1 ti dice che il TS è profittevole ma certamente non è il massimo. Io ad esempio, accetto TS che abbiano questo valore come minimo attorno a 3.
Il rapporto trade win/loss è importante solo per la tua ulcera
IL TS che ha profittabilità dei trade attorno al 90% ti lascia tranquillo trade by trade ma non è dettio che nei restanti 10% non accumuli perdite totali superiori alle vincite ...e viceversa.
Quindi è un valore da considerare come fattore di "Simpatia" e non di garanzia di guadagno...a differenza del Profit Factor.
Concludo:
il TS dovrebbe puntare ad avere un PF > 3 un % profittable > 60 ed Entry/Exit efficency > 80%
"Tempus omnia medetur" .... e fà guadagnare di Theta
-
06-12-14, 17:51 #2
- Data Registrazione
- Dec 2012
- Messaggi
- 432
Grazie fnet,
era proprio quello che mi mancava.
C'è tanto di quel materiale nel forum che alcune volte mi perdo.
Quindi in base a questi criteri oggettivi analizziamo il nostro TS:
Direi che non supera la prova.
Sia il Profit Factor che il Percent profitable sono insufficienti.
Inoltre leggendo la tabella delle Entry Eff./Exit Eff. mi pare che non ci siamo.
Ma non so se la sto interpretando bene.
Dovremmo avere dei valori sia per le Entry Eff. che per le exit Eff. >80%.
Quesiti:
1) La mia valutazione va fatta leggendo gli esiti dei singoli trades (che possono essere centinaia) o c'è un dato riepilogativo per misurare l'efficienza media del sistema?
2) Il Total Eff. come va invece interpretato?
3) Cosa fare dopo l'esito negativo di un TS ottimizzato?
Prendo in considerazione altri risultati dell'ottimizzazione e ne verifico la bontà con gli stessi criteri visti sopra?
4) Se anche gli altri settaggi migliori che emergono dall'ottimizzazione, producono risultati non idonei, abbandono il TS su quel sottostante?
-
06-12-14, 18:33 #3
- Data Registrazione
- Aug 2010
- Località
- Padova
- Messaggi
- 738
-
06-12-14, 21:18 #4
- Data Registrazione
- Dec 2012
- Messaggi
- 432
Caspita!!!
Grazie fnet e Marco.
Mi sa che mi sono perso un bel po' di cose strada facendo, nonostante segua il forum costantemente.
Ci sono strumenti di cui ignoravo l'esistenza e che sono stati creati apposta per semplificarci la vita.
Marco, in riferimento al punto 4), puoi aiutarmi a capire meglio come devo intervenire?
Grazie.
Mi sembra che questo thread sia di grande utilità.
E' l'occasione per fare un bel ripasso generale e per sfruttare al meglio le potenzialità di BT.
Grazie Playoptions!!!
-
06-12-14, 21:47 #5
- Data Registrazione
- Aug 2010
- Località
- Padova
- Messaggi
- 738
Il sistemista Consiglia: Money Management
.... altro componente da ottimizzare è il money management come da manuale ....
... per quanto riguarda lo stop loss, trovo utile fare un backtest senza utilizzarlo , poi controllo i trades perdenti più elevati e da questi valori inizio a cercare un valore di stop loss adeguato ...."Tempus omnia medetur" .... e fà guadagnare di Theta
-
06-12-14, 22:45 #6
Premesso che il migliore valore di Stop Loss è quello che non verrà mai toccato, ci sono diverse funzionalità in beeTrader per capire quale sarebbe il migliore.
Ovvero quello che escluderebbe solo i trades che sono rimasti in perdita e che non taglia quelli che sono andati in negativo ma che si sono chiusi in Gain.
in Chart si trova l'adverse exursion, il drawdown e il Loss Trdades che graficano il sistema che si sta testando permettendo di individuare il valore ottimale. Il Loss Trade restituisce il valore medio che è già una buona base di partenza:Ultima modifica di Cagalli Tiziano; 06-12-14 alle 22:50
..se corri dietro a due lepri, non ne prendi nemmeno una.
-
07-12-14, 10:41 #7
- Data Registrazione
- Aug 2010
- Località
- Padova
- Messaggi
- 738
-
07-12-14, 11:08 #8
ciao,
guarda è molto semplice partiamo dal codice :
INPUTS: @price(CLOSE), @periods(80), @lev1(-65), @lev2(-35) SET v = Variance(@price, @periods, SIMPLE) SET o = Oscillator(v, @periods) SET VariaPeriodi = @periods + o - 50.0 # EasyScript internamente esegue gia' l'arrotondamento all'intero piu' vicino nel calcolo dei periodi # quindi questa riga non e' necessaria. # SET VariaPeriodi = ROUND((@period1 * allungaAccorcia),0) # Assicura di avere un valore valido per il calcolo di %R SET PeriodoWilliams = IF(VariaPeriodi < 2, 2, VariaPeriodi) SET A = WilliamsPctR(PeriodoWilliams) SET B = @lev1 SET C = @lev2 print (v, o, PeriodoWilliams) CROSSOVER(A, @lev1)
come vedi nell'istruzione:
SET VariaPeriodi = @periods + o - 50.0
c'è quel 50 che è una costante.
Magari non è adatta per il sottostante/TF/condizioni mercato....
Qui il coefficiente è sommatto/sottratto ma puoi anche moltiplicare dividere...inventare insomma premesso che le varianti sono ben piu che infinite... come prima cosa potresti PARAMETRIZZARLO:
INPUTS: @price(CLOSE), @periods(80), @lev1(-65), @lev2(-35), @variatore(50) SET v = Variance(@price, @periods, SIMPLE) SET o = Oscillator(v, @periods) SET VariaPeriodi = @periods + o - @variatore # EasyScript internamente esegue gia' l'arrotondamento all'intero piu' vicino nel calcolo dei periodi # quindi questa riga non e' necessaria. # SET VariaPeriodi = ROUND((@period1 * allungaAccorcia),0) # Assicura di avere un valore valido per il calcolo di %R SET PeriodoWilliams = IF(VariaPeriodi < 2, 2, VariaPeriodi) SET A = WilliamsPctR(PeriodoWilliams) SET B = @lev1 SET C = @lev2 print (v, o, PeriodoWilliams) CROSSOVER(A, @lev1)
adesso puoi quindi ottimizzarlo....
Questo è solo un esempio come ti dicevo...infatti essendo a sommare/sottrarre ed essendo lineare ottieni gli stessi risultati , della tua ottimizzazione originale... ma "shiftati" ....
Magari avvia a dividere / molitiplicare anche la varianza con un coeff. intorno all'unità...
esempio:
INPUTS: @price(CLOSE), @periods(80), @lev1(-65), @lev2(-35), @variatore(50) SET v = (Variance(@price, @periods, SIMPLE)) * 1,1 SET o = Oscillator(v, @periods) SET VariaPeriodi = @periods + o - @variatore # EasyScript internamente esegue gia' l'arrotondamento all'intero piu' vicino nel calcolo dei periodi # quindi questa riga non e' necessaria. # SET VariaPeriodi = ROUND((@period1 * allungaAccorcia),0) # Assicura di avere un valore valido per il calcolo di %R SET PeriodoWilliams = IF(VariaPeriodi < 2, 2, VariaPeriodi) SET A = WilliamsPctR(PeriodoWilliams) SET B = @lev1 SET C = @lev2 print (v, o, PeriodoWilliams) CROSSOVER(A, @lev1)
poi magari al posto di 1,1 lo parametrizzi e lo fai muovere di qualche decimo o centesimo e guardi come risponde.
Mentre con questi esempi sei andato a "sfasare" l'argomente della funzione WilliamsPctR, potresti adesso invece intervenire andando proprio ad amplificare la grandezza A, che poi è quella che deve incrociarsi con i livelli B o C.
quindi anche qua ... coefficiente:
INPUTS: @price(CLOSE), @periods(80), @lev1(-65), @lev2(-35), @variatore(50) SET v = (Variance(@price, @periods, SIMPLE)) * (1.1) SET o = Oscillator(v, @periods) SET VariaPeriodi = @periods + o - @variatore set PLOT1 = v # EasyScript internamente esegue gia' l'arrotondamento all'intero piu' vicino nel calcolo dei periodi # quindi questa riga non e' necessaria. # SET VariaPeriodi = ROUND((@period1 * allungaAccorcia),0) # Assicura di avere un valore valido per il calcolo di %R SET PeriodoWilliams = IF(VariaPeriodi < 2, 2, VariaPeriodi) SET A = (WilliamsPctR(PeriodoWilliams)) * 1,1 SET B = @lev1 SET C = @lev2 print (v, o, PeriodoWilliams) CROSSOVER(A, @lev1)
come vedi adesso A si amplifica
SET A = (WilliamsPctR(PeriodoWilliams)) * 1,1
Infine a titolo di debug prendi lo stesso codice e crei il segnale.
Ed usando le funzioni plot vai a disegnare queste grandezze.
esempio:
set PLOT1 = v
....quando poi sei pratico guardi direttamente i numeri nella finestra di debug dell'ambiente di sviluppo.
procedete a piccole modifiche alla volta.
salutiUltima modifica di Marco Bosco; 07-12-14 alle 11:27
I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)
-
07-12-14, 16:04 #9
Potrebbe essere utile nei risultati di backtest, aver una funzione come quella presente su OS, cioè "Show Invalid data" per avere una serie storica attendibile ?
-
07-12-14, 16:35 #10
ciao familytaz,
andrebbe prima definito cosa è attendibile?
In OS ci sono delle regole per stabilire se le due serie hanno le barre che matchano tra loro.
E qua?Cosa è attendibile e cosa no?....fare si può fare tutto , ma deve essere RIPETIBILE, AUTOMATIZZABILE, BEN DEFINITO.
Spiega meglio cosa stai pensando..I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)