Salve vorrei un aiuto per impostare un strategia dove vado ad entrare a mercato in long se il prezzo di oggi ha superato il max del giorno prima, e in short se ha superato al ribasso il min del giorno prima.
grazie.
se utilizzo il comando dhigh(n) e dlow (n) per richiamare il max e il min del giorno prima non mi funziona quando vado a fare il becktest perchè mi entra in altri prezzi di mercato.
Se usi TF (TimeFrame) giornaliero è un problema, perché con DHIGH e DLOW riesci ad avere i prezzi min/max di riferimento, solo che il test avviene alla chiusura della candela successiva, quindi può darsi che i prezzi minimi/massimi siano stati superati in giornata e siano poi rientrati, oppure c he vengano superati il giorno successivo ancora, non puoi saperlo all’interno della candela stessa come fosse un’intraday.
L’unico è usarlo con TF più piccoli, 1 ora o 4 ore, questo è il mio test su EurUsd a 4 ore (cambia l’orario del test per fare la verifica sulla prima candela del nuovo giorno):
Defparam cumulateorders = false
ONCE Massimo = 999999
ONCE Minimo = 0
if time = 050000 then //050000 per TF 4 ore (ore 010000 per TF 1 ora) con IG
Massimo = Dhigh(0)
Minimo = Dlow(0)
endif
IF close > Massimo THEN
Buy 1 contract at market
ENDIF
IF close < minimo THEN
sellshort 1 contract at market
ENDIF
//
//GRAPH Massimo as "Max"
//GRAPH Minimo AS "Min"
Fai dei test, perché gli orari delle candcele in realtà sono relativi alla seconda candela, perché in effetti la procedura viene eseguita prima che inizi la seconda candela del giorno.
Se invece vorrei un time frame 15 min come dovrei mettere su time?
grazie
Dovrebbe essere 001500.
Per 5 minuti 000500, per 1 minuto 000100, ecc…
Però non ho provato, vado solo per deduzione rispetto alle 4 ore ed 1 ora che, invece, avevo provato.
Ciao Luigi, abbiamo lo stesso problema….
sto cercando di risolverlo cercando di anticipare il trend usando lo stocastico , ma se pro real time potesse aggiungere la funzione “apri a questa barra ” e non “apertura alla barra successiva”, avremmo già risolto. In pratica :
fermo restando che la prima candela deve essere quella che viene analizzata per le condizioni, qui si verificano le condizioni long o short; se nelle istruzioni diciamo “massimi e minimi di ieri”, apre alla terza candela , non alla seconda.
Se mettiamo
vai long se prezzo > prezzo max chiusura
(non mettendo “massimo di ieri”)
apre domani ma noi domani non sappiamo se p>pmax ieri o p<pmin ieri….
Ciao andreag76, le strategie vengono eseguite sempre dopo la chiusura di ciascuna barra, prima che si apra la successiva, per cui ogni istruzione vale per la barra/candela successiva a quella appena chiusa.
Se vuoi posticipare di qualche candela l’apertura di una posizione, sarà sufficiente contare le barre trascorse da quando le condizioni sono verificate (1, 2,… barre).
Nel tuo test “se prezzo > prezzo max di chiusura” le due cose sono identiche, perché CLOSE è il prezzo di chiusura della candela appena chiusa e non può che essere identico al prezzo max di chiusura!
Purtroppo fino alla nuova versione sganciata dai timeframe non sarà mai possibile aprire una posizione al verificarsi di PREZZO > PREZZO CHIUSURA perché bisognerà attendere sempre la chiusura della barra successiva e, nel frattempo, il prezzo potrebbe avere superato il max di chiusura di un bel pò, oppure averlo superato e poi essere tornato indietro!
Praticamente su candele giornaliere ogni nuovo test delle condizioni non può che essere fatto, per com’è impostata adesso la piattaforma, dopo 24 ore.
Ciao Roberto,
in pratica la strategia del breakout con prt non funziona. Anche se abbasso il timeframe il problema rimane e questo lo devono risolvere quelli di Prt….
vedi post “trading in giorni specifici”
ONCE Massimo = 999999
con questo comando che condizione viene inserita?
Grazie!
La riga
ONCE Massimo = 999999
serve affinché inizialmente la riga 12 non sia eseguita, perché se mettessi 0, eseguirebbe subito un BUY dal momento che CLOSE è sempre > 0!
Capito. Quindi la variabile massimo parte con quel valore che poi viene sostituito con il massimo daily. Se invece avessi omesso di assegnare un valore alla variabile, lo avrebbe comunque processato il close > massimo . Tutto chiaro. Grazie!