Ignorare barre giornaliere del fine settimana

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #260213 quote
    davidator
    Participant
    Junior

    Buongiorno,

    Ho creato uno screener che visualizza mercati in cosidedtte “extended run”, ovvero 7 o piu giorni al di sopra (o sotto) della sma5.

    Il codice funziona bene.


    Lo uso su timeframe Giornaliero e vorrei che il codice ignorasse le barre del fine settimana, che purtroppo sono presenti su IG, e lavori come esistessero solo le barre dal lunedi al venerdi.


    Ho provato ad aggiungere questo ma non funziona

     IF DayOfWeek >= 1 AND DayOfWeek <= 5 THEN
    


    Ecco il codice completo:


    sma5 = average[5](close)
    
    // ----------------------
    // EXTENDED RUN UP
    // ----------------------
    runAbove = 0
    
    IF close[1] > sma5[1] THEN
    runAbove = runAbove[1] + 1
    ELSE
    runAbove = 0
    ENDIF
    
    // ----------------------
    // EXTENDED RUN DOWN
    // ----------------------
    runBelow = 0
    
    IF close[1] < sma5[1] THEN
    runBelow = runBelow[1] + 1
    ELSE
    runBelow = 0
    ENDIF
    
    // ----------------------
    // FILTRO
    // ----------------------
    filterUp = runAbove >= 7
    filterDown = runBelow >= 7
    
    // ----------------------
    // SCREENER (SEPARATO)
    // ----------------------
    SCREENER[filterUp OR filterDown](runAbove - runBelow)
    



    Grazie in anticipo per qualsiasi aiuto o consiglio!


    #260214 quote
    Nicolas
    Keymaster
    Master

    Ecco, ho modificato il tuo codice; ecco cosa cambia: la variabile isWeekday utilizza DayOfWeek (lunedì = 1, domenica = 7) per rilevare se la barra corrente cade in un giorno feriale. Se è un giorno di fine settimana, i contatori runAbove e runBelow mantengono semplicemente il loro valore precedente (runAbove[1]) invece di essere incrementati o azzerati — la barra è quindi effettivamente “trasparente” per il calcolo.

    Nota: sulla maggior parte dei mercati azionari con dati giornalieri, nel flusso di dati non sono presenti barre nel fine settimana, quindi questa protezione è particolarmente utile se si analizzano anche i mercati Forex o delle criptovalute.

    sma5 = average[5](close)
    
    
    // Ignore weekend bars
    isWeekday = DayOfWeek >= 1 AND DayOfWeek <= 5
    
    
    // ----------------------
    // EXTENDED RUN UP
    // ----------------------
    IF isWeekday THEN
        IF close[1] > sma5[1] THEN
            runAbove = runAbove[1] + 1
        ELSE
            runAbove = 0
        ENDIF
    ELSE
        runAbove = runAbove[1]
    ENDIF
    
    
    // ----------------------
    // EXTENDED RUN DOWN
    // ----------------------
    IF isWeekday THEN
        IF close[1] < sma5[1] THEN
            runBelow = runBelow[1] + 1
        ELSE
            runBelow = 0
        ENDIF
    ELSE
        runBelow = runBelow[1]
    ENDIF
    
    
    // ----------------------
    // FILTER
    // ----------------------
    filterUp = runAbove >= 7
    filterDown = runBelow >= 7
    
    
    // ----------------------
    // SCREENER
    // ----------------------
    SCREENER[filterUp OR filterDown](runAbove - runBelow)
    


    davidator and robertogozzi thanked this post
    #260215 quote
    davidator
    Participant
    Junior

    Ciao Nicolas,


    Grazie dell’aiuto!

    In realtà il codice continua a non funzionare. Non ho problemi sul forex, ne su altri futures che ho nella watchlist.

    In questi giorni, ad esempio, i principali indici di mercato USA e anche il DAX rispettano i requisiti della “extended run”, ma il codice non li individua.

    Io ipotizzo che sia per via della barra della domenica che ha chiusto sotto la sma5 (12 aprile). E’ possibile che il codice invece di ignorare del tutto la barra della domenica, interrompa il conteggio quando la incontra?


    Inoltre, mi confermi che su PRT non è possibile includere la barra della domenica con quella del lunedi per avere un grafico “pulito”?

    #260217 quote
    Nicolas
    Keymaster
    Master

    Nelle impostazioni personalizzate dei prezzi, è possibile modificare la visualizzazione dei dati relativi al fine settimana (vedi immagine).

    Rispetto agli screener, questi strumenti utilizzano sempre i dati di mercato reali, poiché le borse ci inviano i dati ufficiali; quindi, se il feed contiene dati relativi alla domenica, i calcoli dello screener utilizzeranno tali dati.

    Per quanto riguarda il codice dello screener, credo che il conteggio dei dati della domenica sia incluso perché il test del giorno della settimana inizia il lunedì, ma il conteggio si basa sulle condizioni del giorno precedente. In questo caso, possiamo semplicemente contare utilizzando i dati di quel giorno.

    sma5 = average[5](close)
    
    
    // Ignore weekend bars
    isWeekday = DayOfWeek >= 1 AND DayOfWeek <= 5
    
    
    // ----------------------
    // EXTENDED RUN UP
    // ----------------------
    IF isWeekday THEN
        IF close[0] > sma5[0] THEN
            runAbove = runAbove[1] + 1
        ELSE
            runAbove = 0
        ENDIF
    ELSE
        runAbove = runAbove[1]
    ENDIF
    
    
    // ----------------------
    // EXTENDED RUN DOWN
    // ----------------------
    IF isWeekday THEN
        IF close[1] < sma5[1] THEN
            runBelow = runBelow[1] + 1
        ELSE
            runBelow = 0
        ENDIF
    ELSE
        runBelow = runBelow[1]
    ENDIF
    
    
    // ----------------------
    // FILTER
    // ----------------------
    filterUp = runAbove >= 7
    filterDown = runBelow >= 7
    
    
    // ----------------------
    // SCREENER
    // ----------------------
    SCREENER[filterUp OR filterDown](runAbove - runBelow)
    


    oppure iniziare a contare solo da martedì in poi:

    sma5 = average[5](close)
    
    
    // Ignore weekend bars
    isWeekday = DayOfWeek >= 2 AND DayOfWeek <= 5
    
    
    // ----------------------
    // EXTENDED RUN UP
    // ----------------------
    IF isWeekday THEN
        IF close[1] > sma5[1] THEN
            runAbove = runAbove[1] + 1
        ELSE
            runAbove = 0
        ENDIF
    ELSE
        runAbove = runAbove[1]
    ENDIF
    
    
    // ----------------------
    // EXTENDED RUN DOWN
    // ----------------------
    IF isWeekday THEN
        IF close[1] < sma5[1] THEN
            runBelow = runBelow[1] + 1
        ELSE
            runBelow = 0
        ENDIF
    ELSE
        runBelow = runBelow[1]
    ENDIF
    
    
    // ----------------------
    // FILTER
    // ----------------------
    filterUp = runAbove >= 7
    filterDown = runBelow >= 7
    
    
    // ----------------------
    // SCREENER
    // ----------------------
    SCREENER[filterUp OR filterDown](runAbove - runBelow)
    


    davidator thanked this post
    #260220 quote
    davidator
    Participant
    Junior

    Grazie dei codici e della spiegazione.

    C’erano alcuni errori che sono riuscito a correggere. Col codice funzionante e la nuova logica comunque ottengo gli stessi risultati di prima, dunque non risolvo il mio problema.

    Come hai scritto, togliere i dati del week-end dalla visualizzazione sul grafico non aiuta, il codice terrà conto ugualmente di quei dati.

    Non capisco perchè con la nuova funzione non si riesce semplicemente a far ignorare quei dati al codice.

    Se dovessi avere qualche idea o qualcosa che potrei sperimentare ti prego di fammi sapere.

    Grazie ancora

    #260241 quote
    Nicolas
    Keymaster
    Master

    Mi scuso, ho modificato il codice precedente che era troncato.

    Potresti indicarci su quale elenco stai eseguendo lo strumento di screening, in modo da poter riprodurre il problema? Oppure potresti fornirci degli esempi in cui si verifica il problema? Grazie.

    davidator thanked this post
    #260266 quote
    davidator
    Participant
    Junior

    Buongiorno Nicolas,

    Non devi scusarti.

    Eseguo lo screening su una lista personalizzata di mercati misti fra i quali forex, indici e commodities. Lo screener individua correttamente i mercati in cui le condizioni sono presenti e in cui le barre della domenica non influiscono sul calcolo. Oggi ad esempio mostra l’high grade copper, eurjpy e gbpjpy.


    Ti allego, con due immagini, un esempio sul futures dell’SP500.

    In questo momento l’SP500 rispetta le condizioni di una “Extended Run”, sul grafico giornaliero il prezzo ha chiuso al di sopra della sma5 per 12 giorni consecutivi, dal 31 marzo fino al 15 aprile (ieri).

    -Un’immagine mostra i dati del futures dal CME.

    -L’immagine del grafico su PRT, mostra le candele della domenica che compromettono il calcolo.

    SPTRD-Giornaliero.png SPTRD-Giornaliero.png ES1_2026-04-16_09-33-54_41642.png ES1_2026-04-16_09-33-54_41642.png
Viewing 7 posts - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.

Ignorare barre giornaliere del fine settimana


ProScreener: Scansione Mercati & Screener

New Reply
Author
author-avatar
davidator @davidator Participant
Summary

This topic contains 6 replies,
has 2 voices, and was last updated by davidator
3 hours, 54 minutes ago.

Topic Details
Forum: ProScreener: Scansione Mercati & Screener
Language: Italian
Started: 04/15/2026
Status: Active
Attachments: 2 files
Logo Logo
Loading...