Pagina 1 di 6 123 ... Ultima
Risultati da 1 a 10 di 52
  1. #1

    Data Registrazione
    Apr 2010
    Messaggi
    800

    Divergenze tra Strategy in Real e Backtest su TS

    Ciao

    Sono due giorni che metto sotto pressione Beep facendolo girare con 4 Ts Bobao ottimizzati su Unicredit, Intesa, Fiat, Eni a Time Frame 15 Minuti con Money Management e Stop Loss.

    E' stato evidente come chiudendo alle 17.00 lo Strategy e visualizzando successivamente, immediatamente dopo il Back Test i Trade con i relativi risultati siano cambiati..

    Per esempio in UCG nel Trade Real ero in guadagno di 37 Euro, mentre con il Back Test mia ha portato la stessa posizione con una chiusura migliorativa piu' avanzata sulla barra portandomi il Trade a un guadagno di 75 Euro..

    Cio' mi ha fatto piacere, ma completamente errato...

    E' risultata anche a Voi tale Divergenza nei Trade...?

    Allego il Listato del Bobao Ottimizzato per UCG che mi ha dato l' errore più evidente:

    Buy Script:

    INPUTS: @price(CLOSE), @BandPeriods(11, 10, 30, 1), @BigDev(1, 3, 0.1), @SmalDev(0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(8),

    INPUTS: @trailAmount(200), @trailPercent(10), @stopLoss(80)

    SET TRAILING_STOP = @trailAmount
    SET TRAILING_PERCENT = @trailPercent
    SET STOP_LOSS = @stopLoss

    SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
    SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
    SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
    SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
    SET SignalLine = LR(@price, @SLperiods)


    CROSSOVER(SignalLine, BigBottom)

    Sell Script:

    SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
    SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
    SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
    SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
    SET SignalLine = LR(@price, @SLperiods)

    CROSSOVER(BigTop,SignalLine)
    Ultima modifica di Thalos; 08-10-13 alle 18:41
    --- Trend my Friend ---

  2. #2

    Data Registrazione
    Apr 2010
    Messaggi
    800
    Oggi di nuovo in prova con parametri modificati, se sbaglia ancora e mette gli ingressi diversi tra Strategy Real time e Back Test bisogna cominciare a preoccuparsi..
    --- Trend my Friend ---

  3. #3

    Data Registrazione
    Jan 2011
    Località
    Genova
    Messaggi
    1,306
    beetrader opera prima in real time *senza aspettare* che si completi la barra in formazione , in backtest usi sempre la barra completamente formata, per questo motivo vedi risultati diversi dal backtest

  4. #4
    L'avatar di Cagalli Tiziano
    Data Registrazione
    Dec 2007
    Località
    Rovigo
    Messaggi
    11,164
    Citazione Originariamente Scritto da Thalos Visualizza Messaggio
    Oggi di nuovo in prova con parametri modificati, se sbaglia ancora e mette gli ingressi diversi tra Strategy Real time e Back Test bisogna cominciare a preoccuparsi..
    Come ti ha scritto BMM devi capire come avviena la sequenza:
    in real time i prezzi sono quelli del real time, se poi lo spegni e lo riavvii è chiaro che i prezzi saranno quelli di apertura o chiusura della barra dato che altri non ce ne sono.
    Mica se li può inventare...questo sarebbe un errore perchè non conosce la sequenza con cui si è formata la barra.


    Se vuoi fare dei backtest i cui risultati corrispondano sempre ogni volta che riapplichi il segnale, allora nel tuo scirpt devi usare sempre e solo le barre precedenti all'ultima. Ad esempio, nel Trading System che hai messo sopra, la tua condizione di Buy è:

    CROSSOVER(SignalLine, BigBottom)
    Se la trasformi così:

    CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
    il backtest e la strategia corrispondono perfettamente, perchè non fai mai riferimento alla barra in costruzione.


    Permettimi allora di dirti che non è beeTrader che sbaglia ma sei tu che gli dai delle informazioni sbagliate.
    ..se corri dietro a due lepri, non ne prendi nemmeno una.

  5. #5

    Data Registrazione
    Apr 2010
    Messaggi
    800
    Ok non dicevo che Beep sbagliava, facevo notare solo questa differenza e giustamente non avevo capito come veniva calcolata la Barra in Beep. anche perche' ora in questo preciso istante i TS stanno dando in Strategy dei Segnali che se alle 17.00 quando li e vado a rivedermeli in a TS chiuso saranno completamente diversi...

    Mi sorge quindi un quesito, se io il TS lo testo in BackTest con determinati parametri inserendo la stringa REF,...1, quando lo metto in strategy real time come mi comporto per essere sicuro che il comportamento sia lo stesso che ho testato...?

    Perché se lascio il REF..1 in Real l' Ordine al Broker non arriva in ritardo, in quanto calcolato sulla Barra precedente...?

    Pero' se metto la Stringa come e' ora, il Test fatto per settarlo precedentemente non mi serve a niente...?



    Sembra una stupidata, ma sono particolari da capire di fondamentale importanza per il settaggio del TS prima di metterlo in Opera e evitare perdite sul Mercato reale...
    --- Trend my Friend ---

  6. #6

    Data Registrazione
    Apr 2010
    Messaggi
    800
    Citazione Originariamente Scritto da Cagalli Tiziano Visualizza Messaggio
    Come ti ha scritto BMM devi capire come avviena la sequenza:
    in real time i prezzi sono quelli del real time, se poi lo spegni e lo riavvii è chiaro che i prezzi saranno quelli di apertura o chiusura della barra dato che altri non ce ne sono.
    Mica se li può inventare...questo sarebbe un errore perchè non conosce la sequenza con cui si è formata la barra.


    Se vuoi fare dei backtest i cui risultati corrispondano sempre ogni volta che riapplichi il segnale, allora nel tuo scirpt devi usare sempre e solo le barre precedenti all'ultima. Ad esempio, nel Trading System che hai messo sopra, la tua condizione di Buy è:

    CROSSOVER(SignalLine, BigBottom)
    Se la trasformi così:

    CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
    il backtest e la strategia corrispondono perfettamente, perchè non fai mai riferimento alla barra in costruzione.


    Permettimi allora di dirti che non è beeTrader che sbaglia ma sei tu che gli dai delle informazioni sbagliate.
    Inserito il REF... Ora verifico il tutto...
    Ultima modifica di Thalos; 09-10-13 alle 18:43
    --- Trend my Friend ---

  7. #7
    L'avatar di Cagalli Tiziano
    Data Registrazione
    Dec 2007
    Località
    Rovigo
    Messaggi
    11,164
    Citazione Originariamente Scritto da Thalos Visualizza Messaggio
    Inserito il REF... Ora verifico il tutto...
    Dipende dal tipo ti trading systema che stai testando e come lo hai costruito:

    1) se è uno stop e reverse con calcoli fatti alla chiusura di barra (usi la funzione Date and Time) non c'è problema perchè il comportamento sarà analogo o comunque molto vicino.
    2) se non è calibrato a chiusura di barra allora lo devi testare in avanti nel tempo se è a TF Daily, se il TF si restringe ecco che il risultato storico sarà sempre più vicino a quello reale
    3) se è a target allora è certo che il risultato storico sarà identico a quello futuro. Infatti se chiudi a taget (x Euro) e il sistema trova il prezzo su una data barra, non ha importanza come si è costruita la barra. IL prezzo c'è e ci sarebbe stato.
    4) se è target e stop loss, idem come sopra perchè la verifica che farà beeTrader è quella di vedere se prima c'è il loss e se non lo trova allora e solo allora mette il gain.
    5) se è in trailing stop bisogna assolutamente provarlo nel futuro, tick by tick.
    .6), 7)..e via discorrendo.

    E tutti i software sono fatti così perchè tenere uno storico tick by tick richiede una memoria e accuratezza nella fornitura dati importante. IN genere, e lo abbiamo previsto anche noi, si potrebbe tenere uno storico a tick al massimo di 15 giorni
    e verificare su quello storico come cambia il trading system.

    Se i clienti lo vorranno lo faremo in tempo zero, ma francamente io non lo uso perchè preferisco andare in avanti nel tempo, così non mi serve nemmeno il bouncing (differenza tra prezzo immesso e prezzo eseguito).

    Altra cosa da tenere presente per i TF bassi, sotto o attorno ai 5 minuti: siamo sicuri che a quel determinato prezzo siano passati tutti i contratti che servivano per completare il mio ordine?
    Mi spiego: mi posiziono ad un prezzo di 5 euro per vendere le mie 100 azioni, a quel livello ce ne erano già 2000.
    Il prezzo 5 viene fatto e poi torna indietro. I contratti passati magari erano 2001 e quindi io ne ho venduti solo 1...

    Allora, dato che non c'è questa certezza ecco che si deve fare una verifica in avanti nel tempo e cercare di fare sistemi che prevedano già il prezzo di uscita in modo da piazzarlo in anticipo e così aumentare le probabilità..

    Per concludere non c'è nulla che non si possa fare, solo che va fatto con cognizione, pazienza e competenza.

    Noi siamo qui per aiutarvi per tutto ciò che in questi anni abbiamo imparato.
    ..se corri dietro a due lepri, non ne prendi nemmeno una.

  8. #8

    Data Registrazione
    Apr 2010
    Messaggi
    800
    Sembrava troppo facile per essere vero...

    Ok allora comincio i Test in Real per avere una curva di risposta piu' verosimile a quella del BackTest.....

    Non ci si puo' permettere di sbagliare, qui ogni errore si paga molto caro, in ogni senso..
    --- Trend my Friend ---

  9. #9

    Data Registrazione
    Oct 2009
    Messaggi
    566
    Ringrazio Thalos per aver sollevato questo aspetto e Tiziano per la risposta dato che anch'io ho trovato questo problema, ovvero la divergenza tra il backtest e il reale.
    il codice è molto semplice:

    buy scripts

    # REQUIRED_BARS is used to adjust how many periods will be used to initialize calculations. Default value is 50 periods.
    # Un-comment and edit the line below to set your own value.
    # SET REQUIRED_BARS = 50

    INPUTS: @periods(10), @trailAmount(100), @trailPercent(10), @stopLoss(400)

    SET TRAILING_STOP = @trailAmount
    SET TRAILING_PERCENT = @trailPercent
    SET STOP_LOSS = @stopLoss

    SET hh = HighestHighValue(@periods)
    #SET ll = LowestLowValue(@periods)

    HIGH = hh


    sell scripts (di seguito)

    #SET hh = HighestHighValue(@periods)
    SET ll = LowestLowValue(@periods)

    LOW = ll

    (PS: utilizzo per i test un solo future sul CAC40 e sul Dax e il Tf = 5 minuti, quindi il problema del n. contratti non si pone, trattasi di 1 solo contratto).

    Chiedo quindi aiuto per capire quale istruzione devo inserire (o come modificare lo script) perché in real time si comporti come nel backtest. Grazie.
    Ultima modifica di TFiutoT384; 10-10-13 alle 10:52

  10. #10
    L'avatar di Francario Massimiliano
    Data Registrazione
    Jul 2008
    Messaggi
    1,002
    Salve,
    Citazione Originariamente Scritto da TFiutoT384 Visualizza Messaggio
    Ringrazio Thalos per aver sollevato questo aspetto e Tiziano per la risposta dato che anch'io ho trovato questo problema, ovvero la divergenza tra il backtest e il reale.
    il codice è molto semplice:

    buy scripts
    ...

    HIGH = hh


    sell scripts (di seguito)

    ...

    LOW = ll
    In Buy Script:

    REF(HIGH, 1) = REF(hh, 1)
    In Sell Script:

    REF(LOW, 1) = REF(ll, 1)

    Max Francario

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Contattaci

Chiama gli esperti
+39 0425 792923

Chiamaci
Email

Richiedi informazioni via E-MAIL
info@playoptions.it

Scrivici
Nostri Uffici

Vieni a trovarci
45100 Rovigo

Contattaci

Serve Aiuto?

Contattaci per maggiori informazioni.

Denis MorettoSpecialista Finanziario
Contattaci
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.