Fibonacci gleitende Durchschnitte Inputstrategie

Schriftsteller:ChaoZhang, Datum: 2023-11-01 16: 42:41
Tags:

img

Übersicht

Die Fibonacci Moving Averages Input Strategie basiert auf gleitenden Durchschnitts-Crossover- oder Crossunder-Signalen, um Handelssignale zu generieren. Wenn der kurzfristige gleitende Durchschnitt über den langfristigen gleitenden Durchschnitt kreuzt, wird ein bullischer goldener Kreuzsignal generiert. Wenn der kurzfristige gleitende Durchschnitt unter den langfristigen gleitenden Durchschnitt kreuzt, wird ein bärischer Todeskreuzsignal generiert. Die am häufigsten verwendeten gleitenden Durchschnitte sind die 50-Tage- und 200-Tage-gleitenden Durchschnitte.

Die Fibonacci Moving Averages Input (FibMAI) -Strategie ermöglicht es Ihnen, einen beliebigen Wert für Ihre bullischen oder bärischen Kreuzungen auszuwählen. Für die visuelle Darstellung habe ich Fibonacci Moving Averages dargestellt, darunter 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, während ich die Kerzen verstecke. Aber um diesen Indikator zu verwenden, aktiviere ich nur ein paar MAs, um zu überprüfen, ob es ein bemerkenswertes Crossover- oder Crossunder-Muster gibt, und teste dann diese Werte in die FibMAI-Strategie Long- oder Short-Einstellungen ein.

Zum Beispiel lautet die Eingabe für die Einstellungen Lang oder Kurz für dieses NQ1! Tagesdiagramm:

Aufwärts = FibEMA34 Kreuzung FibEMA144

Bären = FibEMA55 Kreuzung FibSMA144

Wie Sie sehen können, können Sie 4 verschiedene MA-Werte mischen und abbilden, entweder exponentiell oder einfach.

Voreinstellungen der Farbe: Steigender Wert = grüne Farbe Fallender Wert = rote Farbe

Voreinstellungen für Visual FibMA: FibEMA 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181

Voreinstellungen für Visual MA: SMA 50, 100, 150, 200

Standardeinstellungen für Lang oder Kurz: Aufwärts = FibEMA34 Kreuzung FibEMA144

Bären = FibEMA55 Kreuzung FibSMA144

Grundsätze

Die Kernlogik dieser Strategie basiert auf Crossover-Signalen zwischen zwei gleitenden Durchschnitten zur Erzeugung von Handelssignalen.

Bewegliche Durchschnitte sind technische Indikatoren, die zur Analyse von Markttrends verwendet werden. Sie berechnen den durchschnittlichen Schlusskurs über einen bestimmten Zeitraum und können Marktschwankungen effektiv filtern.

Der SMA ist der einfache arithmetische Durchschnitt der Schlusskurs über einen Zeitraum.

Wenn der kurzfristige gleitende Durchschnitt über den langfristigen gleitenden Durchschnitt kreuzt, signalisiert er eine bullische Trendänderung und erzeugt ein Kaufsignal. Dies wird als goldenes Kreuz bezeichnet. Umgekehrt signalisiert der kurzfristige gleitende Durchschnitt eine bearische Trendänderung und erzeugt ein Verkaufssignal. Dies wird als Todeskreuz bezeichnet.

Die Flexibilität dieser Strategie liegt in der Fähigkeit, die Parameter für die 4 gleitenden Durchschnitte manuell festzulegen. Die Standardparameter sind ein 34-Perioden-EMA, das über das 144-Perioden-EMA für ein bullisches Signal und ein 55-Perioden-SMA, das unter das 144-Perioden-EMA für ein bärisches Signal geht. Diese Parameter können in den Eingabefeldern frei angepasst werden.

Darüber hinaus zeichnet die Strategie mehrere gleitende Durchschnitte der Fibonacci-Sequenz über verschiedene Zeitrahmen hinweg.

Vorteile

Zu den Vorteilen dieser Kreuzung der gleitenden Durchschnitte gehören:

  1. Die Verwendung gleitender Durchschnitte filtert Marktlärm und identifiziert die Trendrichtung

  2. Crossover-Signale sind zuverlässig

  3. Anpassbare Kombinationen von langen und kurzen gleitenden Durchschnitten für die Parameteroptimierung

  4. Einbezieht mehrere Zeitrahmen, um Trends zu identifizieren

  5. Kann sowohl EMA als auch SMA anhand der Instrumenteneigenschaften verwenden

  6. Visuell intuitiv mit farbigen gleitenden Durchschnittskreuzungen

  7. Einfach zu verstehen und für Anfänger geeignet

  8. Flexible Anwendung auf verschiedene Instrumente mit Universalität

Risiken

Diese Strategie birgt auch einige Risiken:

  1. Zu viele Whipsaw-Signale während unruhiger Märkte, was zu einem Überhandel führt

  2. Falsche Signale, wenn ungeeignete Kombinationen von gleitenden Durchschnitten verwendet werden

  3. Verzögerung der Signale bei extremen Trendumkehrungen, die Preisänderungen nicht zeitlich widerspiegeln können

  4. Bewegliche Durchschnittskreuze vermeiden Verluste nicht vollständig, sie benötigen einen angemessenen Stop-Loss

  5. Über-Optimierung verursacht Kurvenanpassung. Parameter müssen über Marktzyklen robust sein.

  6. Die Parameter müssen möglicherweise für verschiedene Messgeräte verfeinert werden.

Optimierungsrichtlinien

Einige Möglichkeiten, diese Strategie zu optimieren:

  1. Verschiedene Kombinationen von langen und kurzen gleitenden Durchschnitten testen, um mit Hilfe von Backtesting optimale Parameter zu finden

  2. Verwenden Sie SMA für Instrumente mit klareren Trends und EMA für volatilere Instrumente.

  3. Einbeziehung anderer Indikatoren wie KDJ, MACD, um falsche Signale zu filtern und die Qualität zu verbessern

  4. Hinzufügen von Stop-Loss-Strategien zur Kontrolle von Verlusten bei einzelnen Trades, z. B. Trailing Stop-Loss

  5. Optimierung von Geldmanagementstrategien, wie z. B. Anpassung der Positionsgröße auf der Grundlage von Abzug

  6. Stabilität der Prüfparameter für verschiedene Instrumente und Zeitrahmen zur Bewertung der Robustheit

Schlussfolgerung

Insgesamt ist die Fibonacci Moving Averages Input-Strategie ein zuverlässiges Trendfolgensystem. Sie verwendet einfache und intuitive gleitende Durchschnittskreuzungen für Handelssignale und kann durch Parameteroptimierung an verschiedene Instrumente angepasst werden. Mit einem ordnungsgemäßen Stop-Loss und Geldmanagement können Risiken kontrolliert werden. Überoptimierung und Nachzügige Trendumkehrsignale sollten vermieden werden. Mit gut ausgewählten Parametern und Handelsdisziplin kann dies eine effiziente und stabile Gewinngenerierungsstrategie sein.


/*backtest
start: 2022-10-25 00:00:00
end: 2023-10-31 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Options360 : Fibonacci MAI (Moving Averages Input) beta 10/15/22
// © Options360 original public release = 2/25/23
// * This script uses altered pieces of code from my @Options360 "Fibonacci MA7" indicator*
// 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811
////
strategy(title="Fibonacci Moving Averages Input", shorttitle = "FibMAI", overlay=true)

src = input(ohlc4, 'source')
//
string  GRP = "Long or Short Settings"
exponential1 = input(true, title="long EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP)
long = input.int(34, minval=1, title="long", tooltip="Signal Moving average long input")
long1 = exponential1 ? ta.ema(src, long) : ta.sma(src, long)

exponential2 = input(true, title="crossover EMA or SMA", tooltip="EMA checked or SMA unchecked")
longer = input.int(144, minval=1, title="crossover", tooltip="Crossed over Moving average long input")
long2 = exponential2 ? ta.ema(src, longer) : ta.sma(src, longer)

exponential3 = input(true, title="short EMA or SMA", tooltip="EMA checked or SMA unchecked")
short = input.int(55, minval=1, title="short", tooltip="Signal Moving average short input")
short1 = exponential3 ? ta.ema(src, short) : ta.sma(src, short)

exponential4 = input(false, title="crossunder EMA or SMA", tooltip="EMA checked or SMA unchecked")
shorter = input.int(144, minval=1, title="crossunder", tooltip="Crossed under Moving average short input")
short2 = exponential4 ? ta.ema(src, shorter) : ta.sma(src, shorter)
//
string  GRP2 = "Visual FibMA Settings"
exponential = input(true, title="Fib EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP2)
//
smaplot11 = input (true, title="MA1")
len11 = input.int(1, minval=1, title="ma Length")
out11 = exponential ? ta.ema(src, len11) : ta.sma(src, len11)
up11 = out11 > out11[1]
down11 = out11 < out11[1]
mycolor11 = up11 ? #3cfe12 : down11 ? #ff0202 : #008eff
plot(out11 and smaplot11 ? out11 :na, title="1", color=mycolor11, linewidth=1)

smaplot18 = input (true, title="MA2")
len18 = input.int(2, minval=1, title="ma Length")
out18 = exponential ? ta.ema(src, len18) : ta.sma(src, len18)
up18 = out18 > out18[1]
down18 = out18 < out18[1]
mycolor18 = up18 ? #3cfe12 : down18 ? #ff0202 : #008eff
plot(out18 and smaplot18 ? out18 :na , title="2", color=mycolor18, linewidth=1)

smaplot13 = input (true, title="MA3")
len13 = input.int(3, minval=1, title="ma Length")
out13 = exponential ? ta.ema(src, len13) : ta.sma(src, len13)
up13 = out13 > out13[1]
down13 = out13 < out13[1]
mycolor13 = up13 ? #3cfe12 : down13 ? #ff0202 : #008eff
plot(out13 and smaplot13 ? out13 :na , title="3", color=mycolor11, linewidth=1)

smaplot9 = input (true, title="MA5")
len9 = input.int(5, minval=1, title="ma Length")
out9 = exponential ? ta.ema(src, len9) : ta.sma(src, len9)
up9 = out9 > out9[1]
down9 = out9 < out9[1]
mycolor9 = up9 ? #3cfe12 : down9 ? #ff0202 : #008eff
plot(out9 and smaplot9 ? out9 :na , title="5", color=mycolor9, linewidth=1)

smaplot8 = input (true, title="MA8")
len8 = input.int(8, minval=1, title="ma Length")
out8 = exponential ? ta.ema(src, len8) : ta.sma(src, len8)
up8 = out8 > out8[1]
down8 = out8 < out8[1]
mycolor8 = up8 ? #3cfe12 : down8 ? #ff0202 : #008eff
plot(out8 and smaplot8 ? out8 :na , title="8", color=mycolor8, linewidth=1)

smaplot7 = input (true, title="MA13")
len7 = input.int(13, minval=1, title="ma Length")
out7 = exponential ? ta.ema(src, len7) : ta.sma(src, len7)
up7 = out7 > out7[1]
down7 = out7 < out7[1]
mycolor7 = up7 ? #3cfe12 : down7 ? #ff0202 : #008eff
plot(out7 and smaplot7 ? out7 :na , title="13", color=mycolor7, linewidth=1)

smaplot = input (true, title="MA21")
len = input.int(21, minval=1, title="ma Length")
out = exponential ? ta.ema(src, len) : ta.sma(src, len)
up = out > out[1]
down = out < out[1]
mycolor = up ? #3cfe12 : down ? #ff0202 : #008eff
plot(out and smaplot ? out :na, title="21", color=mycolor, linewidth=1)

smaplot2 = input (true, title="MA34")
len2 = input.int(34, minval=1, title="ma Length")
out2 = exponential ? ta.ema(src, len2) : ta.sma(src, len2)
up2 = out2 > out2[1]
down2 = out2 < out2[1]
mycolor2 = up2 ? #3cfe12 : down2 ? #ff0202 : #008eff
plot(out2 and smaplot2 ? out2 :na , title="34", color=mycolor2, linewidth=1)

smaplot3 = input (true, title="MA55")
len3 = input.int(55, minval=1, title="ma Length")
out3 = exponential ? ta.ema(src, len3) : ta.sma(src, len3)
up3 = out3 > out3[1]
down3 = out3 < out3[1]
mycolor3 = up3 ? #3cfe12 : down3 ? #ff0202 : #008eff
plot(out3 and smaplot3 ? out3 :na, title="55", color=mycolor3, linewidth=1)

smaplot4 = input (true, title="MA89")
len4 = input.int(89, minval=1, title="ma Length")
out4 = exponential ? ta.ema(src, len4) : ta.sma(src, len4)
up4 = out4 > out4[1]
down4 = out4 < out4[1]
mycolor4 = up4 ? #3cfe12 : down4 ? #ff0202 : #008eff
plot(out4 and smaplot4 ? out4 :na , title="89", color=mycolor4, linewidth=1)

smaplot5 = input (true, title="MA144")
len5 = input.int(144, minval=1, title="ma Length")
out5 = exponential ? ta.ema(src, len5) : ta.sma(src, len5)
up5 = out5 > out5[1]
down5 = out5 < out5[1]
mycolor5 = up5 ? #3cfe12 : down5 ? #ff0202 : #008eff
plot(out5 and smaplot5 ? out5 :na, title="144", color=mycolor5, linewidth=1)

smaplot6 = input (true, title="MA233")
len6 = input.int(233, minval=1, title="ma Length")
out6 = exponential ? ta.ema(src, len6) : ta.sma(src, len6)
up6 = out6 > out6[1]
down6 = out6 < out6[1]
mycolor6 = up6 ? #3cfe12 : down6 ? #ff0202 : #008eff
plot(out6 and smaplot6 ? out6 :na , title="233", color=mycolor6, linewidth=1)

smaplot10 = input (true, title="MA377")
len10 = input.int(377, minval=1, title="ma Length")
out10 = exponential ? ta.ema(src, len10) : ta.sma(src, len10)
up10 = out10 > out10[1]
down10 = out10 < out10[1]
mycolor10 = up10 ? #3cfe12 : down10 ? #ff0202 : #008eff
plot(out10 and smaplot10 ? out10 :na , title="377", color=mycolor10, linewidth=1)

smaplot14 = input (true, title="MA610")
len14 = input.int(610, minval=1, title="ma Length")
out14 = exponential ? ta.ema(src, len14) : ta.sma(src, len14)
up14 = out14 > out14[1]
down14 = out14 < out14[1]
mycolor14 = up14 ? #3cfe12 : down14 ? #ff0202 : #008eff
plot(out14 and smaplot14 ? out14 :na , title="610", color=mycolor14, linewidth=1)

smaplot15 = input (true, title="MA987")
len15 = input.int(987, minval=1, title="ma Length")
out15 = exponential ? ta.ema(src, len15) : ta.sma(src, len15)
up15 = out15 > out15[1]
down15 = out15 < out15[1]
mycolor15 = up15 ? #3cfe12 : down15 ? #ff0202 : #008eff
plot(out15 and smaplot15 ? out15 :na , title="987", color=mycolor15, linewidth=1)

smaplot16 = input (true, title="MA1597")
len16 = input.int(1597, minval=1, title="ma Length")
out16 = exponential ? ta.ema(src, len16) : ta.sma(src, len16)
up16 = out16 > out16[1]
down16 = out16 < out16[1]
mycolor16 = up16 ? #3cfe12 : down16 ? #ff0202 : #008eff
plot(out16 and smaplot16 ? out16 :na , title="1597", color=mycolor16, linewidth=1)

smaplot17 = input (true, title="MA2584")
len17 = input.int(2584, minval=1, title="ma Length")
out17 = exponential ? ta.ema(src, len17) : ta.sma(src, len17)
up17 = out17 > out17[1]
down17 = out17 < out17[1]
mycolor17 = up17 ? #3cfe12 : down17 ? #ff0202 : #008eff
plot(out17 and smaplot17 ? out17 :na , title="2584", color=mycolor17, linewidth=1)

smaplot19 = input (true, title="MA4181")
len19 = input.int(4181, minval=1, title="ma Length")
out19 = exponential ? ta.ema(src, len19) : ta.sma(src, len19)
up19 = out19 > out19[1]
down19 = out19 < out19[1]
mycolor19 = up19 ? #3cfe12 : down19 ? #ff0202 : #008eff
plot(out19 and smaplot19 ? out19 :na , title="4181", color=mycolor19, linewidth=1)
//
string  GRP3 = "Visual MA Settings"
exponential5 = input(false, title="EMA or SMA", tooltip="EMA checked or SMA unchecked", group = GRP3)

smaplot50 = input (true, title="MA50")
len50 = input.int(50, minval=1, title="ma Length")
ma50 = exponential5 ? ta.ema(src, len50) : ta.sma(src, len50)
up50 = ma50 > ma50[1]
down50 = ma50 < ma50[1]
mycolor50 = up50 ? #3cfe12 : down50 ? #ff0202 : #008eff
plot(ma50 and smaplot50 ? ma50 :na , title="50", color=mycolor50, linewidth=1)

smaplot100 = input (true, title="MA100")
len100 = input.int(100, minval=1, title="ma Length")
ma100 = exponential5 ? ta.ema(src, len100) : ta.sma(src, len100)
up100 = ma100 > ma100[1]
down100 = ma100 < ma100[1]
mycolor100 = up100 ? #3cfe12 : down100 ? #ff0202 : #008eff
plot(ma100 and smaplot100 ? ma100 :na , title="100", color=mycolor100, linewidth=1)

smaplot150 = input (true, title="MA150")
len150 = input.int(150, minval=1, title="ma Length")
ma150 = exponential5 ? ta.ema(src, len150) : ta.sma(src, len150)
up150 = ma150 > ma150[1]
down150 = ma150 < ma150[1]
mycolor150 = up150 ? #3cfe12 : down150 ? #ff0202 : #008eff
plot(ma150 and smaplot150 ? ma150 :na , title="150", color=mycolor150, linewidth=1)

smaplot200 = input (true, title="MA200")
len200 = input.int(200, minval=1, title="ma Length")
ma200 = exponential5 ? ta.ema(src, len200) : ta.sma(src, len200)
up200 = ma200 > ma200[1]
down200 = ma200 < ma200[1]
mycolor200 = up200 ? #3cfe12 : down200 ? #ff0202 : #008eff
plot(ma200 and smaplot200 ? ma200 :na , title="200", color=mycolor200, linewidth=1)
//
if (ta.crossover(long1, long2))
	strategy.entry("maL", strategy.long, comment="maLong")
if (ta.crossunder(short1, short2))
	strategy.entry("maS", strategy.short, comment="maShort")
////

Mehr