Proscreener TMA center channel

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #161430 quote
    Procor
    Participant
    New
    // parameters
    // HalfLength = 50
    // AtrLength = 100
    // AtrMultiplier = 2.0
    
    avg = average[1](close)
    
    sum = (HalfLength+1)*avg
    sumw = (HalfLength+1)
    k = HalfLength
    
    for j = 1 to HalfLength do
    k = k-1
    sum = sum+(k*avg[j])
    sumw = sumw+k
    next
    
    buffer1 = sum/sumw
    
    myrange = AverageTrueRange[AtrLength](close)*AtrMultiplier
    
    buffer2 = buffer1+myrange
    buffer3 = buffer1-myrange
    
    RETURN buffer1 coloured(0,220,0) as "TMA", buffer2 coloured(220,0,0)  as "upper band", buffer3 coloured(220,0,0) as "lower band"
    

    Buonasera Roberto,

    posso chiedere per cortesia un proscreener che segnala quando il prezzo dell’attuale candela è :

    = o superiore della upper band per la condizione sell, o

    = o inferiore della lower band per la condizione buy

    time frame 1h 4h daily

    con il segnale che  una volta attivato nel proscreer rimanga aperto fino alla chiusura della candela stessa

     

    Chiedo anticipatamente se invece volessi far chiudere il segnale al termine della candela successiva a quella che ha attivato il segnale come dovrei modificarlo.

    Grazie come sempre per la disponibilità

    Corrado

    #161470 quote
    robertogozzi
    Moderator
    Master

    Eccolo:

    N             = 1           //Durate del segnale (deve essere un intero > 0)
    HalfLength    = 50
    AtrLength     = 100
    AtrMultiplier = 2.0
    avg  = average[1](close)
    sum  = (HalfLength+1)*avg
    sumw = (HalfLength+1)
    k    = HalfLength
    for j = 1 to HalfLength do
       k = k-1
       sum = sum+(k*avg[j])
       sumw = sumw+k
    next
    buffer1 = sum/sumw
    myrange = AverageTrueRange[AtrLength](close)*AtrMultiplier
    buffer2 = buffer1+myrange
    buffer3 = buffer1-myrange
    //RETURN buffer1 coloured(0,220,0) as "TMA", buffer2 coloured(220,0,0)  as "upper band", buffer3 coloured(220,0,0) as "lower band"
    L1 = close < buffer3
    S1 = close > buffer2
    Screener[summation[N](L1 or S1)]

    per la durata usa N, da 1 in poi.

    Per il time frame, non ce n’è uno specifico, puoi usarlo sul Daily, 1 ora, 5 minuti, 1 secondo…

    #161674 quote
    Procor
    Participant
    New

    Grazie mille Roberto,

    si so che si può cambiare dalla finestra del proscreener,  preferirei che fosse il proscreener a ricercare su 3 tf contemporaneamente, per  evitare di tenere aperta la finestra di programmazione e dover fare la ricerca manualmente. Se chiedo troppo grazie comunque per il prezioso lavoro 🙂 . Corrado

    #161677 quote
    robertogozzi
    Moderator
    Master

    Ok, questo ti restituirà il segnale quando il prezzo sarà oltre le bande su tutti e tre i TF contemporaneamente:

    TIMEFRAME(Daily)
    ignored,UpperBd,LowerBd = CALL "TMA center channel"[50, 100, 2]
    TIMEFRAME(4h)
    ignored,UpperB4,LowerB4 = CALL "TMA center channel"[50, 100, 2]
    TIMEFRAME(1h)
    ignored,UpperB1,LowerB1 = CALL "TMA center channel"[50, 100, 2]
    Timeframe(default)
    N  = 1
    L1 = (close < LowerBd) AND (close < LowerB4) AND (close < LowerB1)
    S1 = (close > UpperBd) AND (close > UpperB4) AND (close > UpperB1)
    Screener[summation[N](L1 or S1)]
    #161686 quote
    Procor
    Participant
    New

    grazie, mi scuso che non sono stato sufficientemente comprensibile, intendevo che il proscreenr lo cerca su 3 tf contemporaneamente e mi ritorna su quale dei 3 si verifica (anche uno solo), non che cerchi una coppia su cui si verifica contemporaneamente su tutti e 3 . In caso di segnale su piu tf  della stessa coppia che ritorni quello piu basso. Grazie comunque

    #161694 quote
    robertogozzi
    Moderator
    Master

    Ok, questo restituisce tutti e 3 contemporaneamente, identificati con “d41“, cioè daily 4 ore e 1 ora.

    Per ognuno dei tre TF restituisce:

    • 9 = nessun segnale (0 non lo stamperebbe)
    • 1 = segnale Long
    • 2 = segnale Short (gli Screener non restituiscono valori negativi)
    TIMEFRAME(Daily)
    ignored,UpperBd,LowerBd = CALL "TMA center channel"[50, 100, 2]
    Ld = (close < LowerBd)
    Sd = (close > UpperBd)
    TIMEFRAME(4h)
    ignored,UpperB4,LowerB4 = CALL "TMA center channel"[50, 100, 2]
    L4 = (close < LowerB4)
    S4 = (close > UpperB4)
    TIMEFRAME(1h)
    ignored,UpperB1,LowerB1 = CALL "TMA center channel"[50, 100, 2]
    L1 = (close < LowerB1)
    S1 = (close > UpperB1)
    Timeframe(default)
    //
    N = 1
    //
    IF Ld = 1 THEN
    Cond = 100
    ELSIF Sd = 1 THEN
    Cond = 200
    ELSE
    Cond = 900
    ENDIF
    //
    IF L4 = 1 THEN
    Cond = Cond + 10
    ELSIF S4 = 1 THEN
    Cond = Cond + 20
    ELSE
    Cond = Cond + 90
    ENDIF
    //
    IF L1 = 1 THEN
    Cond = Cond + 1
    ELSIF S1 = 1 THEN
    Cond = Cond + 2
    ELSE
    Cond = Cond + 9
    ENDIF
    //
    IF Cond = 999 THEN
    Cond = 0
    ENDIF
    x = Cond
    IF x = 0 THEN
    FOR i = 1 TO N
    IF Cond[i] THEN
    x = Cond[i]
    ENDIF
    NEXT
    ENDIF
    Screener[x](x AS "d41")
    #161697 quote
    Procor
    Participant
    New

    Gentilissimo e codice perfetto, come sempre.

    Grazie

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

Proscreener TMA center channel


ProScreener: Scansione Mercati & Screener

New Reply
Author
author-avatar
Procor @procor Participant
Summary

This topic contains 6 replies,
has 2 voices, and was last updated by Procor
5 years ago.

Topic Details
Forum: ProScreener: Scansione Mercati & Screener
Language: Italian
Started: 02/14/2021
Status: Active
Attachments: No files
Logo Logo
Loading...