Problema chiusura backtest improvvisa
- This topic has 2 replies, 2 voices, and was last updated 9 years ago by .
Viewing 3 posts - 1 through 3 (of 3 total)
Viewing 3 posts - 1 through 3 (of 3 total)
Similar topics:
Forums › ProRealTime forum Italiano › Supporto ProOrder › Problema chiusura backtest improvvisa
Buonasera a tutti,
ho un problema con il backtest, precisamente nella candela del 19 Ottobre 2010 sul grafico dell’Euro/Dollaro (EUR/USD) Giornaliero. Ho programmato un backtest che si interrompe in questa candela, visualizzando l’icona di quando il capitale è azzerato e non è più possibile acquistare nuovi contratti. Il problema è che il capitale in quel punto è ben oltre il capitale iniziale e sarebbe possibile (se solo il backtest non si interrompesse) acquistare nuovi contratti.
Ecco il backtest:
—————————————————————————————————
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate ////////////// // SETUP ///////////// capitaleiniziale = 1000 // % PERCENTUALE CAPITALE DA INVESTIRE A OGNI OPERAZIONE (%) ps = 10 // RAPPORTO RISCHIO / RENDIMENTO rrratio = 1 /////////////////////////////////////////////////// // FINE SETUP /////////////////////////////////////////////////// //////// // Strategia ('segnalelong' trigger long - 'segnaleshort' trigger short) //////// mm10 = average[10] mm50 = average[50] range1sano = range[1]*(0.25) range0sano = range[0]*(0.25) IF close[1] <= (low[1]+range1sano) AND close[0] >= (high[0]-range0sano) AND close[0] > mm10 AND mm10 > mm50 THEN segnalelong = 1 segnaleshort = 0 ELSIF close[1] >= (high[1]-range1sano) AND close[0] <= (low[0]+range0sano) AND close[0] < mm10 AND mm10 < mm50 THEN segnalelong = 0 segnaleshort = 1 ELSE segnalelong = 0 segnaleshort = 0 ENDIF // SETTA STOP LOSS E TAKE PROFIT entrypoint = 0 IF segnalelong = 1 THEN entrypoint = high ELSIF segnaleshort = 1 THEN entrypoint = low ENDIF stoploss = 0.002 // lo stop loss è 20 pip /////// // FINE Strategia /////// // Aggiorna Capitale a ogni operazione IF STRATEGYPROFIT <> 0 THEN capitaleattuale = capitaleiniziale + STRATEGYPROFIT ELSE capitaleattuale = capitaleiniziale ENDIF IF entrypoint > 0 THEN // calcola numero di contratti da acquistare e stop loss e take profit in unità valuta numshares = 0 rischiocapitale = capitaleattuale * (ps/100) rischiopunti = stoploss / TICKSIZE IF ((rischiopunti*TICKSIZE)<>0) THEN numshares = (rischiocapitale / (rischiopunti*TICKSIZE)) ENDIF stoplossmoney = rischiocapitale takeprofitmoney = stoplossmoney * rrratio // ENTRA SUL MERCATO IF segnalelong = 1 THEN BUY numshares SHARES ROUNDEDDOWN AT entrypoint STOP ELSIF segnaleshort = 1 THEN SELLSHORT numshares SHARES ROUNDEDDOWN AT entrypoint STOP ENDIF // STOP LOSS e TAKE PROFIT SET STOP $LOSS stoplossmoney SET TARGET $PROFIT takeprofitmoney ENDIF |
—————————————————————————————————
Dove sta l’errore? Vi sarei molto grato se riusciste a risolvere questo problema perchè sto provando a risolverlo da giorni senza successo.
E’ un bug di prorealtime? Non vedo errori nel codice e infatti il codice funziona bene in qualsiasi altra parte del grafico, e tra l’altro dopo quella candela il capitale finale viene aggiornato correttamente con la perdita. E’ come se venisse ignorato lo stop loss, il sistema perdesse tutto in quanto il minimo della candela fa perdere tutto il capitale, ma poi il capitale venisse ripristinato correttamente al livello dello stop loss. Cioè è come se saltasse lo stop loss solo temporaneamente.
Grazie per l’aiuto
esatto, il codice non dovrebbe smettere nulla, ma alla fine il backtest termina e se vedi nello screenshot appare l’icona del QUIT. Come è possibile? Dovrebbe andare avanti oltre quella candela.
Find exclusive trading pro-tools on 