Salve, ho un problema con gli ingressi e le uscite di un codice su i
future cme-mini .
- Future utilizzato : Micro E-mini S&P500 Full0621 (Il problema si verifica su altri future)
- Orario di trading: UTC-6 (il problema rimane anche se utilizzo l’orario del pc)
DEFPARAM CumulateOrders = False
BUY 1 contract AT DHigh(0) stop
SELL 1 contract AT DLow(0) stop
In pratica deve comprare alla rottura del massimo del giorno precedente
e vendere al minimo del giorno precedente.
Questo non accade e vende e compra su livelli a caso, di seguito lo screenshot.
Qualcuno può Aiutarmi?
Grazie in anticipo.
Dovrebbe essere dovuto al fatto che il nuovo giorno inizia alle 06:00 di mattina, non alle 00:00. Questo perché va con gli orari della Borsa di Chicago.
Creati questi indicatori, una sola riga ciascuno e vedrai le differenze con altri strumenti:
Return OpenDay as “OpenDay”
Return OpenDate as “OpenDate”
Return OpenDayOfWeek as “OpenDayOfWeek”
Return OpenTime as “OpenTime”
Falli girare su un time frame di 1 ora o inferiore.
Grazie per la celere risposta.
- Ho provato i vari indicatori, ma non ricavo informazioni che mi possono aiutare;
- Non posso scendere di time frame perché ho una versione di prova;
- Ho provato a cambiare fuso orario del mio pc, usando UTC-6 ma il problema sussiste;
- Ho provato ad utilizzare la funzione fuso orario messa a disposizione da prorealtime (vedi allegato) ma niente.
Potresti gentilmente provare a lanciare il codice su Micro E-mini S&P500 Full0621
timeframe daily per vedere se succede anche a te?
Grazie e buon sabato
Purtroppo con i dati fine giornata non puoi fare prove.
Ci sono vari tipi di futures SP500 e non hanno tutti gli stessi orari di trading e d’inizio e fine giornata.
Chiedo a qualcuno della comunità con conto reale, se eseguendo il codice postato all’inizio con time frame orario ha ingressi e uscite coerenti.
Buona giornata
su Micro E-mini S&P500 Full0621
Per entrare sul giorno precedente devi usare (1), non (0) alle righe 3-4.
Il codice è giusto:
-è un ordine stop che si attiva al superamento del max o del min del giorno precedente.
L’ho fatto girare su euro bund (nostro fuso orario) e funzione in allegato le entry della strategia
Il giorno precedente è (1), non (0).
provare per credere.
se inserisco (1)
DEFPARAM CumulateOrders = False
BUY 1 contract AT DHigh(1) stop
SELL 1 contract AT DLow(1) stop
prende il max o min di due giorni fa
Su grafuici intraday funziona, sul daily no.
Come ti ho detto per questo strumento le candele dalle 00:00 alle 06:00 fanno parte del giorno PRECEDENTE, il nuovo giorno inizia alle 07:00.
Dclose, Dhigh, Dlowe Dopen sono fatte per i timeframe intraday, sul daily usa normalmente Open, High, Low, e Close, senza niente o con [0] per la barra corrente che è quella appena chiusa, oppure con [1] per quella precedente a quella chiusa.
Inoltre aggiungi queste righe alla fine del tuo codice, vedrai le linee sul grafico dei valori minimi e massimi:
N = 0 //1 per iul giorno precedente
graphonprice dhigh(N) coloured(0,0,255,255)
graphonprice dlow(N) coloured(255,0,0,255)
graphonprice high[N] coloured(0,255,0,255)
graphonprice low[N] coloured(0,128,0,200)
C’è poi da considerare che tu usi un ordine STOP per il BUY, ma se il prezzo attuale fosse maggiore del prezzo d’entrata occorerebbe LIMIT.
Se il prezzo ,ad esempio di apertura della nuova barra, fosse più alto del dhigh(0) allora l’ ordine stop sarebbe trattato come un ordine market, entrando appena possibile.
Continuano le mie frustranti prove su future stranieri.
Ho provato a fare le cose semplici:
- compra all’open della prossima barra al meglio, se il max di oggi è superiore a quello di ieri.
- chiudo al contrario
DEFPARAM CumulateOrders = False
if high>high[1] then
BUY 1 contract AT market nextbaropen
endif
if low<low[1] then
SELL 1 contract AT market nextbaropen
endif
y=high[1]
graphonprice y
Risultato:
- non compra e vende a caso
Sono io che non sono capace ho è la piattaforma che non va?