Supertrend
Forums › ProRealTime forum Italiano › Supporto ProOrder › Supertrend
- This topic has 20 replies, 2 voices, and was last updated 4 years ago by R05.
Tagged: super trend, supertrend
-
-
03/06/2020 at 12:51 PM #121341
Gent.mi avrei bisogno di aiuto per codificare una strategia multitimeframe che si basa sul supertrend. Le linee guida sono:
- time frame 15 minuti, si usa il supertrend come supporto e resistenza; mi spiego meglio: quando il supertrend è rosso utilizzerò il tetto del supertrend per provare ad andare short e viceversa quando è verde
- time frame a 1 minuto: l’entrata effettiva è a 1 minuto in quanto a me serve che sul minuto il prezzo, ad esempio per il long, vada sotto il valore del supertrend a 15 minuti, faccia un false breakout, torni indietro e quindi compro sul massimo della candela a 1 minuto
Ho provato a fare il seguente codice, ma ovviamente come mi accade spesso non fa quello che mi serve.
123456789101112131415161718192021222324252627282930313233343536// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivate// Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.DEFPARAM FLATBEFORE = 090000// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"DEFPARAM FLATAFTER = 220000timeframe(15 minutes,updateonclose)// Condizioni per entrare su posizioni longindicator1 = SuperTrend[3,10]if indicator1 < close thencoloreverde = indicator1endif// Condizioni per entrare su posizioni shortindicator1 = SuperTrend[3,10]if indicator1 > close thencolorerosso = indicator1endiftimeframe(default) //time frame 1 minuto// Condizioni per entrare su posizioni longIF low<coloreverde THENBUY 1 CONTRACT AT high stopENDIF// Condizioni per entrare su posizioni longIF high>colorerosso THENSELLSHORT 1 CONTRACT AT low stopENDIF// Stop e targetSET STOP pLOSS 15SET TARGET pPROFIT 25Vi allego comunque un’immagine per capire meglio: dow jones, oggi alle 9:23 ad 1 minuto il prezzo ha superato il valore del supertrend, ha fatto un false breakout ed è tornato indietro: io devo comprare sul minimo della candela in cui c’è stato il false breakout, e quindi entrerò sul minimo della candela a 1 minuto delle 9:23. Con stop sopra il massimo della candela ad 1 minuto.
03/06/2020 at 1:39 PM #121349La cosa che può farti di sbagliato è che, nel caso di short (per il long è l’opposto), HIGH abbia superato il supertrend rosso quindi la tua condizione alla riga 30 è vera, mentre anche CLOSE può essere rimasto sopra al SuperTrend senza tornare indietro.
Sostituisci la riga 24 con:
1IF low<coloreverde and close>coloreverde THENe la riga 30 con:
1IF high>colorerosso and close<colorerosso THEN03/06/2020 at 2:09 PM #12135703/06/2020 at 2:54 PM #121365Gent.mo Roberto, ho fatto una piccola modifica, ho tolto le condizioni sotto il timeframe a 15 (ora per comodità ho messo due minuti ma solo perchè non sono andato troppo indietro con l’esempio visto che era di oggi) minuti come di seguito.
1234567891011121314151617181920212223242526272829303132// Definizione dei parametri del codiceDEFPARAM CumulateOrders = False // Posizioni cumulate disattivate// Il sistema cancellerà tutti gli ordini in attesa e chiuderà tutte le posizioni a 0:00. Dopo l'orario "Flat Before" non saranno piazzati nuovi ordini o posizioni.DEFPARAM FLATBEFORE = 090000// Cancellare tutti gli ordini in attesa e chiudere tutte le posizioni all'orario "Flat After"DEFPARAM FLATAFTER = 220000timeframe(2 minutes,updateonclose)// Condizioni per entrare su posizioni longindicator1 = SuperTrend[3,10]// Condizioni per entrare su posizioni shortindicator1 = SuperTrend[3,10]timeframe(default) //time frame 1 minuto// Condizioni per entrare su posizioni longIF low<indicator1 and close>indicator1 THENBUY 1 CONTRACT AT high stopENDIF// Condizioni per entrare su posizioni longIF high>indicator1 and close<indicator1 THENSELLSHORT 1 CONTRACT AT low stopENDIF// Stop e targetSET STOP pLOSS 15SET TARGET pPROFIT 25Ho notato che il sistema va in confusione a cavallo dell’incrocio del supertrend cioè quando da verde passa a rosso e viceversa. Ti allego un esempio. Si può fare qualcosa?
03/06/2020 at 4:21 PM #121378Si Roberto posso dirti con tranquillità qual è il problema: ho messo in demo il sistema e ho potuto seguire le operazioni: non è tanto il problema che ti menzionavo nel post precedente e cioè quando cambia colore, ma il problema è proprio nelle condizioni stesse, infatti come nel file che allego col supertrend a 3 minuti rosso e quindi doveva fare solo operazioni short, alle 16.01 e alle 16.02 la candela ha avuto il minimo inferiore e il close superiore al supertrend (così come da condizioni generali della strategia per il long) e quindi mi ha aperto le posizioni long. Ora speriamo di riuscire a risolverlo.
03/06/2020 at 4:53 PM #121382Il problema di entrate indesiderate è dovuto ad un errore logico tra le righe 9 e 19 (del tuo primo post), in quanto quando è vero un colore devi azzerare l’altro, altrimenti sono veri entrambi e quando finisce un’operazione ne inizia un’altra sempre LONG perché alla riga 24 c’è il LONG come prima istruzione, quindi non arriva mai a fare lo short.
Sostituisci le righe 9-19 con:
12345678910111213// Condizioni per entrare su posizioni longindicator1 = SuperTrend[3,10]if indicator1 < close thencoloreverde = indicator1colorerosso = 0endif// Condizioni per entrare su posizioni shortindicator1 = SuperTrend[3,10]if indicator1 > close thencolorerosso = indicator1coloreverde = 0endif03/06/2020 at 5:25 PM #121385Si Roberto grazie il problema è stato risolto, solo che ora al verificarsi di quelle condizioni non apre nessuna posizione nemmeno nella direzione corretta. Mi spiego meglio con un allegato: la candela delle 16:50 sul minuto non mi ha fatto entrare short, proprio perchè, credo, sia l’high che il close sono sopra il supertrend mentre nelle condizioni generali il close deve essere sotto: quindi mentre prima mi faceva fare l’operazione nell’eventualità a rialzo adesso invece quella, che è sbagliata non me la fa fare ed è giusto così e quindi è risolto, ma in questo caso anche quella che dovrebbe essere corretta non viene fatta.
03/06/2020 at 5:33 PM #121388Verifica il prezzo di chiusura di quella candela ad 1 minuto, probabilmente ha chiuso sopra al supertrend.
03/06/2020 at 5:43 PM #12139003/06/2020 at 6:10 PM #121397Cosa vuoi fare devi stabilirlo tu, se va bene anche se chiude sopra il supertrend (o sotto per l’opposto) allora andava bene anche prima della mia risposta iniziale (a parte l’altro errore logico dell’azzeramento dei colori opposti), però avevi detto che non è quello che volevi.
Devi decidere tu quali sono le condizioni.
03/06/2020 at 6:32 PM #12140003/08/2020 at 5:55 PM #121488Gent.mo Roberto ti confermo che il codice è ok, va bene così. Volevo chiedere un’altra cosa: una volta entrato in posizione e preso lo stop posso fare il rientry alle stesse condizioni della prima operazione? Solo un rientry.
Io ho visto il codice seguente, il problema è che quando prendo lo stop, mi fa aprire subito la posizione alla candela successiva senza aspettare che ci siano le stesse condizioni della prima operazione o comunque entrare allo stesso livello della prima operazione sempre nella stessa direzione. Si potrebbe fare qualcosa?
12345678IF NOT ONMARKET THENIF POSITIONPERF(1)<0 and z < (s -b) and low<t THEN //qui devi aggiungere le tue condizioni per LONGBUY 1 CONTRACTS AT MARKETENDIFIF POSITIONPERF(1)<0 and z > (s -a) and high>s then //qui devi aggiungere le tue condizioni per SHORTSELLSHORT 1 CONTRACTS AT MARKETENDIFENDIF03/08/2020 at 6:03 PM #12148903/08/2020 at 6:19 PM #121492Scusandomi per prima, chiedo aiuto per capire come fare a ad aprire le posizioni ad esempio solo tra le 15 e le 18 ma se l’ultima operazione è incorso non deve chiuderla alle 18. L’istruzione seguente ha il limite di chiudere tutto alle 18, a me servirebbe che se l’operazione è aperta di lasciarla andare fino alla conclusione con stop o profit.
123DEFPARAM FLATBEFORE = 150000DEFPARAM FLATAFTER = 18000003/08/2020 at 6:37 PM #121494Non usare DEFPARAM, ma entra a mercato con:
123If time >= 150000 and time <= 180000 thenBuy 1 contract at market //o SellhortEndif -
AuthorPosts