Fortgeschrittene quantitative Handelsstrategie: automatisiertes Ausführungssystem basierend auf Intraday-Momentum und Risikomanagement

DOJI SL TP ATR momentum
Erstellungsdatum: 2025-02-21 14:25:50 zuletzt geändert: 2025-02-27 16:57:06
Kopie: 2 Klicks: 446
2
konzentrieren Sie sich auf
319
Anhänger

Fortgeschrittene quantitative Handelsstrategie: automatisiertes Ausführungssystem basierend auf Intraday-Momentum und Risikomanagement Fortgeschrittene quantitative Handelsstrategie: automatisiertes Ausführungssystem basierend auf Intraday-Momentum und Risikomanagement

Überblick

Es handelt sich um eine vollständig automatisierte Handelsstrategie, die auf Tagesdynamik basiert und ein strenges Risikomanagement und ein präzises Positionsmanagementsystem kombiniert. Die Strategie läuft hauptsächlich während der Londoner Handelszeit und sucht nach Handelsmöglichkeiten, indem sie Marktdynamikänderungen identifiziert und Doji-Formen ausgeschlossen, während die täglichen Sperrregeln zur Risikokontrolle angewendet werden. Die Strategie verwendet eine dynamische Positionsmanagement-Methode, die automatisch die Handelsskala nach den Kontorechten anpasst und die optimale Verwendung der Gelder gewährleistet.

Strategieprinzip

Die Kernlogik der Strategie basiert auf mehreren wichtigen Komponenten: Erstens ist die Handelszeit auf die London-Zeit begrenzt (ausgenommen die Zeit nach 0 und 19 Uhr), um ausreichende Marktliquidität zu gewährleisten. Die Einstiegssignale basieren auf Preisdynamik.

Strategische Vorteile

  1. Umfassendes Risikomanagement mit festen Stop-Loss-Regelungen, täglichen Stop-Regelungen und dynamischen Positionsmanagement
  2. Anpassungsfähigkeit: Die Transaktionsgröße wird automatisch an die Größe des Kontos angepasst
  3. Liquiditätssicherung: Strenge Einschränkung der Ausführung der Geschäfte auf die Londoner Handelszeiten, um das Risiko einer geringen Liquidität zu vermeiden
  4. False-Signal-Filter: Verringert den Verlust durch False-Breakthroughs durch Ausschluss von Doji-Formen und Kontinuitätssignalen
  5. Klarheit der Ausführungslogik: Ein- und Ausstiegsbedingungen sind klar und können leicht überwacht und optimiert werden

Strategisches Risiko

  1. Marktschwankungsrisiko: Fixed Stop Losses können während hoher Volatilität nicht flexibel genug sein
  2. Preisschieberisiko: Bei schnellen Marktschwankungen kann es zu einem größeren Preisrückgang kommen.
  3. Trendabhängigkeit: Strategie, die in einem wackligen Markt mehr Falschsignale erzeugen kann
  4. Parameter-Sensitivität: Die Stop-Loss-Stopp-Einstellung hat einen großen Einfluss auf die Strategie-Performance Die Lösungen umfassen: die Einführung eines dynamischen Stop-Loss-Mechanismus, die Erhöhung der Filter für die Marktfluktuation, die Einführung von Trendbestätigungsindikatoren usw.

Richtung der Strategieoptimierung

  1. Einführung eines adaptiven Stop-Mechanismus: Dynamische Anpassung des Stop-Ranges an den ATR oder die Volatilität
  2. Erhöhung der Marktumgebungsfilterung: Hinzufügen von Trendstärken, Erhöhung der Haltedauer bei klaren Trends
  3. Optimierte Signalbestätigungsmechanismen: Signalzuverlässigkeit durch Kombination von Verkehrsmenge und anderen technischen Kennzahlen
  4. Verbesserung der Kapitalverwaltung: Einführung eines kombinierten Risikomanagementsystems und Rücknahme von Kontrollen
  5. Erhöhung der Mikrostrukturanalyse des Marktes: Integration der Bestellflussdaten zur Verbesserung der Präzision des Einstiegs

Zusammenfassen

Die Strategie baut durch die Kombination von Dynamik-Breakout, strenge Risikomanagement und automatisierte Ausführungssysteme, ein vollständiges Trading-Framework. Die wichtigsten Vorteile der Strategie liegt in seiner umfassenden Risikokontrollsystem und Adaptivität Design, aber noch Optimierung in Bezug auf die Marktorganisation und Signalfilterung zu optimieren. Durch kontinuierliche Verbesserung und Optimierung der Parameter, die Strategie wird voraussichtlich eine stabile Leistung in verschiedenen Marktorganisationen zu halten.

Strategiequellcode
/*backtest
start: 2025-01-21 00:00:00
end: 2025-02-08 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Trading Strategy for XAUUSD (Gold) – Automated Execution Plan", overlay=true, initial_capital=10000, currency=currency.USD)

//────────────────────────────
// 1. RISK MANAGEMENT & POSITION SIZING
//────────────────────────────
// Configurable inputs for Stop Loss and Take Profit
sl = input.float(title="Stop Loss ($)", defval=5, step=0.1)
tp = input.float(title="Take Profit ($)", defval=15, step=0.1)

// Volume: 0.01 lots per $100 of equity → lotSize = equity / 10000
lotSize = strategy.equity / strategy.initial_capital

//────────────────────────────
// 2. TRADING HOURS (London Time)
//────────────────────────────
// Get the current bar's timestamp in London time.
londonTime   = time(timeframe.period, "", "Europe/London")
londonHour   = hour(londonTime)
tradingAllowed = (londonHour != 0) and (londonHour < 19)

//────────────────────────────
// 3. DOJI CANDLE DEFINITION
//────────────────────────────
// A candle is considered a doji if the sum of its upper and lower shadows is greater than its body.
upperShadow = high - math.max(open, close)
lowerShadow = math.min(open, close) - low
bodySize    = math.abs(close - open)
isDoji      = (upperShadow + lowerShadow) > bodySize

//────────────────────────────
// 4. ENTRY CONDITIONS
//────────────────────────────
// Buy Signal:
//   • Current candle’s high > previous candle’s high.
//   • Current candle’s low is not below previous candle’s low.
//   • Bullish candle (close > open) and not a doji.
//   • Skip if previous candle already qualified.
buyRaw    = (high > high[1]) and (low >= low[1]) and (close > open) and (not isDoji)
buySignal = buyRaw and not (buyRaw[1] ? true : false)

// Sell Signal:
//   • Current candle’s low < previous candle’s low.
//   • Current candle’s high is not above previous candle’s high.
//   • Bearish candle (close < open) and not a doji.
//   • Skip if previous candle already qualified.
sellRaw    = (low < low[1]) and (high <= high[1]) and (close < open) and (not isDoji)
sellSignal = sellRaw and not (sellRaw[1] ? true : false)

//────────────────────────────
// 5. DAILY TAKE PROFIT (TP) RULE
//────────────────────────────
// Create a day-string (year-month-day) using London time.
// This flag will block new trades for the rest of the day if a TP is hit.
var string lastDay = ""
currentDay = str.tostring(year(londonTime)) + "-" + str.tostring(month(londonTime)) + "-" + str.tostring(dayofmonth(londonTime))
var bool dailyTPHit = false
if lastDay != currentDay
    dailyTPHit := false
    lastDay := currentDay

//────────────────────────────
// 6. TRACK TRADE ENTRY & EXIT FOR TP DETECTION
//────────────────────────────
// We record the TP target when a new trade is entered.
// Then, when a trade closes, if the bar’s high (for long) or low (for short) reached the TP target,
// we assume the TP was hit and block new trades for the day.
var float currentTP = na
var int currentTradeType = 0   // 1 for long, -1 for short

// Detect a new trade entry (transition from no position to a position).
tradeEntered = (strategy.position_size != 0 and strategy.position_size[1] == 0)
if tradeEntered
    if strategy.position_size > 0
        currentTP := strategy.position_avg_price + tp
        currentTradeType := 1
    else if strategy.position_size < 0
        currentTP := strategy.position_avg_price - tp
        currentTradeType := -1

// Detect trade closure (transition from position to flat).
tradeClosed = (strategy.position_size == 0 and strategy.position_size[1] != 0)
if tradeClosed and not na(currentTP)
    // For a long trade, if the bar's high reached the TP target;
    // for a short trade, if the bar's low reached the TP target,
    // mark the daily TP flag.
    if (currentTradeType == 1 and high >= currentTP) or (currentTradeType == -1 and low <= currentTP)
        dailyTPHit := true
    currentTP := na
    currentTradeType := 0

//────────────────────────────
// 7. ORDER EXECUTION
//────────────────────────────
// Only open a new position if no position is open, trading is allowed, and daily TP rule is not active.
if (strategy.position_size == 0) and tradingAllowed and (not dailyTPHit)
    if buySignal
        strategy.entry("Long", strategy.long, qty=lotSize)
    if sellSignal
        strategy.entry("Short", strategy.short, qty=lotSize)

//────────────────────────────
// 8. EXIT ORDERS (Risk Management)
//────────────────────────────
// For long positions: SL = entry price - Stop Loss, TP = entry price + Take Profit.
// For short positions: SL = entry price + Stop Loss, TP = entry price - Take Profit.
if strategy.position_size > 0
    longSL = strategy.position_avg_price - sl
    longTP = strategy.position_avg_price + tp
    strategy.exit("Exit Long", from_entry="Long", stop=longSL, limit=longTP)
if strategy.position_size < 0
    shortSL = strategy.position_avg_price + sl
    shortTP = strategy.position_avg_price - tp
    strategy.exit("Exit Short", from_entry="Short", stop=shortSL, limit=shortTP)

//────────────────────────────
// 9. VISUALIZATION
//────────────────────────────
plotshape(buySignal and tradingAllowed and (not dailyTPHit) and (strategy.position_size == 0), title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(sellSignal and tradingAllowed and (not dailyTPHit) and (strategy.position_size == 0), title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")