Buona sera a tutti,
Sono nuovo di questa comunità e sto cercando di fare backtesting di una strategia che, al verificarsi di 2 condizioni, deve entrare long con un ordine Buy limit al 2% sotto la chiusura del giorno precedente.
Le 2 condizioni sono prezzi sopra la media mobile semplice a 200 periodi e rsi sotto a 5.
Ho provato a scrivere il codice ma non riesco proprio a farlo funzionare.. Suggerimenti?
Grazie!
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Cumulating positions deactivated //
level1 = (close*0.2)
// Condizioni per entrare su posizioni long
indicator1 = RSI[2](close)
c1 = (indicator1[1] < 5)
indicator2 = Average[200](close)
c2 = (close[1] > indicator2[1])
IF c1 AND c2 THEN
buy 1 CONTRACT AT – level1 LIMIT
ENDIF
Per favore usa sempre il pulsante “Insert PRT code” quando inserisci il codice nei tuoi post per facilitare la lettura degli altri. Grazie 🙂
Eccolo:
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Cumulating positions deactivated //
level1 = (close*0.98)
// Condizioni per entrare su posizioni long
indicator1 = RSI[2](close)
c1 = (indicator1[1] < 5)
indicator2 = Average[200](close)
c2 = (close[1] > indicator2[1])
IF c1 AND c2 THEN
buy 1 CONTRACT AT level1 LIMIT
ENDIF
Grazie mille dela risposta!
Approfitto ancora per chiedere dove sbaglio nelle condizioni di exit.
In pratica vorrei che la posizione venisse chiusa se l’ RSI a 5 periodi incrocia al rialzo 40 oppure se non si verifica questa condizione dopo 10 giorni di trading.
Io ho provato a scriverlo cosi.
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Cumulating positions deactivated //
level1 = (close*0.98)
x = 20
// Condizioni per entrare su posizioni long
indicator1 = RSI[2](close)
c1 = (indicator1[1] < 5)
indicator2 = Average[200](close)
c2 = (close[1] > indicator2[1])
indicator3 = RSI[5](close)
c3 = (indicator3[1] > 40)
IF c1 AND c2 THEN
buy 1 CONTRACT AT level1 LIMIT
IF c3 THEN
SELL AT MARKET
IF BarIndex - TradeIndex = x Then
Sell at Market
ENDIF
Basta cambiare la riga 11 in:
c3 = (indicator3[1] CROSSES OVER 40)
ok. Grazie mille Roberto,
Mi sembra tutto corretto ma mi restituisce il seguente errore:
Linea 20:
Uno dei seguenti caratteri sarebbe più appropriato di :”fine del codice”: null
Non capisco.. non ci sono nemmeno 20 righe di codice..
Perché ci sono 3 IF e solo 1 ENDIF.
Hai ragione!
Grazie mille! sto imparando e certe cose mi sfuggono.