Salve,
uso il timeframe ad1 giorno e non riesco a fare funzionare la chiusura a fine giornata successiva, effettuo il buy il giorno 2 della settimana e voglio chiuderlo il giorno 3 a fine giornata, ma la chiusura mi viene effettuata ad inizio del giorno 3, ho fatto varie prove ma no riesco a farlo funzionare.
//Mettendo questo mi chiude ovviamente ad inizio giorno 3
If DayOfWeek = 3 Then
Sell at market
Exitshort at market
Endif
//Ho provato a mettere il time ma non funziona
If DayOfWeek = 3 and Time = 170000 Then
Sell at market
Exitshort at market
Endif
Il codice viene eseguito alla chiusura della candela, quindi il Daily non potrà mai chiudere ad un’ora diversa da quella della candela giornaliera, quindi il secondo esempio non verrà mai eseguito.
Prova ad usare il primo esempio, con la riga 1 scritta così:
If OnMarket Then
Grazie per la risposta,
Ho provato ma effettuala il selle sempre ad inizio candela, e non alla fine della candela che sarebbe a fine giornata, forse sbaglio qualcos’altro?
Le strategie vengono eseguite SOLO alla chiusura di una candela, quindi è in quel momento che ogni operazione viene iniziata o chiusa.
Tu vedrai una freccia sulla barra che si sta aprendo, in quando querlla chiusa ormai è chiusa.
L’importante è che si apra nel giorno corretto e si chiuda il giorno successivo. Puoi vederlo dall’elenco delle posizioni chiuse, dove ti riporta inizio e fine dell’operazione.
Sicuramente sbaglio qualcosa ma come puoi vedere dall’imagine operazione viene fatta sempre ad inizio candela e non alla fine.
Ti metto il codice completo.
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
c1 = (close < DClose(1))
indicator1 = RSI[2](close)
c2 = (indicator1 <= 20)
IF c1 AND c2 AND dayofweek=2 THEN
Buy 20000 CASH AT MARKET
ENDIF
If OnMarket Then
Sell at market
Exitshort at market
Endif
// Stop e target
SET STOP %LOSS 5
Forse ho capito, prova questo (modificato):
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Condizioni per entrare su posizioni long
c1 = (close < DClose(1))
indicator1 = RSI[2](close)
c2 = (indicator1 <= 20)
IF c1 AND c2 AND dayofweek=2 THEN
Buy 20000 CASH AT MARKET
ENDIF
If OnMarket AND OnMarket[1] Then
Sell at market
Exitshort at market
Endif
// Stop e target
SET STOP %LOSS 5
Niente da fare, mi chiude due giorni dopo ma sempre all’apertura di giornata, metto immagine allegata.
Tu vuoi che l’operazione resti aperta due giorni, il giorno d’entrata (MARTEDI’) e quello successivo (MERCOLEDI’). Se vedi il backtest noterai che l’operazione dura sempre quei DUE giorni (vedi foto allegata).
E’ ovvio (come ti ho già spiegato) che dal momento che l’ordine, apertura o chiusura che sia, viene eseguito SEMPRE alla chiusura della candela, la freccia apparirà sulla candela successiva, ma se guardi il prezzo vedrai che è quello della chiusura precedente (a parte qualche gap o slippage).
Piazza l’ordine il lunedì (perché DayOfWeek indica il giorno della settimana alla CHIUSURA della candela) ed entra, quindi, il MARTEDI’, poi piazza l’ordine di uscita alla chiusura del MERCOLEDI’ e prima che la nuova candela apra chiude l’operazione.