Buongiorno!
Sono nuovo di questo mondo e non ci capisco nulla di programmazione anche se sto cercando di imparare.
Sarei molto felice se qualcuno mi desse una mano a fare un codice con queste regole.
- Trend crescente da almeno 2 mesi (almeno un 30% di crescita in due mesi)
- Adx tra 20 e 40 negli ultimi giorni
- Pullback da 2 a 5 barre con barra finale compresa tra la media mobile semplice a 10 periodi e la media mobile esponenziale a 30 periodi
- volumi medi (10 periodi va bene) sopra i 50 mila scambi.
Un altro con queste regole:
- Trend crescente da almeno 2 mesi (almeno un 30% di crescita in due mesi)
- Adx tra 20 e 40
- ultima barra con massimo sotto la barra del giorno precedente, minimo sotto almeno 3 minimi delle barre precedenti e chiusura sopra almeno il 25% del range
- volumi medi (10 periodi va bene) sopra i 50 mila scambi.
E questo è l’ultimo:
- Trend decrescente da almeno 6 mesi
- Minimo importante a 6 mesi fatto nell’ultimo mese
- Incrocio al rialzo di 3 medie mobili (10 periodi semplice, 20 periodi esponenziale, 30 periodi esponenziale, deve passare da 10-20-30 a 30-20-10)
- ADX crescente sopra i 20
- Volumi medi in aumento durante l’incrocio delle medie mobili (OBV in aumento)
- Volumi medi sempre sopra i 50 mila
Su quale TF (time frame) devi usare questi screener?
Cosa intendi per “Pullback da 2 a 5 barre“?
Di quanto deve essere il Pullback?
Praticamente il pullback deve essere in atto da minimo 2 giorni, massimo 5 giorni e non deve chiudere sotto la media mobile esponenziale a 30 periodi.
Intanto questa è la Regola 1:
TIMEFRAME(Daily)
Periodi = 50 //50 candele Daily (circa due mesi)
HH = highest[Periodi](close)
LL = close[Periodi - 1]
Diff = ((HH * 100) / LL) - 100
c1 = (Diff * (Diff > 0)) >= 30 //crescita di almeno il 30%
//
MyADX = Adx[14]
c2 = (summation[5](MyADX >= 20 AND MyADX <= 40) = 5) //Adx a 14 periodi tra 20 e 40 nelle ultime 5 barre
//
Sma10 = average[10,0](close) //Media Mobile Semplice a 10 periodi
Ema30 = average[30,1](close) //Media Mobile Esponenzaile a 30 periodi
c3a = 1
FOR i = 0 TO (Periodi - 1)
IF close[i] >= HH THEN
IF i < 2 OR i > 5 THEN //scartare quanto il prezzo non è sceso tra le 2 e le 5 barre precedenti
c3a = 0
break
ENDIF
ENDIF
NEXT
c3b = close >= Sma10
c3c = close <= Ema30
c3 = c3a AND c3b AND c3c
//
c4 = average[10,0](volume) > 50000 //Media Mobile Semplice a 10 periodi del Volume > 50000
//
TIMEFRAME(default)
cond = c1 AND c2 AND c3 AND c4 //tutte le 4 condizioni verificate contemporaneamente
SCREENER[Cond]le condizioni
nelle mie prove NON ho trovato nessun titolo con questi settaggi. Modificandoli abbondantemente 4-5 titoli sono saltati fuori tra le azioni ed indici USA, Italia, UK, UE, South Africa, ecc…
Comunque a me interessa che la logica sia quella corretta, i parametri li aggiusterai te caso per caso.
Se trovi qualche titolo che avrebbe dovuto essere rilevato ma non lo è, dimmi il nome completo ed il giorno in cui le condizioni si sono verificate.
Regola 2:
TIMEFRAME(Daily)
Periodi = 50 //50 giorni (circa due mesi)
HH = close
LL = close[Periodi - 1]
Diff = (((HH * 100) / LL) - 100)
c1 = (Diff * (Diff > 0)) >= 30 //30% crescita minimo
//
MyADX = Adx[14]
c2 = MyADX >= 20 AND MyADX <= 40 //Adx tra 20 e 40
//
c3a = high < low[1] //Massimo odierno sotto il minimo della barra precedente
c3b = low < lowest[3](low[1]) //Minimo più basso dei minimi delle 3 barre precedenti
c3c = ((close > open) * (close >= (low + (range * 0.25)))) OR ((close <= open) * (close <= (high - (range * 0.25))))
c3 = c3a AND c3b AND c3c
//
c4 = average[10,0](volume) > 50000
//
TIMEFRAME(default)
cond = c1 AND c2 AND c3 AND c4
SCREENER[Cond]
Per la REGOLA 3 dici “Minimo importante a 6 mesi fatto nell’ultimo mese“, come vuoi determinare questo minimo importante?
Grazie mille!
Minimo importante nel senso che nel corso dell’ultimo mese ci deve essere il prezzo minimo più basso degli ultimi 6 mesi.
Ecco l’ultimo, la Regola 3:
TIMEFRAME(Daily)
Periodi = 150 //150 giorni (circa sei mesi)
c1 = close < close[Periodi] //Trend decrescente
//
c2 = summation[25](low = lowest[Periodi](close)) //Nell'ultimo mese deve esserci stato il prezzo più basso degli ultimi 6
//
Sma10 = average[10,0](close) //Media Mobile Semplice a 10 periodi
Ema20 = average[20,1](close) //Media Mobile Esponenziale a 20 periodi
Ema30 = average[30,1](close) //Media Mobile Esponenziale a 30 periodi
c3a = (Sma10 > Ema20 AND Ema20 > Ema30)
c3 = c3a AND Not c3a[1] //Incrocio al rialzo delle tre medie
//
MyADX = Adx[14]
c4 = MyADX > 20 AND MyADX > MyADX[1] //ADX crescente e sopra 20
//
MyOBV = OBV(close)
c5 = MyOBV > MyOBV[1] //On Balance Volume crescente
//
c6 = average[10,0](volume) > 50000 //Media Mobile Semplice a 10 periodi dei volumi > 50000
//
TIMEFRAME(default)
cond = c1 AND c2 AND c3 AND c4 AND c5 AND c6
SCREENER[Cond]