(05.05.2025, 16:02)Päda schrieb: [ -> ]Kennt jemand einen US-Aktien-Screener, mit dem gezielt nach Werten gesucht werden kann, die aktuell mehr als 20 % unter ihrem 2-Jahres-Hoch notieren und sich zugleich zwischen 0 % und 10 % oberhalb des EMA 500 im Wochenchart bewegen?
Schau mal hier, da lassen sich beliebige Filter zusammenbasteln, vielleicht auch das was du suchst-Anmeldung ist kostenfrei:
https://www.barchart.com/stocks/stocks-s...ener=33151
(05.05.2025, 21:12)42_answer schrieb: [ -> ]Schau mal hier, da lassen sich beliebige Filter zusammenbasteln, vielleicht auch das was du suchst-Anmeldung ist kostenfrei:
https://www.barchart.com/stocks/stocks-s...ener=33151
Danke Dir. Leider habe ich hier keine Möglichkeit für Weekly EMA entdecken können.
Muss es ein EMA sein? der einfache 5 Tage MA ist ja verfügbar
(10.05.2025, 20:59)42_answer schrieb: [ -> ]Muss es ein EMA sein? der einfache 5 Tage MA ist ja verfügbar
Es sollte idealerweise ein 500-Wochen-EMA sein. Alternativ wäre auch ein 500-Wochen-SMA möglich. Wichtig ist in jedem Fall, dass die Berechnung auf Wochenbasis erfolgt.
Über einen ca. 9 Jahres Zeitraum mitteln sich die intra-wochen Schlusskurse aber raus, da gibt es keinen signifikanten Unterschied mehr.
Stammt das aus irgendeinem Buch oder online-Beitrag?
Hier gibt es noch einen EMA300@woche
https://de.tradingview.com/screener/
Ansonsten könnte man sich z.b. in MT5 einen EA schreiben (lassen), das geht dann Richtung coden, ka ob dir das den Aufwand wert ist.
(11.05.2025, 21:59)Thomas_B schrieb: [ -> ]Über einen ca. 9 Jahres Zeitraum mitteln sich die intra-wochen Schlusskurse aber raus, da gibt es keinen signifikanten Unterschied mehr.
Stammt das aus irgendeinem Buch oder online-Beitrag?
Die Beobachtung stammt weder aus einem Buch noch aus einem Online-Artikel, sondern basiert auf eigenen Beobachtungen:
Bei langfristigen Charts auf Bigcharts fällt mir immer wieder auf, dass es bei nicht-zyklischen Werten häufig am Weekly EMA 500 zu einer Trendumkehr oder zumindest zu einer deutlichen Gegenbewegung kommt. Gerade an diesem Punkt bieten sich gezielte Setups in kleineren Zeiteinheiten an.
Ich wollte hier mal einen Forward Test machen, ob es hier einen Edge gibt oder eben nicht.
Leider stoßen meine Screener hier an ihre Grenzen, da sie aufgrund der begrenzten Datenhistorie nur kürzere gleitende Durchschnitte berücksichtigen können. Auch bei Barchart ist die Analyse auf maximal ein Jahr beschränkt, sodass eine Auswertung längerer EMAs dort nicht möglich ist.
Ein 9-Jahres-Durchschnitt auf Tagesbasis wäre für meine Analysen ebenfalls interessant. Allerdings stellt sich die Frage, welcher Screener solch lange gleitende Durchschnitte überhaupt unterstützt. Die meisten mir bekannten Tools bieten nur kürzere Zeiträume an, da die verfügbare Kurs-Historie oft nicht ausreicht.
Der erste Code holt von Yahoo die Daten vom jetzigen SP500 und speicher sie als File. Der zweite Code lädt das File prüft auf die beiden Bedingungen.
Das Zwischenspeichern im File ist notwendig, da Yahoo einen sonst blockiert und die Aktion auch etwas dauert.
Code:
import yfinance as yf
import pandas as pd
df = pd.read_html('https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')[0] # always returns list of df
sp500_list = df['Symbol'].tolist()
full_stock_data = yf.download(sp500_list, '2010-01-01')
full_stock_data.to_hdf('sp500_list.h5', format='table', key='ticker')
Code:
import pandas as pd
def screen_stock(df):
df['2yr_high'] = df['Close'].rolling('730D').max()
latest = df.iloc[-1] # latest data point
condition1 = latest['Close'].iloc[0] >= 0.8 * latest['2yr_high'].iloc[0]
weekly_close = df['Close'].resample('W-FRI').last().ffill() # Resample to weekly closing prices
# Check for sufficient data and compute 500-week EMA
if len(weekly_close) < 500:
return False
ema_500 = weekly_close.ewm(span=500, adjust=False).mean()
latest_ema = ema_500.iloc[-1]
# Check if the latest close is within 0-10% above the EMA
latest_close = df['Close'].iloc[-1]
condition2 = (latest_close.iloc[0] >= latest_ema.iloc[0]) & (latest_close.iloc[0] <= 1.1 * latest_ema.iloc[0])
return condition1 and condition2
full_stock_data = pd.read_hdf('./sp500_list.h5')
for column_name, column in full_stock_data.items():
if( column_name[0]=='Close')and(column_name[1]=='AMCR'):
if screen_stock(full_stock_data.filter(items=[column_name])):
print(column_name[1])
Der Code ist nur Rohform: Es wird unnötig viel berechnet statt nur das letzte Datum, auch beim 2yr Hoch wird immer adjusted Close genommen statt High usw.
Mir ist gerade aufgefallen, dass Yahoo im adjusted Close auch Dividenden berücksichtigt und nicht nur Splits.
Die Ausgabe ist (Stand 9.5.2025):
AMCR
CCI
CHTR
CLX
CVS
D
DIS
ES
FRT
HAS
HSIC
KVUE
MDT
MOS
SOLV
TAP
TSN
(15.05.2025, 15:30)Thomas_B schrieb: [ -> ]Der erste Code holt von Yahoo die Daten vom jetzigen SP500 und speicher sie als File. Der zweite Code lädt das File prüft auf die beiden Bedingungen.
Das Zwischenspeichern im File ist notwendig, da Yahoo einen sonst blockiert und die Aktion auch etwas dauert.
Die Ausgabe ist (Stand 9.5.2025):
AMCR
CCI
CHTR
CLX
CVS
D
DIS
ES
FRT
HAS
HSIC
KVUE
MDT
MOS
SOLV
TAP
TSN
Vielen Dank für deine Unterstützung! Momentan bin ich mit anderen Projekten ziemlich ausgelastet, aber sobald ich wieder mehr Zeit habe, werde ich mich gerne näher mit dem Thema beschäftigen.
Auf den ersten Blick scheint es allerdings einige Unstimmigkeiten zu geben. Ein Beispiel ist SOLV (Solventum): Die Solventum Corporation ist ein US-amerikanisches Gesundheitsunternehmen, das erst am 1. April 2024 von 3M abgespalten wurde. Für diese Aktie kann es also gar keinen 500-Wochen-EMA geben. Das ist leider nur eines von mehreren Beispielen, bei denen die Daten nicht ganz passen.
Nichtsdestotrotz finde ich den Denkanstoß, eine eigene Softwarelösung zu entwickeln, sehr spannend. Da ich auf diesem Gebiet noch nicht so erfahren bin, werde ich mich damit auseinandersetzen, sobald es mein Zeitplan wieder zulässt.
Nochmals danke für deinen Input!