Scan con media e MACD

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #226919 quote
    massininja
    Participant
    New

    Salve,

    vorrei creare uno scan che non scremi gli strumenti della mia lista, ma che semplicemente evidenzi se uno strumento risolve una determinata metrica oppure no.

    Esempio:

    -trend rialzista: prezzo di chiusura superiore a media mobile 5 periodi e media mobile 20 periodi

    -trend ribassista: prezzo di chiusura inferiore a media mobile 5 periodi e inferiore a media mobile 20 periodi

    -trend laterale: prezzo di chiusura inferiore a media mobile 5 periodi e superiore media mobile 20 periodi OPPURE prezzo di chiusura superiore a media mobile 5 periodi e inferiore media mobile 20 periodi

    conferma tramite MACD

    -trend rialzista: trigger line sopra la signal line

    -trend ribassista: trigger line sotto la signal line

    -inversione rialzista: quando la differential line incrocia dal basso verso l’alto la signal line

    -inversione ribassista: quando la differential line incrocia dall’alto verso il basso la signal line

    Vorrei capire come fare per far sì che ogni strumento riporti il risultato “Sì” se il criterio è verificato e “no” se invece non è verificato

     

    Grazie mille

     

    Massimo

    #226934 quote
    robertogozzi
    Moderator
    Master

    Come desideri che venga determinato se un trend è Rialzista, Ribassista o Laterale?

    #226941 quote
    massininja
    Participant
    New

    Buongiorno,

    ipotizando una risposta di tipo binario sarebbe perfetto se la condizione che dovesse verificarsi venisse determinata con un “1” e le altre due non verificate venissero indicate con uno “0”.

    Esempio:

    titolo trend rialzista trend rib. trend laterale macd rialzista macd ribassista etc.
    eni 1 0 0 1 0

    Ho visto uno screening del genere su metastock e mi piacerebbe poterlo ricreare anche qui.

     

    Grazie mille davvero

    #226945 quote
    robertogozzi
    Moderator
    Master

    Lo schema va bene, ma vorrei sapere come desideri che venga determinato un trend Rialzista, Ribassista o Laterale.

    Ad esempio è rialzista quando il prezzo è sopra la media a 200 periodi e ribassista quando è sotto? E magari lo consideriamo laterale quando tra il prezzo e la media a 200 periodi ci soo vari incroci nelle ultime N candele?

    Oppure in altro modo?

    #226946 quote
    massininja
    Participant
    New

    Scusami, non ho specificato che mi stavo riferendo a un trend di breve termine, per cui ipotizzavo questo:

    -Trend rialzista se l’ultimo prezzo di chiusura è superiore sia alla media mobile a 5 periodi, sia a quella di 20 periodi.

    -Trend ribassista se l’ultimo prezzo di chiusura è inferiore sia alla media mobile a 5 periodi, sia a quella di 20 periodi

    – Trend laterale: ultimo prezzo di chiusura inferiore a media mobiule a 5 e superiore a media mobile 20, oppure superiore a media mobile 5 periodi e inferiore a media mobile a 20 periodi

     

    Grazie mille

    #226949 quote
    robertogozzi
    Moderator
    Master

    Ok, te lo faccio appena possibile.

    #226957 quote
    massininja
    Participant
    New

    Grazie mille, davvero.

    #227093 quote
    robertogozzi
    Moderator
    Master

    Ecco fatto:

    // restituisce i seguenti vslori:
    //
    //      1 = Rialzo
    //      2 = Ribasso
    //      3 = inversione Rialzista
    //      4 = inversione Ribassista
    //
    Sma5     = average[5,0](close)
    Sma20    = average[20,0](close)
    Rialzo   = close > max(Sma5,Sma20)
    Ribasso  = close < min(Sma5,Sma20)
    //Laterale = ((close > Sma20) AND (close < Sma5)) OR ((close > Sma5) AND (close < Sma20))
    
    MyMACD   = Average[12,1](close) - Average[26,1](close)
    MySignal = Average[9,1](MyMACD)
    MyHisto  = MyMACD - MySignal
    UP       = Rialzo  AND (MyMACD > MySignal)
    DN       = Ribasso AND (MyMACD < MySignal)
    invUP    = MyHisto CROSSES OVER  MySignal
    invDN    = MyHisto CROSSES UNDER MySignal
    Segnale  = 0
    IF UP THEN
       Segnale = 1
    ELSIF DN THEN
       Segnale = 2
    ELSIF invUP THEN
       Segnale = 3
    ELSIF invDN THEN
       Segnale = 4
    ENDIF
    SCREENER[Segnale](Segnale AS "1=UP,2=DN,3=up,4=dn")

    quando restituisce i valori dei 4 possibili segnali, utilizzo tutto maiuscolo (UP e DN) per i segnali rialzisti e ribassisti, mentre tutto minuscolo (up e dn) per le inversioni. Questo perché il testo che spiega il criterio non può superare una certa lunghezza.

    Se ti restituisce troppi segnali e non risci a vederli tutti puoi filtrarli con il prezzo cambiando l’ultima riga in:

    SCREENER[Segnale AND (close > 15)](Segnale AS "1=UP,2=DN,3=up,4=dn")

    in modo da vederne meno (nell’esempio solo quelli con prezzo > 15).

    Mi sono accorto adesso che in realtà avevi già specificato nel post iniziale come determinare il trend. Scusami, non l’avevo letto bene.

    #227102 quote
    massininja
    Participant
    New

    Fantastico, grazie mille davvero!

    #227108 quote
    massininja
    Participant
    New

    Ho provato il codice e funziona bene, ho solo inserito la variabile “Laterale” che nel codice oroginale era inserita come testo.

    Volevo chiederle, attualmente la colonna di risposta mi rimanda solo uno dei segnali (1 o 2 o 3 o 4 etc). Eventualmente sarebbe possibile modificare i lcodice affinché ogni colonna abbia la sua analisi e, modificare la risposta del segnale in sì=1 o no=0

    titolo trend rialzista trend rib. trend laterale macd rialzista macd ribassista etc.
    eni 1 0 0 1 0

    In modo da avere non una scrematura dei titoli ma una panoramica complessiva, dove poter vedere al colpo d’occhio quali titoli della mia lista soddisfano i vari requisiti.

    Grazie in anticipo!

    #227167 quote
    robertogozzi
    Moderator
    Master

    Eccolo, il 9 iniziale serve solo per fare in modo che restino gli ZERI iniziali, altrimenti li toglierebbe:

    // restituisce i seguenti vslori:
    //
    //   Rialzo  Ribasso inv.Rialz Inv.Ribas. Later.
    //     U        D        u         d        L
    //     1        1        1         1        1
    //
    Sma5     = average[5,0](close)
    Sma20    = average[20,0](close)
    Rialzo   = close > max(Sma5,Sma20)
    Ribasso  = close < min(Sma5,Sma20)
    Laterale = ((close > Sma20) AND (close < Sma5)) OR ((close > Sma5) AND (close < Sma20))
    
    MyMACD   = Average[12,1](close) - Average[26,1](close)
    MySignal = Average[9,1](MyMACD)
    MyHisto  = MyMACD - MySignal
    UP       = Rialzo  AND (MyMACD > MySignal)
    DN       = Ribasso AND (MyMACD < MySignal)
    invUP    = MyHisto CROSSES OVER  MySignal
    invDN    = MyHisto CROSSES UNDER MySignal
    Segnale = 900000
    IF UP THEN
       Segnale = Segnale + 10000
    ENDIF
    IF DN THEN
       Segnale = Segnale + 1000
    ENDIF
    IF invUP THEN
       Segnale = Segnale + 100
    ENDIF
    IF invDN THEN
       Segnale = Segnale + 10
    ENDIF
    IF Laterale THEN
       Segnale = Segnale + 1
    ENDIF
    IF Segnale = 900000 THEN
       Segnale = 0
    ENDIF
    SCREENER[Segnale AND (close > 15)](Segnale AS "- UDudL")

    alla fine, se SEGNALE ha ancora valore 900000 significa che nessuna condizione è soddisfatta, per cui la variabile viene posta a ZERO in modo che non restituisca nessun valore.

    #227546 quote
    massininja
    Participant
    New

    Grazie mille!

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

Scan con media e MACD


ProScreener: Scansione Mercati & Screener

New Reply
Author
author-avatar
massininja @massininja Participant
Summary

This topic contains 11 replies,
has 2 voices, and was last updated by massininja
2 years ago.

Topic Details
Forum: ProScreener: Scansione Mercati & Screener
Language: Italian
Started: 01/26/2024
Status: Active
Attachments: No files
Logo Logo
Loading...