Williams
Die Strategie verwendet drei SMAs mit unterschiedlichen Periodenlängen - schnelle Linie sma1, mittlere Linie sma2 und langsame Linie sma3, wobei sma1 die kürzeste Periode und sma3 die längste hat.
Wenn sma1 über sma2 und sma2 über sma3 kreuzt, zeigt dies, dass der Markt in einem Aufwärtstrend ist und einen Aufwärtstrend bildet.
Umgekehrt, wenn sma1 unter sma2 und sma2 unter sma3 fällt, zeigt dies, dass der Markt in einem Abwärtstrend ist und einen Abwärtstrend bildet.
Die Ausstiegsbedingung ist, wenn sich die drei Linien neu ausrichten, wobei die schnelle Linie unter der mittleren Linie oder die mittlere Linie unter der langsamen Linie liegt.
Die Strategie zeichnet auch Hintergrundfarben, um die Trendrichtung zu identifizieren - grün für Aufwärtstrend und rot für Abwärtstrend.
Zusammenfassend lässt sich sagen, dass die Strategie die Stärken von gleitenden Durchschnitten und Alligator-Mundmustern nutzt, um die Trendrichtung zu bestimmen und entsprechend zu handeln.
Um den Risiken entgegenzuwirken, können folgende Verbesserungen vorgenommen werden:
Fügen Sie einen Trendfilter hinzu, um Whipsaws in den unterschiedlichen Märkten zu vermeiden.
Optimierung der Ausgangszustände unter Verwendung von Trendindikatoren.
Hinzufügen einer Stop-Loss-Strategie zur Kontrolle von Einzelverlusten.
Verwenden Sie adaptive gleitende Durchschnitte, damit sich die Perioden dynamisch anpassen.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Hinzufügen von Trendstärke Filter, um einen vorzeitigen Einstieg in schwache Trends zu vermeiden. Indikatoren wie MACD, KDJ können helfen.
Optimieren Sie gleitende Durchschnittsperioden, um durch Backtesting die besten Kombinationen zu finden.
Verwenden Sie adaptive gleitende Durchschnitte, damit sich die Perioden an die Marktdynamik anpassen.
Fügen Sie Stop-Loss-Strategien wie Trailing-Stop-Loss, Kontostand Stop-Loss hinzu, um Risiken zu kontrollieren.
Verbesserung der Einstiegsbedingungen durch Verwendung von Volumen, Bollinger Bands usw. zur Erhöhung der Genauigkeit.
Verbesserung der Ausgangszustände durch Beurteilung der Wahrscheinlichkeit einer Trendumkehr mit Indikatoren, wenn sich die Linien kreuzen.
Williams
/*backtest start: 2023-10-13 00:00:00 end: 2023-11-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=3 strategy(title = "Noro's Alligator Strategy by Bill Williams", shorttitle = "Alligator", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") len1 = input(50, defval = 50, minval = 1, title = "MA 1 Length") len2 = input(100, defval = 100, minval = 1, title = "MA 2 Length") len3 = input(200, defval = 200, minval = 1, title = "MA 3 Length") src = input(close, title = "Source") showbg = input(false, title = "Show Background") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //MAs sma1 = sma(src, len1) sma2 = sma(src, len2) sma3 = sma(src, len3) plot(sma1, color = lime, linewidth = 2) plot(sma2, color = blue, linewidth = 2) plot(sma3, color = red, linewidth = 2) //Signals up = sma1 > sma2 and sma2 > sma3 dn = sma1 < sma2 and sma2 < sma3 //Background trend = 0 trend := up ? 1 : dn ? -1 : trend[1] col = showbg == false ? na : trend == 1 ? lime : red bgcolor(col) //Trading size = strategy.position_size lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if up strategy.entry("Long", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn strategy.entry("Short", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()