Adaptive Strategie zur dynamischen Positionssteigerung mit gleitendem Durchschnitt mehrerer Signale

DCA MA SMA EMA HMA RSI STOCHASTIC RSI
Erstellungsdatum: 2025-08-19 10:57:23 zuletzt geändert: 2025-08-19 10:57:23
Kopie: 1 Klicks: 207
2
konzentrieren Sie sich auf
319
Anhänger

Adaptive Strategie zur dynamischen Positionssteigerung mit gleitendem Durchschnitt mehrerer Signale Adaptive Strategie zur dynamischen Positionssteigerung mit gleitendem Durchschnitt mehrerer Signale

Überblick

Die Multi-Signal-Evenline-Dynamische-Position-Codierung-Strategie ist eine speziell für den Kryptowährungsmarkt entwickelte quantitative Handelsstrategie, die Technische-Analyse-Indikatoren mit einem dynamischen Positionsmanagementsystem kombiniert. Die Kernidee besteht darin, die Kreuzung von schnellen und langsamen Moving Averages sowie die zufällig relativ starken Stochastic RSI-Indikatoren zu nutzen, um die Richtung und den Zeitpunkt des Markttrends zu bestimmen, während die Pyramiden-Methode der Positionierung verwendet wird, um auf Preisrückschläge zu reagieren.

Strategieprinzip

Die Strategie basiert auf folgenden Kerntechnologien:

  1. Doppelte Moving Average-SystemeDie Strategie verwendet die Kreuzung zweier Moving Averages (schnell und langsam) als Haupt-Eintrittssignal. Der Benutzer kann den einfachen Moving Average (SMA), den Index Moving Average (EMA) oder den Hull Moving Average (HMA) wählen und kann je nach Marktsituation wählen, ob er auf der Durchschnittslinie nach oben oder nach unten eintritt.

  2. Der Stochastic RSI (RSI) ist ein relativ schwacher Indikator.Als zusätzliche Einstiegsvoraussetzung wird ein Kaufsignal ausgelöst, wenn der Stochastic RSI auf der K-Linie die Stufe 5 trägt und der Rapid Moving Average im Aufwärtstrend ist (mit 5 aufeinanderfolgenden Zyklen).

  3. Dynamische SicherheitsanweisungenNach dem ersten Eintritt setzt die Strategie mehrere Sicherheitsaufträge unterhalb des vorgegebenen Preisniveaus. Diese Preisniveaus werden anhand der Preisdifferenzparameter und des Schrittlänge-Skalierungsfaktors berechnet.

  4. Dynamische Anpassung der Positionsgröße: Die Größe eines jeden Sicherheitsorders erhöht sich schrittweise in Abhängigkeit vom Skalierungsfaktor der Größe des Sicherheitsorders, wodurch eine steigende Lagerhaltung gebildet wird.

  5. Zielgewinn-VereinbarungsmechanismusDie Strategie setzt ein Zielgewinnniveau auf Basis des durchschnittlichen Kurses, und alle Positionen werden gelöscht, wenn der Kurs dieses Niveau erreicht.

Die Umsetzung der Strategie erfolgt wie folgt:

  • Erste Positionen basierend auf der Größe der Basis-Order, wenn die Bedingungen des Moving Average Crossover Signals oder des Stochastic RSI erfüllt sind
  • Wenn der Preis fällt, wird ein Sicherheits-Order ausgelöst, basierend auf der vorhergesehenen Preisdifferenz.
  • Prozentual erhöhte Größe für jeden Sicherheitsbefehl, bis zu 10 Sicherheitsbefehle
  • Alle Positionen werden einmalig platziert, wenn der Preis auf den durchschnittlichen Haltpreis plus Zielgewinn zurückgreift

Strategische Vorteile

  1. Mehrdimensionale EintrittssignaleDie Kombination aus dem Trend-Indikator (Moving Average) und dem Dynamik-Indikator (Stochastic RSI) verbessert die Einstiegsgenauigkeit und reduziert die Falschsignale.

  2. Äußerst anpassungsfähigDie Strategieparameter sind sehr individuell anpassbar. Der Benutzer kann die Art des Moving Averages, die Perioden, die Kreuzrichtung, die Preisdifferenz und andere Parameter anpassen, um die verschiedenen Marktbedingungen und persönlichen Risikopräferenzen anzupassen.

  3. KostenmittelwirkungDurch die vorgegebene sichere Auftragssysteme, die automatisch bei Preisrückgängen einlagern, werden die durchschnittlichen Lagerhaltungskosten reduziert und die Endgewinnwahrscheinlichkeit erhöht.

  4. Optimierung der FinanzeffizienzDie Größenordnung der sicheren Aufträge wurde so konzipiert, dass die Verteilung der Mittel effizienter ist, und mehr Geld wird auf die niedrigeren Aufträge verteilt, was der Value-Investment-Konzeption entspricht.

  5. Automatisierte AusführungWenn die Parameter eingestellt sind, kann die Strategie vollständig automatisiert und ohne menschliche Intervention ausgeführt werden, wodurch emotionale Handelsentscheidungen reduziert werden.

  6. Flexibilität und AnpassungsfähigkeitDurch die Anpassung der Querrichtung des Moving Averages (Ober- oder Unterziehen) kann die Strategie an unterschiedliche Marktumstände angepasst werden (Bull- oder Bären-Markt).

Strategisches Risiko

  1. Unerschöpfliche RisikenEs gibt keine eindeutige Stop-Loss-Strategie, die in einer andauernden Abwärtsbewegung zu erheblichen Verlusten führen kann. In extremen Marktbedingungen, wie bei einem Verfall oder Rückgang der Assetpreise, kann dies zu erheblichen Verlusten führen.

  2. Hohe FinanzierungsbedarfDa die Strategie erfordert, Geld für mehrere Sicherheitsaufträge zu reservieren, wobei die Größe jedes Auftrags zunimmt, können die tatsächlichen erforderlichen Mittel weit über die anfängliche Investition hinausgehen. Investoren müssen sicherstellen, dass sie über ausreichend Geld verfügen.

  3. Vielfältig seinDerzeit ist die Strategie nur für mehrere Richtungen konzipiert und wirkt bei langfristigen Abwärtstrends nicht sehr gut. Es wird empfohlen, diese Strategie auf insgesamt gut aussehenden Vermögenswerten anzuwenden.

  4. ParameterempfindlichkeitStrategie-Performance ist stark abhängig von Parameter-Einstellungen, die zu einer vorzeitigen Triggerung von Sicherheitsaufträgen oder zu einer Überlagerung führen können.

  5. Die durchschnittliche KostenfalleObwohl die Strategie die Durchschnittskosten durch die Verlagerung reduziert, kann es zu Rückfall und Kapitalstropfen kommen, wenn der Vermögenswert weiter sinkt und sich nicht erholt.

Die Methoden zur Risikominderung umfassen: die Anwendung der Strategie auf insgesamt gut aussehenden Vermögenswerten; die Bereitstellung von ausreichend Kapital für Sicherheitsaufträge; die regelmäßige Überprüfung der Übereinstimmung der Strategieparameter mit dem Marktumfeld; die Festlegung einer Obergrenze für die maximale Anzahl von Sicherheitsaufträgen; die Erwägung, eine globale Stop-Loss-Mechanismus in die Strategie aufzunehmen.

Optimierungsrichtung

  1. Erhöhung der Stop-Loss-MechanismenDer offensichtlichste Mangel an der Strategie ist die fehlende Stop-Loss-Mechanismus. Es wird empfohlen, eine globale Stop-Loss-Parameter, die Pivot-All-Positions zu erzwingen, wenn der Verlust einen bestimmten Prozentsatz erreicht, um die Sicherheit der Gelder zu schützen.

  2. Markttendenz-Filter hinzufügenDie Strategie kann nur ausgeführt werden, wenn die Haupttrendrichtung übereinstimmt, um unnötige Anlagerungen in offensichtlichen Bärenmärkten zu vermeiden.

  3. Optimierung der Sicherheitsorder-TriggerlogikDerzeit basiert der Sicherheitsbefehl nur auf Preisabweichungen, die durch die Kombination von Umsatz, Schwankungen oder anderen technischen Indikatoren ausgelöst werden können, um den Trigger des Sicherheitsbefehls intelligenter zu machen.

  4. Dynamische Anpassung des ZielgewinnsDas Ergebnis kann sich an die Marktvolatilität oder an die Preisbewegungen nach dem Eintritt anpassen und in einem hochvolatilen Marktumfeld höhere Gewinnziele setzen.

  5. Hinzufügen von LeerlauffunktionenDie Expansionsstrategie unterstützt die Kurzstrecke, so dass sie bei Abwärtstrends ebenso wirksam ist und die Marktanpassungsfähigkeit der Strategie verbessert.

  6. Retracement-Kontrolle hinzufügenSetzen Sie maximale Rücknahmelimits, pausieren Sie den Handel oder stellen Sie die Parameter neu, wenn die Strategie-Rücknahme die Schwelle überschreitet, um einen anhaltenden Verlust unter ungünstigen Marktbedingungen zu verhindern.

  7. Optimierung der periodischen ParameterDie Strategie wurde in den letzten Jahren durch die Entwicklung neuer Methoden und Techniken erweitert.

Diese Optimierungsrichtungen zielen darauf ab, die Risikomanagementfähigkeit, die Marktadaptivität und die langfristige Stabilität der Strategie zu verbessern, so dass sie in verschiedenen Marktumgebungen relativ stabil funktionieren kann.

Zusammenfassen

Die Adaptive Multi-Signal-Evenline-Dynamische-Position-Codierung-Strategie bietet eine systematische Handelsmethode für den Kryptowährungsmarkt durch die Kombination von Eintrittssignalen aus Moving Averages und zufällig relativ starken Indikatoren in Kombination mit einem dynamischen Sicherheits-Order-System. Ihr Kernvorteil besteht darin, dass Sie automatisch Positionen schrittweise bei Preisrückgängen aufnehmen, die durchschnittlichen Positionskosten senken und bei Preisrückgängen profitieren können.

Die Strategie birgt jedoch auch deutliche Risiken, insbesondere die fehlende Stop-Loss-Mechanismus und die möglichen Verluste bei anhaltenden rückläufigen Verhältnissen. Bei der Verwendung dieser Strategie sollten die Anleger ihre Risikogewohnheiten vollständig verstehen, sicherstellen, dass sie über ausreichende Kapitalreserven verfügen, und zusätzliche Risikokontrollmaßnahmen in Betracht ziehen.

Mit vernünftigen Parameter-Sets und einer empfohlenen Optimierungsrichtung kann die Strategie ein leistungsfähiges Werkzeug für langfristige Investoren in Kryptowährungen werden, insbesondere für Investoren, die an den langfristigen Wert bestimmter Krypto-Assets glauben, aber die Einstiegskosten optimieren möchten. In der Praxis wird empfohlen, die Strategie-Parameter zunächst in einem simulierten Umfeld ausreichend zu testen und kontinuierlich an die tatsächliche Marktperformance anzupassen und zu optimieren.

Strategiequellcode
/*backtest
start: 2024-08-19 00:00:00
end: 2025-08-18 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_OKX","currency":"BTC_USDT","balance":5000}]
*/

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

//@version=6

strategy(title = 'PEPE- DCA Strategy', overlay = true, pyramiding = 11, process_orders_on_close = true, commission_value = 0.1)

Base_order_size = input.int(1500, 'Base order Size')/close
Safety_order_size = input.int(350, 'Save order')/close

Triger_Type = input.string('Over', 'Entry at Cross Over / Under', options = ['Over', 'Under'], group = 'Deal start condition > Trading View custom signal', inline = '1', tooltip = 'Deal start condition decision')
Short_Moving_Average = input.string('SMA', 'Short Moving Average', group = 'Deal start condition > Trading View custom signal', inline = '2', options = ['SMA', 'EMA', 'HMA'])
Short_Period = input.int(17, 'Period', group = 'Deal start condition > Trading View custom signal', inline = '2')
Long_Moving_Average = input.string('HMA', 'Long Moving Average', group = 'Deal start condition > Trading View custom signal', inline = '3', options = ['SMA', 'EMA', 'HMA'])
Long_Period = input.int(26, 'Period', group = 'Deal start condition > Trading View custom signal', inline = '3')
Target_profit = input.float(1.9, 'Target profit (%)', step = 0.05, group = 'Take profit / Stop Loss', inline = '1') * 0.01
Max_safety_trades_count = input.int(5, 'Max safety trades count', maxval = 10, group = 'Safety orders', inline = '1')
Price_deviation = input.float(2.45, 'Price deviation to open safety orders (% from initial order)', step = 0.01, group = 'Safety orders', inline = '2') * 0.01
Safety_order_volume_scale = input.float(1.85, 'Safety order volume scale', step = 0.01, group = 'Safety orders', inline = '3')
Safety_order_step_scale = input.float(1.61, 'Safety order step scale', step = 0.01, group = 'Safety orders', inline = '3')



// Position status
status_none = strategy.opentrades == 0
status_long = strategy.position_size[1] == 0 and strategy.position_size > 0

/////////// Moving_Averages 

Short_Moving_Average_Line = Short_Moving_Average == 'SMA' ? ta.sma(close, Short_Period) : Short_Moving_Average == 'EMA' ? ta.ema(close, Short_Period) : Short_Moving_Average == 'HMA' ? ta.sma(close, Short_Period) : na

Long_Moving_Average_Line = Long_Moving_Average == 'SMA' ? ta.sma(close, Long_Period) : Long_Moving_Average == 'EMA' ? ta.ema(close, Long_Period) : Long_Moving_Average == 'HMA' ? ta.sma(close, Long_Period) : na
///////////// Moving_Averages long condition
Base_order_Condition = Triger_Type == 'Over' ? ta.crossover(Short_Moving_Average_Line, Long_Moving_Average_Line) : ta.crossunder(Short_Moving_Average_Line, Long_Moving_Average_Line) // Buy when close crossing lower band
//////////////////// Savety order deviation
safety_order_deviation(index) =>
    Price_deviation * math.pow(Safety_order_step_scale, index - 1)
pd = Price_deviation
ss = Safety_order_step_scale
//////// Cal of deviation steps
step(i) =>
    i == 1 ? pd : i == 2 ? pd + pd * ss : i == 3 ? pd + (pd + pd * ss) * ss : i == 4 ? pd + (pd + (pd + pd * ss) * ss) * ss : i == 5 ? pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss : i == 6 ? pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss : i == 7 ? pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss : i == 8 ? pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss : i == 9 ? pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss : i == 10 ? pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + (pd + pd * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss) * ss : na

long_line(i) =>
    close[1] - close[1] * step(i)

////////// Savety order Triger
Safe_order_line(i) =>
    i == 0 ? ta.valuewhen(status_long, long_line(0), 0) : i == 1 ? ta.valuewhen(status_long, long_line(1), 0) : i == 2 ? ta.valuewhen(status_long, long_line(2), 0) : i == 3 ? ta.valuewhen(status_long, long_line(3), 0) : i == 4 ? ta.valuewhen(status_long, long_line(4), 0) : i == 5 ? ta.valuewhen(status_long, long_line(5), 0) : i == 6 ? ta.valuewhen(status_long, long_line(6), 0) : i == 7 ? ta.valuewhen(status_long, long_line(7), 0) : i == 8 ? ta.valuewhen(status_long, long_line(8), 0) : i == 9 ? ta.valuewhen(status_long, long_line(9), 0) : i == 10 ? ta.valuewhen(status_long, long_line(10), 0) : na
l1 =  Safe_order_line(1) 
l2 =  Safe_order_line(2) 
l3 =  Safe_order_line(3)
l4 =  Safe_order_line(4) 
l5 =  Safe_order_line(5) 
l6 =  Safe_order_line(6) 
l7 =  Safe_order_line(7) 
l8 =  Safe_order_line(8) 
l9 =  Safe_order_line(9)
l10 = Safe_order_line(10)   
//// take profit
TP_line = strategy.position_avg_price * (1 + Target_profit)
//Size of safety orders
safety_order_size(i) =>
    Safety_order_size * math.pow(Safety_order_volume_scale, i - 1)

///plots

plot(Short_Moving_Average_Line, 'Short MA', color = color.new(color.red, 0), style = plot.style_line)
plot(Long_Moving_Average_Line, 'Long MA', color = color.new(color.green, 0), style = plot.style_line)
plot(strategy.opentrades == 1  ? l1 : na, 'Safety order1',color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 2  ? l2 : na, 'Safety order2', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 3  ? l3 : na, 'Safety order3', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 4  ? l4 : na, 'Safety order4', color =color.red, style = plot.style_linebr)
plot(strategy.opentrades == 5  ? l5 : na, 'Safety order5', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 6  ? l6 : na, 'Safety order5', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 7  ? l7 : na, 'Safety order6', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 8  ? l8 : na, 'Safety order7', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 9 ?  l9 : na, 'Safety order8', color = color.red, style = plot.style_linebr)
plot(strategy.opentrades == 10 ? l10 : na, 'Safety order9', color = color.red, style = plot.style_linebr)
plot(strategy.position_size > 0 ? TP_line : na, 'Take Profit', color = color.green, style = plot.style_linebr)

///////////////SToch-Rsi
smoothK = input.int(1, "ST_RSI -K settings for long", minval=1)
smoothD = input.int(3, "ST_RSI-D settings for long", minval=1)
lengthRSI = input.int(14, "RSI Length", minval=1)
lengthStoch = input.int(9, "Stochastic Length", minval=1)
src = input(close, title="RSI Source")
rsi1 = ta.rsi(src, lengthRSI)
k = ta.sma(ta.stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)

////////buy cond- ST_RSI
bk = ta.crossover(k,5)
r = ta.rising(Short_Moving_Average_Line,5)
buy = bk and r

//Stradegy mod

if Base_order_Condition or buy
    if (Base_order_Condition or buy ) and strategy.opentrades == 0
        strategy.entry('Base order', strategy.long, qty = Base_order_size )

for i = 1 to Max_safety_trades_count by 1
    i_s = str.tostring(i)
    if strategy.opentrades <= i and strategy.position_size > 0 and not(strategy.position_size == 0)
        strategy.entry('Safety order' + i_s, strategy.long, qty = safety_order_size(i) , limit = Safe_order_line(i))

for i = 1 to Max_safety_trades_count by 1
    i_s = str.tostring(i)
    if status_none
        strategy.cancel('Safety order' + i_s)
    strategy.exit('TP/SL', 'Base order', limit = TP_line)
    strategy.exit('TP/SL', 'Safety order' + i_s, limit = TP_line)

//