Testa e Spalle

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #197086 quote
    sivispacemsivispacem
    Participant
    Junior

    Buongiorno a tutti.

    Esiste uno screener che metta in evidenza un Testa e Spalle?

    Grazie in anticipo

    #197111 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Non mi pare ci sia niente. Con un pò di pazienza posso provare a farti qualcosa.

    #197143 quote
    sivispacemsivispacem
    Participant
    Junior

    Grazie mille.

    #197178 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Eccolo, è un codice molto basilare, ma tanto per dare un’idea:

    // Head & Shoulders
    //
    //ONCE LookBack     = 30
    //ONCE MaxInBetween = 30
    //
    ONCE SwingHI    = 0
    ONCE SwingHI1   = 0
    ONCE SwingHI2   = 0
    ONCE SwingHI3   = 0
    ONCE SwingLO    = 0
    ONCE SwingLO1   = 0
    ONCE SwingLO2   = 0
    ONCE SwingLO3   = 0
    //
    IF SwingHI3 > 0 THEN
    SwingHI1 = 0
    SwingHI2 = 0
    SwingHI3 = 0
    ENDIF
    IF SwingLO3 > 0 THEN
    SwingLO1 = 0
    SwingLO2 = 0
    SwingLO3 = 0
    ENDIF
    //
    Offset   = average[LookBack](range)
    Bullish  = close > open
    Bearish  = close < open
    TopHI    = max(high,high[1]) = highest[LookBack](high)
    BottomLO = min(low,low[1])   = lowest[LookBack](low)
    //
    SwingX   = Bearish AND Bullish[1] AND TopHI
    SwingHI  = 0
    IF SwingX THEN
    SwingHI = max(high,high[1])
    BarHI   = BarIndex - (high < high[1])
    ENDIF
    //
    SwingY   = Bullish AND Bearish[1] AND BottomLO
    SwingLO  = 0
    IF SwingY THEN
    SwingLO = min(low,low[1])
    BarLO   = BarIndex - (low > low[1])
    ENDIF
    //
    // detect anyone of the three SwingHIs that make a (bearish) Head & Shoulder
    IF SwingHI > 0 THEN
    IF SwingHI1 = 0 THEN
    SwingHI1 = SwingHI
    BarHI1   = BarHI
    SwingHI2 = 0
    SwingHI3 = 0
    ELSE
    IF SwingHI2 = 0 THEN
    SwingHI2 = SwingHI
    BarHI2   = BarHI
    SwingHI3 = 0
    IF ((BarHI2 - BarHI1) > MaxInBetween) OR (SwingHI2 <= SwingHI1)  THEN
    SwingHI1 = SwingHI2
    BarHI1   = BarHI2
    SwingHI2 = 0
    SwingHI3 = 0
    ENDIF
    ELSE
    IF SwingHI3 = 0 THEN
    SwingHI3 = SwingHI
    BarHI3   = BarHI
    IF ((BarHI3 - BarHI2) > MaxInBetween) OR (SwingHI3 >= SwingHI2)  THEN
    SwingHI1 = SwingHI3
    BarHI1   = BarHI3
    SwingHI2 = 0
    SwingHI3 = 0
    ENDIF
    ENDIF
    ENDIF
    ENDIF
    IF SwingHI3 > 0 AND ((SwingHI2 <= SwingHI1) OR (SwingHI2 <= SwingHI3)) THEN
    SwingHI1 = SwingHI3
    BarHI1   = BarHI3
    SwingHI2 = 0
    SwingHI3 = 0
    ENDIF
    ENDIF
    //
    // detect anyone of the three SwingLOs that make a (bullish) Head & Shoulder
    IF SwingLO > 0 THEN
    IF SwingLO1 = 0 THEN
    SwingLO1 = SwingLO
    BarLO1   = BarLO
    SwingLO2 = 0
    SwingLO3 = 0
    ELSE
    IF SwingLO2 = 0 THEN
    SwingLO2 = SwingLO
    BarLO2   = BarLO
    SwingLO3 = 0
    IF ((BarLO2 - BarLO1) > MaxInBetween) OR (SwingLO2 >= SwingLO1)  THEN
    SwingLO1 = SwingLO2
    BarLO1   = BarLO2
    SwingLO2 = 0
    ENDIF
    ELSE
    IF SwingLO3 = 0 THEN
    SwingLO3 = SwingLO
    BarLO3   = BarLO
    IF ((BarLO3 - BarLO2) > MaxInBetween) OR (SwingLO3 <= SwingLO2)  THEN
    SwingLO1 = SwingLO3
    BarLO1   = BarLO3
    SwingLO2 = 0
    SwingLO1 = 0
    ENDIF
    ENDIF
    ENDIF
    ENDIF
    IF SwingLO3 > 0 AND ((SwingLO2 >= SwingLO1) OR (SwingLO2 >= SwingLO3)) THEN
    SwingLO1 = SwingLO3
    BarLO1   = BarLO3
    SwingLO2 = 0
    SwingLO3 = 0
    ENDIF
    ENDIF
    //
    // plot ARROWS over/below H & S
    //
    IF SwingHI3 > 0 THEN
    SwingLO1 = 0
    SwingLO2 = 0
    SwingLO3 = 0
    HItemp   = max(SwingHI1,max(SwingHI2,SwingHI3))
    DrawArrowDown(BarHI3,HItemp + Offset*3) coloured(255,0,0,155)     //RED
    DrawTriangle(BarHI1-1,HItemp+Offset,BarHi1,HItemp+Offset*2,BarHI1+1,HItemp+Offset) COLOURED(255,0,0,255) BORDERCOLOR(255,0,0,255)
    DrawTriangle(BarHI2-1,HItemp+Offset,BarHI2,HItemp+Offset*2,BarHI2+1,HItemp+Offset) COLOURED(255,0,0,255) BORDERCOLOR(255,0,0,255)
    DrawTriangle(BarHI3-1,HItemp+Offset,BarHI3,HItemp+Offset*2,BarHI3+1,HItemp+Offset) COLOURED(255,0,0,255) BORDERCOLOR(255,0,0,255)
    ELSIF SwingLO3 > 0 THEN
    SwingHI1 = 0
    SwingHI2 = 0
    SwingHI3 = 0
    LOtemp   = min(SwingLO1,min(SwingLO2,SwingLO3))
    DrawArrowUp(BarLO3,LOtemp - Offset*3) coloured(0,128,0,155)       //GREEN
    DrawTriangle(BarLO1-1,LOtemp-Offset,BarLO1,LOtemp-Offset*2,BarLO1+1,LOtemp-Offset) COLOURED(0,128,0,155) BORDERCOLOR(0,128,0,155)
    DrawTriangle(BarLO2-1,LOtemp-Offset,BarLO2,LOtemp-Offset*2,BarLO2+1,LOtemp-Offset) COLOURED(0,128,0,155) BORDERCOLOR(0,128,0,155)
    DrawTriangle(BarLO3-1,LOtemp-Offset,BarLO3,LOtemp-Offset*2,BarLO3+1,LOtemp-Offset) COLOURED(0,128,0,155) BORDERCOLOR(0,128,0,155)
    ENDIF
    RETURN
    x-3.jpg x-3.jpg Head-Shoulders.itf
    #197181 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Scusami, quello di sopra è l’indicatore, ecco lo screeener:

    // Head & Shoulders
    //
    ONCE LookBack     = 15
    ONCE MaxInBetween = 50
    //
    ONCE SwingHI    = 0
    ONCE SwingHI1   = 0
    ONCE SwingHI2   = 0
    ONCE SwingHI3   = 0
    ONCE SwingLO    = 0
    ONCE SwingLO1   = 0
    ONCE SwingLO2   = 0
    ONCE SwingLO3   = 0
    //
    IF SwingHI3 > 0 THEN
    SwingHI1 = 0
    SwingHI2 = 0
    SwingHI3 = 0
    ENDIF
    IF SwingLO3 > 0 THEN
    SwingLO1 = 0
    SwingLO2 = 0
    SwingLO3 = 0
    ENDIF
    //
    //Offset   = average[LookBack](range)
    Bullish  = close > open
    Bearish  = close < open
    TopHI    = max(high,high[1]) = highest[LookBack](high)
    BottomLO = min(low,low[1])   = lowest[LookBack](low)
    //
    SwingX   = Bearish AND Bullish[1] AND TopHI
    SwingHI  = 0
    IF SwingX THEN
    SwingHI = max(high,high[1])
    BarHI   = BarIndex - (high < high[1])
    ENDIF
    //
    SwingY   = Bullish AND Bearish[1] AND BottomLO
    SwingLO  = 0
    IF SwingY THEN
    SwingLO = min(low,low[1])
    BarLO   = BarIndex - (low > low[1])
    ENDIF
    //
    // detect anyone of the three SwingHIs that make a (bearish) Head & Shoulder
    IF SwingHI > 0 THEN
    IF SwingHI1 = 0 THEN
    SwingHI1 = SwingHI
    BarHI1   = BarHI
    SwingHI2 = 0
    SwingHI3 = 0
    ELSE
    IF SwingHI2 = 0 THEN
    SwingHI2 = SwingHI
    BarHI2   = BarHI
    SwingHI3 = 0
    IF ((BarHI2 - BarHI1) > MaxInBetween) OR (SwingHI2 <= SwingHI1)  THEN
    SwingHI1 = SwingHI2
    BarHI1   = BarHI2
    SwingHI2 = 0
    SwingHI3 = 0
    ENDIF
    ELSE
    IF SwingHI3 = 0 THEN
    SwingHI3 = SwingHI
    BarHI3   = BarHI
    IF ((BarHI3 - BarHI2) > MaxInBetween) OR (SwingHI3 >= SwingHI2)  THEN
    SwingHI1 = SwingHI3
    BarHI1   = BarHI3
    SwingHI2 = 0
    SwingHI3 = 0
    ENDIF
    ENDIF
    ENDIF
    ENDIF
    IF SwingHI3 > 0 AND ((SwingHI2 <= SwingHI1) OR (SwingHI2 <= SwingHI3)) THEN
    SwingHI1 = SwingHI3
    BarHI1   = BarHI3
    SwingHI2 = 0
    SwingHI3 = 0
    ENDIF
    ENDIF
    //
    // detect anyone of the three SwingLOs that make a (bullish) Head & Shoulder
    IF SwingLO > 0 THEN
    IF SwingLO1 = 0 THEN
    SwingLO1 = SwingLO
    BarLO1   = BarLO
    SwingLO2 = 0
    SwingLO3 = 0
    ELSE
    IF SwingLO2 = 0 THEN
    SwingLO2 = SwingLO
    BarLO2   = BarLO
    SwingLO3 = 0
    IF ((BarLO2 - BarLO1) > MaxInBetween) OR (SwingLO2 >= SwingLO1)  THEN
    SwingLO1 = SwingLO2
    BarLO1   = BarLO2
    SwingLO2 = 0
    ENDIF
    ELSE
    IF SwingLO3 = 0 THEN
    SwingLO3 = SwingLO
    BarLO3   = BarLO
    IF ((BarLO3 - BarLO2) > MaxInBetween) OR (SwingLO3 <= SwingLO2)  THEN
    SwingLO1 = SwingLO3
    BarLO1   = BarLO3
    SwingLO2 = 0
    SwingLO1 = 0
    ENDIF
    ENDIF
    ENDIF
    ENDIF
    IF SwingLO3 > 0 AND ((SwingLO2 >= SwingLO1) OR (SwingLO2 >= SwingLO3)) THEN
    SwingLO1 = SwingLO3
    BarLO1   = BarLO3
    SwingLO2 = 0
    SwingLO3 = 0
    ENDIF
    ENDIF
    //
    // plot ARROWS over/below H & S
    //
    IF SwingHI3 > 0 THEN
    SwingLO1 = 0
    SwingLO2 = 0
    SwingLO3 = 0
    //HItemp   = max(SwingHI1,max(SwingHI2,SwingHI3))
    //DrawArrowDown(BarHI3,HItemp + Offset*3) coloured(255,0,0,155)     //RED
    //DrawTriangle(BarHI1-1,HItemp+Offset,BarHi1,HItemp+Offset*2,BarHI1+1,HItemp+Offset) COLOURED(255,0,0,255) BORDERCOLOR(255,0,0,255)
    //DrawTriangle(BarHI2-1,HItemp+Offset,BarHI2,HItemp+Offset*2,BarHI2+1,HItemp+Offset) COLOURED(255,0,0,255) BORDERCOLOR(255,0,0,255)
    //DrawTriangle(BarHI3-1,HItemp+Offset,BarHI3,HItemp+Offset*2,BarHI3+1,HItemp+Offset) COLOURED(255,0,0,255) BORDERCOLOR(255,0,0,255)
    ELSIF SwingLO3 > 0 THEN
    SwingHI1 = 0
    SwingHI2 = 0
    SwingHI3 = 0
    //LOtemp   = min(SwingLO1,min(SwingLO2,SwingLO3))
    //DrawArrowUp(BarLO3,LOtemp - Offset*3) coloured(0,128,0,155)       //GREEN
    //DrawTriangle(BarLO1-1,LOtemp-Offset,BarLO1,LOtemp-Offset*2,BarLO1+1,LOtemp-Offset) COLOURED(0,128,0,155) BORDERCOLOR(0,128,0,155)
    //DrawTriangle(BarLO2-1,LOtemp-Offset,BarLO2,LOtemp-Offset*2,BarLO2+1,LOtemp-Offset) COLOURED(0,128,0,155) BORDERCOLOR(0,128,0,155)
    //DrawTriangle(BarLO3-1,LOtemp-Offset,BarLO3,LOtemp-Offset*2,BarLO3+1,LOtemp-Offset) COLOURED(0,128,0,155) BORDERCOLOR(0,128,0,155)
    ENDIF
    //RETURN
    Cond = 0
    IF SwingHI3 > 0 THEN
    Cond = 2
    ELSIF SwingLO3 > 0 THEN
    Cond = 1
    ENDIF
    SCREENER[Cond](Cond AS "1=↑, 2=↓")
    Head-Shoulders-screener.itf
    #197352 quote
    sivispacemsivispacem
    Participant
    Junior

    Ciao Roberto.

    Grazie, provo a tararlo (se riesco).

    Grazie ancora.

    F

    #201129 quote
    Msport71Msport71
    Participant
    Senior

    Roberto,

     

    buongiorno.

    Una cortesia:  sto guardando anche io l’indicatore testa spalla che hai preparato e sto cercando di capire la logica delle sue indicazioni, che essendo neofita mi sfuggono.

    Nel grafico che hai postato del Nikkey a 1  giorno, l’indicatore evidenzia sul grafico del prezzo dei triangoli (di maggiore e minore lunghezza) e delle frecce, solitamente all’apparire del terzo triangolo.

    I triangoli a loro volta possono essere o ben separati tra  loro oppure vicini , quasi sovrapposti .

    Non riesco a interpretare bene graficamente tutti i segnali.

    Puoi aiutarmi a interpretare meglio quanto l’indicatore mostra?

    Grazie

    #201211 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Dammi ancora un pò di tempo. Grazie 🙂

    #201231 quote
    Msport71Msport71
    Participant
    Senior

    Certo, ci mancherebbe…..

    Grazie

    #201802 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Scusami per il ritardo, ma ho avuto molti impegni.

    Ancora un paio di giorni e ti risponderò.

    #201809 quote
    Msport71Msport71
    Participant
    Senior

    Roberto,

     

    figurati.

    Grazie

    #201881 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Come puoi vedere nella foto (Nikkei, Daily), tra l’1/7/2022 e l’1/9/2022 (c0n impostazioni 10,15), ci sono due segnali, uno Long ed uno Short.

    I triangoli sono posti in corrispondenza delle spalle e della testa, la freccia è visualizzata sopra (o sotto)  l’ultimo triangolo del pattern, quello che lo conferma.

    I triangoli e le frecce sono sempre della stessa dimensione, possono variare solo se vari lo zoom del grafico.

    Il numero di segnali varia con il variare delle impostazioni. Il primo parametro (LookBack) è il numero di periodi su cui sono calcolati i Minimi e Massimi di riferimento, il secondo (MaxInBetween) è il numero massimo di barre che può esserci tra una spalla e la testa o tra la testa e l’altra spalla (cioè tra i triangoli).

    x-1.jpg x-1.jpg
    #201890 quote
    Msport71Msport71
    Participant
    Senior

    Tutto chiarissimo, grazie e mille!

    #203432 quote
    brunoasoliveirabrunoasoliveira
    Participant
    New

    Hi Roberto, screener is amazing. Thank you very much. Regarding the indicator, i’ve already imported but it doesn’t show anything. I find the stock in the screener but in the graph, i don’t see anything. Thanks a lot for your job

    Ciao Roberto, lo screener è fantastico. Grazie mille. Per quanto riguarda l’indicatore, ho già importato ma non mostra nulla. Trovo il titolo nello screener ma nel grafico non vedo nulla. Grazie mille per il tuo lavoro

    #203441 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Per favore pubblica solo nella lingua del forum in cui stai postando. Ad esempio solo l’inglese nei forum di lingua inglese e il francese solo nei forum di lingua francese.

    Grazie 🙂

    Hai messo l’indicatore sul grafico?

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

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

Testa e Spalle


ProScreener: Scansione Mercati & Screener

New Reply
Author
author-avatar
sivispacem @sivispacem Participant
Summary

This topic contains 15 replies,
has 5 voices, and was last updated by ShockWave TradingShockWave Trading
1 year, 11 months ago.

Topic Details
Forum: ProScreener: Scansione Mercati & Screener
Language: Italian
Started: 07/10/2022
Status: Active
Attachments: 4 files
ProRealCode ProRealCode
Loading...