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.
Vi sarei grato se, per le richieste future, poteste condividere il codice utilizzando il pulsante che appare con questo simbolo “>".</p>
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
Chiedo scusa ma con il nuovo layout non trovavo il pulsante per condividere il codice.
Grazie per tutto.
Non preoccuparti, nessun problema. 🙂
Guarda, nello screenshot vedrai dove si trova.
Bonjour,
il y a une erreur dans le code
ligne 30
Cordialement
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
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
L’ultimo codice che hai pubblicato funziona perfettamente. Allego una foto del grafico.
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)?
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.
I segnali riesco a vederli a partire dalle 200 unità.
Grazie Roberto.