Dynamisches Tracking Stop-Loss ein Drittel K-Line quantitative Handelsstrategie

TRINITY ATR
Erstellungsdatum: 2025-02-18 13:57:33 zuletzt geändert: 2025-02-18 13:57:33
Kopie: 0 Klicks: 345
1
konzentrieren Sie sich auf
1617
Anhänger

Dynamisches Tracking Stop-Loss ein Drittel K-Line quantitative Handelsstrategie

Überblick

Es handelt sich um eine quantitative Handelsstrategie, die Bill Williams’ Methode der K-Linie-Analyse in Drittel und die dynamische Stop-Loss-Tracking-Funktion kombiniert. Die Strategie erzeugt ein eindeutiges Multi-Block-Signal durch die Analyse der Strukturmerkmale der aktuellen und vorherigen K-Linie und nutzt konfigurierbare Stop-Loss-Tracking-Mechanismen, um die Position zu schützen und eine präzise Ein-/Aus- und Risikomanagement zu ermöglichen.

Strategieprinzip

Die Kernlogik der Strategie basiert auf folgenden Schlüsselbereichen:

  1. Die K-Linien-Drittelzahl wird berechnet, indem die Reichweite der K-Linien (höchster Preis - niedrigerer Preis) in drei Teile geteilt wird, um die Grenzwerte der oberen und unteren Bereiche zu erhalten.
  2. K-Linien-Form-Klassifizierung: K-Linien werden in verschiedene Arten unterteilt, je nachdem, wo die Öffnungs- und Schlusspreise in der dritten Subregion liegen. Zum Beispiel wird eine K-Linien-Klassifizierung als stark aufsteigend betrachtet, wenn die Öffnungs- und Schlusspreise in der unteren und die Schlusspreise in der oberen Subregion liegen.
  3. Signalgenerationsregeln: Die Form der aktuellen K-Leitung und der vorherigen K-Leitung in Kombination analysiert werden, um ein wirksames Handelssignal zu ermitteln. Zum Beispiel wird ein Mehrfachsignal ausgelöst, wenn zwei aufeinanderfolgende K-Leitungen ein starkes Merkmal aufweisen.
  4. Dynamische Tracking-Stopps: Der niedrigste Preis (Multiplex) oder der höchste Preis (Leerwert) der vorherigen N-Wurzel-K-Linie wird während des angegebenen Zeitraums als bewegliche Stop-Punkt verwendet.

Strategische Vorteile

  1. Logische Klarheit: Die Strategie verwendet intuitive K-Line-Struktur-Analysemethoden, die Handelsregeln sind klar und leicht verständlich.
  2. Gute Risikomanagement: Durch die dynamische Verfolgung von Stop-Loss-Mechanismen ist es möglich, das Rücknahmerisiko effektiv zu kontrollieren, während genügend Gewinnspielraum erhalten bleibt.
  3. Anpassungsfähigkeit: Die Strategie kann die Stop-Loss-Parameter für verschiedene Marktbedingungen anpassen und hat eine gute Anpassungsfähigkeit.
  4. Hohe Automatisierungsstufe: Von der Signalgenerierung bis hin zur Lagerhaltung ist alles vollständig automatisiert und ohne menschliche Intervention.

Strategisches Risiko

  1. Schwankungsrisiko: Bei schwankenden Kursbewegungen können häufige falsche Durchbruchsignale erzeugt werden, was zu Überhändlungen führt.
  2. Gefahr von Überspringen: Bei einem starken Überspringen kann der Tracking-Stopp nicht rechtzeitig ausgelöst werden, was zu übererwarteten Verlusten führt.
  3. Parameter-Sensitivität: Die Parameter-Auswahl, die den Verlust verfolgen, hat einen großen Einfluss auf die Strategie-Performance. Die falsche Parameter-Einstellung kann zu einem vorzeitigen Ausstieg oder mangelnden Schutz führen.

Richtung der Strategieoptimierung

  1. Erweiterte Marktumfeld-Filterung: Trend- oder Volatilitätsindikatoren können eingeführt werden, um die Strategieparameter dynamisch in unterschiedlichen Marktumgebungen anzupassen.
  2. Optimierte Stop-Loss-Mechanismen: Eine Kombination mit ATR-Indikatoren kann in Betracht gezogen werden, um einen flexibleren Stop-Loss-Abstand einzurichten und die Anpassungsfähigkeit der Stop-Loss zu verbessern.
  3. Einführung von Positionsmanagement: Positionsgröße kann an die Signalstärke und die dynamische Marktvolatilität angepasst werden, um eine genauere Risikokontrolle zu ermöglichen.
  4. Erhöhung der Einstiegsoptimierung: Sie können die Gewinnziele oder die technischen Indikatoren hinzufügen, um die Einstiegszeit zu optimieren.

Zusammenfassen

Es handelt sich um eine strukturierte, logisch eindeutige und quantifizierte Handelsstrategie, die durch die Kombination klassischer Methoden der technischen Analyse und moderner Risikomanagementtechnologien eine gute Praxis hat. Die Strategie wurde so konzipiert, dass die Bedürfnisse des realen Handels, einschließlich der wichtigen Elemente wie Signalgenerierung, Lagerhaltung und Risikokontrolle, berücksichtigt werden. Durch weitere Optimierung und Verbesserung wird die Strategie in der Lage sein, im realen Handel besser zu funktionieren.

Strategiequellcode
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-16 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("TrinityBar with Trailing Stop", overlay=true, initial_capital=100000, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=250)

//─────────────────────────────────────────────────────────────
// 1. BAR THIRDS CALCULATIONS
//─────────────────────────────────────────────────────────────
cur_range      = high - low
cur_lowerThird = low + cur_range / 3
cur_upperThird = high - cur_range / 3

prev_range      = high[1] - low[1]
prev_lowerThird = low[1] + prev_range / 3
prev_upperThird = high[1] - prev_range / 3

//─────────────────────────────────────────────────────────────
// 2. DEFINE BULLISH & BEARISH BAR TYPES (CURRENT & PREVIOUS)
//─────────────────────────────────────────────────────────────
// Current bar types
is_1_3 = (open <= cur_lowerThird) and (close >= cur_upperThird)
is_3_3 = (open >= cur_upperThird) and (close >= cur_upperThird)
is_2_3 = (open > cur_lowerThird) and (open < cur_upperThird) and (close >= cur_upperThird)

is_3_1 = (open >= cur_upperThird) and (close <= cur_lowerThird)
is_1_1 = (open <= cur_lowerThird) and (close <= cur_lowerThird)
is_2_1 = (open > cur_lowerThird) and (open < cur_upperThird) and (close <= cur_lowerThird)

// Previous bar types
prev_is_1_3 = (open[1] <= prev_lowerThird) and (close[1] >= prev_upperThird)
prev_is_3_3 = (open[1] >= prev_upperThird) and (close[1] >= prev_upperThird)
prev_is_2_3 = (open[1] > prev_lowerThird) and (open[1] < prev_upperThird) and (close[1] >= prev_upperThird)

prev_is_3_1 = (open[1] >= prev_upperThird) and (close[1] <= prev_lowerThird)
prev_is_1_1 = (open[1] <= prev_lowerThird) and (close[1] <= prev_lowerThird)
prev_is_2_1 = (open[1] > prev_lowerThird) and (open[1] < prev_upperThird) and (close[1] <= prev_lowerThird)

//─────────────────────────────────────────────────────────────
// 3. VALID SIGNAL CONDITIONS
//─────────────────────────────────────────────────────────────
validBuy  = (prev_is_2_3 or prev_is_3_3 or prev_is_1_3) and (is_1_3 or is_3_3)
validSell = (prev_is_2_1 or prev_is_1_1 or prev_is_3_1) and (is_1_1 or is_3_1)

//─────────────────────────────────────────────────────────────
// 4. PLOT SIGNAL TRIANGLES
//─────────────────────────────────────────────────────────────
plotshape(validBuy, title="Valid Buy", style=shape.triangleup, location=location.belowbar, 
     color=color.green, size=size.small, text="B")
plotshape(validSell, title="Valid Sell", style=shape.triangledown, location=location.abovebar, 
     color=color.red, size=size.small, text="S")

//─────────────────────────────────────────────────────────────
// 5. MARKET ORDER EXECUTION BASED ON SIGNALS
//─────────────────────────────────────────────────────────────
if validBuy
    // Close any short positions.
    strategy.close("Short", comment="")
    // If not already long, enter a market long.
    if strategy.position_size <= 0
        strategy.entry("Long", strategy.long, comment="")
        
if validSell
    // Close any long positions.
    strategy.close("Long", comment="")
    // If not already short, enter a market short.
    if strategy.position_size >= 0
        strategy.entry("Short", strategy.short, comment="")

//─────────────────────────────────────────────────────────────
// 6. TRAILING STOP LOSS FUNCTION
//─────────────────────────────────────────────────────────────
// Inputs for trailing stop settings:
trailBars = input.int(title="Trailing Stop Bars Back", defval=1, minval=1)
trailTF   = input.timeframe(title="Trailing Stop Timeframe", defval="")  // "" = current timeframe

// For long positions, use the low from 'trailBars' bars back on the specified timeframe.
// For short positions, use the high from 'trailBars' bars back.
trailStopLong  = request.security(syminfo.tickerid, trailTF, low[trailBars])
trailStopShort = request.security(syminfo.tickerid, trailTF, high[trailBars])

// Apply trailing stops if a position is open.
if strategy.position_size > 0
    strategy.exit("Trailing Stop Long", from_entry="Long", stop=trailStopLong)
if strategy.position_size < 0
    strategy.exit("Trailing Stop Short", from_entry="Short", stop=trailStopShort)