Buongiorno,
volevo fare un semplice backtest su questa strategia: se un titolo alle ore 9:05 ha l’indicatore RSI 2 periodi inferiore di 20 allora compra il titolo. Alle 17:00 del giorno stesso di vende. Ecco il codice da me creato che non dà errore ma la strategia non esegue nessuna operazione durante 10 anni e mi sembra impossibile. Dove sbaglio? Grazie.
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
indicator3 = RSI[2]
c2 = (indicator3 < 20)
IF c2 and TIME = 090500 THEN
BUY 10000 CASH AT MARKET
ENDIF
IF TIME = 170000 THEN
SELL AT MARKET
ENDIF
Grazie
Frank
Hai usato un TF di 5 minuti o di 1 minuto?
In caso contrario NON può funzionare perché alle 090500 nessun’altra candela può iniziare, se non, appunto, quella da 5 minuti o da 1 minuto.
Hai usato un TF di 5 minuti o di 1 minuto?
In caso contrario NON può funzionare perché alle 090500 nessun’altra candela può iniziare, se non, appunto, quella da 5 minuti o da 1 minuto.
Hai ragione sbagliavo TF, avevo lasciato il giornaliero, ho risolto mettendo a 5 minuti.
Grazie mille
Però se io volessi acquistare alle 09:05 come già detto, ma solo se RSI 2 periodi della barra giornaliera di ieri era minore di 20. E’ possibile farlo?
Cioè io posso acquistare a un determinato orario in base a al valore di un indicatore che si riferisce però alla barra giornaliera di ieri o di oggi fino al momento dell’acquisto? Non vorrei basarmi sull’indicatore di oggi o di ieri a 5 minuti ma solo dare un orario all’acquisto e alla vendita. Per la condizione vorrei far riferimento al TF giornaliero. Non so però se questo sia possibile.
Spero di essermi spiegato.
Grazie
Frank
Con il nuovo supporto MTF (Multi Time Frame), rilasciato a metà dello scorso anno ed ancora in beta test (ma già disponibile in demo e, su richiesta, anche in reale) è possibile usare più TF nella stessa strategia, per cui è possibile fare quello che vuoi fare tu.
Anche senza MTF, nel tuo caso è possibile ricorrendo alle costanti DCLOSE, DOPEN, DHIGH e DLOW che si riferiscono ai dati giornalieri dell’ultima candela chiusa.
Puoi fare una ricerca della parola MTF, oppure DCLOSE, ecc… e troverai molti esempi e la documentazione ufficiale.
Puoi comunque chiedere qui, se non riesci a fare qualcosa.
Ho provato a capire come applicare DCLOSE alla mia idea ma non ci sono riuscito.
Qual è l’istruzione per dire al programma di entrare a mercato oggi alle 09:05 solo se ieri l’RSI a 2 periodi era minore di 20 utilizzando DCLOSE?
Grazie
Frank
Puoi usare questo:
If time = 090500 then
If Dclose(1) < rsi[2](Dclose(1)) then
.....
endif
endif
Però è meglio con più TF, per avere setup corretti (non testato):
Timeframe(Daily,updateonclose)
MioRsi = Rsi[2](close)
Timeframe(default)
If time = 090500 then
If MioRsi < 20 then
...
Endif
Endif
Puoi lanciarlo dal grafico a 5 minuti o 1 minuto.
Il mio post 89731 è errato, questo è corretto:
If time = 090500 then
If rsi[2](Dclose(1)) < 20 then
.....
endif
endif
Ma è sicuramente meglio usare il MTF, non sono certo che questa soluzione funzioni.
Il mio post 89731 è errato, questo è corretto:
|
|
If time = 090500 then
If rsi[2](Dclose(1)) < 20 then
…..
endif
endif
|
Ma è sicuramente meglio usare il MTF, non sono certo che questa soluzione funzioni.
Grazie mille, ho provato questo codice e funziona! La cosa strana è che in un altra parte del trading system devo fare la stessa cosa con ADX[5] e mi dà errore! Che cambia dal RSI a ADX se il codice è uguale?
Se non indichi l’errore è difficile da dire, però ADX credo non voglia le parentesi tonde.
Adesso non sono al PC e non posso verificarlo.
Ecco la riga di codice:
If adx[5] (Dclose(1)) > 45 then
L’errore che dà è: “Errore di sintassi, una delle espressioni seguenti sarebbe più appropriata di “(“:
e poi tutto un elenco di simboli come la “[“, il “+”, “=”, “*” ecc….
come posso risolvere?
Grazie
Frank
Come avevo immaginato ADX non vuole niente dopo le parantesi quadre.
Come avevo immaginato ADX non vuole niente dopo le parantesi quadre.
E quindi non posso utilizzare questo sistema con l’ADX?