Zweiseitige Handelsstrategie bei großen Volatilitätsausbrüchen: Long- und Short-Einstiegssystem basierend auf der Punkteschwelle

ATR SL TP
Erstellungsdatum: 2024-11-18 16:11:21 zuletzt geändert: 2024-11-18 16:11:21
Kopie: 0 Klicks: 576
1
konzentrieren Sie sich auf
1617
Anhänger

Zweiseitige Handelsstrategie bei großen Volatilitätsausbrüchen: Long- und Short-Einstiegssystem basierend auf der Punkteschwelle

Überblick

Die Strategie ist ein auf der 30-minütigen K-Linie basierendes, zweiseitiges Handelssystem, das nach Handelsmöglichkeiten sucht, indem es die Schwankungsbreite der Preise überwacht. Die Kernstrategie besteht darin, große Schwankungen zu identifizieren, indem man die Punktdämpfung festlegt, und nach der Bestätigung des Durchbruchs in die entsprechende Richtung zu handeln. Die Strategie enthält strenge Zeitmanagement-, Stop-Loss- und Handelsmanagementmechanismen, um automatisierte Geschäfte mit kontrollierbarem Risiko zu ermöglichen.

Strategieprinzip

Die Strategie verwendet eine Mehrfachfilterung, um ein effektives Handelssignal zu identifizieren. Zunächst berechnet die Strategie die Bandbreite der Fluktuation der Einheit bei der Schließung der K-Linie pro 30 Minuten. Wenn die Fluktuation größer ist als die vorgegebene Schwelle, wird sie als potenzielle Handelsgelegenheit markiert. Um die Effektivität des Handels zu gewährleisten, setzt die Strategie zusätzliche Sicherungspunkte ein, die das tatsächliche Handelssignal nur auslösen, wenn der Preis diese Sicherungszone durchbricht.

Strategische Vorteile

  1. Perfekte Zeitmanagement: Begrenzung der Zeitfenster für den Handel, um falsche Signale in nicht aktiven Zeiten zu vermeiden
  2. Zwei-Wege-Trading-Mechanismen: Zwei-Wege-Marktchancen zu nutzen und die Effizienz der Kapitalnutzung zu verbessern
  3. Gefährdungssteuerung: Einsatz von Fixed-Point-Stop-Losses zur Erleichterung der Risikobewertung und -verwaltung
  4. Hohe Automatisierungsstufe: Automatisierung des gesamten Prozesses von der Signalerkennung bis zur Transaktionsdurchführung mit geringem menschlichen Eingriff
  5. Flexible Parameter-Einstellungen: Alle wichtigen Parameter können angepasst werden, um sich an unterschiedliche Marktbedingungen anzupassen

Strategisches Risiko

  1. False-Breakout-Risiko: False-Breakouts können nach starken Schwankungen auftreten, was zu einem Stop-Loss führt
  2. Parameter-Sensitivität: Fehlende Threshold-Einstellungen können zu verpassten Gelegenheiten oder zu hohem Handel führen
  3. Marktumfeld-Abhängigkeit: Häufige Stop-Loss-Auslöse in unsicheren Märkten
  4. Schlupfpunkteffekte: Während hoher Schwankungen kann der tatsächliche Handelspreis von den Signalpreisen stark abweichen
  5. Risikomanagement: Fehlende Positionsmanagement-Mechanismen können zu einer übergroßen Risikolockage führen

Richtung der Strategieoptimierung

  1. Erhöhung der Trendfilterung: Verbesserte Signalqualität in Kombination mit Trendindikatoren mit längeren Perioden
  2. Dynamische Parameteroptimierung: automatische Anpassung von Schwankungen und Stop-Loss-Parametern an die Marktschwankungen
  3. Einführung der Übertragungsbestätigung: Erhöhung der Übertragungsfilterbedingungen und Verbesserung der Durchbruchsicherheit
  4. Optimierung von Stop-Loss: Dynamische Stop-Loss-Anpassung an unterschiedliche Marktumstände
  5. Positionsverwaltung hinzufügen: Positionen dynamisch nach Signalstärke und Marktfluktuation anpassen

Zusammenfassen

Es handelt sich um eine vollständig und logisch konzipierte automatisierte Handelsstrategie. Die Strategie ist durch strenge Bedingungenfilterung und Risikokontrolle sehr praktisch. Sie muss jedoch in der Praxis ausreichend getestet und optimiert werden, insbesondere in Bezug auf die Einstellung von Parametern und die Risikokontrolle.

Strategiequellcode
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Big Candle Breakout Strategy Both Side", overlay=true)  

// Input for the point move threshold
point_move_in = input.int(100, title="Point Move Threshold")
point_target = input.int(100, title="Point Target")
point_stoploss = input.int(100, title="Point Stop Loss")
point_buffer = input.int(5, title="Point Buffer")

point_move = point_buffer + point_move_in

// Define the start and end times for trading
start_hour = 9
start_minute = 15
end_hour = 14
end_minute = 30

// Function to check if the current time is within the allowed trading window
in_time_range = (hour(time('30')) > start_hour or (hour(time('30')) == start_hour and minute(time('30')) >= start_minute)) and (hour(time('30')) < end_hour or (hour(time('30')) == end_hour and minute(time('30')) <= end_minute))

// Retrieve the open, high, low, and close prices of 30-minute candles
open_30m = request.security(syminfo.tickerid, "30", open)
high_30m = request.security(syminfo.tickerid, "30", high)
low_30m = request.security(syminfo.tickerid, "30", low)
close_30m = request.security(syminfo.tickerid, "30", close)

// Calculate the range of the candle
candle_range_long = (close_30m - open_30m)
candle_range_short = (open_30m - close_30m)

// Determine if the candle meets the criteria to be marked
big_candle_long = candle_range_long >= point_move_in
big_candle_short = candle_range_short >= point_move_in

// Variables to store the state of the trade
var float long_entry_price = na
var float long_target_price = na
var float long_stop_loss_price = na

var float short_entry_price = na
var float short_target_price = na
var float short_stop_loss_price = na

// Check if there are no active trades
no_active_trades = (strategy.opentrades == 0)

// Long entry condition
if (big_candle_long and na(long_entry_price) and in_time_range and no_active_trades)
    long_entry_price := high_30m+point_buffer
    long_target_price := long_entry_price + point_target
    long_stop_loss_price := long_entry_price - point_stoploss
    strategy.entry("Buy", strategy.long, stop=long_entry_price, limit=long_target_price)

plot(long_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Entry Price")
plot(long_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Target Price")
plot(long_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Stop Loss Price")

// Short entry condition
if (big_candle_short and na(short_entry_price) and in_time_range and no_active_trades)
    short_entry_price := low_30m - point_buffer
    short_target_price := short_entry_price - point_target
    short_stop_loss_price := short_entry_price + point_stoploss
    strategy.entry("Sell", strategy.short, stop=short_entry_price, limit=short_target_price)

plot(short_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Short Entry Price")
plot(short_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Short Target Price")
plot(short_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Short Stop Loss Price") 

// Long exit conditions
if (not na(long_entry_price))
    strategy.exit("Long Exit", from_entry="Buy", limit=long_target_price, stop=long_stop_loss_price)
   
// Short exit conditions
if (not na(short_entry_price))
    strategy.exit("Short Exit", from_entry="Sell", limit=short_target_price, stop=short_stop_loss_price)

// Reset trade status
if (strategy.position_size == 0)
    long_entry_price := na
    long_target_price := na
    long_stop_loss_price := na

    short_entry_price := na
    short_target_price := na
    short_stop_loss_price := na

// Plot the big candle and entry/exit levels
plotshape(series=big_candle_long, location=location.abovebar, style=shape.circle, color=color.green)
plotshape(series=big_candle_short, location=location.abovebar, style=shape.circle, color=color.red)

//plot(long_entry_price, style=plot.style_stepline, color=color.blue, linewidth=2, title="Entry Price")
//plot(long_target_price, style=plot.style_stepline, color=color.green, linewidth=2, title="Target Price")
//plot(long_stop_loss_price, style=plot.style_stepline, color=color.red, linewidth=2, title="Stop Loss Price")