una strategia con 2 SuperTrend 1 lento 1 veloce
Forums › ProRealTime forum Italiano › Supporto ProOrder › una strategia con 2 SuperTrend 1 lento 1 veloce
- This topic has 26 replies, 3 voices, and was last updated 4 years ago by Gaspare.
Tagged: incrocio supertrend, supertrend
-
-
04/05/2019 at 3:05 PM #95548
Per scrivere il codice , utilizza il pulsante <> “insert PRT code”, per rendere il codice più leggibile. Grazie.
Puoi trovare il codice di un trailing stop scritto da Nicolas (dalla riga 17 fino alla fine) qui https://www.prorealcode.com/blog/trading/complete-trailing-stop-code-function/.
Comunque questa è la versione modificata della tua strategia, l’ho aggiunto io:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869STveloce = SuperTrend[x,a]STlento = SuperTrend[y,b]Rialzo = (STveloce CROSSES OVER STlento)Ribasso = (STveloce CROSSES UNDER STlento)c1=y>(x*1)// — Quando c’è un segnale rialzista:// 1 – se si è già SHORT, chiudere la posizione ed entrare LONG// 2 – se non si è ancora a mercato aprire una posizione LONG//IF Rialzo THENIF ShortOnMarket and c1 THENEXITSHORT AT MARKETBUY 1 CONTRACT AT MARKETELSIF Not OnMarket THENBUY 1 CONTRACT AT MARKETENDIFENDIF// — Quando c’è un segnale ribassista:// 1 – se si è già LONG, chiudere la posizione ed entrare SHORT// 2 – se non si è ancora a mercato aprire una posizione SHORT//IF Ribasso THENIF LongOnMarket and c1 THENSELL AT MARKETSELLSHORT 1 CONTRACT AT MARKETELSIF Not OnMarket THENSELLSHORT 1 CONTRACT AT MARKETENDIFENDIF//************************************************************************//trailing stop functiontrailingstart = 20 //trailing will start @trailinstart points profittrailingstep = 5 //trailing step to move the "stoploss"//reset the stoploss valueIF NOT ONMARKET THENnewSL=0ENDIF//manage long positionsIF LONGONMARKET THEN//first move (breakeven)IF newSL=0 AND close-tradeprice(1)>=trailingstart*pipsize THENnewSL = tradeprice(1)+trailingstep*pipsizeENDIF//next movesIF newSL>0 AND close-newSL>=trailingstep*pipsize THENnewSL = newSL+trailingstep*pipsizeENDIFENDIF//manage short positionsIF SHORTONMARKET THEN//first move (breakeven)IF newSL=0 AND tradeprice(1)-close>=trailingstart*pipsize THENnewSL = tradeprice(1)-trailingstep*pipsizeENDIF//next movesIF newSL>0 AND newSL-close>=trailingstep*pipsize THENnewSL = newSL-trailingstep*pipsizeENDIFENDIF//stop order to exit the positionsIF newSL>0 THENSELL AT newSL STOPEXITSHORT AT newSL STOPENDIF//************************************************************************Devi solo sostituire 20 con il numero di PIPS da dove iniziare a fare il trailing (intanto mette subito in pareggio) e 5 con il numero di PIPS da usare come passo per incrementare il profitto da salvaguardare.
Tieni presente che, essendo parte della strategia, verrà eseguito alla chiusura della barra.
04/05/2019 at 3:23 PM #9555104/14/2020 at 5:43 PM #1261351234567891011121314151617181920212223242526272829303132defparam cumulateorders=falseSTveloce = SuperTrend[X,A]STlento = SuperTrend[Y,B]Rialzo = (STveloce CROSSES OVER STlento)Ribasso = (STveloce CROSSES UNDER STlento)c5=adx[14] >= 18// --- Quando c'è un segnale rialzista:// 1 - se si è già SHORT, chiudere la posizione ed entrare LONG// 2 - se non si è ancora a mercato aprire una posizione LONG//IF Rialzo AND c5 THENIF ShortOnMarket THENEXITSHORT AT MARKETBUY 1 CONTRACT AT close - C * pipsize LIMITELSIF Not OnMarket THENBUY 1 CONTRACT AT close - C * pipsize LIMIT //LongENDIFENDIF// --- Quando c'è un segnale ribassista:// 1 - se si è già LONG, chiudere la posizione ed entrare SHORT// 2 - se non si è ancora a mercato aprire una posizione SHORT//IF Ribasso AND c5 THENIF LongOnMarket THENSELL AT MARKETSELLSHORT 1 CONTRACT AT close + C * pipsize LIMIT //ShortELSIF Not OnMarket THENSELLSHORT 1 CONTRACT AT close + C * pipsize LIMITENDIFENDIFset stop ploss 25set target pprofit 25Salve Roberto, una cortesia grazie
dopo aver messo in reale questo TS sul Mini SP500 e Spot Gold, gli ordini non venivano eseguiti,
ma cancellati a condizioni rispettate, ma il backtest era andato bene.
La variabile “C” sta per quantita’ di pip in meno, per il long, e in piu’ per lo short, per avere l’eseguito.
Grazie
04/14/2020 at 7:04 PM #126141A me funziona perfettamente.
04/14/2020 at 8:23 PM #126156forse non mi sono spiegato bene
anche a me funziona bene, ho fatto il backtest bene, e infatti l’ho messo live;
ma nessuno eseguito, anzi cancellati ( in reale mi riferisco) o rifiutati sullo stato ordini.
Non capisco se è dovuto alla variabile C, che non siano ammessi ordini diversi dal valore di apertura.
04/14/2020 at 9:41 PM #126162Devi sostituire le variabili con i valori numerici, le variabili vanno bene solo per l’ottimizzazione.
04/14/2020 at 9:50 PM #1261651234567891011121314151617181920212223242526272829303132defparam cumulateorders=falseSTveloce = SuperTrend[4,30]STlento = SuperTrend[4.5,10]Rialzo = (STveloce CROSSES OVER STlento)Ribasso = (STveloce CROSSES UNDER STlento)c5=adx[14] >= 18// --- Quando c'è un segnale rialzista:// 1 - se si è già SHORT, chiudere la posizione ed entrare LONG// 2 - se non si è ancora a mercato aprire una posizione LONG//IF Rialzo AND c5 THENIF ShortOnMarket THENEXITSHORT AT MARKETBUY 1 CONTRACT AT close - 5 * pipsize LIMITELSIF Not OnMarket THENBUY 1 CONTRACT AT close - 5 * pipsize LIMIT //LongENDIFENDIF// --- Quando c'è un segnale ribassista:// 1 - se si è già LONG, chiudere la posizione ed entrare SHORT// 2 - se non si è ancora a mercato aprire una posizione SHORT//IF Ribasso AND c5 THENIF LongOnMarket THENSELL AT MARKETSELLSHORT 1 CONTRACT AT close + 5 * pipsize LIMIT //ShortELSIF Not OnMarket THENSELLSHORT 1 CONTRACT AT close + 5 * pipsize LIMITENDIFENDIFset stop ploss 25set target pprofit 25certamente, scusa, ma in live avevo attivato con i valori delle variabili.
questo vale per il mini SP500
04/14/2020 at 9:53 PM #1261661234567891011121314151617181920212223242526272829303132defparam cumulateorders=falseSTveloce = SuperTrend[3,30]STlento = SuperTrend[3,50]Rialzo = (STveloce CROSSES OVER STlento)Ribasso = (STveloce CROSSES UNDER STlento)c5=adx[14] >= 18// --- Quando c'è un segnale rialzista:// 1 - se si è già SHORT, chiudere la posizione ed entrare LONG// 2 - se non si è ancora a mercato aprire una posizione LONG//IF Rialzo AND c5 THENIF ShortOnMarket THENEXITSHORT AT MARKETBUY 1 CONTRACT AT close - 3 * pipsize LIMITELSIF Not OnMarket THENBUY 1 CONTRACT AT close - 3 * pipsize LIMIT //LongENDIFENDIF// --- Quando c'è un segnale ribassista:// 1 - se si è già LONG, chiudere la posizione ed entrare SHORT// 2 - se non si è ancora a mercato aprire una posizione SHORT//IF Ribasso AND c5 THENIF LongOnMarket THENSELL AT MARKETSELLSHORT 1 CONTRACT AT close + 3 * pipsize LIMIT //ShortELSIF Not OnMarket THENSELLSHORT 1 CONTRACT AT close + 3 * pipsize LIMITENDIFENDIFset stop ploss 15set target pprofit 15e questo si attiva per il GOLD
04/14/2020 at 9:56 PM #12616704/14/2020 at 10:20 PM #12617304/14/2020 at 10:53 PM #126183Non c’è scritto niente nella motivazione del rifiuto?
Se passi col mouse sopra il triangolo di avvertenza dovrebbe esserci scritto qualcosa.
Immagino sia un prezzo d’entrata troppo vicino all’attuale. C’è una distanza minima che deve essere rispettata, strumento per strumento (occorre vedere sul sito del broker).
Specialmente in questo periodo di alta volatilità quella distanza può essere piuttosto alta.
Poi c’è un aspetto di logica di programmazione, che però non influisce sul risultato. Le righe 11-30 puoi scriverle così:
12345678910111213141516IF Rialzo AND c5 THENIF ShortOnMarket THENEXITSHORT AT MARKETENDIFBUY 1 CONTRACT AT close - 3 * pipsize LIMIT //LongENDIF// --- Quando c'è un segnale ribassista:// 1 - se si è già LONG, chiudere la posizione ed entrare SHORT// 2 - se non si è ancora a mercato aprire una posizione SHORT//IF Ribasso AND c5 THENIF LongOnMarket THENSELL AT MARKETENDIFSELLSHORT 1 CONTRACT AT close + 3 * pipsize LIMITENDIFProva a mettere 15 o più, al posto di 3, negli ordini pendenti.
04/14/2020 at 11:23 PM #126188 -
AuthorPosts
Find exclusive trading pro-tools on