creazione sistema in multi timeframe

Viewing 15 posts - 1 through 15 (of 19 total)
  • Author
    Posts
  • #85352 quote
    davidx78
    Participant
    New

    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,
    David
    #85366 quote
    robertogozzi
    Moderator
    Master

    Se 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:

    TIMEFRAME (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 TF
       BUY 1 CONTRACT AT MARKET
    ENDIF

    Per 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/.

    davidx78 thanked this post
    #96849 quote
    Kloppete
    Participant
    New

    Buonasera,

    vorrei chiedere se è già possibile utilizzare questa feature in reale.

    Grazie in anticipo

    #96850 quote
    robertogozzi
    Moderator
    Master

    Devi chiedere l’attivazione del supporto MTF, via email, al tuo broker.

    Kloppete thanked this post
    #127588 quote
    Roberto90
    Participant
    Average

    Buongiorno 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

    // 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
    O=open
    ONCE Capiniziale = 20000
    equity = Capiniziale + Strategyprofit
    ONCE OrderSize = equity
    ONCE Stoploss = 0.1*equity
    ONCE TradeOn = 0
    ONCE TradeLongOn1 = 0
    ONCE TradeShortOn1 = 0
    ONCE TradeLongOn2 = 0
    ONCE TradeShortOn2 = 0
    PeriodoEnvelope = 2 // definisce il periodo SETTIMANALE DEL CALCOLO DELLE ENVELOPES
    
    // FINE DEFINIZIONE VARIABILI
    
    TIMEFRAME (weekly, Updateonclose)
    EnvelopCentral, EnvelopUp, EnvelopDown = call "Mio Envelope Weekly" [PeriodoEnvelope]
    MioRSI = RSI [2](C)
    
    // Condizione Weekly di flag sul Trade generico
    IF lowest[2](low) > 0.05*EnvelopDown OR lowest[2](low) < EnvelopDown THEN
    IF highest[2](high) < 0.05*EnvelopUp OR highest[2](high) > EnvelopUp THEN
    Tradeon = 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 Trade
    ENDIF
    ENDIF
    
    // Condizione Weekly di flag sui TradeLong e TradeShort
    IF MioRSI > 0.02*lowest[5](MioRSI) AND MioRSI<40 THEN
    TradeLongOn1 = 1
    ELSIF MioRSI < 0.02*highest[5](MioRSI) AND MioRSI>60 THEN
    TradeShortOn1 = 1
    ENDIF
    
    
    TIMEFRAME (daily, default)
    MioPSAR = SAR[0.02,0.02,0.2]
    
    // Condizione Daily di flag sui TradeLong e TradeShort
    IF MioPSAR < C THEN
    TradeLongOn2 = 1
    ELSIF MioPSAR > C THEN
    TradeShortOn2 = 1
    ENDIF
    
    // Condizioni per entrare su posizioni LONG
    IF NOT LongOnMarket AND TradeOn AND TradeLongOn1 AND TradeLongOn2 THEN
    OrderSize = ROUND(equity/C)
    BUY OrderSize SHARES AT MARKET //OrderSize SHARES AT MARKET
    ENDIF
    
    // Condizioni per uscire da posizioni LONG ed eventualmente incrementare la posizione, al verificarsi di alcune condizioni
    
    IF LongOnMarket AND MioPSAR > C THEN
    SELL AT MARKET TOMORROWOPEN
    //BadTrades = 0 // Serve solo se si aggiunge l'ingresso frazionato
    ENDIF
    
    // Condizioni per entrare su posizioni SHORT
    IF NOT ShortOnMarket AND TradeOn AND TradeShortOn1 AND TradeShortOn2 THEN
    OrderSize = ROUND(equity/C)
    SELLSHORT OrderSize SHARES AT MARKET //OrderSize SHARES AT MARKET
    ENDIF
    
    // Condizioni per uscire da posizioni SHORT
    IF ShortOnMarket AND MioPSAR < C THEN
    EXITSHORT AT MARKET
    //BadTrades = 0 // Serve solo se si aggiunge l'ingresso frazionato
    ENDIF
    
    Stoploss = 0.05*equity // si introduce lo Stoploss, solo se si è investito il 100% del capitale. Lo Stoploss è pari al 10% del capitale investito
    SET STOP $LOSS Stoploss
    
    Takeprofit = 0.20*equity
    SET TARGET $PROFIT Takeprofit
    #127589 quote
    robertogozzi
    Moderator
    Master

    Dove è valorizzata la variabile C?

    La riga

    ROUND(equity/C)

    sarebbe meglio tu la scrivessi così, per essere sicuri che non sia zero:

    max(1,ROUND(equity/C))
    Roberto90 thanked this post
    #127594 quote
    Roberto90
    Participant
    Average

    Scusami, 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

    #127599 quote
    robertogozzi
    Moderator
    Master

    No, non serve un abbonamento particolare.

    Verifica le date di inizio e fine.

    Più tardi lo provo anch’io.

    #127819 quote
    Roberto90
    Participant
    Average

    Ciao 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

    Mio-Envelope-Weekly.itf
    #127845 quote
    robertogozzi
    Moderator
    Master

    Non va, ma ti ha segnalato errori?

    #127851 quote
    Roberto90
    Participant
    Average

    No nulla, è per questo che non torna. Errori di scrittura non dovrebbero esserci e il resto mi sembra ok. Non mi compare nè una finestra di errore nè una segnalazione.

    #127853 quote
    robertogozzi
    Moderator
    Master

    A me segnala due errori:

    • la variabile O (open) non è usata
    • la variabile envelopcentral non è usata

    manca qualche altra riga?

    #127863 quote
    Roberto90
    Participant
    Average

    No sono dei refusi da modifiche precedenti, non le uso queste variabili. Ma a te dà un errore quando lanci il backtest?

    Grazie

    #127888 quote
    robertogozzi
    Moderator
    Master

    Mi da alcuni errori, per favore posta l’ultimo codice che hai usato e che non ti segnala nessun errore.

    #127899 quote
    Roberto90
    Participant
    Average

    Lo trovi qui di seguito.

    Grazie

    // 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 Variabili
    C=close
    O=open
    ONCE Capiniziale = 20000
    equity = Capiniziale + Strategyprofit
    ONCE OrderSize = equity
    ONCE Stoploss = 0.1*equity
    ONCE TradeOn = 0
    ONCE TradeLongOn1 = 0
    ONCE TradeShortOn1 = 0
    ONCE TradeLongOn2 = 0
    ONCE TradeShortOn2 = 0
    PeriodoEnvelope = 2 // definisce il periodo SETTIMANALE DEL CALCOLO DELLE ENVELOPES
    
    // FINE DEFINIZIONE VARIABILI
    
    TIMEFRAME (weekly, Updateonclose)
    EnvelopCentral, EnvelopUp, EnvelopDown = call "Mio Envelope Weekly" [PeriodoEnvelope]
    MioRSI = RSI [2](C)
    
    // Condizione Weekly di flag sul Trade generico
    IF lowest[2](low) > 0.05*EnvelopDown OR lowest[2](low) < EnvelopDown THEN
    IF highest[2](high) < 0.05*EnvelopUp OR highest[2](high) > EnvelopUp THEN
    Tradeon = 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 Trade
    ENDIF
    ENDIF
    
    // Condizione Weekly di flag sui TradeLong e TradeShort
    IF MioRSI > 0.02*lowest[5](MioRSI) AND MioRSI<40 THEN
    TradeLongOn1 = 1
    ELSIF MioRSI < 0.02*highest[5](MioRSI) AND MioRSI>60 THEN
    TradeShortOn1 = 1
    ENDIF
    
    
    TIMEFRAME (daily, default)
    MioPSAR = SAR[0.02,0.02,0.2]
    
    // Condizione Daily di flag sui TradeLong e TradeShort
    IF MioPSAR < C THEN
    TradeLongOn2 = 1
    ELSIF MioPSAR > C THEN
    TradeShortOn2 = 1
    ENDIF
    
    // Condizioni per entrare su posizioni LONG
    IF NOT LongOnMarket AND TradeOn AND TradeLongOn1 AND TradeLongOn2 THEN
    OrderSize = ROUND(equity/C)
    BUY OrderSize SHARES AT MARKET //OrderSize SHARES AT MARKET
    ENDIF
    
    // Condizioni per uscire da posizioni LONG ed eventualmente incrementare la posizione, al verificarsi di alcune condizioni
    
    IF LongOnMarket AND MioPSAR > C THEN
    SELL AT MARKET TOMORROWOPEN
    //BadTrades = 0 // Serve solo se si aggiunge l'ingresso frazionato
    ENDIF
    
    // Condizioni per entrare su posizioni SHORT
    IF NOT ShortOnMarket AND TradeOn AND TradeShortOn1 AND TradeShortOn2 THEN
    OrderSize = ROUND(equity/C)
    SELLSHORT OrderSize SHARES AT MARKET //OrderSize SHARES AT MARKET
    ENDIF
    
    // Condizioni per uscire da posizioni SHORT
    IF ShortOnMarket AND MioPSAR < C THEN
    EXITSHORT AT MARKET
    //BadTrades = 0 // Serve solo se si aggiunge l'ingresso frazionato
    ENDIF
    
    
    Stoploss = 0.05*equity // si introduce lo Stoploss
    
    Takeprofit = 0.20*equity
    SET TARGET $PROFIT Takeprofit
    
Viewing 15 posts - 1 through 15 (of 19 total)
  • You must be logged in to reply to this topic.

creazione sistema in multi timeframe


Trading Generale: Analisi Mercati & Discrezionale

New Reply
Author
author-avatar
davidx78 @davidx78 Participant
Summary

This topic contains 18 replies,
has 4 voices, and was last updated by robertogozzi
5 years, 10 months ago.

Topic Details
Forum: Trading Generale: Analisi Mercati & Discrezionale
Language: Italian
Started: 11/20/2018
Status: Active
Attachments: 4 files
Logo Logo
Loading...