Salve,
sto cercando di testare un sistema che prevede il buy se il prezzo raggiunge il prezzo massimo del giorno precedente oppure il sell se il prezzo raggiunge il prezzo minimo del giorno precedente(time frame daily), con chiusura della posizione al prezzo di chiusura del giorno in cui apro la posizione.
Il sistema deve prevedere anche che ci possono essere dei giorni in cui il sistema apre sia una posizione Buy sia una posizione Sell, che in questo caso vanno a generare una perdita chiaramente.
Capisco che devo settare un ordine pending (ad esempio “BUY 1 CONTRACT AT high stop”) ma non riesco a capire come poter impostare la chiusura della posizione al prezzo di chiusura del giorno in cui apro la posizione.
Attendo gentilmente vostro eventuale aiuto
NON si possono aprire posizioni opposte nella stessa strategia.
Se vai LONG viene prima chiusa l’operazione SHORT in corso, se esiste, dopodiché entra LONG. Viceversa se vuoi andare SHORT. In pratica viene fatto uno Stop & Reverse (chiusura ed inversione).
Prova questo:
DEFPARAM CumulateOrders = false
Timeframe(Daily,UpdateOnClose)
DDhigh = high
DDlow = low
Timeframe(default)
IF OnMarket AND DDhigh <> DDhigh[1] THEN
SELL AT Market
EXITSHORT AT Market
ENDIF
IF close < DDhigh AND Not LongOnMarket THEN
BUY 1 CONTRACT AT DDhigh STOP
ENDIF
IF close > DDlow AND Not ShortOnMarket THEN
SELLSHORT 1 CONTRACT AT DDlow STOP
ENDIF
Salve Roberto,
anzitutto grazie. Purtroppo rimane il solito problema che la chiusura della posizione aperta non avviene al prezzo di chiusura del giorno in cui apro la posizione ma all’apertura del giorno successivo….pensi che sia possibile che l’exit della posizione avvenga a tale prezzo di chiusura oppure è qualcosa che non si può gestire?
Grazie di nuovo per l’eventuale aiuto.
Si, si può, usando come default un timeframe intraday, ad esempio di 1 ora e chiudere ad una certa ora PRIMA della fine della candela giornaliera. Io ho messo le ore 220000, ma puoi mettere quello che vuoi (purché in quell’ora si chiuda la candela intraday che hai scelto, se scegli un’ora non puoi mettere 213000 o 223000, perché a quell’ora nessuna candela oraria chiude):
Eccolo:
DEFPARAM CumulateOrders = false
OraChiusura = 220000
Timeframe(Daily,UpdateOnClose)
DDhigh = high
DDlow = low
Timeframe(default)
IF OnMarket AND Time = OraChiusura THEN
SELL AT Market
EXITSHORT AT Market
ENDIF
IF close < DDhigh AND Not LongOnMarket AND Time < OraChiusura THEN
BUY 1 CONTRACT AT DDhigh STOP
ENDIF
IF close > DDlow AND Not ShortOnMarket AND Time < OraChiusura THEN
SELLSHORT 1 CONTRACT AT DDlow STOP
ENDIF
Ricordati di provarlo usando un grafico intraday la cui candela chiuda alle 22. Può essere 1 ora o 1 minuto o 10 secondi, ma NON 4 ore perché la candela a 4 ore non chiude alle 22.