Buongiorno a tutti,
sono alle prese con un backtest di una strategia, ma ovviamente non funziona ed entra in posizione in momenti errati rispetto a quanto dovrebbe fare.
Ecco il codice:
DEFPARAM CumulateOrders = false // Posizioni cumulate disattivate
BollInf = Average[20](close)-2*std[20](close)
BollSup = Average[20](close)+2*std[20](close)
pB = (close - BollInf) / (BollSup - BollInf)
mfi = moneyflowindex[10]
st = supertrend[1.5,10]
// Condizioni per entrare su posizioni long
IF NOT LongOnMarket AND pB>0.80 and mfi>80 and close>st THEN
BUY 10000 CASH AT high[1] STOP
ENDIF
// Condizioni per uscire da posizioni long
If LongOnMarket AND close<st THEN
SELL AT MARKET
ENDIF
// Condizioni per entrare su posizioni short
IF NOT ShortOnMarket AND pB<0.20 and mfi<20 and close<st THEN
SELLSHORT 10000 CASH AT low[1] STOP
ENDIF
// Condizioni per uscire da posizioni short
If ShortOnMarket AND close>st THEN
BUY AT MARKET
ENDIF
// Stop e target: Inserisci qui i tuoi stop di protezione e profit target
SET STOP %LOSS 10
Ho provato a guardare sul grafico le entrate in posizione, ma sembra che non seguano il %B maggiore di 0,80 ed il MFI maggiore di 80.
Grazie a chi mi aiuterà!
Su quale strumento e TF lo hai provato?
L’ho provato su azioni statunitensi e come time frame sempre sul giornaliero.
Non riesco a capire perchè entra in posizione in momenti diversi da quelli che in teoria ho impostato (%B maggiore di 0,80 e MFI maggiore di 80 per le posizioni long ad esempio)…
Dovresti tracciare un grafico di tutti gli indicatori nei test retrospettivi per vedere quale non è calcolato correttamente.
graph BollInf
graph BollSup
graph pB
graph mfi
graph st
Ho capito dove il sistema sbaglia, ma non riesco a capire come correggerlo.
In pratica ogni volta che si chiude una posizione short mi apre subito una posizione long anche se i parametri non sono rispettati.
Vi invio in allegato l’immagine da cui si vede che appena chiusa la posizione short me ne apre subito una long senza motivo.
Il problema è nell’ordine pendente, tu usi ordini STOP. Gli stop si usano solitamente per acquistare/vendere ad un prezzo peggiore dell’attuale. L’ordine STOP viene esegui al prezzo da te indicato oppure ad uno peggiore, ma viene SEMPRE eseguito.
Nel tuo caso tu compri al MASSIMO della candela precedente o vendi al MINIMO della candela precedente. Quasi sempre questi livelli sono superati nella candela successiva, quindi può darsi sia opportuno usare LIMIT.
Devi fare tu una verifica sul prezzo (dato da CLOSE) e vedere se il prezzo a cui vuoi acquistare/vendere è migliore o peggiore. Se è peggiore usa STOP, se è migliore usa LIMIT.
A differenza dello STOP, che viene sempre eseguito, l’ordine LIMNIT viene eseguito solo se raggiunge quel prezzo o uno migliore!