Buongiorno Roberto, spero di non approfittarmi troppo della tua pazienza però mi trovo davanti a un quesito che non riesco a spiegarmi.
sto testando un sistema in cui fornisco prezzo di ingresso short e long solo in alcuni casi. ho impostato anche un flat time che fa partire tutti i contratti solo dopo le 9 del mattino.
le condizioni di acquisto le determino a inizio giornata mentre poi lavoro su un timeframe di 5min.
La mia domanda è, come mai parte l’acquisto (ti allego foto) verso le 10 del mattino quando ormai non ci sono più le condizioni? le condizioni richieste si erano verificate verso le 4 c.ca del mattino.
Ti allego immagine e PRT code.
Nel caso volessi provare a backtestare uso timeframe5min con 100.000 unità su eur/usd.
Grazie mille
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
// Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.
DEFPARAM FLATBEFORE = 090000
// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"
DEFPARAM FLATAFTER = 221500
// Impedisce al sistema di tradare in giorni specifici della settimana
//daysForbiddenEntry = OpenDayOfWeek = 1 OR OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
timeframe (daily,UpdateOnClose)
giornipassati=1
ratio1=abs(dclose(1*giornipassati)-dopen(1*giornipassati))
range2=dhigh(2*giornipassati)-dlow(2*giornipassati)
range1=dhigh(1*giornipassati)-dlow(1*giornipassati)
ave2=dlow(2)+(range2/2)
ave1=dlow(1)+(range1/2)
aveMove= ave1+(ave1-ave2)//+(ind[1*giornipassati]-ind[2*giornipassati])
BodyP=(ratio1)*0.6
rangeP=(range1)*0.7
topP=aveMove+(bodyP/2)
BotP=aveMove-(bodyP/2)
highP= ((rangep-bodyp)/2)
//lowP= ((rangep-bodyp)/2)
timeframe(5mn, UpdateOnClose )
IF intradaybarindex = 0 then
countposition=0
endif
c1=close crosses under topP
c2=close crosses over botp
c3= (countposition < 2)
if c1 and c3 then
sellshort 1 contract at market
countposition=countposition + 1
endif
if c2 and c3 then
buy 1 contract at market
countposition=countposition + 1
endif
set target profit highp
set stop loss rangep
Le tue variabili:
topP = aveMove + (bodyP / 2 )
BotP = aveMove – (bodyP / 2 )
Vengono calcolati solo una volta al giorno (con "updateonclose"), quindi stai utilizzando quelli del giorno precedente. Questi valori non cambieranno mai durante il giorno fino alla chiusura della barra giornaliera.
A proposito, FLATBEFORE = 090000 significa che nessun ordine sarà aperto fino alle 9, ma tutti i codici vengono ancora letti e le variabili calcolate!