Impostazione corretta del BackTest in AmiBroker (1 Viewer)

borg72

Nuovo forumer
Salve.
Ho un problema nell'impostare il backtest in amibroker.
Avrei la necessita di far girare il mio Ts a livello di portafoglio in modo massivo.
Il risultato atteso sarebbe di avere un report con una riga sola per ogni titolo in portafoglio con i vari dati riassuntivi del ts, sottolineo, a livello di singolo titolo.
Il workflow desiderato sarebbe
Eseguo il ts sul titolo watchList(1)
Scrivo la riga con i dati ottenuti
Eseguo il ts sul titolo watchList(2)
Scrivo la riga con i dati ottenuti
.
.
.
.
Eseguo il ts sul titolo watchList(n)
Scrivo la riga con i dati ottenuti

Le impostazioni in Ami sono quelle dello screenShot 1.
ma i risultati ottenuti sono sullo screenShot2.
E' evidente che lui fa girare il ts su tutti i titoli in portafoglio e poi, come configurato in portfolio level settings, se ci sono segnali, ne prende fino ad un massimo di 4 per giorno.

dove sbaglio???

grazie in anticipo a tutti e buona giornata.
 

Allegati

  • ScreenAmi_1.jpg
    ScreenAmi_1.jpg
    314 KB · Visite: 386
  • ScreenAmi_2.jpg
    ScreenAmi_2.jpg
    374,2 KB · Visite: 369
Ultima modifica:

reef

...
E' un problema di impostazione generale del backtest.
Ami vuole sapere che capitale hai a disposizione, il numero massimo di posizioni aperte e quanto vuoi muovere per ogni transazione. Se non imposti questi parametri all'inizio dello script afl (caldamente consigliato), ci sono dei default da modificare nelle Preferences. Ad esempio tu hai max open positions = 4 e capitale 20000
Prova a mettere 100000000, 100, 1000.
 
Ultima modifica:

borg72

Nuovo forumer
ciao reef.
si i parametri sono stati impostati a livello di codice afl.
Ho verificato che se imposti i settaggi a livello afl fanno l'override dei settaggi presenti sotto "Settings".
cmq a me bastano
SetOption("InitialEquity", 20000 ); //parto con 20K di capitale
PositionSize=10000;//trado a lotti di 10K
SetOption("MaxOpenPositions", 1 );//trado 1 titolo alla volta anche se per come intendo configurare io il BT non dovrebbe neanche servire..
SetOption("CommissionMode", 2);//commissioni fisse a trade
SetOption("CommissionAmount", 10);//10 euro di commissioni

ma qua il problema mi sembra di metodo.
Ripeto, io mi aspettavo di poter automatizzare quello che faccio manualmente.
Ovvero, apro il grafico di, per esempio, F, apro l'analisys con la formula del Ts, e faccio "BackTest" con "Apply to-->Current Symbol"
mi appunto i risultati e poi passo al titolo successivo.
Apro il grafico di, per esempio, UCG, apro l'analisys con la formula del Ts, e faccio "BackTest" con "Apply to-->Current Symbol"
mi appunto i risultati e poi passo al titolo successivo.
ecco, invece di dover fare questa cosa 40 volte, una per ogni titolo dell' ftsemib, mi aspettavo di poterlo fare in una botta sola avendo nel report una riga con il riepilogo dei risultati del ts che ha girato su ogni titolo per un totale appunto di 40 righe, una per ogni titolo.

qualcosa tipo:
Titolo;Num Opw;Ops Win;Ops Loss;Ending Capital
F;200;120;80;30000
BMPS;250;150;100;35000
.
.
.
.
UCG;210;100;110;32000

Ecco: è questa impostazione che non riesco a configurare con ami.
A questo punto mi chiedo se c'è la possibilità o meno di avere un bt globale.

secondo te si può?
e se sì come si fà?

ciao e buon week end.
 
Ultima modifica:

reef

...
Ripeto, io mi aspettavo di poter automatizzare quello che faccio manualmente.
Ovvero, apro il grafico di, per esempio, F, apro l'analisys con la formula del Ts, e faccio "BackTest" con "Apply to-->Current Symbol"
mi appunto i risultati e poi passo al titolo successivo.
Apro il grafico di, per esempio, UCG, apro l'analisys con la formula del Ts, e faccio "BackTest" con "Apply to-->Current Symbol"
mi appunto i risultati e poi passo al titolo successivo.
ecco, invece di dover fare questa cosa 40 volte, una per ogni titolo dell' ftsemib, mi aspettavo di poterlo fare in una botta sola avendo nel report una riga con il riepilogo dei risultati del ts che ha girato su ogni titolo per un totale appunto di 40 righe, una per ogni titolo.

Con Ami si può far tutto, però purtroppo bisogna impararne per bene la logica, e la documentazione non è esaustiva. In genere ci sono almeno 2/3 modi per fare la stessa cosa. Ti consiglio di googlare in inglese, puoi trovare discussioni che affrontano aspetti simili a quello di tuo interesse.

Se vuoi una visione operativa grafica sul TS devi impostare l'afl in modo differente dal backtest. Non ti servono necessariamente le variabili riservate buy e sell (che servono al money management), ma puoi usare variabili che visualizzano le operazioni di acquisto e vendita (e graficarle con le frecce), aggiungendo un vettore di equity che ti dica in tempo reale come sta performando il tuo sistema.

Se invece vuoi fare backtest di portafoglio (anche sui singoli titoli), quel che hai fatto NON va bene. Gli dici di tradare una watchlist con un capitale esiguo, quindi lui dopo la prima transazione si blocca. Prova a fare come ti ho già detto, capitale enorme e numero di posizioni aperte grande a piacere.

Se ti serve riutilizzare il codice nelle due modalità in un unico afl, puoi verificare la variabile Status("action") e attraverso gli "if" attivare la porzione di codice di pertinenza.

A questo punto, dopo aver approfondito, dovrai valutare tu se Amibroker fa al caso tuo.
In bocca al lupo
 
Ultima modifica:

borg72

Nuovo forumer
ho trovato la soluzione...

la riporto qua così può tornare utile anche ad altri...
Il problema era semplicemente la scelta della tipologia di BackTest da utilizzare.
Mi spiego meglio.
Il back test può essere fatto a livello di "portafoglio backtest" o di "Individual Back test"
Se in "Apply to" scegliamo "All Symbols" oppure "Filter", scegliendo un gruppo di titoli abbiamo 2 possibilità.
1) "portafoglio backtest": ami procederà ad applicare il ts su tutti i titoli
disponibili, e tra tutti i segnali trovati, ne prenderà fino ad un massimo di SetOption("MaxOpenPositions", 5 );
2) "Individual BackTest): ami procederà a far girare il report a livello si SINGOLO TITOLO, ma comunque su tutti i titoli selezionati.
Alla fine avremo così una riga con i risultati del ts applicato a tutti i titoli selezionati.
 

Users who are viewing this thread

Alto