Pagina 3 di 7 Prima 12345 ... Ultima
  1. #21
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da alex69 Visualizza Messaggio
    Caspita!!!
    Grazie fnet e Marco.
    Mi sa che mi sono perso un bel po' di cose strada facendo, nonostante segua il forum costantemente.
    Ci sono strumenti di cui ignoravo l'esistenza e che sono stati creati apposta per semplificarci la vita.

    Marco, in riferimento al punto 4), puoi aiutarmi a capire meglio come devo intervenire?
    Grazie.

    Mi sembra che questo thread sia di grande utilità.
    E' l'occasione per fare un bel ripasso generale e per sfruttare al meglio le potenzialità di BT.
    Grazie Playoptions!!!

    ciao,
    guarda è molto semplice partiamo dal codice :

    INPUTS: @price(CLOSE), @periods(80), @lev1(-65), @lev2(-35)
      
     
    SET v = Variance(@price, @periods, SIMPLE)
    SET o = Oscillator(v, @periods)
    SET VariaPeriodi = @periods + o - 50.0
     
     
    # EasyScript internamente esegue gia' l'arrotondamento all'intero piu' vicino nel calcolo dei periodi
    # quindi questa riga non e' necessaria.
    # SET VariaPeriodi = ROUND((@period1 * allungaAccorcia),0)
     
    # Assicura di avere un valore valido per il calcolo di %R
    SET PeriodoWilliams = IF(VariaPeriodi < 2, 2, VariaPeriodi)
     
    SET A = WilliamsPctR(PeriodoWilliams)
    SET B = @lev1
    SET C = @lev2
     
    print (v, o, PeriodoWilliams) 
    
    
    
    
    CROSSOVER(A, @lev1)
    come vedi nell'istruzione:

    SET VariaPeriodi = @periods + o - 50.0
    c'è quel 50 che è una costante.
    Magari non è adatta per il sottostante/TF/condizioni mercato....

    Qui il coefficiente è sommatto/sottratto ma puoi anche moltiplicare dividere...inventare insomma premesso che le varianti sono ben piu che infinite... come prima cosa potresti PARAMETRIZZARLO:

    INPUTS: @price(CLOSE), @periods(80), @lev1(-65), @lev2(-35), @variatore(50)
      
     
    SET v = Variance(@price, @periods, SIMPLE)
    SET o = Oscillator(v, @periods)
    SET VariaPeriodi = @periods + o - @variatore
     
     
    # EasyScript internamente esegue gia' l'arrotondamento all'intero piu' vicino nel calcolo dei periodi
    # quindi questa riga non e' necessaria.
    # SET VariaPeriodi = ROUND((@period1 * allungaAccorcia),0)
     
    # Assicura di avere un valore valido per il calcolo di %R
    SET PeriodoWilliams = IF(VariaPeriodi < 2, 2, VariaPeriodi)
     
    SET A = WilliamsPctR(PeriodoWilliams)
    SET B = @lev1
    SET C = @lev2
     
    print (v, o, PeriodoWilliams) 
    
    
    
    
    CROSSOVER(A, @lev1)
    adesso puoi quindi ottimizzarlo....

    A.png


    Questo è solo un esempio come ti dicevo...infatti essendo a sommare/sottrarre ed essendo lineare ottieni gli stessi risultati , della tua ottimizzazione originale... ma "shiftati" ....

    Magari avvia a dividere / molitiplicare anche la varianza con un coeff. intorno all'unità...

    esempio:

    INPUTS: @price(CLOSE), @periods(80), @lev1(-65), @lev2(-35), @variatore(50)
      
     
    SET v = (Variance(@price, @periods, SIMPLE)) * 1,1
    SET o = Oscillator(v, @periods)
    SET VariaPeriodi = @periods + o - @variatore
     
     
    # EasyScript internamente esegue gia' l'arrotondamento all'intero piu' vicino nel calcolo dei periodi
    # quindi questa riga non e' necessaria.
    # SET VariaPeriodi = ROUND((@period1 * allungaAccorcia),0)
     
    # Assicura di avere un valore valido per il calcolo di %R
    SET PeriodoWilliams = IF(VariaPeriodi < 2, 2, VariaPeriodi)
     
    SET A = WilliamsPctR(PeriodoWilliams)
    SET B = @lev1
    SET C = @lev2
     
    print (v, o, PeriodoWilliams) 
    
    
    
    
    CROSSOVER(A, @lev1)
    poi magari al posto di 1,1 lo parametrizzi e lo fai muovere di qualche decimo o centesimo e guardi come risponde.


    Mentre con questi esempi sei andato a "sfasare" l'argomente della funzione WilliamsPctR, potresti adesso invece intervenire andando proprio ad amplificare la grandezza A, che poi è quella che deve incrociarsi con i livelli B o C.

    quindi anche qua ... coefficiente:

    INPUTS: @price(CLOSE), @periods(80), @lev1(-65), @lev2(-35), @variatore(50)
      
     
    SET v = (Variance(@price, @periods, SIMPLE)) * (1.1)
    SET o = Oscillator(v, @periods)
    SET VariaPeriodi = @periods + o - @variatore
     
    
    
    set PLOT1 = v
     
    # EasyScript internamente esegue gia' l'arrotondamento all'intero piu' vicino nel calcolo dei periodi
    # quindi questa riga non e' necessaria.
    # SET VariaPeriodi = ROUND((@period1 * allungaAccorcia),0)
     
    # Assicura di avere un valore valido per il calcolo di %R
    SET PeriodoWilliams = IF(VariaPeriodi < 2, 2, VariaPeriodi)
     
    SET A = (WilliamsPctR(PeriodoWilliams)) * 1,1
    SET B = @lev1
    SET C = @lev2
     
    print (v, o, PeriodoWilliams) 
    
    
    
    
    CROSSOVER(A, @lev1)

    come vedi adesso A si amplifica

    SET A = (WilliamsPctR(PeriodoWilliams)) * 1,1

    Infine a titolo di debug prendi lo stesso codice e crei il segnale.
    Ed usando le funzioni plot vai a disegnare queste grandezze.

    esempio:

    set PLOT1 = v
    ....quando poi sei pratico guardi direttamente i numeri nella finestra di debug dell'ambiente di sviluppo.

    procedete a piccole modifiche alla volta.

    saluti
    Ultima modifica di Marco Bosco; 07-12-14 alle 11:27
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

  2. #22
    L'avatar di familytaz
    Data Registrazione
    Oct 2008
    Località
    Marche
    Messaggi
    1,778
    Potrebbe essere utile nei risultati di backtest, aver una funzione come quella presente su OS, cioè "Show Invalid data" per avere una serie storica attendibile ?

    Immagini Allegate Immagini Allegate

  3. #23

    Data Registrazione
    Feb 2012
    Località
    Pisa
    Messaggi
    351
    Citazione Originariamente Scritto da Marco Bosco Visualizza Messaggio
    ciao a tutti,
    aggiungo una cosa al mio post di prima.

    -In attesa che sia sviluppato un calendario si può implementare anche di stare FUORI DAL MERCATO da script, andando ad escludere certi giorni nel backtest.
    Usando ovviamente la logica booleana.

    Le righe di easyscript per stare fuori dal mercato poi si possono riusare in tutti gli script.....si fa anche prima

    ...ancora meglio , si può creare una funzione definita dall'utente che ritorna 1 o 0 in base al mathcing con le date che si vogliono escludere cosi poi nel signal basta aggiungere alla condizione finale "and MyCalendarFunction()

    Chi la costruisce ?

    ciao,
    Marco

    Ciao Marco,
    la costruisco io!

    Potresti magari essere un po' più dettagliato sull'ultimo punto,
    così mi metto al lavoro?

  4. #24

    Data Registrazione
    Dec 2012
    Messaggi
    432
    Citazione Originariamente Scritto da fnet Visualizza Messaggio
    .... quanto sopra era riferito a un TS TF 1 minuto , corretto ? ...
    per i TS TF Day come si dovrebbe procedere ? si testa su un TF inferiore , per esempio l'orario ?

    fabio
    Ciao fnet,
    sì il TS in esame è con TF 1M.
    Si potrebbe nel caso specifico provarlo con un TF maggiore.
    Quello standard più vicino è 5M, ma si potrebbe valutare anche un TF intermedio (es. 2M o 3M).
    Ovviamente bisogna valutare il peso del sottostante. Sul Dax eviterei, mentre sullo Stoxx o sul Bund è fattibile.

    Partendo dal TF D1, penso che si potrebbero analogamente prendere in considerazione anche altri TF intermedi (es. 4H o 2H), arrivando a 1H ed eventualmente scendendo ancora.

    E' corretta questa mia interpretazione?

  5. #25
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da familytaz Visualizza Messaggio
    Potrebbe essere utile nei risultati di backtest, aver una funzione come quella presente su OS, cioè "Show Invalid data" per avere una serie storica attendibile ?

    ciao familytaz,
    andrebbe prima definito cosa è attendibile?
    In OS ci sono delle regole per stabilire se le due serie hanno le barre che matchano tra loro.

    E qua?Cosa è attendibile e cosa no?....fare si può fare tutto , ma deve essere RIPETIBILE, AUTOMATIZZABILE, BEN DEFINITO.

    Spiega meglio cosa stai pensando..
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

  6. #26

    Data Registrazione
    Dec 2012
    Messaggi
    432
    Citazione Originariamente Scritto da Marco Bosco Visualizza Messaggio

    ....quando poi sei pratico guardi direttamente i numeri nella finestra di debug dell'ambiente di sviluppo.

    procedete a piccole modifiche alla volta.

    saluti
    Marco non so come ringraziarti, sei proprio gentilissimo!!!
    Ora con calma devo digerire i vari passaggi che hai illustrato.

    Una domanda:
    I coefficienti dell'esempio (*1.1) , posso inserirli come parametri ed eventualmente ottimizzarli o è meglio procedere per singoli step e ottimizzare di volta in volta solo gli altri parametri?
    Grazie.

  7. #27
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da Smash Visualizza Messaggio
    Ciao Marco,
    la costruisco io!

    Potresti magari essere un po' più dettagliato sull'ultimo punto,
    così mi metto al lavoro?

    ciao Marco,


    certo....lancio solo l'idea però non ho provato..... come sai i nostri script lanciano gli ordini quando l'espressione dello script diventa vera (in termini booleani)

    Quindi se l'espressione è TRUE (1) .... l'ordine viene eseguito...se è FALSE (0) l'ordine non viene eseguito...

    prendiamo come esempio lo script che sta circolando adesso sul forum (il WilliamsPctR per capirsi)...

    L'espressione finale è :

    CROSSOVER( DecisionConst, @lowlevel)

    che sarà vera se incrocia o non vera se non incrocia.


    Quindi se scriviamo:

    CROSSOVER( DecisionConst, @lowlevel) and 1
    AND 1 sarà neutro...

    se scriviamo :

    CROSSOVER( DecisionConst, @lowlevel) and 0
    sara sempre FALSA

    Lo scopo qua quindi è di scrivere invece di subito 0 o 1 ... un qualcosa che scriva 0 o 1 in base a delle condizione.

    Quindi va creata una funzione definita dall'utente... che chiameremo MyMatchCalendar()

    CROSSOVER( DecisionConst, @lowlevel) and MyMatchCalendar()
    dentro MyMatchCalendar() ci dovra essere scritto un qualcosa che : "se oggi parla draghi allora 0 se oggi NON parla Draghi allora 1"....
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

  8. #28
    L'avatar di familytaz
    Data Registrazione
    Oct 2008
    Località
    Marche
    Messaggi
    1,778
    Citazione Originariamente Scritto da Marco Bosco Visualizza Messaggio
    ciao familytaz,
    andrebbe prima definito cosa è attendibile?
    In OS ci sono delle regole per stabilire se le due serie hanno le barre che matchano tra loro.

    E qua?Cosa è attendibile e cosa no?....fare si può fare tutto , ma deve essere RIPETIBILE, AUTOMATIZZABILE, BEN DEFINITO.

    Spiega meglio cosa stai pensando..
    "Come nell'OS ci sono delle regole per stabilire se le due serie hanno le barre che matchano tra loro",
    è possibile creare delle regole sui backtest se la serie ha dati non attendibili ? Che ne so, magari se ci sono tot barre "strane" ricollegarsi con il broker e riscaricare la serie storica ripetendo il backtest.
    Immagini Allegate Immagini Allegate
    Ultima modifica di familytaz; 07-12-14 alle 17:27

  9. #29
    L'avatar di Marco Bosco
    Data Registrazione
    Sep 2012
    Località
    Pistoia
    Messaggi
    419
    Citazione Originariamente Scritto da alex69 Visualizza Messaggio
    Marco non so come ringraziarti, sei proprio gentilissimo!!!
    Ora con calma devo digerire i vari passaggi che hai illustrato.

    Una domanda:
    I coefficienti dell'esempio (*1.1) , posso inserirli come parametri ed eventualmente ottimizzarli o è meglio procedere per singoli step e ottimizzare di volta in volta solo gli altri parametri?
    Grazie.
    ciao alex69,
    mettili pure come variabili per renderti conto di cosa succede e ottimizzali.

    Devo però dirti una cosa ... Purtroppo il fenomeno è fortemente non lineare (e tutte le variabili sono "legate tra loro"....in parole molto povere se ne tocchi una ...modifiche il comportamento di tutte) quindi NON è che puoi ottimizzare una variabile , scegli il valore che ti da il profit maggiore poi passi alla seconda variabile, poi fai lo stesso e passi ad ottimizzare la terza e cosi via....

    Esempio ... trovi l'ottimo (per ottimo , in ricerca operativa, si intende la ricerca dei massimi e minimi di qualcosa ... nel nostro caso per esempio e solo per esempio la ricerca del Max total net profit e minimo del drawdown) della prima variabile e la fissi...poi vai ad ottimizzare la seconda. Non è detto che sia l'ottimo GLOBALE... perchè magari scegliendo un valore meno buono della prima...avresti trovato risultati di gran lunga migliori poi andando ad ottimizzare la seconda.


    NOTA


    in beeTrader verrà sviluppato un tool avanzato di analisi multidimensionale che permetterà proprio di verificare in modo semplice ed ancora più intuitivo, anche graficamente, come si comporteranno le varie grandezze al variare di altre due variabili (scelte a piacere). Andando quindi a costruire delle SUPERFICI di risposta.
    I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)

  10. #30

    Data Registrazione
    Aug 2010
    Località
    Padova
    Messaggi
    723
    Citazione Originariamente Scritto da alex69 Visualizza Messaggio
    Ciao fnet,
    ....

    Partendo dal TF D1, penso che si potrebbero analogamente prendere in considerazione anche altri TF intermedi (es. 4H o 2H), arrivando a 1H ed eventualmente scendendo ancora.

    E' corretta questa mia interpretazione?
    ... non sò , la mia era proprio una domanda, vediamo se cortesemente qualcuno del forum ha qualche indicazione in merito ... ...

    fabio
    "Tempus omnia medetur" .... e fà guadagnare di Theta

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