Ciao a tutti,
scusate ma sto impazzendo dietro ad un problema che non riesco a capire come risolvere.
COSA VOGLIO OTTENERE:
- scansione del mercato giornaliera per identificazione comportamento ricorrente di mercato
COME LO FACCIO
- voglio comprare all’inizio di ogni ora e vendere all’inizio dell’ora successiva (quindi in un determinato orario avrò sia operazione di SELL della posizione aperta all’ora precedente che l’operazione BUY che venderò alla barra successiva)
- Itero su una variabile e creo il rapporto di ottimizzazione.
Di seguito il codice:
DEFPARAM cumulateorders = FALSE
c1= Time = var
//Se ho qualcosa di aperto, VENDO
If LongOnMarket AND c1 THEN
SELL AT MARKET
ENDIF
//Se non ho nulla di aperto, COMPRO
IF NOT LongOnMarket AND c1 THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
Questo però è quello che succede: il sistema compra e vende correttamente ma parte da orari che decide lui e, soprattutto, effettua operazioni un giorno si ed uno no. Sotto ho messo anche un indicatore per evidenziare la barra della giornata.
Sapete aiutarmi?
Grazie mille in anticipo
A me funziona e parte all’orario che ho indicato (orario alla chiusura della candela), non a caso.
Ciao Roberto, scusa per il ritardo nella risposta.
A te funziona come orario ma perchè le barre blu non sono continue? mi sembra che ti apra la posizione un giorno si ed uno no. Sbaglio?
Quello che cerco di fare io è avere un sistema che TUTTI I GIORNI (ovviamente giorni in cui il mercato è aperto) apra la posizione all’inizio della barra oraria e la chiusa all’inizio della barra successiva (per scopi di analisi)
Poi credo che io stia facendo un po’ di confusione con orario Exchange e orario Local, ma quella è una storia a parte
Grazie
Il problema è dovuto al fatto che ProOrder riesce a sapere se un trade è stato aperto, o chiuso, solo alla chiusura della barra dove è successo, quindi un’uscita ed un acquisto in contemporanea, sulla stessa candela, si annullano.
Bisogna che ci sia almeno una candela di differenza. Questo codice entra alla candela successiva, quindi se inizi alle 090000 la prima volta, l’operazione si concluderà alle 090000 del giorno successivo, ma la seguente riapertura avverrà un’ora dopo, cioè alle 10.
Usando più Timeframe, puoi arrivare a fare un’entrata solo un minuto dopo dopo le 090000.
DEFPARAM cumulateorders = FALSE
c1 = Time = 090000
//Se ho qualcosa di aperto, VENDO
If c1 AND OnMarket THEN
SELL AT MARKET
ENDIF
//Se non ho nulla di aperto, COMPRO
IF (c1 AND Not OnMarket) OR (c1[1] AND Not OnMarket AND OnMarket[1]) THEN
BUY 1 CONTRACTS AT MARKET
ENDIF
questo codice esegue l’entrate successive alla prima 1 ora dopo.