PROBLEMA CON MULTITIMEFRAME E MEDIA DI HULL

Viewing 15 posts - 1 through 15 (of 15 total)
  • Author
    Posts
  • #165819 quote
    bahl
    Participant
    Average

    Volevo testare gli incroci di tre medie di hull, lenta media e veloce, rispettivamente a 120, 40 e 21 periodi, calcolate su timeframe di 30 minuti, con entrate e uscite su tf 1 minuto, ma quando vado a testare mi da errore.

    Allego i codici degli indicatori e del programma,

    // Definizione dei parametri del codice
    DEFPARAM CumulateOrders = False // Posizioni cumulate disattivate
    TIMEFRAME (30 MINUTE,UPDATEONCLOSE)
    // Condizioni per entrare su posizioni long
    indicator1 = CALL "HULL 21 MTF"(close)//VELOCE
    indicator2 = CALL "hull 40 mtf"(close)//MEDIA
    indicator3 = CALL "hull 120 mtf 30'"(close)//LENTA)
    
    
    
    
    
    
    LUNGO= indicator1 CROSSES OVER indicator3
    CORTO= indicator1 CROSSES UNDER indicator3
    FLETTE = indicator2[3]<indicator2[2] AND indicator2 [2]<=indicator2[1] AND indicator2[1]>indicator2 OR indicator2[3]>indicator2[2] AND indicator2 [2]>=indicator2[1] AND indicator2[1]<indicator2
    
    TIMEFRAME (DEFAULT)
    
    IF LUNGO THEN
    BUY AT MArket
    endif
    
    if longonmarket and flette then
    sell at market
    endif
    
    TIMEFRAME (30MINUTE,UPDATEONCLOSE)
    VELOCE= HULLAVERAGE[21]
    RETURN VELOCE
    timeframe (30minute, updateonclose)
    MEDIA= HULLAVERAGE[40]
    RETURN MEDIA

    non sapendo come inserire questi indicatori nel codice, ho utilizzato l’interfaccia semplificata, e poi ho completato il codice.

    Dove è il problema?

    timeframe (30 minute,updateonclose)
    LENTA = HULLAVERAGE[120]
    RETURN LENTA
    
    #165823 quote
    robertogozzi
    Moderator
    Master

    Che errore è?

    #165833 quote
    bahl
    Participant
    Average

    probacktest error parsing

    #165851 quote
    bahl
    Participant
    Average

    per altro, in generale, qual’è il modo migliore per richiamare un indicatore multitimeframe nel codice di un trading system, non avendo a disposizione il codice esplicito dell’indicatore?

    #165852 quote
    robertogozzi
    Moderator
    Master

    Senza gli indicatori non posso fare prove.

    Sono 3 indicatori diversi?  Invece di cambiare i periodi della media sono stati fatti 3 indicatori separati?

    Per richiamarli si usa CALL, ma non sono sicuro che quella riga sia corretta.

    #165853 quote
    bahl
    Participant
    Average

    Dopo il codice del sistema ho gia allegato i tre brevi codici delle medie di hull a 21, 40 e 120 periodi. Si, ho messo tre indicatori diversi, con tre codici, perchè speravo che mi fosse più semplice richiamarli con l’interfacccia di programmazione semplificata, anche se mi vengono richiamati brutti, tipo “indicator, indicator1,indicator” “indicator,indicator, indicator2″….

    Dove posso trovare spigazioni sull’uso della funzione”call” e sulla sua sintassi?

    #165862 quote
    robertogozzi
    Moderator
    Master

    Per CALL basta che cerchi la parola CALL nel forum utilizzando la casella di ricerca che si apre quando passi col mouse sopra il tuo avatar, oppure https://www.prorealcode.com/prorealtime-documentation/.

    Eventualmente allega i 3 file ITF.

    Prova a togliere dal nome “hull 120 mtf 30′” l’apostrofo simbolo dei minuti (ovviamente non devi toglierlo solo dal nome virgolettato, ma anche dal nome dell’indicatore nel file ITF creato con ProBuilder.

    #165863 quote
    robertogozzi
    Moderator
    Master

    Comunque, visto che la media HULL è predefinita, non usare CALL, usa direttamente HullAverage.

    Per usare un indicatore inuna strategia MTF devi usare una variabile diversa per ciascun TF:

    Timeframe(4 hour,UpdateOnClose)
    Hull4 = HullAverage[20](close)
    //
    Timeframe(1 hour,UpdateOnClose)
    Hull1 = HullAverage[20](close)
    //
    Timeframe(default)
    HullDEF = HullAverage[20](close)
    

    ed avrai la media HULL, con gli stessi periodi, ma calcolata separatamente per i tre time frame usati.

    #165916 quote
    bahl
    Participant
    Average

    ho riscritto il codice, l’idea è semplice: ho tre medie di hull, veloce a 21 periodi, lenta a 120 periodi e media a 40, tutte calcolate su tf 30 minuti. All’incrocio verso l’alto della veloce sulla lenta compro, all’incrocio verso il basso vendo, e uso i minimi e massimi locali della media a 40 per le uscite dalle posizioni.

    Lo testo sul minidax. Vorrei però che entrate e uscite fossero piu tempestive, poiche le medie sono calcolate sui 30 minuti, gli incroci si verificano solo a chiusura della barra da 30 minuti, e questo non dovrebbe cambiare anche se introduco condizioni multitimeframe.

    Infatti, mi penso, se esplicito che le medie siano calcolate con tf a trenta, gli incroci mi scatteranno a chiusura della barra da trenta sia che io metta le condizioni di ingresso a un tf inferiore sia che le lasci a 30 minuti. Ma non è cosi.

    Faccio la prova con il codice che allego su dax a un minuto, e se metto le condizioni di entrata e uscita nelle righe prima di timeframe (default) o dopo cambia parecchio.

    Vorrei capire perchè prima di passare alle questioni successive.

    DEFPARAM CumulateOrders = False
    
    TIMEFRAME (30 MINUTE,UPDATEONCLOSE)
    
    lenta= hullaverage[120](close)
    media=hullaverage[40](close)
    veloce=  hullaverage[21](close)
    
    TIMEFRAME (default)
    
    LUNGO= veloce CROSSES OVER lenta
    CORTO= veloce CROSSES UNDER lenta
    FLETTE = media[3]<media[2] AND media [2]<=media[1] AND media[1]>media OR media[3]>media[2] AND media [2]>=media[1] AND media[1]<media//minimo o massimo locale hull media
    
    //entrate long
    
    IF LUNGO THEN
    BUY AT MArket
    endif
    //uscite long
    if longonmarket and flette then
    sell at market
    endif
    //entrate short
    if not onmarket and corto then
    sellshort at market
    endif
    //uscite short
    if shortonmarket and flette then
    exitshort at market
    endif
    

    Spero di essere stato sufficientemente chiaro. Grazie in anticipo

    #165917 quote
    robertogozzi
    Moderator
    Master

    Certo che gli incroci ti scatteranno alla chiusura della barra a 30…. se li metti nel time frame a 30!

    Se li metti in quello di default scatteranno secondo il timeframe scelto come default.

    Sposta le righe 11 e 12 sopra la 9 e cambierà.

    #165920 quote
    bahl
    Participant
    Average

    Che cambia l’ho visto, ma non capisco nè il come nè il perchè.

    se metto come tf default 30 minuti ovviamente non fa nessuna differenza dove posiziono le condizioni di ingresso e quelle di uscita, e tra il 30 marzo e il primo aprile fa  una decina di operazioni.

    Se scelgo come default 1 minuto, cambia molto se sposto le condizioni sopra o sotto il tf default. Per l’esattezza cambia solo se sposto le condizioni di uscita.

    Quindi mi penso che le condizioni di ingresso, calcolate su medie a 30 minuti, restano le stesse anche su tf 1 minuto, perchè scattano solo a chiusura della barra da 30, all’apertura della barra successiva, che può essere sia da trenta che da un minuto, tanto le aperture coincidono. Invece fa differenza il tf delle condizioni di uscita. Ma non capisco come mai, visto che anche questa media è calcolata su tf 30 minuti. O mi fa differenza dove posizioni sia ingressi che uscite, o nessuna…non capisco.

    Comunque, posizionando le condizioni sotto la riga 9, dovrei aspettarmi più operazioni, eventualmente più tempestive, visto che il tf è minore. Invece che entrate e uscite più tempestive, mi fa pochissime operazioni: mi apre e chiude un operazione il 23 marzo , ne apre un’altra, e non la chiude più. Che sta succedendo?

    #165924 quote
    robertogozzi
    Moderator
    Master

    Se usi come default, sul grafico, 3o minuti, in pratica disattivi il Multi Time Frame, in quanto hai un solo time frame.

    Con MTF, sul 30 minuti i dati (quindi le condizioni) vengono variati:

    • ogni 30 minuti se usi UPDATEONCLOSE
    • ad ogni candela del TF di default se usi DEFAULT.

    Quindi con UPDATEONCLOSE, i minuti passano ma le condizioni restano invariate. Se, invece usi DEFAULT variano minuto per minuto. Dipende se vuoi che le tue condizioni abbiano la conferma della chiusura oppure no.

    Ti consiglio di leggere (magari usando il traduttore Google o DeepL) questo https://www.prorealcode.com/blog/learning/approach-multi-timeframe-trading-prorealtime/.

    Puoi anche aggiungere, alla fine del tuo codice, l’istruzione GRAPH per monitorare i dati:

    Graph LUNGO
    Graph CORTO
    Graph FLETTE

    vedrai, nella finestra delle variabili di ProBackTest, i valori che queste variabili hanno barra per barra, quando tici fermi sopra col mouse.

    #165929 quote
    bahl
    Participant
    Average

    Ti ringrazio molto, ma controllato di nuovo, e se metto il sistema su tf 1 minuto, mi apre e chiude un operazione il 23 marz0, ne apre un’altra, e poi non la chiude più,…. non capisco perchè (sia che lasci updateonclose, sia che lo tolga)

    #165935 quote
    robertogozzi
    Moderator
    Master

    Se usi GRAPH dovresti scoprirne ol motivo.

    #165973 quote
    robertogozzi
    Moderator
    Master

    Come puoi vedere dalla foto, FLETTE è sempre a zero, per cui non può uscire.

    Devi modificare la logica delle condizioni.

    x-1.jpg x-1.jpg
Viewing 15 posts - 1 through 15 (of 15 total)
  • You must be logged in to reply to this topic.

PROBLEMA CON MULTITIMEFRAME E MEDIA DI HULL


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
bahl @bahl Participant
Summary

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

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 03/31/2021
Status: Active
Attachments: 1 files
Logo Logo
Loading...