BARINDEX
Forums › ProRealTime forum Italiano › Supporto ProOrder › BARINDEX
- This topic has 10 replies, 2 voices, and was last updated 2 years ago by robertogozzi.
-
-
11/07/2017 at 12:24 AM #5175211/07/2017 at 6:47 AM #51758
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).
11/07/2017 at 6:54 AM #51759Esiste 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.
11/07/2017 at 12:50 PM #5180211/07/2017 at 3:52 PM #51830Utilizza 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:
12345IF (TradeIndex MOD 5) = 0 THEN //MOD restituisce il resto della divisione...ENDIFper cui potrai aprire una posizione alla barra 5, 10, 15, ecc… stabilirai tu quando fermarti.
11/07/2017 at 8:04 PM #51856Roberto 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
11/07/2017 at 8:17 PM #51859Se 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:
12345IF (BarIndex MOD 5) = 0 THEN //MOD restituisce il resto della divisione...ENDIFsempre 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:
12345678910ONCE MioBarIndex = 0 //inizializzare la variabile a ZEROMioBarIndex = MioBarIndex + 1 //incrementala ad ogni nuova candelaIF OnMarket THENMioBarIndex = 0 //Riparti da ZERO ad ogni tradeENDIFIF MioBarIndex => 5 THEN //Ogni 5 (o n candele che vorrai).. //qui metti le condizioni per entrare LONG/SHORT.ENDIFVa bene?
11/07/2017 at 8:32 PM #5186311/07/2017 at 9:47 PM #51867Ah…Ah…Ah… Grazie per il caffè, fai come se l’avessi già bevuto.
Sono della provincia di Pisa.
12/12/2021 at 10:36 AM #183183Molto 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.
12/12/2021 at 11:35 AM #183194BarIndex 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:
123Defparam PreloadBars = 0Buy at -close LimitGraph BarIndexProvala 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:
12345678Once Barre = 0Media = average[20,0](close)If close CROSSES OVER Media OR close CROSSES UNDER Media thenBarre = 0EndifBarre = Barre + 1Buy at -close LimitGraph BarreLe 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.
-
AuthorPosts