Aggregierte Handelsstrategie basierend auf dem Momentumindikator


Erstellungsdatum: 2024-02-21 11:59:22 zuletzt geändert: 2024-02-21 11:59:22
Kopie: 0 Klicks: 597
1
konzentrieren Sie sich auf
1617
Anhänger

Aggregierte Handelsstrategie basierend auf dem Momentumindikator

Überblick

Diese Strategie verwendet verschiedene technische Indikatoren wie beispielsweise Moving Averages, MACD, RSI und Brin-Bands, um verschiedene Kauf- und Verkaufssignale zu kombinieren und eine bessere Aggregation der Dynamikindikatoren zu erzeugen.

Strategieprinzip

Die Kernlogik der Strategie ist die Aggregation von Kauf- und Verkaufssignalen aus mehreren technischen Indikatoren, die insbesondere folgende Aspekte umfassen:

  1. Der Moving Average-Indikator berechnet die schnellen Moving Averages und die langsamen Moving Averages und erzeugt ein Kaufsignal, wenn die schnelle Linie die langsame Linie durchläuft, und ein Verkaufssignal, wenn sie die langsame Linie durchläuft.

  2. MACD-Indikator: Berechnung von MACD- und Signallinien, bei der ein Kaufsignal beim Durchschreiten der MACD-Linie und ein Verkaufsignal beim Durchschreiten der MACD-Linie erzeugt wird.

  3. RSI-Indikator: Berechnet den RSI-Wert, um zu bestimmen, ob ein Überkauf oder Überverkauf vorhanden ist, und erzeugt ein Kauf- und Verkaufssignal in Kombination mit dem Gold- und Todeskreuz der RSI-Linie und der Linie 50 auf der Mitte.

  4. Der Brin-Band-Indikator: Ermittelt, ob der Preis einen Auf- und Abbruch erlebt und erzeugt in Verbindung mit dem Rückschlag ein Kauf- und Verkaufssignal.

  5. Ausstiegsentscheidung: Setzen Sie Stop-Loss-Kriterien, um die Position bei Erreichen eines bestimmten Prozentsatzes zu beenden.

Die oben genannten Signalmodule sind unabhängig voneinander. Die Strategie überwacht diese Signale in Echtzeit, macht bei der Auslösung von Kauf- und Verkaufssignalen eine Über- und eine Leerposition und ermöglicht die dynamische Aggregation der Gewinnplatte.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Es ist nicht leicht, die Marktchancen zu verpassen, wenn man die Kauf- und Verkaufssignale von mehreren technischen Indikatoren kombiniert.

  2. Falschsignal-Reduktion: Aggregate-Verifizierung von Signalen verschiedener Indikatoren kann die negativen Auswirkungen von Falschsignalen auf bestimmte Indikatoren reduzieren.

  3. Trend- und Reversal-Indikatoren: Die Verwendung von Trend-Indikatoren wie beispielsweise Moving Averages sowie Reversal-Indikatoren wie RSI und MACD kann in verschiedenen Situationen gute Ergebnisse erzielen.

  4. Automatische Stop-Loss: Die Strategie enthält eine automatische Stop-Loss-Mechanismus, um das Risiko effektiv zu kontrollieren und zu verhindern, dass die Verluste zu erweitern.

Risikoanalyse

Es gibt einige Risiken bei dieser Strategie, die sich in folgenden Aspekten widerspiegeln:

  1. Risiko eines Ausfallens der Indikatoren: Unter bestimmten Umständen kann ein Ausfall der einzelnen Indikatoren auftreten, der zu einer Abweichung des Signals führt.

  2. Überaggregation: Überaggregation des Signals, die zu einer unzureichenden Indikatorresolution führt, verpasste Chancen.

  3. Parameteroptimierung schwierig: Da es mehr Indikatoren gibt, ist die Optimierung der Parameter schwieriger, und die falsche Einstellung der Indikatorparameter kann die Strategieleistung beeinträchtigen.

  4. Hohe Handwechselrate: Strategie-Signale werden häufiger gesendet, was zu einer höheren Handwechselrate und höheren Transaktionskosten führt.

Optimierungsrichtung

Die Strategie kann optimiert werden, und zwar in folgenden Punkten:

  1. Test und Optimierung der einzelnen Kennzahlen und Parameter, um die optimale Kombination zu finden.

  2. Die Optimierung von Parametern, die manuell zu optimieren sind, wird durch eine Methode des maschinellen Lernens automatisch nach den optimalen Parametern gesucht.

  3. Verschiedene Methoden zur Gewichtung von Signalaggregation werden getestet, um die optimale Lösung für die Signalaggregation zu finden.

  4. Erweiterung der Anpassungs-Stop-Mechanismen, die die Stop-Standards automatisch an Marktschwankungen anpassen.

  5. Erhöhung der Algorithmen für die Eröffnung von Positionen, Kontrolle des Prozentsatzes für einzelne Positionen und Verringerung des Einzelrisikos.

Zusammenfassen

Diese Strategie ist insgesamt eine typische und allgemeine Dynamik-Indikator-Aggregat-Trading-Strategie, die die Kauf- und Verkaufssignale mehrerer gängiger technischer Indikatoren kombiniert, um die Strategie-Performance durch Signalaggregation zu verbessern. Im Vergleich zu einer einzelnen Indikator-Strategie hat sie die Vorteile, dass die Signalquelle reicher ist, Trends erkennt und sich umfassender umkehrt.

Strategiequellcode
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Kesin Etkili Analiz V1 - Artun Sinan", overlay=true)
//indicator("Kesin Etkili Analiz V1 - Artun Sinan", overlay=true)

//BackTest
yearin = input (2019, title="BackTestBaşlangıç Tarihi")

// Göstergelerin parametrelerini tanımlayın
emaShrtPeriod = input.int(title="EMA Kısa Periyodu", defval=50, minval=1)
emaLngPeriod = input.int(title="EMA Uzun Periyodu", defval=100, minval=1)

maPeriod = input.int(50, "Hareketli Ortalama Periyodu", minval=1)
fast = input.int(12, "MACD Hızlı Periyodu", minval=1)
slow = input.int(26, "MACD Yavaş Periyodu", minval=1)
signal = input.int(9, "MACD Sinyal Periyodu", minval=1)
rsiPeriod = input.int(14, "RSI Periyodu", minval=1)
rsiOverbought = input.int(70, "RSI Aşırı Alım Eşiği", minval=50, maxval=100)
rsiOversold = input.int(30, "RSI Aşırı Satım Eşiği", minval=0, maxval=50)
bbPeriod = input.int(20, "Bollinger Bantları Periyodu", minval=1)
bbStd = input.float(2, "Bollinger Bantları Standart Sapması", minval=0.1)

//EMA göstergesi ayarları
ema1 = ta.ema (close,emaShrtPeriod)
ema2 = ta.ema (close, emaLngPeriod)

emaCrossUp = ema1 >= ema2
emaCrossDown = ema2 < ema1

plot(ema1, title="EMAKısa", color=color.rgb(0, 255, 13))
plot(ema2, title="EMAUzun", color=color.rgb(255, 251, 1))



// Göstergeleri hesaplayın
ma = ta.sma(close, maPeriod) // Hareketli ortalama
[macd, macdsignal, macdhist] = ta.macd(close, fast, slow, signal) // MACD
rsi = ta.rsi(close, rsiPeriod) // RSI
[upper, middle, lower] = ta.bb(close, bbPeriod, bbStd) // Bollinger Bantları

// Alım veya satım sinyalleri üretin
buySignal = false
sellSignal = false

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Fibonacci seviyelerini tanımlayın
fibLevels = array.new_float(7) // Fibonacci seviyelerini tutacak bir dizi oluşturun
array.set(fibLevels, 0, 0.0) // %0 seviyesini ayarlayın
array.set(fibLevels, 1, 0.236) // %23.6 seviyesini ayarlayın
array.set(fibLevels, 2, 0.382) // %38.2 seviyesini ayarlayın
array.set(fibLevels, 3, 0.5) // %50 seviyesini ayarlayın
array.set(fibLevels, 4, 0.618) // %61.8 seviyesini ayarlayın
array.set(fibLevels, 5, 0.786) // %78.6 seviyesini ayarlayın
array.set(fibLevels, 6, 1.0) // %100 seviyesini ayarlayın

// Tepe ve dip noktasını belirleyin
highpoint = ta.highest (high, 20) // Son 30 mum çubuğunun en yüksek değerini alın
lowpoint = ta.lowest (low, 20) // Son 30 mum çubuğunun en düşük değerini alın
diff = highpoint - lowpoint // Tepe ve dip noktası arasındaki farkı hesaplayın

// Fibonacci seviyelerini hesaplayın
fib0 = lowpoint + diff * array.get(fibLevels, 0) // %0 seviyesini hesaplayın
fib1 = lowpoint + diff * array.get(fibLevels, 1) // %23.6 seviyesini hesaplayın
fib2 = lowpoint + diff * array.get(fibLevels, 2) // %38.2 seviyesini hesaplayın
fib3 = lowpoint + diff * array.get(fibLevels, 3) // %50 seviyesini hesaplayın
fib4 = lowpoint + diff * array.get(fibLevels, 4) // %61.8 seviyesini hesaplayın
fib5 = lowpoint + diff * array.get(fibLevels, 5) // %78.6 seviyesini hesaplayın
fib6 = lowpoint + diff * array.get(fibLevels, 6) // %100 seviyesini hesaplayın

// Alım sinyali: Fiyat %61,8 seviyesinden yukarı yönlü kırılırsa ve MACD çizgisi sinyal çizgisinin üzerine çıkarsa, alım pozisyonu açın
alSignal = close > fib4 and ta.crossover(macd, macdsignal)

// Satım sinyali: Fiyat %61,8 seviyesinden aşağı yönlü kırılırsa ve MACD çizgisi sinyal çizgisinin altına inerse, satım pozisyonu açın
satSignal = close < fib4 and ta.crossunder(macd, macdsignal)

// Çıkış sinyali: Fiyat %38,2 Fibonacci seviyesine ulaşırsa veya belirli bir yüzde oranında kar veya zarar elde ederseniz, pozisyonu kapatın
exitSignal = close >= fib2 or close <= strategy.position_avg_price * 0.95 // Kar oranı olarak %5, zarar oranı olarak %5 belirledik

plot(fib0, title="%0", color=color.rgb(25, 0, 255))
plot(fib1, title="%23.6", color=color.rgb(25, 0, 255))
plot(fib2, title="%38.2", color=color.rgb(25, 0, 255))
plot(fib3, title="%50", color=color.rgb(25, 0, 255))
plot(fib4, title="%61.8", color=color.rgb(25, 0, 255))
plot(fib5, title="%78.6", color=color.rgb(25, 0, 255))
plot(fib6, title="%100", color=color.rgb(25, 0, 255))
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Hareketli ortalama kesişimi sinyali
maCrossUp = ta.crossover(ma, close) // Fiyat hareketli ortalamanın üzerine çıkarsa
maCrossDown = ta.crossunder(ma, close) // Fiyat hareketli ortalamanın altına inerse

// MACD çizgisi ve sinyal çizgisi kesişimi sinyali // Histogram yerine çizgiler
macdCrossUp = ta.crossover(macd, macdsignal) // MACD çizgisi sinyal çizgisinin üzerine çıkarsa
macdCrossDown = ta.crossunder(macd, macdsignal) // MACD çizgisi sinyal çizgisinin altına inerse

// RSI aşırı alım veya aşırı satım sinyali ve 50 seviyesi kesişimi sinyali // Sinyalleri birleştir
// Eşik değerleri doğrudan kullanın
rsiOverboughtSignal = rsi > rsiOverbought and ta.crossover(rsi, 50) // RSI değeri aşırı alım eşiğinin üzerindeyse ve 50 seviyesini yukarı keserse
rsiOversoldSignal = rsi < rsiOversold and ta.crossunder(rsi, 50) // RSI değeri aşırı satım eşiğinin altındaysa ve 50 seviyesini aşağı keserse

// Bollinger Bantları kırılımı sinyali ve orta bant geri dönüşü sinyali // Sinyalleri birleştir
bbBreakUp = close > upper and ta.crossover(close, middle) // Fiyat üst banttan çıkarsa ve orta banta geri dönerse
bbBreakDown = close < lower and ta.crossunder(close, middle) // Fiyat alt banttan inerse ve orta banta geri dönerse

// Sinyalleri birleştirin
buySignal := maCrossUp or macdCrossUp or rsiOversoldSignal or bbBreakUp or emaCrossUp and yearin >= year
sellSignal := maCrossDown or macdCrossDown or rsiOverboughtSignal or bbBreakDown or emaCrossDown and yearin >= year

// Sinyalleri grafikte oklar ile gösterin
plotshape(buySignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sellSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

plot(macd, title="MACD", color=color.blue) // MACD çizgisini mavi renkte çizin
plot(macdsignal, title="Sinyal", color=color.orange) // Sinyal çizgisini turuncu renkte çizin


if buySignal
    strategy.entry("Enter Long", strategy.long)
else if sellSignal
    strategy.entry("Enter Short", strategy.short)