Hi guys,
I’m making a strategy for the breakout of the 15 min range of the NY open.
This is the code. I have nice results, but I can’t make the code open sellshort positions, don’t understand why, can somebody help?
Thank you!
Ciao ragazzi,
Sto creando una strategia per la rottura del range di 15 minuti dell’apertura di NY.
Questo è il codice. Ho buoni risultati, ma non riesco a far aprire al codice posizioni sellshort, non capisco perché, qualcuno può aiutarmi?
Grazie!
// Parametri per il trading
defparam flatafter = 200000
defparam flatbefore = 154500
defparam cumulateorders = false
// Intervallo per calcolare il range
startRangeTime = 153000
endRangeTime = 154500
// Inizializzazione delle variabili
if barindex = 0 then
rangeHigh = 0
rangeLow = 0
endif
// Aggiornamento del range durante l'intervallo specificato
if time >= startRangeTime and time <= endRangeTime then
rangeHigh = max(high, rangeHigh)
rangeLow = min(low, rangeLow)
endif
// Condizioni per il breakout (dopo l'intervallo)
if time > endRangeTime then
// Breakout al rialzo
if close > rangeHigh then
buy 1 contract at market
// Breakout al ribasso
elsif close < rangeLow then
sellshort 1 contract at market
endif
endif
Sulla riga 12, rangeHigh = 0 , la riga 18 rangeHigh è impostata su max di (high,rangeHigh). Poiché il massimo > 0 , allora rangeHigh = alto.
Tuttavia, la riga 13 rangeLow = 0, la riga 19 rangeLow è impostata su min di (low, rangeLow). Poiché il basso > 0, allora rangeLow = 0.
Il valore minimo non può mai essere inferiore a zero, quindi la condizione non è mai vera per la riga 28.
Inoltre, la riga 17 non può essere uguale a ‘=’ allo stesso tempo.
Una soluzione semplice, la riga 13 impostata a 1.000.000.
Rimuovi ‘=’ dall’ora di fine della riga 17.
Il prossimo problema sarà l’azzeramento degli intervalli, poiché diventeranno sempre più grandi (alti) o più piccoli (bassi).
Grazie mille intanto per la velocissima risposta. Chiarissimo il concetto sul problema a riga 13 e anche gli altri.
Mi puoi spiegare cosa intendi con l’azzeramento degli intervalli e di perché tenderanno ad aumentare o diminuire?
Grazie infinite!
Aggiungere le righe di codice seguenti alla fine del programma.
Questi dovrebbero evidenziare i livelli di intervallo alto e basso.
Si noterà che, quando il tempo è attivo e un intervallo viene interrotto, il valore dell’intervallo viene aggiornato al nuovo valore.
Basta guardare la gamma alta, questa diventerà sempre più alta ad ogni pausa.
Se in una tendenza, questo potrebbe essere buono ad ogni breakout verso un nuovo massimo di tendenza.
Tuttavia, quando si arriva al punto più alto, non c’è alcuna implementazione nel codice per reimpostare il livello a un livello più basso.
Questo sarebbe lo stesso ma opposto per la pausa bassa.
Col passare del tempo, gli intervalli finiranno sempre più per essere estremamente alti e bassi. Ciò si tradurrà in una notevole quantità di tempo prima che la chiusura possa rompere nuovamente uno qualsiasi dei livelli.
graphonprice rangeHigh coloured("lime")
graphonprice rangeLow coloured("red")
Tieni presente che, in un programma di test retrospettivo, ci sono altre 1000 barre precaricate, come impostazione predefinita, oltre alle barre nel grafico.
Ho aggiunto più unità al grafico per vedere perché la linea bassa non era nella sua posizione predefinita.
Il minimo è stato rotto da qualche parte nella sezione delle barre di precarico.
@Joefalchetto
Pubblica solo nella lingua del forum in cui stai postando. Ad esempio solo l’inglese nei forum di lingua inglese e il francese solo nei forum di lingua francese. Grazie 🙂
Thank you!!
So I imagine that I should reset the interval everyday? There is a function for this?
Grazie!!
Quindi immagino che dovrei reimpostare l’intervallo ogni giorno? C’è una funzione per questo?
Prova quanto segue.
Linea 11,
if intradaybarindex = 0 then
Linea 12,
rangeHigh = low
linea 13,
rangeLow = high
INTRADAYBARINDEX tiene il conto delle barre nel grafico in modo simile a BARINDEX, ma si azzera ogni giorno.
Poiché le linee di intervallo vengono ripristinate ogni giorno, la creazione di valori predefiniti come sopra, aiuta con il ridimensionamento del grafico con le linee di intervallo visualizzate.
@Joefalchetto
Per favore leggi bene le regole basilari ben evidenziate in giallo più sotto.
Grazie 🙂
JSParticipant
Senior
Ciao,
Se utilizzi un intervallo di tempo di 15 minuti e il “range” che vuoi applicare è anch’esso di 15 minuti, puoi recuperare tutte le informazioni con:
defparam flatafter = 200000
defparam flatbefore = 154500
defparam cumulateorders = false
if OpenTime = 153000 then
rangeHigh = High
rangeLow = Low
endif
if close > rangeHigh then
buy 1 contract at market
elsif close < rangeLow then
sellshort 1 contract at market
endif
Ciao, grazie per il tuo tempo!
Ho notato che il codice non chiude le operazioni dopo il tempo selezionato (200000). Qualcuno ha qualche idea su questo?
A me chiude tutte le operazioni alle 20.
Verifica che tu usi una timeframe in cui ci sia una barra che chiude/apre alle ore 20.