COMANDO ANCORA POCO COMPRENSIBILE
ogni 5 candele devo aumentare una posizione in daily
poi se qualcuno mi potrebbe spiegare il comando barindex lo ringrazio anticipatamente!!!!
BARINDEX è il numero progressivo di candele trascorse da quando la strategia è stata lanciata, quindi se ha valore 6570 significa che sono passate 6570 candele dall’inizio della strategia.
TRADEINDEX è invece il numero della candela (sempre seguendo la progressione BARINDEX) di quando un trade è iniziato.
Quindi quando apri un trade BARINDEX e TRADEINDEX avranno lo stesso numero, ad esempio 4560. Da quel momento TRADEINDEX resta invariato fino alla fine del trade, mentre BARINDEX viene sempre incrementato.
Questo è utile per sapere quante candele sono trascorse dall’inizio del trade mediante l’espressione (BARINDEX – TRADEINDEX).
Esiste anche INTRADAYBARINDEX che indica il numero progressivo della candela all’interno del giorno (ovviamente più basso è il timeframe, più alto sarà il numero di candele).
Ogni nuovo giorno questo valore riparte da zero, quindi con IF INTRADAYBARINDEX=0 THEN…. puoi sapere quando inizia un nuovo giorno.
quindi se devo aumentare una posizione ogni 5 giorni usando barindex?
barre= barindex
posizione=1
if (barre -barre[5])=5 then
posizione=posizione+1
endif
Utilizza il tasto “Insert PRT code” identificato da <> nella barra grigia, per rendere più comprensibile il codice, quando puoi.
Ovviamente dal tuo esempio presuppongo tu usi un grafico daily, altrimenti non funziona.
No, nel tuo esempio la condizione sarà sempre vera, perché ad ogni barra tu confronti il valore attuale con quello di 5 barre prima, per cui il risultato sarà sempre 5 giorno dopo giorno.
Hai TRADEINDEX che ti da l’inizio del trade in corso, quindi basta che tu gli dica di aprire un’altra posizione ogni 5 barre. Per sapere quando sono trascorse 5 barre puoi crearti una variabile che a 5 ti fa aprire una posizione e si azzera, in modo da ripartire da uno alla candela successiva (ad ogni candela dovrai incrementarla di 1). Questo metodo funziona ma è poco elegante. Puoi invece verificare che TRADEINDEX sia divisibile per 5 (quindi quando la divisione per 5 darà come resto ZERO), in tal modo non devi preoccuparti dei calcoli delle barre:
IF (TradeIndex MOD 5) = 0 THEN //MOD restituisce il resto della divisione
.
.
.
ENDIF
per cui potrai aprire una posizione alla barra 5, 10, 15, ecc… stabilirai tu quando fermarti.
Roberto grazie infinite del tuo prezioso aiuto
mi rendo conto che sicuramente mi sono spiegato male io e sono stato approssimativo
quindi
ciò che voglio testare è solamente una strategia di carico quindi di aumento posizini in un TS di mia creazione che da oltre il 60% di risultati positivi e rapporto guadagni perdite medio di 2.5
tale verifica è per testare senza rischi se:
una volta partita la mia strategia con un lotto , entro quanti giorni posso aumetare di un altro lotto senza prendere rischi
il mio sistema da apre una posizione al giorno, il sistema in questione è quello per il quale ti avevo chiesto aiuto per cercare la distanza ciclica
i trade vengono aperti uno al giorno, raramente durano più giorni
premetto che uso la funzione preloadbar
quindi con preloadbar mi precarica 2500 barre
Se vuoi cambiare la frequenza dei giorni basta che sostituisci il 5 con il valore che desideri, se metti 3 aprirà una posizione ogni TRE giorni, se metti 12 ogni DODICI giorni ecc…
Poi dai risultati deciderai qule intervallo temporale ti sembra migliore.
Se, però, non hai posizioni aperte, allora puoi usare BARINDEX al posto di TRADEINDEX:
IF (BarIndex MOD 5) = 0 THEN //MOD restituisce il resto della divisione
.
.
.
ENDIF
sempre sostituendo il 5 con il valore c he vuoi testare. Con quest’ultimo esempio la strategia ti apre una posizione (se ci sono le condizioni che deciderai tu) ogni “n” giorni.
Se, invece, vuoi aprire una posizione ogni “n” giorni DOPO che una precedente posizione è stata chiusa allora è un pò più complicato:
ONCE MioBarIndex = 0 //inizializzare la variabile a ZERO
MioBarIndex = MioBarIndex + 1 //incrementala ad ogni nuova candela
IF OnMarket THEN
MioBarIndex = 0 //Riparti da ZERO ad ogni trade
ENDIF
IF MioBarIndex => 5 THEN //Ogni 5 (o n candele che vorrai)
.
. //qui metti le condizioni per entrare LONG/SHORT
.
ENDIF
Va bene?
Grezie Rob
di dove sei? sarebbe da pagarti un caffè come minimo
Ah…Ah…Ah… Grazie per il caffè, fai come se l’avessi già bevuto.
Sono della provincia di Pisa.
Molto utile grazie a tutti per il contributo. Come faccio però per farmi restituire il numero dei giorni da quando il sistema è partito? Cioè sto cercando un modo per cui io faccio partire il mio sistema oggi domani si incrementa di 1, poi di 2 ecc… Oppure anche fissare la data di oggi e come scorre il tempo fargli contare il numero delle candele avendo come riferimento la data di oggi. Quindi banalmente su TF da 1h domani sarà 24… dopodomani 48…ecc.. ma sempre tenendo fermo il parametro oggi. Grazie per l’aiuto.
BarIndex viene fatto partire da 0 quando la strategia parte, ovviamente ci sono le barre precaricate, che puoi azzerare.
Questo codice ti permette di vedere, nella finestra delle variabili del backtest, il valore di BarIndex:
Defparam PreloadBars = 0
Buy at -close Limit
Graph BarIndex
Provala così, poi metti le doppie barre dei commenti alla linea 1 e ripeti la prova per vedere la differenza.
Se vuoi puoi usare un tuo contatore personalizzato, ad esempio per contare le barre dopo ogni incrocio di una media col prezzo:
Once Barre = 0
Media = average[20,0](close)
If close CROSSES OVER Media OR close CROSSES UNDER Media then
Barre = 0
Endif
Barre = Barre + 1
Buy at -close Limit
Graph Barre
Le due istruzioni BUY un po’ strane che vedi servono solo ad evitare che ProOrder ti segnali che occorre almeno un’istruzione BUY, non fanno assolutamente niente perché non esisterà mai un prezzo negativo.