Gewinnausfallstop-Strategie auf Basis eines gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 21.12.2023
Tags:

img

Übersicht

Diese Strategie eröffnet Positionen, die auf dem goldenen Kreuz und dem Todeskreuz gleitender Durchschnitte basieren, und setzt Gewinn und Stop-Loss auf eine bodenkreuzende Weise ein.

  1. Verwendung eines gleitenden Durchschnittssystems zur Filterung von Schocks
  2. Übernahme von Profit-Take-Moving und Stop-Loss für dynamisches Kapitalmanagement
  3. Einstellbare Positionsfilterung zur Vermeidung einer Einwegöffnung

Strategieprinzip

Die Strategie besteht aus vier Teilen:

  1. System des gleitenden Durchschnitts

    Verwenden Sie das goldene Kreuz und das Todeskreuz der gleitenden Durchschnitte, um Trends zu bestimmen und Schocks zu filtern.

  2. Ein Umzug bringt Gewinn und verhindert Verluste

    Nutzen Sie Gewinn und Stop-Loss mit einem bestimmten Prozentsatz, um Gewinne zu erzielen und Risiken zu kontrollieren und ein dynamisches Kapitalmanagement zu realisieren.

  3. Positionsfilterung

    Wenn die vorherige Position lang ist, muss das nächste Signal kurz sein, um die Position zu öffnen und einseitiges Halten zu vermeiden.

  4. ATR-Stoppverlust

    Verwenden Sie ATR, um den maximalen Stoppverlustbereich zu begrenzen und übermäßigen Stoppverlust zu vermeiden.

Speziell berechnet die Strategie zuerst den gleitenden Durchschnitt, Longs auf dem goldenen Kreuz und Shorts auf dem Todeskreuz. Nach dem Eintritt setzen Sie die beweglichen Take Profit- und Stop Loss-Linien mit einem bestimmten Prozentsatz ein. Wenn der Preis die Take Profit-Linie berührt, dann nehmen Sie Profit; wenn er die Stop Loss-Linie berührt oder den ATR Stop Loss-Bereich überschreitet, dann Stop Loss.

Vorteile

Die wichtigsten Vorteile dieser Strategie sind:

  1. Hohe Konfigurationsfähigkeit

    Viele Parameter in der Strategie sind konfigurierbar, damit Benutzer sie anhand ihrer Handelsstile anpassen können.

  2. Gutes Kapitalmanagement

    Durch die Einführung von Bewegung Take Profit und Stop Loss sowie ATR Stop Loss kann die Amplitude eines einzigen Stop Loss effektiv kontrolliert und ein ausgezeichnetes Kapitalmanagement erreicht werden.

  3. Geeignet für Trendmarkt

    Die gleitende Durchschnittsstrategie eignet sich besser für stark trendige Märkte, um Schocks wirksam zu filtern.

Risiken und Gegenmaßnahmen

Diese Strategie birgt auch einige Risiken:

  1. Trendfehler

    Die Beurteilung der gleitenden Durchschnitte auf komplexen Märkten ist nicht perfekt, und es können Fehleinschätzungen auftreten.

  2. Übermäßiger Stop Loss

    Bewegliche Stoppverluste können bei Schocks annulliert werden. ATR-Parameter sollten kombiniert werden, um den Stoppverlustbereich festzulegen.

  3. Einseitige Eröffnungsrisiken

    Die Einführung der Positionsfilterung hat einen gewissen Einfluss auf die Handelsfrequenz.

Optimierungsrichtlinien

Die wichtigsten Optimierungsrichtungen sind:

  1. Optimierung der Parameter

    Anpassung des gleitenden Durchschnittszyklus, ATR-Parameter, Gewinn- und Stop-Loss-Verhältnisse und andere Parameter zur Optimierung der Strategieleistung.

  2. Hinzufügen von Indikatoren

    Hinzufügen von Indikatoren wie CMF, OBV, um den Kapitalfluss zu beurteilen und übermäßigen Stop-Loss zu vermeiden.

  3. Kombination mit anderen Strategien

    Kombination mit Breakout-Strategien, um Trends zu folgen, nachdem sich der Trend stabilisiert hat, um bessere Ergebnisse zu erzielen.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass diese Strategie durch den gleitenden Durchschnittsfilter und den gleitenden Take-Profit und Stop-Loss ein dynamisches Kapitalmanagement auf Basis von Trends realisiert. Sie hat eine hohe Konfigurationsfähigkeit, die für rationale Anleger geeignet ist, sich an ihre eigenen Stile anzupassen und zu verwenden. Als universelle quantitative Strategie hat sie immer noch ein großes Optimierungspotenzial und ist eine eingehende Forschung wert.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © MGULHANN

//@version=5

//İchimoku Leading Span 2 Hesaplaması ve Girişleri
strategy("Stairs Gain Strategy - MG", overlay=true, margin_long=100, margin_short=100)
laggingSpan2Periods = input.int(52, minval=1, title="Leading Periot")
displacement = input.int(1, minval=1, title="Displacement")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
leadLine2 = donchian(laggingSpan2Periods)
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
	 title="Leading Span B")

// İşlem Tekrarını Filtrele	 
filtreUygula = input.bool(true,title="Pozisyon Sıra Filtresi Uygula")

//Kar Al / Zarar Durdur Seviyeleri Girişleri
zararDurdurmaYuzde = input.float(1.0, title='Zarar Durdurma %', step=0.01) / 100
karAlmaYuzde = input.float(2.0, title='Kar Alma %', step=0.01) / 100

//ATR Hesaplaması
atrCarpani = input.float(0.3, title="ATR Çarpanı", step= 0.01)
atrDegeri = ta.atr(14) * atrCarpani

//ATR Değer Girişleri
atrbuyukdeger = input.float(0.01, title="ATR Üst Limit", step=0.01)
atrkucukdeger = input.float(0.06, title="ATR Alt Limit", step=0.01)

//Buy ve Sell Şartları
buycross =   ta.crossover(close,leadLine2[displacement-1]) ? atrDegeri > atrbuyukdeger : strategy.position_size == 0
sellcross = ta.crossover(leadLine2[displacement-1],close) ? atrDegeri < atrkucukdeger : strategy.position_size == 0

//KONTROL
var sonPozisyonYonu = 0
//Son kapanan pozisyon long ise degiskenin degerini 1 olarak ata
if strategy.position_size[1] > 0 and strategy.position_size == 0
    sonPozisyonYonu := 1

//Son kapanan pozisyon short ise degiskenin degerini -1 olarak ata
if strategy.position_size[1] < 0 and strategy.position_size == 0
    sonPozisyonYonu := -1
    
//eger filtre uygulama seçiliyse ve son pozisyon yönü long ise 'longFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun long olmasını engelle
longFiltreSonuc = filtreUygula ? sonPozisyonYonu == 1 ? false : true : true

//eger filtre uygulama seçiliyse ve son pozisyon yönü short ise 'shortFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun short olmasını engelle
shortFiltreSonuc = filtreUygula ? sonPozisyonYonu == -1 ? false : true : true

//LONG GİRİŞ
strategy.entry("Long", strategy.long, when=buycross and longFiltreSonuc)
longKarAl = strategy.position_avg_price * (1 + karAlmaYuzde)
longZararDurdur = strategy.position_avg_price * (1 - zararDurdurmaYuzde)
strategy.exit("Long Exit","Long",limit=longKarAl, stop=longZararDurdur)

//SHORT GİRİŞ
strategy.entry("Short", strategy.short, when=sellcross and shortFiltreSonuc)
shortKarAl = strategy.position_avg_price * (1 - karAlmaYuzde)
shortZararDurdur = strategy.position_avg_price * (1 + zararDurdurmaYuzde)
strategy.exit("Short Exit","Short",limit=shortKarAl, stop=shortZararDurdur)

//Kar Al ve Zarar Durdur Seviyelerinin Grafikte İşaretlenmesi
plot(strategy.position_size != 0 ? strategy.position_avg_price : na, color=color.navy, linewidth=2, style=plot.style_linebr, title="İşleme Giriş Seviyesi")
plot(strategy.position_size > 0 ? longKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Long Kar Alım Seviyesi")
plot(strategy.position_size > 0 ? longZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Long Zarar Durdurma Seviyesi")
plot(strategy.position_size < 0 ? shortKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Short Kar Alım Seviyesi")
plot(strategy.position_size < 0 ? shortZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Short Zarar Durdurma Seviyesi")

//plotshape(buycross,size=size.small,style=shape.labelup,location=location.belowbar,color=color.green,text="Al", offset = displacement-1, textcolor=color.white)
//plotshape(sellcross,size=size.small,style=shape.labeldown,location=location.abovebar,color=color.red,text="Sat", offset = displacement-1, textcolor=color.white)


Mehr