Ciao a tutti,
perchè la posizione non si apre nel momento esatto del breakout ma all’apertura della candela successiva?
Che codice devo usare?
Grazie
Perché le strategie vengono eseguite alla chiusura di ogni barra, quindi se una condizione è verificata, come una rottura nel tuo caso, l’operazione viene subito aperta che è all’inizio della nuova candela.
Per entrare al mercato alla rottura esatta devi predisporre, la candela precedente, il prezzo d’entrata ed inserire un ordine pendente.
Gli ordini pendenti valgono solo per una candela, quindi se vuoi che valga più a lungo devi reinserirlo ad ogni nuova candela.
Grazie Roberto,
l’ordine pendente va quindi inserito con: SELL (o BUY) 100 CASH AT <price> STOP?
Si, va bene.
STOP va bene perché il prezzo d’ingresso è più sfavorevole rispetto a quello corrente, trattandosi di un breakout.
Non riesco però ad aprire la posizione quando il prezzo (inferiore) eguaglia il minimo della candela precedente, pur mettendo STOP mi apre la posizione all’apertura del giorno dopo
>> Senza il codice non so dirti niente di preciso <<.
Posso solo ricordarti che uno ordine pendente deve essere STOP quando il prezzo di entrata è peggiorativo rispetto a quello corrente, mentre LIMIT se è migliorativo.
A questo devi aggiungere l’eventuale distanza minima richiesta dal broker, per cui se IG chiede 6 punti mnimi e tu vuoi entrare Long a 12100, mentre adesso il prezzo è 12105, in teoria sarebbe peggiorativo perché chiedi di comprare a 12100 quello che oggi vale 12105, però siccome IG richiede almeno 6 punti di distanza, dovresti acquistare a 12099. Quindi, i 12100 che tu hai chiesto sono migliorativi rispetto a dove avrebbe dovuto essere il tuo ordine, in tal modo il tuo ordine viene messo come LIMIT, se non addirirrura rifiutato perché troppo vicino!
Gli ordini pendenti, in automatico, non sono semplici da trattare.
inl = Dlow(1)
c1 = DOpen(0) < DLow(1)
c2 = close CROSSES OVER Dlow(1)
IF c1 AND c2 THEN
BUY 100 CASH AT inl STOP
ENDIF
L’ordine pendente dovrebbe essere LIMIT, perché tu dai l’ordine di acquisto al prezzo INL che è DLOW(0) e che è stato appena passato (altrimenti C2 non potrebbe essere vero).
In pratica tu aspetti che venga superato DLOW(0) al rialzo per immettere un ordine pendente inferiore a DLOW(0), in partica quando ritraccia. Può succedere, ma non è facile!
Ad ogni modo, così com’è, sul DAX daily accumula posizioni su posizioni e non ne chiude mai una perché non c’è né uno SL, né un TP.
c1 = Open[0] < (Low[1]*0.998)
IF c1 THEN
inl = low[1]
BUY 100 CASH AT inl STOP
ENDIF
quello che dici è chiaro, a tal proposito ho provato a modificare il codice togliendo la condizione di breakout al rialzo del minimo precedente proprio per far si che al verificarsi della condizione “c1” parta un BUY STOP solo se il prezzo arriva la valore di “inl” ma questo non avviene, continua ad aprire la posizione alla candela successiva