begtime=090000
endtime=110000
mycontracts=3500
c0=abs(100-(dopen(0)*100)/dhigh(1))
c1=abs(100-(dopen(0)*100)/dlow(1))
c2=dopen(0)<dlow(1)
c3=dopen(0)>dhigh(1)
long=(not longonmarket) and c1>1 and (dopen(0)<dlow(1))
Buy mycontracts contract at long stop
if longonmarket and time=170000 then
sell at market
endif
set stop loss 50
set target profit 100
//graphonprice c1 coloured(0,255,0,255)
graph c1
graph c2
ciao roberto, stavo tentando di scrivere una strategia che in base al gap rispetto al dlow(1) apre la posizione con un ordine pendente ad apertura mercato del giorno dopo ma mi ecsono sempre risultati errati, appena puoi vedi dove ho sbagliato, grazie
Che errori hai riscontrato?
praticamente compra ogni ora senza rispettare ne la percentuale e ne la condizione di avere un apertura inferiore al minimo del giorno precedente
Long è una condizione logica, 0 (falso) o 1 (vero).
Tu hai usato questo valore per entrare con un ordine STOP alla riga 10. Siccome 0 e 1 sono inferiori al prezzo corrente, entra subito.
Se alla riga 10 usi LIMIT non entrerà mai (o quasi, dipende con quale strumento lo usi).
Alla riga 10 devi indicare il prezzo a cui entrare, usando STOP se è maggiore o LIMIT se è inferiore. Non puoi metterli casualmente. Nella foto allegata vedi il punto BLU che è il prezzo corrente e le linee VERDE e ROSSA che sono il prezzo d’entrata.
Long, LongOnMarket ecc… devi usarle come condizioni per mettere l’ordine pendente, non come prezzo.
e come faccio per indicare quel prezzo( dettato dal calcolo del gap) come ordine pendente?
A quale prezzo?
Non ne hai indicati nessuno, hai solo messo delle espressioni logiche.
Che timeframe vuoi usare?
io vorrei usare il tf ad 1 ora ma se la condizione si verifica anche dopo 1 secondo dall apertura il sistema deve entrare con un ordine pendente precedentemente creato
A quali prezzi vuoi entrare?
voglio entrare al prezzo di apertura solo se il gap rispetto alla giornata precedente supera l’1%
sto facendo dei test ma mi compra sempre sulla candela successiva
Non hai specificato se Gap UP o Down, io ho usato quello UP:
begtime=090000
endtime=110000
mycontracts=3500
IF OnMarket OR IntraDayBarIndex = 0 THEN
EntryPrice = 0
ENDIF
c1 = (((Dopen(0) / Dhigh(1)) - 1) * 100) > 1
IF c1 AND EntryPrice = 0 AND Time >= begtime AND Time <= endtime AND Not OnMarket THEN
EntryPrice = Dopen(0)
ENDIF
IF close > EntryPrice THEN
Buy mycontracts contract at EntryPrice LIMIT
ELSIF close < EntryPrice THEN
Buy mycontracts contract at EntryPrice STOP
ENDIF
if longonmarket and time=170000 then
sell at market
endif
set stop ploss 50
set target pprofit 100
//graph c1 coloured(255,0,0,255)
//graph (((Dopen(0) / Dhigh(1)) - 1) * 100)
//graphonprice Dopen(0)
//graphonprice Dhigh(1) coloured(0,0,255,255)
grazie, ho provato il codice su bpm ma continua ad entrare quando vuole e mai alle 9 in punto quando si verifica la condizione, io vorrei entrare alle 9 in punto quando si verifica il gap rispetto al giorno precedente ed anche una sola barra mi sposterebbe parecchi punti ed in ogni caso mi interessava anche a livello didattico di programmazione, se il livello di ordine pendente è stabilito in dopen(0) perchè compra comunque alla candela successiva o addirittura alle 10 oppure le 11? a me interessa esclusivamente l’ingresso ad apertura
Se vuoi entrare alle 9 esatte devi mettere un ordine a mercato, non pendente.
come devo fare per mettere un ordine a mercato alle 9 tenendo conto Dell apertura?
If time = 090000 and open = … then
Buy 1 contract at Market
Endif
Al posto di “=“ e dei puntini metti la relazione tra open e quello che vuoi tu.