Trading system su massimi e minimi

Viewing 15 posts - 1 through 15 (of 18 total)
  • Author
    Posts
  • #95214 quote
    R05
    Participant
    Veteran

    Gent.mi vorrei costruire un trading system che riesca a vendere il più possibile sui massimi e a comprare il più possibile sui minimi. Per l’individuazione si questi massimi e minimi vorrei partire da questo: cioè vorrei prendere in considerazione solo quei massimi e minimi che si formano dopo degli eccessi (parola un pò vaga effettivamente, perchè come si fa a considerare un eccesso?) e iniziare con quelli che si formano dopo che il sottostante, in questo caso dax, abbia fatto almeno 80 punti a rialzo o al ribasso. Quindi dopo che ha fatto 80 punti posso incominciare a considerare un max e min.

    Ho messo giù un sistema ma mi manca questa informazione. E’ una prima bozza.

    // 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 = 090000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
    DEFPARAM FLATAFTER = 173000
    
    // Condizioni per entrare su posizioni long
    c1 = dlow(0)
    
    if low = c1 then
    BUY 1 CONTRACT AT low[1] stop
    ENDIF
    
    // Condizioni per entrare su posizioni short
    c2 = dhigh(0)
    
    IF high = c2 THEN
    SELLSHORT 1 CONTRACT AT high[1] stop
    ENDIF
    
    // Stop e target
    SET STOP pLOSS 10
    SET TARGET pPROFIT 15
    #95224 quote
    robertogozzi
    Moderator
    Master

    Innanzitutto le tue righe 9 e 16 ben difficilmente saranno vere, perché è quasi impossibile che un prezzo possa essere uguale ad un altro, secondo me dovresti usare <= oppure >=.

    Dve avere fatto 80 punti da quando?

    #95236 quote
    R05
    Participant
    Veteran

    Si Roberto grazie. Le linee 9 e 16 non me le ha fatte modificare dandomi errore, ma ho modificato le linee 11 e 18 e mi fa entrare sul massimo o minimo della candela precedente alla candela di setup, non male, da approfondire perchè sembra interessante (non avevo intuito questo possibile modo di entrare).

    Ecco il codice aggiornato.

    // 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 = 090000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
    DEFPARAM FLATAFTER = 173000
    
    // Condizioni per entrare su posizioni long
    c1 = dlow(0)
    
    if low <= c1 then
    BUY 1 CONTRACT AT low[1] stop
    ENDIF
    
    // Condizioni per entrare su posizioni short
    c2 = dhigh(0)
    
    IF high >= c2 THEN
    SELLSHORT 1 CONTRACT AT high[1] stop
    ENDIF
    
    // Stop e target
    SET STOP pLOSS 10
    SET TARGET pPROFIT 15

    Riguardo la tua domanda lo vorrei fare, tendenzialmente, 80 punti dal prezzo di apertura delle 9:00; anche se poi vorrei fare una prova anche dall’ultimo minimo o massimo registrato perchè, come nell’esempio che allego, il massimo avuto dopo il candelone verde non ha superato di 80 punti il prezzo d’apertura, però rispetto ai minimo di giornata si, e quindi quel movimento lo vorrei comunque considerare in quanto abbastanza grosso, e quindi presumibilmente può essere un eccesso da cui dovrebbe, si spera, rifiatare e stornare un pò.

    esempio-1.jpg esempio-1.jpg
    #95242 quote
    robertogozzi
    Moderator
    Master

    Hai ragione, erano le righe 11 e 18 da cambiare.

    Alla riga 7 inserisci (puoi usare anche OpenTime, invece di Time, ma in questo caso dovrai usare open invece di close):

    IF time = 090000 THEN
       PrezzoOre9 = close
    ENDIF
    c3 = abs(close - PrezzoOre9) >= 80 * pipsize

    ed alle righe 11 e 18 aggiungi con AND la condizione C3.

    #95259 quote
    R05
    Participant
    Veteran

    Grazie Roberto, ho aggiunto il tuo codice per la condizione di apertura se il prezzo fa 80 punti. Funziona perfettamente.

    #95266 quote
    R05
    Participant
    Veteran

    Nel fare le prove e quindi nel cercare di migliorare il codice, vorrei provare questa condizione: vorrei mettere lo stop sopra il massimo o sotto il minimo e il sistema deve aprire solo quelle operazioni che non superano un tot di stop: cioè se tra la’apertura long, ad esempio, e il minimo della barra precedente ci sono più di 10 punti non mi deve aprire la posizione. Si può fare?

    #95269 quote
    robertogozzi
    Moderator
    Master

    Di quale Minimo e Massimo stai parlando?

    Che cos’è lo Stop di cui hai scritto?

    #95277 quote
    R05
    Participant
    Veteran

    Si Roberto ora mi chiarisco meglio. Invece di mettere uno stop fisso, vorrei provare a mettere lo stop sul massimo o minimo più alti: ti allego la schermata di esempio: la candela 1 è il massimo di giornata e supera 80 punti dall’apertura, poi al punto 2 c’è un nuovo massimo torna indietro: l’apertura è sul massimo della candela 1, mentre lo stop loss lo vorrei provare a mettere sul massimo della candela 2 che a quel punto è diventato il massimo di giornata.

    Vorrei, a questo punto, però, scartare quei trade la cui differenza tra massimo o minimo e prezzo di apertura sia superiore i 10 punti come stop (se mettessi uno stop loss fisso mi farebbe fare qualsiasi operazione anche se la differenza tra massimo e prezzo di apertura è superiore a 10 punti).

    #95307 quote
    robertogozzi
    Moderator
    Master

    Manca la foto.

    #95309 quote
    R05
    Participant
    Veteran

    Si scusa Roberto. La allego.

    esempio-2.jpg esempio-2.jpg
    #95311 quote
    R05
    Participant
    Veteran

    Ho sbagliato. la foto giusta è questa

    Stop.jpg Stop.jpg
    #95334 quote
    robertogozzi
    Moderator
    Master

    Intendi il massimo delle giornata in corso?

    Può cambiare più volte, arrivati al massimo della candela 1, cosa deve fare la strategia, entra subito?  oppure aspetta che faccia un altro massimo?  E se il nuovo massimo non lo fa e va subito giù?

    Un conto è osservare un grafico DOPO che i fatti sono accaduti, un altro è cercare di precederli.

    Occorre una regola ben definita di quando entrare (e di quando uscire).

    #95340 quote
    R05
    Participant
    Veteran

    Si Roberto ora ti dico quello che vorrei fare. Riporto il codice completo aggiornato.

    // 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 = 090000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
    DEFPARAM FLATAFTER = 173000
    
    IF time = 090000 THEN
    PrezzoOre9 = close
    ENDIF
    c3 = abs(close - PrezzoOre9) >= 80 * pipsize
    
    // Condizioni per entrare su posizioni long
    c1 = dlow(0)
    
    if low <= c1 and c3 then
    BUY 1 CONTRACT AT low[1] stop
    ENDIF
    
    // Condizioni per entrare su posizioni short
    c2 = dhigh(0)
    
    IF high >= c2 and c3 THEN
    SELLSHORT 1 CONTRACT AT high[1] stop
    ENDIF
    
    // Stop e target
    SET STOP pLOSS 10
    SET TARGET pPROFIT 15
    

    Esempio short (immagine allegata, dax time frame 15 minuti): il sistema dopo che il prezzo ha fatto almeno 80 punti, prendo in considerazione un eventuale short, perchè potrebbe essere più probabile uno storno. Però, non viene subito aperta, a prescindere, una posizione short;  perchè oltre a questa condizione vorrei che se ne verificassero altre due: la prima è che vorrei entrare se si verifica una candela che contiene il massimo di giornata, a quel momento, e quindi entrare short alla rottura del minimo della candela stessa. Inoltre, come altra condizione, invece che mettere uno stop fisso di 15 punti (che mi farebbe aprire qualsiasi operazione) vorrei mettere lo stop sopra il massimo della candela di setup, però lo stop (massimo della candela – apertura posizione) non deve superare 15 punti (perchè il rischio sarebbe troppo alto; sto valutando quanti punti potrebbe essere meglio): se lo stop supera 15 punti, anche se ci sono le prime due condizioni (gli 80 punti e la rottura del minimo della candela col massimo) non deve aprire nessuna posizione.

    Entrata.jpg Entrata.jpg
    #95344 quote
    robertogozzi
    Moderator
    Master

    Per vedere i Minimi/Massimi di giornata puoi anche mettere sul grafico questo indicatore (l’ho fatto per fare la prova):

    DEFPARAM CalculateOnLastBars = 1000
    DEFPARAM DrawOnLastBarOnly   = true
    IF BarIndex = 0 OR IntraDayBarIndex = 0 THEN
       Massimo = 0
       Minimo  = 9999999
    ENDIF
    Minimo  = min(Minimo,low)
    Massimo = max(Massimo,high)
    DRAWHLINE(Massimo) coloured(0,192,0,255)
    DRAWHLINE(Minimo)  coloured(0,192,0,255)
    RETURN
    #95345 quote
    robertogozzi
    Moderator
    Master

    Prova a verificare se questa versione, modificata, fa l’entrate giuste, poi vederemo lo SL e TP:

    // 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 = 090000
    // Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
    DEFPARAM FLATAFTER = 173000
    
    IF OnMarket THEN
    PrezzoShort = 0
    PrezzoLong  = 0
    ENDIF
    
    if PrezzoLong THEN
    BUY 1 CONTRACT AT PrezzoLong stop
    ENDIF
    if PrezzoShort THEN
    SELLSHORT 1 CONTRACT AT PrezzoShort stop
    ENDIF
    
    IF time = 090000 THEN
    PrezzoOre9 = close
    ENDIF
    c3 = abs(close - PrezzoOre9) >= 80 * pipsize
     
    // Condizioni per entrare su posizioni long
    c1 = dlow(0)
     
    if low <= c1 and c3 then
    PrezzoLong = high
    BUY 1 CONTRACT AT PrezzoLong stop
    ENDIF
     
    // Condizioni per entrare su posizioni short
    c2 = dhigh(0)
     
    IF high >= c2 and c3 THEN
    PrezzoShort = low
    SELLSHORT 1 CONTRACT AT PrezzoShort stop
    ENDIF
     
    // Stop e target
    SET STOP   pLOSS   10
    SET TARGET pPROFIT 15
    graphonprice Dlow(0)  coloured(192,0,0,255) AS "Dlow"
    graphonprice Dhigh(0) coloured(0,192,0,255) AS "Dhigh"
    graphonprice PrezzoOre9 coloured(0,0,255,255) AS "Ore9"

    Osserva nella foto le tre linee stampate sul grafico con le ultime 3 righe che ho aggiunto, in tal mode segui i valori in mdodo molto più semplice.

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

Trading system su massimi e minimi


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
R05 @r05 Participant
Summary

This topic contains 17 replies,
has 2 voices, and was last updated by R05
6 years, 10 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 04/01/2019
Status: Active
Attachments: 5 files
Logo Logo
Loading...