Grazie.
Avevo notato che mancava un pezzetto di codice 🙂
Ora provo a variare i valori del macd in short, perchè cmq non mi piace come si comporta.
Ho allegato un’immagine del comportamento.
Ciao, questa è la mia prima versione finale del codice, senza trailing o Breakeven, perchè ho sempre avuto risultati peggiori.
Che ne pensi ?
Ho notato che ho solo il 50% di trades vincenti. Da qualche parte avevo letto che sotto il 70% il codice non è da considerarsi buono, eppure
non mi sembra che si stia comportando male.
Allego qualche immagine.
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
//DEFPARAM FLATBEFORE = 080000
//DEFPARAM FLATAFTER = 220000
//Definizione variabili MACD Long
ONCE Macd1 = 12 //12
ONCE Macd2 = 27 //26
ONCE Macd3 = 9 //9
//Definizione variabili MACD Short
ONCE Macd4 = 12 //12
ONCE Macd5 = 21 //26
ONCE Macd6 = 18 //9
//Cross OVER
ONCE crover = 3 //3
//Cross UNDER
ONCE crunder = 9 //9
//Exit Long
ONCE exlong = 4 //4
//Exit Short
//ONCE exshort = 6 //6
//Stop Loss
ONCE stploss = 13 //13
ONCE avrtrangeloss = 8 //8
//Target Profit
ONCE tarprof = 15 //14
ONCE avrtrangeprofit = 13 //13
//Contratti
c = 1
// Condizioni per entrare su posizioni long
indicator1 = MACD[Macd1,Macd2,Macd3](close)
c1 = (indicator1 >= 0)
indicator2 = MACDline[Macd1,Macd2,Macd3](close)
c2 = (indicator2 CROSSES OVER crover) //3
IF c1 AND c2 THEN
BUY c CONTRACT AT MARKET
ENDIF
// Condizioni per uscire da posizioni long
indicator3 = MACD[Macd1,Macd2,Macd3](close)
c3 = (indicator3 <= -exlong) //-4
IF c3 THEN
SELL AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
indicator4 = MACD[Macd4,Macd5,Macd6](close)
c4 = (indicator4[1] <= 0)
indicator5 = MACDline[Macd4,Macd5,Macd6](close)
c5 = (indicator5[1] CROSSES UNDER -crunder)
IF c4 AND c5 THEN
SELLSHORT c CONTRACT AT MARKET
ENDIF
// Condizioni per uscire da posizioni short
indicator6 = Average[20](close)
c6 = (close[1] >= indicator6)
IF c6 THEN
EXITSHORT AT MARKET
ENDIF
// Loss, Profit
SET STOP LOSS stploss*AverageTrueRange[avrtrangeloss](close) //8
SET TARGET PROFIT tarprof*AverageTrueRange[avrtrangeprofit](close) //13
Prova ad inserire qualche altro indicatore, qualcosa puoi ottenere. Però non è che con 5 indicatori va meglio che con due, perché se sono simili…. non fanno gran che. Potresti provare ad inserire un ADX (ad esempio):
AdxVal = Adx[31] > 22 //31, 22
in alto, prima/dopo
c = 1
Poi dovrai modificare l’entrate LONG e SHORT così:
IF c1 AND c2 AND AdxVal THEN
IF c4 AND c5 AND AdxVal THEN
Si tratta, alla fine, d’impiegarci parecchio tempo facendo modifiche su modifiche.
Grazie come sempre. Provo e poi posto qualche risultato.
Cmq speravo che il Breakeven mi aiutasse a non perdere troppo, invece non porta, almeno nel mio caso, i benefici sperai.
O forse non sono io in grado di integrarlo come si deve …
Questo è il risultato con l’inserimento dell’adx.
Che ne pensi ?
Allego immagini.
Le percentuali le hai esagerate parecchio indicando una capitale così basso che ti porterebbe quasi sicuramente ad un Margin Call.
Metti 5000 euro iniziali, saranno più veritiere.
Comunque sono buone.
Lavoraci su, cerca di migliorarlo. Provando e facendo tanti test ti divertirai ed imparerai molto di questa piattaforma. Ovviamente t’impegnerà un sacco di tempo.
Prima di mettere una strategia in reale provala sempre in demo a fondo, direi non meno di 5-6 mesi.
Questo è il risultato :
Se indico un singolo contratto, la percentuale crolla al 268%
Se indico come capitale iniziale i 5000 che mi hai suggerito, la percentuale è del 53% con un singolo contratto.
Se indico come capitale iniziale 5000, e inserisco 3 contratti la percentuale è del 161%.
Booo 🙂
Si, ho anche il conto demo ed è da quello che faccio i miei test.
Cmq il mio vero ptf è di 1000 euro ed è da li che partirei …
E’ naturale che sia così. Se con 1 contratto e 5000 uro di capitale hai un profitto del 53%, con 3 contratti triplichi quel valore, per cui 161 (tenuto conto degli arrotondamenti) è perfetto. Capisco che parti con euro 1000, ma con quel capitale puoi permetterti un drawdown di quasi il 100%?
Ovviamente no altrimenti i giochi finirebbero subito.
A questo punto mi domando cosa dovrei fare. Aumentare il mio ptf ? Suggerimenti?
Grazie.
Aumenti il tuo ptf, oppure cerchi (con varie modifiche) di arrivare ad un drawdown che puoi sopportare facilmente, oppure…. pensi ad un’altra strategia!
Capito.
Cerco di ottimizzare il mio codice 🙂
Piccola domanda : quando in un codice si indica che le posizioni cumulative sono disattivate si indica questo codice :
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
Ma come funziona quando nel codice indichi il true ?
Se opero normalmente e apro una posizione short, non posso nello stesso momento aprire una posizione long senza chiudere la short utilizzando, ad esempio il dax.
Quindi immagino che il comando indichi che puoi accumulare posizioni ma nelle stessa direzione della prima.
Corretto ?
Grazie.
Esatto, è proprio così, puoi accumulare ulteriori posizioni nella stessa direzione.
Ma ci sono due avvertenze da fare:
- il margine aumenta (IG lo fa a scaglioni)
- non puoi fare chiusure parziali, quando chiudi le devi chiudere tutte, anche se aperte in momenti diversi
Roberto
Ciao, una informazione, perchè sto notando delle incongruenze tra la realtà e il backtesting attivando anche la funzione tick per tick. Praticamente capita abbastanza spesso che ciò che il codice fa in modalità non reale è ben diversa da ciò che fa il codice nella realtà. Se così è, esiste qualche funzione/modo per poter mitigare questo problema ? Altrimenti che senso ha creare codici che nella realtà sbagliano abbastanza spesso ?
Grazie.
Forse stai usando la versione con i dati a fine giornata, oppure durante la fase di ottimizzazione, la modalità Tick per Tick è esclusa anche se selezionata.