Creare codice per segnali grafici della strategia “Supertrend+sar+macd

Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #261382 quote
    Stanko
    Participant
    Senior

    Buongiorno,

    vorrei cortesemente avere un’aiuto per sapere se è possibile creare un codice per visualizzare i segnali di acquisto o vendita della strategia “Supertrend+sar+macd” pubblicata nel 2016.

    Allego il codice della strategia ed il codice del mio tentativo di trasformazione in indicatore.

    Ho inserito anche una riga con “Timeframe” ma credo che non sia utilizzabile.

    Grazie.

    Strategia-Supertrend-sarmacd.pdf Strategia-Supertrend-sarmacd.pdf Mio-tentativo-segnali-Supertrendsarmacd.pdf Mio-tentativo-segnali-Supertrendsarmacd.pdf
    #261389 quote
    Iván González
    Moderator
    Legend

    Vi sarei grato se, per le richieste future, poteste condividere il codice utilizzando il pulsante che appare con questo simbolo “

    Ecco il codice per un indicatore che visualizza i segnali.

    ST      = SuperTrend[3, 5]
    ParaSAR = SAR[0.02, 0.02, 0.03]
    MCD     = MACDline[12, 26, 150](close)
    SIG     = ExponentialAverage[9](MACDline[12, 26, 150](close))
    Q       = MCD - SIG
    a       = Range
    
    p  = 100
    a1 = lowest[p](low)
    b1 = highest[p](high)
    c1 = 100 * (3 * close - 2 * a1 - open[p-1]) / customclose
    c2 = 100 * (open[p-1] + 2 * b1 - 3 * close) / customclose
    SR = ExponentialAverage[p*5](c1) - ExponentialAverage[p*5](c2)
    
    ONCE countB = 0
    ONCE countS = 0
    
    IF ST[2] >= ST[1] THEN
       countB = countB + 1
    ELSE
       countB = 0
    ENDIF
    
    IF ST[1] >= ST[2] THEN
       countS = countS + 1
    ELSE
       countS = 0
    ENDIF
    
    buyCond  = countB > 15 AND ST > ST[1] AND ParaSAR  (0.045 * POINTSIZE) AND SR > SR[1] AND a[1] > 2 * PIPSIZE
    sellCond = countS > 15 AND ST[1] > ST AND ParaSAR > close AND (Q[1] - Q) > (0.186 * POINTSIZE) AND SR  2 * PIPSIZE
    
    IF buyCond THEN
       drawtext("●",     barindex, close)   coloured(30, 144, 255)
       drawtext("B U Y", barindex, low - a) coloured(30, 144, 255)
    ENDIF
    
    IF sellCond THEN
       drawtext("●",       barindex, close)    coloured(200, 20, 60)
       drawtext("S E L L", barindex, high + a) coloured(200, 20, 60)
    ENDIF
    
    RETURN
    


    Stanko thanked this post
    #261401 quote
    Stanko
    Participant
    Senior

    Chiedo scusa ma con il nuovo layout non trovavo il pulsante per condividere il codice.

    Grazie per tutto.

    Iván González thanked this post
    #261409 quote
    Iván González
    Moderator
    Legend

    Non preoccuparti, nessun problema. 🙂

    Guarda, nello screenshot vedrai dove si trova.


    Stanko thanked this post
    Captura-de-pantalla-2026-05-20-163740.png Captura-de-pantalla-2026-05-20-163740.png
    #261440 quote
    HUGO LEVIEILS
    Participant
    Senior

    Bonjour,

    il y a une erreur dans le code

    ligne 30

    Cordialement

    #261443 quote
    Iván González
    Moderator
    Legend

    Ora…

    // Indicatore di segnali — strategia SuperTrend + Parabolic SAR + MACD
    // Versione "indicator" della strategia "SuperTr+sar+macd" (ProRealCode, 2016)
    // Disegna B U Y / S E L L sul grafico con le stesse condizioni del sistema.
    
    // === Indicatori ===
    ST      = SuperTrend[3, 5]
    ParaSAR = SAR[0.02, 0.02, 0.03]
    MCD     = MACDline[12, 26, 150](close)
    SIG     = ExponentialAverage[9](MACDline[12, 26, 150](close))
    Q       = MCD - SIG
    a       = Range
    
    // === Oscillatore SR (custom) ===
    p  = 100
    a1 = lowest[p](low)
    b1 = highest[p](high)
    c1 = 100 * (3 * close - 2 * a1 - open[p-1]) / customclose
    c2 = 100 * (open[p-1] + 2 * b1 - 3 * close) / customclose
    SR = ExponentialAverage[p*5](c1) - ExponentialAverage[p*5](c2)
    
    // === Contatori barre del SuperTrend ===
    ONCE countB = 0
    ONCE countS = 0
    
    IF ST[2] >= ST[1] THEN
       countB = countB + 1
    ELSE
       countB = 0
    ENDIF
    
    IF ST[1] >= ST[2] THEN
       countS = countS + 1
    ELSE
       countS = 0
    ENDIF
    
    // === Condizioni di segnale (identiche alla strategia) ===
    buyCond  = countB > 15 AND ST > ST[1] AND ParaSAR  (0.045 * POINTSIZE) AND SR > SR[1] AND a[1] > 2 * PIPSIZE
    sellCond = countS > 15 AND ST[1] > ST AND ParaSAR > close AND (Q[1] - Q) > (0.186 * POINTSIZE) AND SR  2 * PIPSIZE
    
    
    // === Disegno dei segnali ===
    IF buyCond THEN
       drawtext("●",     barindex, close)   coloured(30, 144, 255)
       drawtext("B U Y", barindex, low - a) coloured(30, 144, 255)
    ENDIF
    
    IF sellCond THEN
       drawtext("●",       barindex, close)    coloured(200, 20, 60)
       drawtext("S E L L", barindex, high + a) coloured(200, 20, 60)
    ENDIF
    
    RETURN
    


    #261455 quote
    Stanko
    Participant
    Senior

    Buonasera Ivan, in realtà il codice che ho postato ieri in PDF ha, forse, creato dei problemi perchè il codice che hai successivamente pubblicato ha perso alcuni caratteri o simboli. Ho provato ad eliminare gli errori ma rimane il problema che il codice (che allego sotto) non funziona, cioè non scrive o visualizza niente.

    ST      = SuperTrend[3, 5]
    ParaSAR = SAR[0.02, 0.02, 0.03]
    MCD     = MACDline[12, 26, 150](close)
    SIG     = ExponentialAverage[9](MACDline[12, 26, 150](close))
    Q       = MCD - SIG
    a       = Range
    
    
    p  = 100
    a1 = lowest[p](low)
    b1 = highest[p](high)
    c1 = 100 * (3 * close - 2 * a1 - open[p-1]) / customclose
    c2 = 100 * (open[p-1] + 2 * b1 - 3 * close) / customclose
    SR = ExponentialAverage[p*5](c1) - ExponentialAverage[p*5](c2)
    
    
    ONCE countB = 0
    ONCE countS = 0
    
    
    IF ST[2] >= ST[1] THEN
    countB = countB + 1
    ELSE
    countB = 0
    ENDIF
    
    
    IF ST[1] >= ST[2] THEN
    countS = countS + 1
    ELSE
    countS = 0
    ENDIF
    
    
    buyCond  = countB > 15 AND ST > ST[1] AND ParaSAR < close AND (Q-Q[1]) > (0.045 * POINTSIZE) AND SR > SR[1] AND a[1] > 2 * PIPSIZE
    sellCond = countS > 15 AND ST[1] > ST AND ParaSAR > close AND (Q[1] - Q) > (0.186 * POINTSIZE) AND SR < SR[1] AND a1 > 2 * PIPSIZE
    
    
    IF buyCond THEN
    drawtext("●",     barindex, close)   coloured(30, 144, 255)
    drawtext("B U Y", barindex, low - a) coloured(30, 144, 255)
    ENDIF
    
    
    IF sellCond THEN
    drawtext("●",       barindex, close)    coloured(200, 20, 60)
    drawtext("S E L L", barindex, high + a) coloured(200, 20, 60)
    ENDIF
    
    
    RETURN
    
    
    
    #261457 quote
    robertogozzi
    Moderator
    Master

    L’ultimo codice che hai pubblicato funziona perfettamente. Allego una foto del grafico.


    Stanko thanked this post
    x.jpg x.jpg
    #261461 quote
    Stanko
    Participant
    Senior

    Scusa Roberto ma nella mia piattaforma non funziona. Se possibile puoi inviarmi il codice che hai utilizzato (vedo che graficamente rimane evidenziato da un rettangolo il segnale buy o sell)?

    #261472 quote
    robertogozzi
    Moderator
    Master

    Il rettangolo l’ho disegnato io sulla foto per evidenziare i segnali.

    Ecco il codice che ho usato:

    ST      = SuperTrend[3, 5]
    ParaSAR = SAR[0.02, 0.02, 0.03]
    MCD     = MACDline[12, 26, 150](close)
    SIG     = ExponentialAverage[9](MACDline[12, 26, 150](close))
    Q       = MCD - SIG
    a       = Range
    p  = 100
    a1 = lowest[p](low)
    b1 = highest[p](high)
    c1 = 100 * (3 * close - 2 * a1 - open[p-1]) / customclose
    c2 = 100 * (open[p-1] + 2 * b1 - 3 * close) / customclose
    SR = ExponentialAverage[p*5](c1) - ExponentialAverage[p*5](c2)
    ONCE countB = 0
    ONCE countS = 0
    IF ST[2] >= ST[1] THEN
    countB = countB + 1
    ELSE
    countB = 0
    ENDIF
    IF ST[1] >= ST[2] THEN
    countS = countS + 1
    ELSE
    countS = 0
    ENDIF
    buyCond  = countB > 15 AND ST > ST[1] AND ParaSAR < close AND (Q-Q[1]) > (0.045 * POINTSIZE) AND SR > SR[1] AND a[1] > 2 * PIPSIZE
    sellCond = countS > 15 AND ST[1] > ST AND ParaSAR > close AND (Q[1] - Q) > (0.186 * POINTSIZE) AND SR < SR[1] AND a1 > 2 * PIPSIZE
    IF buyCond THEN
    drawtext("●",     barindex, close)   coloured(30, 144, 255)
    drawtext("B U Y", barindex, low - a) coloured(30, 144, 255)
    ENDIF
    IF sellCond THEN
    drawtext("●",       barindex, close)    coloured(200, 20, 60)
    drawtext("S E L L", barindex, high + a) coloured(200, 20, 60)
    ENDIF
    RETURN
    

    Potresti avere poche unità (barre) sul grafico. Prova ad aumentarle ad almeno 1K o più (a me inizia a funzionare con almeno 500 unità).

    Vedi la foto dove sono indicate e dove cambiarle, in più o in meno.



    Stanko and Iván González thanked this post
    x-2.jpg x-2.jpg
    #261480 quote
    Stanko
    Participant
    Senior

    I segnali riesco a vederli a partire dalle 200 unità.

    Grazie Roberto.

    Iván González and robertogozzi thanked this post
Viewing 11 posts - 1 through 11 (of 11 total)
  • You must be logged in to reply to this topic.

Creare codice per segnali grafici della strategia “Supertrend+sar+macd


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
author-avatar
Stanko @stanko Participant
Summary

This topic contains 10 replies,
has 4 voices, and was last updated by Stanko
1 week ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 05/20/2026
Status: Active
Attachments: 5 files
Logo Logo
Loading...