OTTIMIZZAZIONE DELLA MIGLIOR COMBINAZIONE DI CONDIZIONI

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #236683 quote
    StePPA
    Participant
    New

    Buongiorno a tutti, chiedo cortesemente il vostro aiuto.

    vorrei ottimizzare una strategia con dei filtri, i filtri in questione in questo esempio sono:

    C1,C2,C3,C4,C5,C6,C7,C8

    ma in realtà possono essere infiniti, vorrei che l’ottimizzazione mi trovasse il miglior filtro o la migliore combinazione di filtri, qualcuno ha idea di come fare?

     

     

     

     

     

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    // Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l’orario “Flat Before” non saranno piazzati nuovi ordini o posizioni.
    DEFPARAM FLATBEFORE = 170000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all’orario “Flat After”
    DEFPARAM FLATAFTER = 220000

    // Condizioni per entrare su posizioni long

    IF C ? THEN
    BUY 1 SHARES AT MARKET
    ENDIF

     

    // Definizione delle condizioni di pattern
    C1 = ABS(open[1] – close[1]) < 0.1 * (high[1] – low[1])
    C2 = ABS(open[1] – close[1]) < 0.25 * (high[1] – low[1])
    C3 = ABS(open[1] – close[1]) < 0.5 * (high[1] – low[1])
    C4 = ABS(open[1] – close[1]) < 0.75 * (high[1] – low[1])

    C5 = ABS(open[1] – close[1]) > 0.25 * (high[1] – low[1])
    C6 = ABS(open[1] – close[1]) > 0.5 * (high[1] – low[1])
    C7 = ABS(open[1] – close[1]) > 0.75 * (high[1] – low[1])
    C8 = ABS(open[1] – close[1]) > 0.9 * (high[1] – low[1])

    #236688 quote
    robertogozzi
    Moderator
    Master

    Anche se può funzionare ugualmente, è buona pratica indicare le condizioni PRIMA che siano utilizzate.

    Detto questo, puoi provarne una per volta con questo codice, aggiungendo nell’ottimizzatore la variabile Prova, che io ho messo = C1, e che tu poi cambierai con C2, C3, ecc… annotandoti ogni volta il risultato in modo da decidere quale condizione è la migliore (codice1 e Foto1):

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    // Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l’orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
    DEFPARAM FLATBEFORE = 170000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all’orario "Flat After"
    DEFPARAM FLATAFTER = 220000
    
    // Definizione delle condizioni di pattern
    C1 = ABS(open[1] - close[1]) < 0.1 * (high[1] - low[1])
    C2 = ABS(open[1] - close[1]) < 0.25 * (high[1] - low[1])
    C3 = ABS(open[1] - close[1]) < 0.5 * (high[1] - low[1])
    C4 = ABS(open[1] - close[1]) < 0.75 * (high[1] - low[1])
    
    C5 = ABS(open[1] - close[1]) > 0.25 * (high[1] - low[1])
    C6 = ABS(open[1] - close[1]) > 0.5 * (high[1] - low[1])
    C7 = ABS(open[1] - close[1]) > 0.75 * (high[1] - low[1])
    C8 = ABS(open[1] - close[1]) > 0.9 * (high[1] - low[1])
    
    // Condizioni per entrare su posizioni long
    Prova = C1
    IF Prova THEN
       BUY 1 SHARES AT MARKET
    ENDIF

    oppure puoi usare quest’altro codice (codice2, Foto2 e Foto3) che ti permette di ottimizzarle tutte insieme:

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    // Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l’orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
    DEFPARAM FLATBEFORE = 170000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all’orario "Flat After"
    DEFPARAM FLATAFTER = 220000
    
    // Definizione delle condizioni di pattern
    C1 = a1 AND (abs(open[1] - close[1]) < 0.1 * (high[1] - low[1]))
    C2 = a2 AND (abs(open[1] - close[1]) < 0.25 * (high[1] - low[1]))
    C3 = a3 AND (abs(open[1] - close[1]) < 0.5 * (high[1] - low[1]))
    C4 = a4 AND (abs(open[1] - close[1]) < 0.75 * (high[1] - low[1]))
    
    C5 = a5 AND (abs(open[1] - close[1]) > 0.25 * (high[1] - low[1]))
    C6 = a6 AND (abs(open[1] - close[1]) > 0.5 * (high[1] - low[1]))
    C7 = a7 AND (abs(open[1] - close[1]) > 0.75 * (high[1] - low[1]))
    C8 = a8 AND (abs(open[1] - close[1]) > 0.9 * (high[1] - low[1]))
    
    // Condizioni per entrare su posizioni long
    IF C1 OR C2 OR C3 OR C4 OR C5 OR C6 OR C7 OR C8 THEN
       BUY 1 SHARES AT MARKET
    ENDIF

    la Foto2, oltre alle variabili da dichiarare, indica le combinazioni possibili (256 in questo caso) su un massimo possibile di 10000. Se supri 10000 tutta quella riga diventa rossa.

    La Foto3 evidenzia il risultato dell’ottimizzazione, dove per ciascuna delle 8 variabili usate indica, in ordine di come sono state inserite, qual’è il valore migliore.

    #236698 quote
    StePPA
    Participant
    New

    Buongiorno Roberto,

    innanzitutto ti ringrazio per la risposta esaustiva, sono riuscito a risolvere usando il secondo metodo che hai proposto.

    La risposta sarà banale ma non riesco a capire come posso ottimizzarne un solo filtro alla volta invece che tutte le combinazioni possibili, mi spiego meglio:

    cosi facendo come hai descritto nel secondo codice il sistema prova tutte le combinazioni possibili (anche usando tutti i filtri assieme)
    io invece vorrei che mi dicesse quale è il migliore, poi dargli un valore prefissato (in questo caso 1) e testarlo con altri filtri (mettendo valore 0 e 1)

    spero di essermi spiegato e ti ringrazio ancora una volta per la tua disponibilità.

    #236706 quote
    MaoRai54
    Participant
    Master

    @StePPA

    vedo che questi sono alcuni patterns di Unger.

    Ma perchè per il gruppo 1-4 non scrivi così:

    C1 = (abs(open[1] close[1]) < VARB * (high[1] low[1]))

    dove VARB è variabile che tu imposti da 0.1 a 1.0 con passo 0.5, ad esempio ?

    #236710 quote
    robertogozzi
    Moderator
    Master

    Comunque, nel secondo esempio, puoi indicare il valore fisso 0 per 7 di essi e lasciarne solo uno per volta attivo, da 0 ad 1 con passo di 1.

Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.

OTTIMIZZAZIONE DELLA MIGLIOR COMBINAZIONE DI CONDIZIONI


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
StePPA @stefano-panti Participant
Summary

This topic contains 4 replies,
has 3 voices, and was last updated by robertogozzi
1 year, 5 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 08/24/2024
Status: Active
Attachments: 5 files
Logo Logo
Loading...