incrocio mm più rottura min/max

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #73050 quote
    Geronima Ortiz
    Participant
    Average

    Salve a tutti,

    una semplice incrocio di 2 medie, in più vorrei che si prenda posizione long dopo la rottura del max della barra dove è avvenuto l’incrocio, e short dopo la rotttura del minimo della barra dove è avvenuto l’incrocio.

    il codice che ho creato è il seguente, ma non va . Sapete indicarmi dove stà l’errore?

    DEFPARAM CumulateOrders = False        // posizioni cumulate disattivate
    DEFPARAM PreLoadBars    = 2000         // numero barre precaricate
    
    ONCE MiaBarra      = 0
    ONCE Massimo       = 999999           //Massimo della candela dove è avvenuto il segnale
    ONCE Minimo        = 0                //Minimo  della candela dove è avvenuto il segnale
    
    A  = Average[50](close)
    B =  Average[25](close)
    C1 = B crosses over A
    C2 = B crosses under A 
    
    IF c1 THEN
    MiaBarra    = BarIndex
    Massimo  = high
    Minimo = 0
    ENDIF
    
    IF c2 THEN
    MiaBarra    = BarIndex
    Minimo = low
    Massimo  = 999999
    ENDIF
    
    c1a = (close > Massimo)
    c2a = (close < Minimo)
    
    IF c1[BarIndex - MiaBarra] and c1a and Not longOnMarket THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    IF c2[BarIndex - MiaBarra] and c2a and Not shortOnMarket THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF

    grazie

    Geronima

    #73056 quote
    robertogozzi
    Moderator
    Master

    A me, sul DAX h1, fa un sacco di operazioni (a parte la performance). Cosa non ti funziona?

    x.jpg x.jpg
    #73108 quote
    Geronima Ortiz
    Participant
    Average

    CIAO ROBERTO, hai ragione il ts fa il suo lavoro.

    Ieri avendo messo le 2 medie sul grafico avevo notato che c’erano operazioni del sistema disallineate con le medie….

    poi questa mattina ho capito che era dovuto al fatto che avevo l’opzione MOSTRA DATI DEL WEEK AND deselezionata, e quindi mi induceva a pensare che il sistema fosse scritto male. Abilitando questa opzione vedo che tutte le operazioni vengono fatte al posto giusto.

    Dato che ci siamo colgo l’occasione per chiederti se esiste un modo per far si che non vengano considerate le barre del sabato e domenica dove presenti.

    Quello che voglio è che il sistema proprio non consideri queste barre in quanto sono solo oggetto di disturbo ….

    Grazie ciao!

    #73130 quote
    robertogozzi
    Moderator
    Master

    Purtroppo anch’io ho avuto stamani un problema simile e credo non ci siano soluzioni per il momento, o almeno nessuno me le ha date.

    Credo che se un’opzione mi consente di NON vedere i dati di fine settimana, vorrei che tutta la piattaforma si adeguasse, compreso il metodo di calcolo delle medie.

    Altrimenti è solo un effetto visivo, anzi  è fastidioso perché non permette un backtest efficace, in quanto quel che vedo non è reale.

    È per questo che faccio strategie, conosco bene la programmazione, ma ancora non sono passato al reale dopo due anni!

    #73131 quote
    Geronima Ortiz
    Participant
    Average

    Capisco il tuo punto di vista, però da test fatti non è che non sono reali…o meglio i numeri che prt tira fuori durante l’ottimizzazione di un sistema sono gli stessi, sia che i dati del week and siano visibili o no.

    L’unica cosa, come è successo a me ho perso un intero giorno a cercare di capire dove stava il problema in quanto avendo messo l’indicatore per verificare se il sistema faceva quello che doveva fare, e li, non mi torvavo allineata…

    Tu che 6 un moderatore potresti far presente a PRT di questo aspetto e consigliare loro di metter un opzione da spuntare che abolisca in toto queste giornate festive, se lo faccio io non mi si cagano di striscio (verificato in + di un occasione).

    Tornando al basic… ti chiedo:

    come si può implementare il codice dicendogli che le giornate sabato e domenica non devono esser operative?

    ho trovato queste 2 istruzioni che credo possono esser +/- valide,  OpenDayOfWeek  e  CurrentDayOfWeek

    ma onestamente non so come implementare il codice, tu credi sia possibile?

    Ciao Geronima

    #73136 quote
    robertogozzi
    Moderator
    Master

    Meglio usare OPENDAYOFWEEK, in ogni caso mettendo un paio di GRAPH con le due varianti noterai se e quando ci sono differenze.

     .
     .
    IF OpenDayOfWeek < 1 OR OpenDayOfWeek > 5 THEN
       Tradare = 0          //0 = non tradare
    ELSE
       Tradare = 1          //1 = tradare
    ENDIF
     .
     .
    IF MieCondizioni AND Not OnMarket AND Tradare THEN
       BUY.....
    ENDIF

    In questo modo puoi dirgli di NON operare in certi giorni.

    Quanto ai dati, quelli reali sono quelli indicando di vedere i dati del Week End e non spuntanto la casella successiva, quelle di creare barre non intraday con barre intraday.

    E’ su questi dati che vengono calcolate le medie e gli indicatori, per cui se NON visualizzi i dati del week end quando vai a fare il backtest ti trovi con operazioni fatte dove non ti aspettavi perché le medie sono sfalzate!

    Non c’è soluzione, quanto meno a breve termine, chissà…. fra qualche anno!

    Quanto a me, sono un utente come gli altri, solo che essendo attivo sul forum ed avendo buone capicità di programmazione Nicolas mi chiese di fare il moderatore, più che altro per liberargli un pò di tempo sostituendolo nelle risposte a certi quesiti (su alcuni sorvolo perché non ci capisco niente o poco), ma non ho rapporti con PRT, salvo sporadicamente come cliente, anzi, non sono neppure un loro cliente diretto perché opero tramite IG. Solo una volta ho aperto un ticket per l’assistenza, ma ho lasciato perdere. Da qualche mese ho notato che alcuni dello staff di PRT, inseriti come moderatori, partecipano a questo forum dando qualche risposta. E’ già un passo avanti.

    #73138 quote
    Geronima Ortiz
    Participant
    Average

    Concordo sulla questione dati, anche io dopo svariati test e personalizzazioni varie, ho convenuto di riportare tutto come stava di default nella sezione fusorario e orari di trading, in quanto per le ottimizzazioni credo sia la cosa migliore da fare.

    Concordo anche sul fatto che sarebbe utile, anzi necessaria la possibilità di togliere dalle scatole i giorni festivi…ma purtroppo usando il modulo di aiuto per contattare prt è come cercar di andare a piedi sulla luna….io ci ho provato diverse volte, mi hanno anche chiamato, ma poi semrpe è morto tutto e non si sono fatti più vivi. Spero che NICOLAS se ci legge sia daccordo con noi sul fatto dei dati festivi e lo faccia presente ai signori di prt.

    Per il codice che mi hai messo domani lo provo. GRAZIE

    ciao!

    #73139 quote
    Geronima Ortiz
    Participant
    Average

    Roberto ho provato sia le tue istruzioni che CurrentDayOfWeek a posto di OpenDayOfWeek sempre nel tuo blocchetto, il risultato è stato che in nessuno dei due casi mi ometteva le domeniche dal trading.

    Inventanto e provando ho fatto questa modifica che sembra funzionare, dimmi se è corretta

    DEFPARAM CumulateOrders = False        // posizioni cumulate disattivate
    DEFPARAM PreLoadBars    = 2000         // numero barre precaricate
    
    ONCE MiaBarra      = 0
    ONCE Massimo       = 999999           //Massimo della candela dove è avvenuto il segnale
    ONCE Minimo        = 0                //Minimo  della candela dove è avvenuto il segnale
    
    A  = Average[50](close)
    B =  Average[25](close)
    C1 = B crosses over A
    C2 = B crosses under A
    
    IF c1 THEN
    MiaBarra    = BarIndex
    Massimo  = high
    Minimo = 0
    ENDIF
    
    IF c2 THEN
    MiaBarra    = BarIndex
    Minimo = low
    Massimo  = 999999
    ENDIF
    
    c1a = (close > Massimo)
    c2a = (close < Minimo)
    
    Tradare = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0 // Impedisce al sistema di tradare in giorni specifici della settimana
    
    IF c1[BarIndex - MiaBarra] and c1a and Not longOnMarket and Tradare THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    IF c2[BarIndex - MiaBarra] and c2a and Not shortOnMarket and Tradare THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF
    #73140 quote
    Geronima Ortiz
    Participant
    Average

    Mi correggo, con la mia modifica non funziona, in quanto si vero che omette le domeniche dal trading, ma sposta tutti gli altri trades in avanti, non ho ben capito cosa combina ma non va!

    Mentre ribadisco quanto detto prima con il tuo blocchetto le domeniche non vengono omesse dal trading, ti allego un immagine dove puoi vedere una domenica con un segnale di trading, trattasi di domenica 5 giugno 2016 siamo su DAX DAILY, ce ne sono altre 2 indietro, domenica 23 novembre 2014 e domenica 6 maggio 2012.

    ciao!

    Cattura-3.jpg Cattura-3.jpg orari-di-trading.jpg orari-di-trading.jpg
    #73144 quote
    robertogozzi
    Moderator
    Master

    La tua riga 28 è esattamente l’opposto, esegue solo operazioni il lunedì, basandosi sul setup della domenica.

    Sostituiscila così e funzionerà

    Tradare = not (OpenDayOfWeek = 6 OR OpenDayOfWeek = 0) // Impedisce al sistema di tradare in giorni specifici della settimana
    #73208 quote
    Geronima Ortiz
    Participant
    Average

    Roberto sembra che vada bene ora….

    solo che ho notato che se tutte le condizioni di entrata si sono verificate entro la barra del venerdi, il sistema mi piazza cmq il trade il sabato anche se non è operativo.

    mentre invece se si matura un segnale di trading entro venerdi e sabato, la domenica non entra ma lo posticipa al lunedi .

    Insomma sembra prorpio che non ci sia verso per togliere dalle OO l’operatività nei giorni di sabato e domenic, almeno x come lavora questo sistema.

    #73222 quote
    robertogozzi
    Moderator
    Master

    Io faccio le mia prove sul DAX (cfd di IG) daily e NON entra mai di sabato perché il sabato NON esiste.

    Quando il segnale è il venerdì entra la DOMENICA. Se vuoi evitrare questo basta che metti una variabile (o flag, in gergo informatico) in modo che ti segnali quando è venerdì assegnandogli valore 1, mentre all’inizio si mette a ZERO.

    In questo modo quando vai ad iniziare il trade verifichi anche che questa variabile sia ZERO, altrimenti non entri.

    DEFPARAM CumulateOrders = False        // posizioni cumulate disattivate
    DEFPARAM PreLoadBars    = 2000         // numero barre precaricate
     
    ONCE MiaBarra      = 0
    ONCE Massimo       = 999999           //Massimo della candela dove è avvenuto il segnale
    ONCE Minimo        = 0                //Minimo  della candela dove è avvenuto il segnale
    
    Venerdi = 0
    IF OpenDayOfWeek = 5 THEN
       Venerdi = 1
    ENDIF
    
    A  = Average[50](close)
    B =  Average[25](close)
    C1 = B crosses over A
    C2 = B crosses under A
     
    IF c1 THEN
       MiaBarra    = BarIndex
       Massimo  = high
       Minimo = 0
    ENDIF
     
    IF c2 THEN
       MiaBarra    = BarIndex
       Minimo = low
       Massimo  = 999999
    ENDIF
     
    c1a = (close > Massimo)
    c2a = (close < Minimo)
     
    Tradare = not (OpenDayOfWeek = 6 OR OpenDayOfWeek = 0) // Impedisce al sistema di tradare in giorni specifici della settimana
     
    IF c1[BarIndex - MiaBarra] and c1a and Not longOnMarket and Tradare AND Not Venerdi  THEN
       BUY 1 CONTRACT AT MARKET
    ENDIF
     
    IF c2[BarIndex - MiaBarra] and c2a and Not shortOnMarket and Tradare AND Not Venerdi  THEN
       SELLSHORT 1 CONTRACT AT MARKET
    ENDIF

    Capiterà una sola voltra di domenica, perché Venerdì 10 Aprile 2009 manca la barra giornaliera del DAX, non so se fosse una festa particolare, ma in tal caso la variabile flag non ha, ovviamente, funzionato e la domenica è stato aperto un trade sulla base del setup di Gikovedì 9 Aprile.

    #73224 quote
    Geronima Ortiz
    Participant
    Average

    scusa nel mio post precedente non ho scritto la cosa più importante, che per vedere se effettivamente queste istruzioni di non trading di sabato e domenica funzionavano ho swichato dal dax a ethereum daily (cfd su ig) dato che le cripto laorano regolarmente tutta la settimana.

    Ora provo se questa nuova implementazione mi evita il trading totale di sabato e domenica

    ti faccio sapere

    #73232 quote
    Geronima Ortiz
    Participant
    Average

    Roberto,

    se faccio come suggerito nel tuo ultimo post, lavora bene su time frame daily, ma non su quelli intraday, in quando omette tutte le operazioni del venerdi,

    mentre se a riga 9 del codice, sostituisco il 5 con il 6  che corrisponde al sabato   IF OpenDayOfWeek = 6 THEN

    lavora bene nell’intraday ma non sul daily!!!

    Onestamente non mi interessa time frame daily, l’ho usato solo per capire il funzionamento del sistema, quindi se questo aspetto è impossibile da correggere, rimarrò con l’istruzione che mi va bene sull’intraday IF OpenDayOfWeek = 6 THEN

    ciao!

    #73335 quote
    Gianluca
    Participant
    Master

     

    Ciao, scusami posso farti una domanda?

    Ma così come hai impostato il sistema prende posizione dopo la chiusura della barra che ha rotto il massimo o minimo, è voluta la cosa?

    Per ovviare non potresti mettere un ordine limit al prezzo di rottura max min? Un pò come i sistemi di breakout.

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

incrocio mm più rottura min/max


ProOrder: Trading Automatico & Backtesting

New Reply
Summary

This topic contains 16 replies,
has 3 voices, and was last updated by Gianluca
7 years, 9 months ago.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 06/13/2018
Status: Active
Attachments: 3 files
Logo Logo
Loading...