R05Participant
Veteran
Gent.mi l’idea che ho è la seguente: prendo in considerazione sul time frame a 30 minuti solo quei massimi che superano la banda di bollinger: nell’esempio allegato nel file massimo abbiamo un massimo alle ore 10; il mio punto di partenza è questo, nel senso che se devo fare qualcosa, la faccio dalle 10 in poi e solo short e solo quando il prezzo una volta salito sopra questo massimo lo ritesta. Ora, non potendo automatizzare in un unico time frame (infatti nella candela successiva va sopra e poi riscende, ma con l’unico time frame mi aprirebbe l’operazione alle 11), mi sposto su un time frame più piccolo.
L’altro time frame che stavo prendendo in considerazione è 1 minuto: dalle 10:30 il prezzo sale sopra il massimo delle 10 sul time frame a 30 minuti, poi nella candela delle 10:38 chiude sotto il massimo in questione; in questo momento aprirò una posizione short con stop sopra il massimo avuto a quel momento. Vi allego il file 1 minuto: la freccia nera lunga individua il massimo del time frame dalle 10 alle 10:30; il prezzo sale e poi alle 10:38 chiude sotto il massimo del time frame 30 minuti. Entrerò short li.
Viceversa per il long.
R05Participant
Veteran
Vorrei specificare meglio: a 1 minuto il prezzo deve salire sopra il massimo a 30 e avere una candela che chiuda sopra; poi successivamente deve formarsi una candela che chiuda sotto il massimo in questione: solo allora aprirò una posizione short. Ad esempio se, per il caso di prima, avessi avuto alle 10:31 una candela che andava sopra il massimo e chiudeva sotto il massimo stesso nella stessa candela, non veniva presa in considerazione nessuna operazione.
Posta il codice che hai già per un unico TF e poi te lo modifico per la versione MTF.
R05Participant
Veteran
Grazie Roberto, gentilissimo. Credo che uno dei problemi che non sono riuscito a risolvere, sia quello di entrare in posizione quando la candela a 1 minuto, per il caso long, chiuda prima sopra il massimo e poi successivamente in un’altra candela chiuda sotto il massimo stesso.
defparam cumulateorders=false
defparam flatbefore = 090000
defparam flatafter = 173000
// Condizioni per entrare long
//time frame 30 minuti
timeframe(30 minutes,updateonclose)
indicator2 = Bollingerdown[20](close)
c2 = low<indicator2
//time frame 1 minuto
timeframe(default)
q = close
q2= low
if c2 and q > c1 and q2 < c2 then
buy 1 CONTRACT AT MARKET
ENDIF
if low <= c2 then
StopLoss = abs(low[1] - c2) / pipsize
SET STOP pLOSS StopLoss
SET TARGET pPROFIT 15
endif
//Condizioni per entrare short
//time frame 30 minuti
timeframe(30 minutes,updateonclose)
indicator1 = BollingerUp[20](close)
c1 = high>indicator1
//time frame 1 minuto
timeframe(default)
i = close
i2= high
if c1 and i < c1 and i2 > c1 then
sellshort 1 CONTRACT AT MARKET
ENDIF
IF high >= c1 THEN
StopLoss = abs(high[1] - c1) / pipsize
SET STOP pLOSS StopLoss
SET TARGET pPROFIT 15
SELLSHORT 1 CONTRACT AT high[1] stop
ENDIF
Voglio farti rilevare:
- alle righe 18 e 39 tu fai confronti con c1 e c, ma queste due variabili sono di tipo logico, non contengono prezzi, mas olo 0 o 1
- dopo le righe 11 e 32 devi salvare, se le condizioni sono vere, i valori di quei minimi e massimi, per poterli utilizzare successivamente
Comunque ti sto facendo le modifiche, tra poco posto la versione aggiornata.
Ecco la versione modificata:
defparam cumulateorders=false
defparam flatbefore = 090000
defparam flatafter = 173000
timeframe(30 minutes,updateonclose)
indicator2 = Bollingerdown[20](close)
// Condizioni per entrare long
c2 = low<indicator2
IF c2 THEN
Minimo = low
ENDIF
//Condizioni per entrare short
indicator1 = BollingerUp[20](close)
c1 = high>indicator1
IF c1 THEN
Massimo = high
ENDIF
timeframe(default) //time frame 1 minuto
// Long
if c2 and low CROSSES OVER Minimo THEN
buy 1 CONTRACT AT MARKET
StopLoss = abs(low[1] - Minimo) / pipsize
SET STOP pLOSS StopLoss
SET TARGET pPROFIT 15
endif
//Short
if c1 and high CROSSES OVER Minimo THEN
sellshort 1 CONTRACT AT MARKET
StopLoss = abs(high[1] - Massimo) / pipsize
SET STOP pLOSS StopLoss
SET TARGET pPROFIT 15
SELLSHORT 1 CONTRACT AT high[1] stop
ENDIF
R05Participant
Veteran
Grazie Roberto lo sto provando. Alla riga 28 ho modificato minimo con massimo, spero di non aver sbagliato.
Per il resto ho riscontrato due errori:
- alle volte fa aprire delle operazioni sbagliate, che non dovevano essere aperte (ho allegato la foto)
- lo stop loss non è corretto: non lo metto sul massimo o minimo del 30 minuti
Per la riga 28 hai fatto bene, è stata un mia svista.
Per le operazioni che non vanno bene specifa lo strumento, è il DAX?
Dove lo vuoi calcolare lo SL?