Salve a tutti vorrei capire se il codice che ho scritto va bene per dire al sistema che alla chiusura della candela precedente il portafoglio era investito, e nelle chiusura corrente il portafoglio non è più investito.
Il codice mi servirebbe per aprire un posizione dopo passate max 2 barre dopo l’ultima operazione chiusa.
c1 = close[1]<>0 and onmarket
c2 = close<>0 and not onmarket
if c1 and c2 then
sell 1 contract at market
endif
Prova questo codice, che ho adattato dal manuale: https://www.prorealcode.com/documentation/tradeindex/
if NotOnMarket and BARINDEX-TRADEINDEX(1)=2 then
BUY 1 CONTRACT AT MARKET
endif
Non l’ho provato, ma sembra logico.
Quanto al tuo esempio, close è sempre <>0 perché è il prezzo di chiusura della candela e nessun strumento potrà mai avere valore ZERO!!!
ok grazie ho provato è sembra funzionare.
Volevo solo capire sul comando TRADEINDEX, cioè se prende l’ultima entrata oppure l’ultimo ordine?
BARINDEX è in numero progressivo che indica le barre caricate (trascorse) da quando una strategia viene avviata ed inizia con 0, la prima barra.
TRADEINDEX è il numero della barra (presa da BARINDEX) in cui un trade è iniziato, TRADEINDEX o TRADEINDEX(1) sono equivalenti, restituiscono sempre l’ultimo ordine eseguito, per cui se un operazione è ancora in corso si tratta di quello corrente, per il penultimo devi scrivere TRADEINDEX(2) .
Questo è il link ad un thread in inglese https://www.prorealcode.com/topic/tradeindex-define-please/.
Questo è una semplicissima strategia, dove, con GRAPH, puoi vedere i valori di BARINDEX e TRADEINDEX
DEFPARAM CumulateOrders = FALSE
DEFPARAM FlatBefore = 090000
DEFPARAM FlatAfter = 180000
IF Adx[14] > 40 AND close > open THEN
BUY 1 CONTRACT AT MARKET
ENDIF
GRAPH BarIndex AS "Bix"
GRAPH Tradeindex AS "Trx0"
GRAPH Tradeindex(1) AS "Trx1"
GRAPH Tradeindex(2) AS "Trx2"
Nello screenshot allegato puoi vedere la finestra (all’incirca nella parte centrale dell’immagine) delle variabili con i valori evidenziati.
Adesso è tutto chiaro.
Pero mi viene da chiedere la variabile GRAPH che avete utilizzato nel codice sopra, che funzione avrebbe in questo caso?
GRAPH è un’istruzione, non una variabile. L’ho usata pet vedere, nel backtest, il valotr delle variabili/costanti.
Serve per il debugging.