creazione sistema in multi timeframe
Forums › ProRealTime forum Italiano › Discussioni generiche sul trading › creazione sistema in multi timeframe
- This topic has 18 replies, 4 voices, and was last updated 4 years ago by robertogozzi.
Tagged: mtf
-
-
11/20/2018 at 7:06 PM #85352
Buonasera a tutti, chiedo un aiuto a chi può rispondermi….. ho provato ad impostare un trading system in multi timeframe ma non riesco ad inserire i riferimenti a 2 timeframe diversi nello stesso trading system….. provo a spiegarmi meglio: se volessi inserire come segnale di acquisto l’incrocio rialzista tra il prezzo e la media mobile a 20 periodi in un time frame a 15 minuti , e come condizione aggiuntiva l’incrocio rialzista tra il prezzo e la media mobile a 50 periodi ma su un time frame h1 , il sistema mi riconoscerebbe soltanto il time frame a 15 min e mi calcolerebbe si l’incrocio con la media mobile a 50 periodi ma sul timeframe h1 .
come posso ovviare a ciò? c’è qualche procedura o comando che dimentico?grazie e buon lavoro,David11/21/2018 at 12:46 AM #85366Se conosci l’inglese puoi vedere questo video: https://www.youtube.com/watch?v=3ed-WFGG1mA&feature=youtu.be.
Ad ogni modo questo è un modello di come appare grosso modo una strategia MTF:
12345678910111213TIMEFRAME (Daily, updateonclose)MediaD = average[200,0](close)TIMEFRAME (4 hours, updateonclose)Media4H = average[200,0](close)TIMEFRAME (1 hour, updateonclose)Media1H = average[200,0](close)TIMEFRAME (default)IF close > MediaD AND close > Media4H AND close > Media1H THEN //il prezzo deve essere superiore alla nedia 200 di ciascun TFBUY 1 CONTRACT AT MARKETENDIFPer ciascun TF puoi mettere le condizioni che vuoi.
Non si possono usare gli setssi nomi di variabili in più TF per la loro creazione o modifica, mentre possono essere lette da ogni TF.
L’indicazione UPDATEONCLOSE significa che le variabili usate in quel TF possono essere aggiornate solo alla chiusura della rispettiva candela, mentre se viene omesso o viene indicato DEFAULT l’aggiornamento viene effettuato ad ogni esecuzione della strategia (quindi ad ogni chiusura della candle relativa al TF di default, quello principale). Quest’ultima possibilità può essere usate per verificare il valore di una media mentre si sta formando, ad esempio, su un TF a 4 ore.
Il TF principale per ProOrder è quello PIU’ BASSO che deve essere usato come default al momento del lancio della strategia, cioè quello che in quel momento è sul grafico aperto. Tutti gli altri TF devono essere MULTIPLI del TF di default. Quindi se usi un TF Daily e 1 ora, puoi usare come default 1 minuto, 10 minuti o 5 secondi, ma NON 7 minuti in quanto sia il daily che il grafico orario NON sono multipli di 7 minuti.
Questo è un esempio, in inglese, che ho scritto qualche mese fa https://www.prorealcode.com/topic/cowabunga-on-dax-with-multiple-time-frames/.
1 user thanked author for this post.
04/20/2019 at 7:23 PM #9684904/20/2019 at 7:50 PM #96850Devi chiedere l’attivazione del supporto MTF, via email, al tuo broker.
1 user thanked author for this post.
04/23/2020 at 11:57 AM #127588Buongiorno Roberto,
grazie per il servizio svolto, l’ho trovato davvero utile.
Sto implementando la mia prima strategia multitimeframe, su grafico settimanale e giornaliero, ma non riesco a far partire il backtest, ovvero quando vado su “probacktesta il mio sistema” non succede nulla. Il backtest lo faccio sul grafico giornaliero e mi sembra che i parametri siano corretti, come indicato nella guida al seguente link https://www.prorealcode.com/blog/learning/approach-multi-timeframe-trading-prorealtime/
Mi puoi aiutare a capire a cosa può essere dovuto?
Grazie in anticipo
TS Multitimeframe weekly/daily ETF1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374// STRATEGIA TREND FOLLOWER CHE OPERA SUL MERCATO SEGUENDO L'ANDAMENTO DEL SOTTOSTANTE SCELTO. SI UTILIZZANO 2 TIMEFRAME, 1 SETTIMANALE E L'ALTRO GIORNALIERO. SI OPERA SIA LONG CHE SHORTO=openONCE Capiniziale = 20000equity = Capiniziale + StrategyprofitONCE OrderSize = equityONCE Stoploss = 0.1*equityONCE TradeOn = 0ONCE TradeLongOn1 = 0ONCE TradeShortOn1 = 0ONCE TradeLongOn2 = 0ONCE TradeShortOn2 = 0PeriodoEnvelope = 2 // definisce il periodo SETTIMANALE DEL CALCOLO DELLE ENVELOPES// FINE DEFINIZIONE VARIABILITIMEFRAME (weekly, Updateonclose)EnvelopCentral, EnvelopUp, EnvelopDown = call "Mio Envelope Weekly" [PeriodoEnvelope]MioRSI = RSI [2](C)// Condizione Weekly di flag sul Trade genericoIF lowest[2](low) > 0.05*EnvelopDown OR lowest[2](low) < EnvelopDown THENIF highest[2](high) < 0.05*EnvelopUp OR highest[2](high) > EnvelopUp THENTradeon = 1 // Se nelle x settimane precedenti il minimo dei minimi ha superato verso il basso la EnvelopDown oppure se è appena al di sotto di essa (il 5% al di sotto), E speculare per il massimo dei massimi, attiva il TradeENDIFENDIF// Condizione Weekly di flag sui TradeLong e TradeShortIF MioRSI > 0.02*lowest[5](MioRSI) AND MioRSI<40 THENTradeLongOn1 = 1ELSIF MioRSI < 0.02*highest[5](MioRSI) AND MioRSI>60 THENTradeShortOn1 = 1ENDIFTIMEFRAME (daily, default)MioPSAR = SAR[0.02,0.02,0.2]// Condizione Daily di flag sui TradeLong e TradeShortIF MioPSAR < C THENTradeLongOn2 = 1ELSIF MioPSAR > C THENTradeShortOn2 = 1ENDIF// Condizioni per entrare su posizioni LONGIF NOT LongOnMarket AND TradeOn AND TradeLongOn1 AND TradeLongOn2 THENOrderSize = ROUND(equity/C)BUY OrderSize SHARES AT MARKET //OrderSize SHARES AT MARKETENDIF// Condizioni per uscire da posizioni LONG ed eventualmente incrementare la posizione, al verificarsi di alcune condizioniIF LongOnMarket AND MioPSAR > C THENSELL AT MARKET TOMORROWOPEN//BadTrades = 0 // Serve solo se si aggiunge l'ingresso frazionatoENDIF// Condizioni per entrare su posizioni SHORTIF NOT ShortOnMarket AND TradeOn AND TradeShortOn1 AND TradeShortOn2 THENOrderSize = ROUND(equity/C)SELLSHORT OrderSize SHARES AT MARKET //OrderSize SHARES AT MARKETENDIF// Condizioni per uscire da posizioni SHORTIF ShortOnMarket AND MioPSAR < C THENEXITSHORT AT MARKET//BadTrades = 0 // Serve solo se si aggiunge l'ingresso frazionatoENDIFStoploss = 0.05*equity // si introduce lo Stoploss, solo se si è investito il 100% del capitale. Lo Stoploss è pari al 10% del capitale investitoSET STOP $LOSS StoplossTakeprofit = 0.20*equitySET TARGET $PROFIT Takeprofit04/23/2020 at 12:14 PM #127589Dove è valorizzata la variabile C?
La riga
1ROUND(equity/C)sarebbe meglio tu la scrivessi così, per essere sicuri che non sia zero:
1max(1,ROUND(equity/C))1 user thanked author for this post.
04/23/2020 at 1:10 PM #127594Scusami, ho cancellato la prima riga per sbaglio, quando ho copiato il codice, ma nella strategia è presente ed è alla prima riga di codice
<pre class=”lang:probuilder decode:true “>C=close
Ho corretto anche la riga, come mi hai indicato. Il problema è che quando faccio partire il Backtest non compare nè un popup di errore, nè parte il Backtest. Potrebbe essere che, per fare backtest multitimefrime, sia necessario uno specifico abbonamento?Grazie ancora del supporto
04/23/2020 at 1:40 PM #127599No, non serve un abbonamento particolare.
Verifica le date di inizio e fine.
Più tardi lo provo anch’io.
04/24/2020 at 2:29 PM #127819Ciao Roberto,
poi hai avuto modo di provare il sistema? Io ho riprovato anche oggi, ma non va. Ho cambiato anche le date in diverse combinazioni, ma niente. Ti allego anche l’indicatore personalizzato, nel caso tu riesca a provarlo e a farlo girare.
Grazie
04/24/2020 at 3:55 PM #127845Non va, ma ti ha segnalato errori?
04/24/2020 at 4:02 PM #12785104/24/2020 at 4:10 PM #127853A me segnala due errori:
- la variabile O (open) non è usata
- la variabile envelopcentral non è usata
manca qualche altra riga?
04/24/2020 at 4:41 PM #12786304/24/2020 at 6:14 PM #127888Mi da alcuni errori, per favore posta l’ultimo codice che hai usato e che non ti segnala nessun errore.
04/24/2020 at 6:52 PM #127899Lo trovi qui di seguito.
Grazie
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677// STRATEGIA TREND FOLLOWER CHE OPERA SUL MERCATO SEGUENDO L'ANDAMENTO DEL SOTTOSTANTE SCELTO. SI UTILIZZANO 2 TIMEFRAME, 1 SETTIMANALE E L'ALTRO GIORNALIERO. SI OPERA SIA LONG CHE SHORT// Definizione VariabiliC=closeO=openONCE Capiniziale = 20000equity = Capiniziale + StrategyprofitONCE OrderSize = equityONCE Stoploss = 0.1*equityONCE TradeOn = 0ONCE TradeLongOn1 = 0ONCE TradeShortOn1 = 0ONCE TradeLongOn2 = 0ONCE TradeShortOn2 = 0PeriodoEnvelope = 2 // definisce il periodo SETTIMANALE DEL CALCOLO DELLE ENVELOPES// FINE DEFINIZIONE VARIABILITIMEFRAME (weekly, Updateonclose)EnvelopCentral, EnvelopUp, EnvelopDown = call "Mio Envelope Weekly" [PeriodoEnvelope]MioRSI = RSI [2](C)// Condizione Weekly di flag sul Trade genericoIF lowest[2](low) > 0.05*EnvelopDown OR lowest[2](low) < EnvelopDown THENIF highest[2](high) < 0.05*EnvelopUp OR highest[2](high) > EnvelopUp THENTradeon = 1 // Se nelle x settimane precedenti il minimo dei minimi ha superato verso il basso la EnvelopDown oppure se è appena al di sotto di essa (il 5% al di sotto), E speculare per il massimo dei massimi, attiva il TradeENDIFENDIF// Condizione Weekly di flag sui TradeLong e TradeShortIF MioRSI > 0.02*lowest[5](MioRSI) AND MioRSI<40 THENTradeLongOn1 = 1ELSIF MioRSI < 0.02*highest[5](MioRSI) AND MioRSI>60 THENTradeShortOn1 = 1ENDIFTIMEFRAME (daily, default)MioPSAR = SAR[0.02,0.02,0.2]// Condizione Daily di flag sui TradeLong e TradeShortIF MioPSAR < C THENTradeLongOn2 = 1ELSIF MioPSAR > C THENTradeShortOn2 = 1ENDIF// Condizioni per entrare su posizioni LONGIF NOT LongOnMarket AND TradeOn AND TradeLongOn1 AND TradeLongOn2 THENOrderSize = ROUND(equity/C)BUY OrderSize SHARES AT MARKET //OrderSize SHARES AT MARKETENDIF// Condizioni per uscire da posizioni LONG ed eventualmente incrementare la posizione, al verificarsi di alcune condizioniIF LongOnMarket AND MioPSAR > C THENSELL AT MARKET TOMORROWOPEN//BadTrades = 0 // Serve solo se si aggiunge l'ingresso frazionatoENDIF// Condizioni per entrare su posizioni SHORTIF NOT ShortOnMarket AND TradeOn AND TradeShortOn1 AND TradeShortOn2 THENOrderSize = ROUND(equity/C)SELLSHORT OrderSize SHARES AT MARKET //OrderSize SHARES AT MARKETENDIF// Condizioni per uscire da posizioni SHORTIF ShortOnMarket AND MioPSAR < C THENEXITSHORT AT MARKET//BadTrades = 0 // Serve solo se si aggiunge l'ingresso frazionatoENDIFStoploss = 0.05*equity // si introduce lo StoplossTakeprofit = 0.20*equitySET TARGET $PROFIT Takeprofit -
AuthorPosts
Find exclusive trading pro-tools on