Semplice codice SuperTrend per entrare sul ritracciamento

Forums ProRealTime forum Italiano Supporto ProOrder Semplice codice SuperTrend per entrare sul ritracciamento

Viewing 15 posts - 1 through 15 (of 23 total)
  • #88532

    Salve.

    Ho scritto il codice di un ProOrder che utilizza il SuperTrend per entrare in posizione. L’idea è quella di entrare su un ritracciamento di RR punti (dove RR è una variabile sottoposta poi ad ottimizzazione).

    Il problema è che non funziona correttamente. Ho anche usato l’istruzione graph per capire dove può essere l’errore, ma non riesco proprio a trovarlo.

    Ho anche provato a mettere tra parentesi le condizioni in AND ma, anche in questo caso, senza fortuna.

    Dove sbaglio?

    Grazie.

     

     

     

    #88554

    Sostituisci (close > St) and (close[1] < St) alla riga 21 con :

    lo stesso con CROSSES UNDER alla riga 29, perché se adesso deve essere superiore mentre prima doveva essere inferiore significa che c’è stato un incrocio.

    Ti allego il codice modificato (con anche più istruzioni GRAPH):

    Ti allego anche il codice di un indicatore che ti mostra quando l’incrocio è avvenuto:

    in modo che tu riesca, visivamente, ad identificare meglio quando avviene.

     

     

    1 user thanked author for this post.
    #88559

    Ora non sono davanti al mio PC. Appena rientro mi metto subito al lavoro. Grazie Roberto, buona giornata.

    🙂

     

    #88582

    Allora, ho provato il codice e, nella “sostanza”, funziona. Ci sono però un paio di problemini con i quali mi sto confrontando.

    Problema numero 1.

    Allego un’immagine per chiarire meglio il mio pensiero. Diciamo subito che il time frame è a 5 minuti, la giornata è quella del 2 gennaio scorso e lo strumento finanziario è il Dax30 future (broker IB).

    In candela 1,  chiusura 10.513, si attiva il setup Short. E fin qui è tutto corretto. L’ordine di vendita, con un RR=9, non ha modo di essere eseguito per le successive 14 barre.

    Finalmente, in candela 2, viene eseguito l’ordine di vendita a 10.522. Corretto!

    Stoppato poi in candela 3 a 10.532. Corretto anche qui.

    Dove sta il problema? Il problema è che in candela 2 scatta il setup Long e non dovrebbe essere eseguito l’ordine di vendita relativo al precedente setup Short.

    Probabilmente il sistema PRT ragiona in questo modo:

    – verifica se nel corso della candela ci sono le condizioni per l’eseguito e, se ci sono, applica l’eseguito;

    – e poi, al termine di questa, riesegue il codice e, se del caso, fa scattare il successivo Setup.

    Provo a ragionarci su per capire se, e come, è possibile modificare il codice per evitare ciò.

     

    #88585

    Problema numero 2.

    Anche qui allego un’immagine per le medesime ragioni. Il contesto è sempre lo stesso: time frame a 5 minuti, giornata del 4 gennaio scorso e strumento finanziario Dax30 future, RR=9.

    In candela 1, chiusura 10.570,50, si attiva il setup Short. E fin qui è tutto corretto. L’ordine di vendita, a 10579,50, viene eseguito all’interno della candela successiva (la 2).

    Poi accade una cosa “strana”. Dal momento che l’ordine di stop loss viene eseguito all’interno della medesima candela 2, il sistema PRT non ha modo di porre le variabili Rialzo e Ribasso a zero. Ciò in quanto, al termine della stessa candela, il sistema “non” è a mercato.

    Per lo stesso motivo il sistema entra e viene stoppato in candela 3 e in candela 4. Poi, finalmente, il sistema esegue l’ultimo ordine, in candela 5. Perchè l’ultimo? Perchè poi vi è almeno una successiva candela in cui il sistema “è” a mercato ed il codice, questa volta, ha modo di azzerare le variabili Rialzo e Ribasso.

    Anche qui, provo a ragionarci su per capire se, e come, è possibile modificare il codice per evitare ciò.

    #88588

    Problema 1: gli ordini pendenti vengono eseguiti al raggiungimento di un certo prezzo stabilito nella barra precedente (ad ogni barra gli ordini pendenti vanno reimmessi perché scadono) e ProOrder conosce che c’è stato un CROSS OVER solo alla chiusura della barra, quando ormai l’ordine è partito. L’unica soluzione è utilizzare TF più corti, perché, specialmente col il DAX, in una candela di 5 minuti altro che 10 pips può fare! Oppure, in alternativa, non usare ordini pendenti ma attendere la chiusura della candela per piazzare un ordine a mercato.

    Problema 2: vale lo stesso discorso fatto per il numero 1, solo che qui possiamo trovare una soluzione indiretta per bypassare ProOrder che, come correttamente hai rilevato, “NON si accorge” che c’è stata un’entrata a mercato. Si può risolvere facendo una verifica sulla performance della strategia mediante STRATEGYPROFIT, perché se c’è stata un’operazione questa è stata positiva o negativa, mai in pari perché non usi un breakeven, Quindi basta confrontare STRATEGYPROFIT con STRATEGYPROFIT[1] cioè alla candela precedente, se sono diversi si presume ci sia stata un’operazione e si azzerano le variabili, quindi sostituisci le righe 5-9 con:

    Se un’operazione dura più di una barra non hai da preoccuparti perché, comunque, STRATEGYPROFIT viene aggiornato solo ad operazione conclusa.

    Non l’ho provato, provalo tu.

    1 user thanked author for this post.
    #88624

    Ottimo, comincio a capire un po’ meglio di come PRT interpreta ed esegue il codice.

    Ci continuo a ragionare su.

    Grazie mille Roberto, davvero.

    🙂

     

    #88706

    Un aggiornamento sul codice che sto portando avanti ed una richiesta di chiarimento.

    Innanzitutto ho inserito quelle righe di codice suggerite da Roberto (post #88588) a proposito della possibilità di usare la funzione di sistema “StrategyProfit” per le ragioni indicate nel post medesimo (riga 9 di codice).

    Ho poi inserito uno stoploss sulla base dello swing precedente l’attivazione del setup determinata dal supertrend. Mi spiego meglio con un’immagine. In candela 2 ho il segnale di Short mostrato dall’indicatore supertrend.

    A quel punto considero, quale rischio dell’operazione, la differenza tra il prezzo di entrata Short e l’ultimo swing high precedente a tale setup. Questo swing high è rappresentato dal massimo della candela 3.

    Questo massimo me lo trovo con la funzione Highest. Ma quale dominio indico a tale funzione? In questo caso indicherò 36, ovvero il numero delle barre che intercorre tra questo setup ed il precedente (le righe di codice 27 e 37 servono per salvare la barra in cui avviene il setup long o short che sia).

    Tale rischio, poi, lo utilizzo per calcolare un take profit quale percentuale del rischio medesimo.

    Leggendo il codice, forse, si dovrebbe capire meglio, almeno spero! E spero possa essere una buona idea anche per altri.

     

    #88709

    Ed ora vengo alla richiesta di chiarimento.

    La figura mostra uno dei casi (non è l’unico) in cui accade il fenomeno di cui chiedo spiegazione.

    Allora, in candela 1 si ha il setup long (prezzo di chiusura = 11.531,50). L’ordine (pendente) viene eseguito in candela successiva con un RR di 11 punti (in questo caso) a 11.520,50. Ora, vediamo il rischio dell’operazione calcolato così come spiegato nel post precedente. Nella figura non è visibile però, il minimo precedente, era a 11.383. Quindi:

    Rischio = 11.520,50 – 11.383 = 137,5 punti

    La variabile Perc (in questo caso) era posta uguale a 0,5. Quindi, si avrebbe un take profit a:

    Profit = 11.520,50 + 137,5*0,5 = 11.589,50 (arrotondato al tick più vicino).

    Ora, come si vede dalla figura, PRT effettivamente esegue la vendita a 11.589,50. Il problema, però, è che in quella barra (barra 3) tale prezzo non è mai esistito. I prezzi che costituiscono l’escursione di quella candela, infatti, sono tutti al di sopra di tale livello di prezzo.

    Cosa, a mio avviso, avrebbe dovuto fare PRT? Avrebbe dovuto eseguire la vendita in apertura (11.626,50) essendo questo un prezzo compatibile con le direttive dell’ordine (vendere a non meno di 11.589,50).

    Grazie.

     

     

    #88729

    Purtroppo non avendo indicato il TF usato e la data delle candele non posso fare verifiche.

    Una volta saputi i dati posso replicare quello che è successo.

    Tieni presente, viso che dovrebbe esserci un GAP, che IG permette di tradare il Dax anche al di fuori degli orari ufficiali, per cui se tu hai impostato l’orario dalle 8 alle 22, ti visdualizza un GAP, ma per IG non c’è stato, o almeno era più piccolo, per cui magari ti ha chiuso la posizione mentre tu pensavi non accadesse niente.

    Se hai personalizzato gli orari di trading tieni presente che hanno solo un effetto visivo, le operazioni aperte seguono il loro corso secondo gli orari del broker.

    Comunque, attendo i dati per il test.

    #88765

    Ciao Roberto,

    leggo solo ora la tua risposta ed eccomi qui.

    Allora, il time frame utilizzato è il 5 minuti e la piattaforma è quella di Prorealtime alimentata con i dati ufficiali di mercato del future Dax (che presumo siano quelli del broker IB ma, di questo, non ne sono certo).

    Non dovrei aver personalizzato gli orari del trading (uso il condizionale perchè il sistema è sul mio PC di casa ed ora sono fuori). Appena torno a casa lo verifico e, non solo, ma ti dico anche quali sono i giorni e gli orari esatti in cui si verifica tale anomalia.

    Grazie come sempre per la tua disponibilità.

    🙂

     

    #88822

    Allora, eccomi qui.

    Allego anche alcune immagini per chiarire meglio.

    In questa prima figura abbiamo il Dax 30 future, scadenza marzo 2019, con time frame a 5 minuti. L’intervallo temporale tra le candele 1 e 3 definiscono il dominio della funzione Lowest per il calcolo dello Swing Low. Il minimo trovato in questo arco di tempo è quello fatto registrare dalla candela 2: 11.145,50.

    In chiusura di candela 3 si attiva il setup Long al prezzo di 11.262,00. Il rischio, corretto del fattore RR (in questo caso pari a 7), diviene:

    Rischio = 11.262,00 – 11.145,50 – 7 = 109,5

    La variabile Perc, che identifica la percentuale di tale rischio che poi determina il livello di profit per l’uscita, vale 0,66. Quindi:

    Profitto = 109,50 * 0,66 = 72,27

    L’entrata avviene in candela 4, con ordine pendente, a:

    Entry = 11.262,00 – 7 = 11.255,00

    Che, come mostrato dalla figura, risulta il livello effettivo di entrata effettuato dal ProOrder.

    A quel punto il livello di uscita dovrebbe essere:

    11.255,00 + 72,27 = 11.327,27

    arrotondato poi a 11.327,50. Ed anche questo livello di uscita è correttamente mostrato dal ProOrder.

    Ora, la candela in cui si verifica l’eseguito di vendita, è quella delle ore 8:00 del 30/10/2018. Candela che mostra un’apertura del future in gap up con un minimo a 11.332,00 ed un’apertura a 11.336,00.

    E’ quindi a tale livello, 11.336,00, che il ProOrder avrebbe dovuto eseguire la vendita!

    La seconda immagine mostra l’impostazione dell’orario di visualizzazione: gli orari impostati sono quelli ufficiali di mercato.

    Grazie.

    P.S.: mentre stao scrivendo il post ho pensato ad una cosa: non potrebbe trattarsi di un problema di rettifica della serie storica che PRT effettua al termine di ogni scadenza future?

     

     

     

     

    #88835

    Non saprei davvero cosa risponderti, meglio che tu prema CTRL+M dalla piattaforma e chiedi a PRT.

    Io uso IG con i CFD e li sono aperti anche alcune ore della notte, quindi i gap sono inferiori.

    Mi spiace.

     

    #88863

    Grazie lo stesso Roberto,

    farò come tu dici.

    Buonasera.

     

    #92192

    ciao Othello, sono Gaspare

    vorrei testare il tuo TS ma non ho capito l’intervallo dei valori delle variabili RR e PERC

    grazie

     

Viewing 15 posts - 1 through 15 (of 23 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login