Si, sempre alla candela successiva.
Purtroppo le strategie vengono eseguite alla chiusura di una candela, quindi sui 10 minuti può capitare che lo stop sia stato preso già da vari minuti, per cui il reverse in realtà può essere attivato anche a parecchi pips di distanza!
Per ora non c’è una soluzione migliore.
R05Participant
Veteran
Peccato, però almeno è già qualcosa, infatti il backtest migliora.
Grazie come sempre per il tuo aiuto.
R05Participant
Veteran
Anche se, vedendo meglio, il sistema mi fa il reverse a prescindere dalle condizioni di entrata (che possono essere supertrend + regressioni).
Mi sembra che appena prende lo stop, alla candela successiva, a prescindere dalle regressioni, entra in posizione.
Quindi, mi confermeresti, gentilmente, se non ho capito male, che il reverse non può essere fatto seguendo delle proprie condizioni specifiche?
Il reverse, di fatto, non esiste. Esiste semplicemente che al verificarsi di certe condizioni (nel tuo caso uno Stop Loss + altre tue condizioni) si apre un trade nella direzione opposta. E’ un normale trade come qualunque altro, basato sulle condizioni da te impostate.
Non esiste una specifica istruzione che, colpito lo stop loss, ti possa fare entrare nella direzione opposta.
Il codice mi sembra corretto, anche se non l’ho provato.
R05Participant
Veteran
Gent.mo Roberto ti devo chiedere nuovamente scusa perchè il tuo sistema funziona PERFETTAMENTE anche con l’aggiunta delle mie condizioni.
Ho trovato dove era l’errore nel mio codice, avevo messo sia per il supertrend che per la regressione lineare “indicator1” come di seguito:
indicator1 = SuperTrend[3,10]
……..
indicator1 = LinearRegression[34](close)
indicator1 = LinearRegression[89](close)
Ora ho modificato mettendo indicator2 per la regressione lineare a 34 periodi e indicator3 per la regressione lineare a 89 periodi; inoltre, nel reverse non ho inserito di entrare in posizione quando il supertrend cambia colore (perchè avendo già cambiato colore da più di una barra evidentemente non me lo considera) ma quando il prezzo è sopra o sotto il supertrend in concordanza con le regressioni.
Grazie ancora per tutto ma soprattutto scusa per i miei errori.
Ti allego il codice definitivo:
DEFPARAM FLATAFTER=210000 // replace closetime condition
ONCE PositionType = 0 //1=Long 2=Short (servce per vedere il tipo di trade precedente)
BegTime=081000
EndTime=095500
MyContracts=1
indicator1 = SuperTrend[3,10]
c1 = (close > indicator1)
c2 = (close < indicator1)
c3 = (close crosses over indicator1)
c4 = (close crosses under indicator1)
indicator2 = LinearRegression[34](close)
indicator3 = LinearRegression[89](close)
c5 = (indicator2 > indicator3)
c6 = (indicator2 < indicator3)
if intradaybarindex=0 then
maxSetup = 0
minSetup = 0
tradethisday=0
PositionType = 0
elsif barindex=tradeindex then
tradethisday=1
endif
//---------------------------------------------------------------------------------------
// questo è lo Stop & Reverse (preso da https://www.prorealcode.com/topic/stopreverse/)
IF NOT ONMARKET THEN
IF POSITIONPERF(1)<0 AND positiontype=2 and c5 and c1 THEN //qui devi aggiungere le tue condizioni per LONG
BUY MyContracts CONTRACTS AT MARKET
ENDIF
IF POSITIONPERF(1)<0 AND positiontype=1 and c6 and c2 then //qui devi aggiungere le tue condizioni per SHORT
SELLSHORT MyContracts CONTRACTS AT MARKET
ENDIF
ENDIF
//---------------------------------------------------------------------------------------
//individuo maz e minimo prima ora
if time = 081000 then
max10minuti=High
min10minuti=Low
endif
If Time >= BegTime and Time <= EndTime and tradethisday=0 and c1 then
if maxSetup=0 then
maxSetup = max10minuti
endif
Buy mycontracts contract at maxSetup stop
PositionType = 1
endif
If Time >= BegTime and Time <= EndTime and tradethisday=0 and c2 then
if minsetup=0 then
minSetup = min10minuti
endif
SellShort mycontracts contract at minSetup stop
PositionType = 2
endif
If LongOnMarket and c4 then
Sell at market
elsif ShortOnMarket and c3 then
ExitShort at market
endif
set target pprofit 9
R05Participant
Veteran
Gent.mo Roberto oggi, avendo montato il sistema in reale, ho notato che c’è qualcosa che sembrerebbe non andare. Infatti la prima operazione è stata effettuata alle 8:50 senza rispettare il setup ma poi nel reverse il sistema mi ha fatto aprire consecutivamente diverse operazioni long una dietro l’altra. Ti allego i file con le operazioni.
Mi aiuteresti a capire come mai questa situazione?
Ti ringrazio
Hai dimenticato gli allegati.
Ad ogni modo non è un pò presto per mettere la strategia in reale? Io le testo in demo dai 6 ai 12 mesi, prima di provarle in reale.
R05Participant
Veteran
Hai ragione scusami, te li posto
R05Participant
Veteran
Si hai ragione però dato che dal backtest non dava errori particolari e che sono solo 9 punti di guadagno e che li fa nella maggioranza dei casi, con 1 dax 1 euro 1 punto ho pensato che grosse perdite non le avrebbe date, così mi sono buttato.
Ho provato con la versione di cui sopra (post #46464) sul conto reale (solo in backtest) ed oggi mi ha aperto due operazioni, una short alle 08:50 ed una long alle 09:20, sul DAX mini (1 €) e TF 10 minuti, come puoi vedere dal riepilogo.
Verifica di non avere modificato involontariamente qualche parte del codice.
Buongiorno, vi sto seguendo dall’inizio, complimenti per l’ottimo sistema! Ho provato a fare il backtest sul Dax €1 e questa è la equity che mi risulta. Da metà agosto sta andando benissimo, sembra una scalinata! Nei periodi precedenti invece ha sofferto un grosso drawdown. Risulta anche a voi?
R05Participant
Veteran
Come al solito anche questa volta hai ragione: ho sbagliato io; nel reverse non so per quale motivo ma mancava come condizione di entrata anche che il prezzo deve essere sopra o sotto il supertrend. Risolto, montato quello corretto. Eppure sopra lo avevo allegato!
Ti ringrazio di tutto.
Salve mamio, in effetti prima di agosto la performance è meno brillante. Ad ogni modo l’ho testata dal marzo 2016 fino ad oggi e nel complesso mi sembra buona.
Ognuno può provare a fare modifiche per cercare di migliorarla, costa un pò di tempo e fatica, ma sicuramente può tornare utile.
R05Participant
Veteran
Una cosa che si potrebbe provare a fare, come possibile idea, dato che quando entra in reverse raramente prende 2 stop di fila, provare ad entrare con il reverse con 2 contratti in modo da limitare la perdita del primo stop e vedere come va. Come diceva giustamente Roberto occorre fare un pò di prove poi dipende anche il periodo che si prende in considerazione e credo anche dalla fortuna di lanciare il sistema nel momento giusto: nel tuo caso mamio averlo lanciato poco dopo la metà di agosto sarebbe stato eccezionale ma averlo lanciato già qualche giorno prima si andava subito sotto. Un pò come è successo oggi a me: l’ho lanciato e subito stop.
R05Participant
Veteran
Gent.mi riprendo questa strategia in quanto ho notato che lo spread alle 8 influenza e non poco l’equity line. Premetto che chi mi ha esposto tale strategia l’ha sperimentata sui mercati regolamentati e non sui CFD , laddove sicuramente non c’è lo spread di 2 punti, ma si entra in posizione solo se effettivamente quel prezzo viene battuto (o perlomeno così mi è stato detto). Ora, fermo restando che la strategia è comunque buona, in quanto da dei risultati soddisfacenti, vorrei proporre una variante da testare: e cioè quella di entrare LONG non alla rottura del massimo dei 10 minuti ma quando raggiunge il minimo dei 10 minuti; e viceversa per lo SHORT in modo anche da avere un rischio rendimento più favorevole (in tal caso si può anche vedere se si possono fare più punti).
Quindi per meglio spiegarmi:
Barra 10 minuti ad esempio:
- massimo 12500
- minimo 12490
- entrata long a 12490 e non a 12500
- entrata short a 12500 e non a 12490
Fermo restando sempre le altre condizioni: supertrend, regressioni, stop and revers.
Ho provato a modificare il codice nel seguente modo ma mi fa entrare sempre alle 8:10 all’apertura della candela e non dove vorrei io (ho solo messo nelle condizioni di entrata long il minsetup e viceversa per l’entrata short) .
Mi aiutereste?
Comunque se può essere utile, la stessa strategia applicata ai primi 15 minuti però a partire dalle 9 e con uno spread di 1 (dato che IG dalle 9 alle 17:30 quota 1 di spread) sembra essere anche più redditizia, per il solo fatto però che dalle 8 alle 9 quota 2 punti di spread.
//-------------------------------------------------------------------------
// Codice principale : Breakout 10 minuti con reverse
//-------------------------------------------------------------------------
DEFPARAM FLATAFTER=210000 // replace closetime condition
ONCE PositionType = 0 //1=Long 2=Short (servce per vedere il tipo di trade precedente)
BegTime=081000
EndTime=095500
MyContracts=1
indicator1 = SuperTrend[3,10]
c1 = (close > indicator1)
c2 = (close < indicator1)
c3 = (close crosses over indicator1)
c4 = (close crosses under indicator1)
indicator2 = LinearRegression[34](close)
indicator3 = LinearRegression[89](close)
c5 = (indicator2 > indicator3)
c6 = (indicator2 < indicator3)
if intradaybarindex=0 then
maxSetup = 0
minSetup = 0
tradethisday=0
PositionType = 0
elsif barindex=tradeindex then
tradethisday=1
endif
//---------------------------------------------------------------------------------------
// questo è lo Stop & Reverse (preso da https://www.prorealcode.com/topic/stopreverse/)
IF NOT ONMARKET THEN
IF POSITIONPERF(1)<0 AND positiontype=2 and c5 and c1 THEN //qui devi aggiungere le tue condizioni per LONG
BUY MyContracts CONTRACTS AT MARKET
ENDIF
IF POSITIONPERF(1)<0 AND positiontype=1 and c6 and c2 then //qui devi aggiungere le tue condizioni per SHORT
SELLSHORT MyContracts CONTRACTS AT MARKET
ENDIF
ENDIF
//---------------------------------------------------------------------------------------
//individuo maz e minimo prima ora
if time = 081000 then
max10minuti=High
min10minuti=Low
endif
If Time >= BegTime and Time <= EndTime and tradethisday=0 and c1 then
if minSetup=0 then
minSetup = min10minuti
endif
Buy mycontracts contract at minSetup stop
PositionType = 1
endif
If Time >= BegTime and Time <= EndTime and tradethisday=0 and c2 then
if maxsetup=0 then
maxSetup = max10minuti
endif
SellShort mycontracts contract at maxSetup stop
PositionType = 2
endif
If LongOnMarket and c4 then
Sell at market
elsif ShortOnMarket and c3 then
ExitShort at market
endif
set target pprofit 9