Equity line

Equity line

Riprendiamo il trading system presentato nelle puntate precedenti, basato sulle bande di Bollinger. Il nostro obiettivo dichiarato è migliorare le performance che di base sono positive, con un profit factor maggiore di 1.4 sul titolo Fiat, preso come base di test.

Rispetto al sorgente abbiamo apportato i seguenti interventi:

  1. abbiamo inserito un filtro di volatilità in cui l’ATR a 5 periodi deve essere maggiore dell’ATR a 15 periodi. Solo quando si verifica questa condizione il trading system inizierà ad operare;
  2. abbiamo aggiunto un trailing stop dinamico sul minimo delle 7 barre precedenti, per il caso long, e sul massimo delle 7 barre precedenti per il caso short;
  3. abbiamo ottimizzato i tre input. La media veloce è stata ottimizzata da 7 a 10 periodi. La media lenta da 14 a 20 periodi e la lunghezza delle bande di Bollinger da 20 a 25 periodi. Così facendo si ottengono 168 combinazioni di input. Questo tema è molto delicato. L’ottimizzazione ha grandi potenzialità ma spesso si rischia l’”overfitting” ottenendo performance passate molto buone ma poi deludenti in real time, quindi va usata con moderazione e con piccoli accorgimenti (che si possono approfondire in “Trading system vincenti” edito da Hoepli)
  4. Abbiamo allargato lo stop loss di mezzo punto. In questo modo abbiamo ottenuto un profit factor molto buono, maggiore di 2. Il drawdown massimo si dimezza a fronte di guadagni che sono più bassi appena del 18%. Questo significa che il rapporto rischio/rendimento migliora in modo molto netto. Anche la percentuale di successo aumenta significativamente.

 

{Codice per Omega Prosuite 2000i}

Input: len1(9), len2(15), lenboll(23);

if avgtruerange(5) > avgtruerange(14) then begin

if average(close, len1) crosses over average(close, len2 )

            and c < bollingerband(close, lenboll, 2)

            and c > bollingerband(close, lenboll, -2) then buy next bar at market;

 

if average(close, len1) crosses under average(close, len2) a

            and c < bollingerband(close, lenboll, 2) and c > bollingerband(close, lenboll, -2) then sell next bar at market;

end;

 

if marketposition = 1 then exitlong (“Stopl”) next bar at entryprice*0.965 stop;

if marketposition = -1 then exitshort (“stops”) next bar at entryprice*1.035 stop;

 

if marketposition = 1 then exitlong (“TrailL”) at lowest(L, 7)[1] stop;

if marketposition = -1 then exitshort (“TrailSL”) at highest(H, 7)[1] stop;

 

Ulteriori implementazioni sarebbero possibili (come ad esempio aggiungere condizioni che portino lo stop a pareggio dopo un certo numero di barre) ma li lasciamo al lettore come utile esercizio.

 

TradeStation Strategy Performance Report – MF1 ITAF-Daily (03/04/1995-17/07/2013)
Performance Summary: All Trades
Total Net Profit $26,994.6836 Open position P/L $649.9500
Gross Profit $46,446.9141 Gross Loss ($19,452.2305)
Total # of trades 118 Percent profitable 38.98%
Number winning trades 46 Number losing trades 72
Largest winning trade $9,443.4326 Largest losing trade ($910.8320)
Average winning trade $1,009.7155 Average losing trade ($270.1699)
Ratio avg win/avg loss 3.7373 Avg trade (win & loss) $228.7685
Max consec. Winners 4 Max consec. losers 6
Avg # bars in winners 20 Avg # bars in losers 4
Max intraday drawdown ($2,874.7285)
Profit Factor 2.3877 Max # contracts held 6,038
Account size required $2,874.7285 Return on account 939.03%

Per approfondimenti:

Trading System Vincenti