Buongiorno a tutti, sto utilizzando da non molto PRT in versione free e al momento non ho competenze di programmazione, sto trovando una valido aiuto in questo meraviglioso sito. Ho una domanda da porvi sul backtesting, che al momento uso solo con creazione semplificata, inerente all’indicatore T3 Velocity : https://www.prorealcode.com/prorealtime-indicators/t3-velocity/, vorrei impostare una strategia che mi fa entrare sul fib (o minifib) al cambio di direzione della curva dell’indicatore con target 400 pt però vorrei che al raggiungimento del target (o stoploss) per la prossima operazione attenda il nuovo cambio di direzione della curva. Nella creazione semplificata non riesaco in quanto se imposto esempio per il long l’indicatore maggiore di ieri, al raggiungimento del target se la curva continua a crescere mi fa rientrare. Spero di essere stato chiaro. Un grazie enorme per l’aiuto.
Questo è il listato che ho creato:
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
indicator1, ignored = CALL “PRC_T3 Velocity”[14, 1](close)
c1 = (indicator1 > indicator1[1])
IF c1 THEN
BUY 1 SHARES AT MARKET
ENDIF
// Condizioni per uscire da posizioni long
indicator2, ignored = CALL “PRC_T3 Velocity”[14, 1](close)
c2 = (indicator2 < indicator2[1])
IF c2 THEN
SELL AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
indicator3, ignored = CALL “PRC_T3 Velocity”[14, 1](close)
c3 = (indicator3 < indicator3[1])
IF c3 THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
// Condizioni per uscire da posizioni short
indicator4, ignored = CALL “PRC_T3 Velocity”[14, 1](close)
c4 = (indicator4 > indicator4[1])
IF c4 THEN
EXITSHORT AT MARKET
ENDIF
// Stop e target
SET STOP %LOSS 2
SET TARGET pPROFIT 400
Il problema è che al raggiungimento del target o stoploss se la curva dell’indicatore mantiene la direzione mi fa rientrare in posizione mentre io vorrei che la prossima operazione sia alla prossima variazione della direzione della curva dell’indicatore.
Grazie.
Cosa intendi per cambio di direzione della curva?
Se, ad esempio, è in basso, magari puoi ipotizzare un cambio di curva dopo 1 o 2 barre maggiori:
x, ignored = CALL "PRC_T3 Velocity"[14, 1](close)
IF x > x[1] AND x[1] > x[2] THEN //due barre consecutive vanno verso l'alto
.
.
ENDIF
oppure quando attraversa, dal basso verso l’alto, la linea dello zero:
x, ignored = CALL "PRC_T3 Velocity"[14, 1](close)
IF x CROSSES OVER 0 THEN //incrocio al rialzo con la linea dello zero
.
.
ENDIF
Ovviamente il tutto viceversa per il cambio di direzione verso il basso.
Scusami, volevo ricordarti, come indicato qui sopra tra i suggerimenti evidenziati in giallo
Per scrivere il codice , utilizza il pulsante <> “insert PRT code”.
questo facilita la leggibilità e la comprensione del codice. Grazie.
Ciao Roberto, intendo che la curva dell’indicatore da disendente diventa crescente (long) e viceversa (short). Quello che vorrei è creare un back testing che al raggiungimento di un target o dello stoploss la prossima operazione sia di segno opposto, qundi ad esempio se curva dell’indicatore da discendente diventa crescente scatta il long e al raggiungimento del target (o stoploss) la prossima operazione attenda che la curva dell’indicatore passi da crescente a discendente pertanto short, ci sarà così alternanza di un long e uno short). Grazie.
Come vedi dalla foto allegata (Dax a 1 ora), nel rettangolo le barre dell’oscillatore sono decrescenti per un certo numero di candele, poi però tornano indietro verso il basso, mentre più a destra c’è una progressione più evidente che dura molte candele ed infine supera la linea dello zero.
Siccome una strategia NON vede i grafici, ma solo prezzi e numeri progressivi, dopo quante candele vuoi che un’inversione sia considerata tale ed un’operazione possa essere aperta?
L’idea è dopo 1 candela ma non è questo il problema,vorrei che al raggiungimento di un target o dello stop consideri per il prossimo segnale solo l’ operazione del senso opposto. Per Spiegarmi meglio nella tua foto che hai allegato il giorno 6 circa alle ore 15 la curva dell’indicatore è passata da decrescete a crescente quindi entra long poi raggiunge un target ( es a 100 pt) pertanto esce dalla posizione vorrei che la prossima operazione sia solo short ( con la curva dell’indicatore che da crescente passa a decrescete) quindi il giorno 8 alle ore circa 11. Nel listato di back trading che ho postato quando raggiungo un target o stop se l’indicatore continua nella stessa direzione mi fa entrare alla prossima candela (giustamente in quanto gli ho dato l’istruzione es per il long maggiore del giorno prima) mentre io vorrei che la prossima operazione sia solo quella di senso opposto ( pertanto short quando l’indicatore passerà da crescente e decrescente) . Grazie ancora per la disponibilità.
Eccolo, l’ho provato solo per la sintassi sul Dax a 1 ora, provalo meglio tu e fammi sapere.
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
ONCE Ultimo = 0 //1=long -1=short
// Condizioni per entrare su posizioni long
indicator1, ignored = CALL "PRC_T3 Velocity"[14, 1](close)
c1 = (indicator1 > indicator1[1])
IF c1 AND Not OnMarket AND Ultimo < 1 THEN
BUY 1 SHARES AT MARKET
Ultimo = 1
ENDIF
// Condizioni per uscire da posizioni long
indicator2, ignored = CALL "PRC_T3 Velocity"[14, 1](close)
c2 = (indicator2 < indicator2[1])
IF c2 AND LOngOnMarket THEN
SELL AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
indicator3, ignored = CALL "PRC_T3 Velocity"[14, 1](close)
c3 = (indicator3 < indicator3[1])
IF c3 AND Not OnMarket AND Ultimo >= 0 THEN
SELLSHORT 1 SHARES AT MARKET
Ultimo = -1
ENDIF
// Condizioni per uscire da posizioni short
indicator4, ignored = CALL "PRC_T3 Velocity"[14, 1](close)
c4 = (indicator4 > indicator4[1])
IF c4 AND ShortOnMarket THEN
EXITSHORT AT MARKET
ENDIF
// Stop e target
SET STOP %LOSS 2
SET TARGET pPROFIT 400
Grande Roberto. Grazie 1000.