
Diese Strategie basiert auf der Eröffnung von Positionen auf Basis von Gewinnlinien und Moving Averages und setzt Stop-Loss-Systeme auf der Basis von Durchgängen. Die Hauptmerkmale sind:
Die Strategie besteht aus vier Teilen:
Der Trend wird mit einem goldenen Kreuz und einer toten Gabel gemessen, um die Marktschwankungen zu filtern.
Die Verwendung eines bestimmten Anteils an mobilen Stop-Loss-Systemen zur Gewinnbindung und Risikokontrolle, um eine dynamische Verwaltung des Kapitals zu ermöglichen.
Kann konfiguriert werden, ob die Positionsfilterung aktiviert wird. Wenn die vorherige Position mehrköpfig ist, muss das nächste Signal für einen leeren Kopf sein, um die Position zu eröffnen und eine einseitige Haltung zu vermeiden.
Verwenden Sie die ATR, um die maximale Stop-Loss-Reihe zu begrenzen und zu vermeiden, dass die Stop-Loss-Reihe zu groß wird.
Konkret berechnet die Strategie zuerst die Durchschnittslinie und macht beim Auftreten einer goldenen Kreuzung mehr und macht bei der Todesfalle frei. Nach dem Einstieg werden die beweglichen Stopps und Stop Lines in einem bestimmten Verhältnis eingestellt. Wenn der Preis die Stop-Line berührt, wird gestoppt; wenn er die Stop-Line berührt oder den ATR-Stoppbereich überschreitet, wird gestoppt.
Diese Strategie hat folgende Vorteile:
Viele Parameter der Strategie sind konfigurierbar und können vom Benutzer nach seinem eigenen Handelsstil angepasst werden.
Die Verwendung von mobilen Stop-Loss und ATR-Stop-Loss ermöglicht eine effektive Kontrolle der Einzelschalt-Loss-Marge und eine hervorragende Geldverwaltung.
Die Gleichgewichtsstrategie eignet sich besser für trendige Märkte und filtert Schwankungen.
Es gibt einige Risiken, die mit dieser Strategie verbunden sind:
Die Durchschnittslinie selbst ist nicht perfekt, um komplexe Situationen zu beurteilen, und es kann zu Fehleinschätzungen kommen. In diesem Fall sollten die Parameter der Durchschnittslinie entsprechend angepasst oder in Kombination mit anderen Indikatoren beurteilt werden.
Der mobile Stop-Loss kann während des Erschütterungszeitraums abgelehnt werden.
Die Eröffnung von Positionsfiltern kann Auswirkungen auf die Handelsfrequenz haben, und die Einseitigkeit von Positionen über einen längeren Zeitraum kann zusätzliche Risiken mit sich bringen.
Die wichtigsten Optimierungsschwerpunkte der Strategie sind:
Die Parameter wie die Durchschnittszeit, die ATR-Parameter und die Stop-Loss-Ratio werden angepasst, um die Effektivität der Strategie zu optimieren.
Es ist wichtig, die CMF, OBV und andere Kennzahlen zu verwenden, um die Kapitalflüsse zu beurteilen und zu vermeiden, dass die Verluste zu hoch sind.
In Kombination mit Strategien wie Breakthroughs und dem Tracking nach der Stabilisierung von Trends sind diese besser geeignet.
Die Strategie ermöglicht eine trendbasierte dynamische Kapitalverwaltung durch einheitliche Filterung und mobile Stop-Loss-Methode. Sie ist konfigurierbar und vernünftig. Die Anleger können sie nach ihrem eigenen Stil anpassen. Als allgemeine quantitative Strategie hat sie viel Optimierungsmöglichkeiten und ist es wert, eingehender untersucht zu werden.
/*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)