Die Strategie erkennt hauptsächlich den Durchbruch der Box, die von den Hoch- und Tiefpunkten der K-Linie gebildet wird, um die Richtung und Stärke des Marktes zu beurteilen. Wenn es einen Aufbruch der Box gibt, setzt die Strategie eine Long-Position um den Breakout-Punkt herum. Wenn es einen Abbruch der Box gibt, setzt die Strategie eine Short-Position um den Breakout-Punkt herum. Sobald ein Handelssignal generiert wurde, platziert die Strategie Aufträge zur Eröffnung von Positionen und setzt Stop-Loss und Take-Profit, um Risiken zu kontrollieren.
Die Strategie definiert einen Handelszeitraum und sucht nur nach Handelsmöglichkeiten in diesem Zeitraum.
Nach jeder K-Linienbildung beurteilt die Strategie, ob ein signifikanter Durchbruch zwischen den höchsten und niedrigsten Preisen der beiden vorherigen K-Linien besteht.
2.1 Wenn der niedrigste Preis der 2. K-Linie höher ist als der höchste Preis der 1. K-Linie, tritt ein Aufwärts-Box-Breakout auf.
2.2 Wenn der höchste Preis der 2. K-Linie unter dem niedrigsten Preis der 1. K-Linie liegt, tritt ein Breakout auf.
Nach Bestätigung des Box-Breakout-Signals setzt die Strategie einen Long- oder Short-Eintrittspunkt um den höchsten oder niedrigsten Preis der aktuellen K-Linie.
Sobald die Position geöffnet ist, setzt die Strategie den Gewinn auf Basis des doppelten Ausbruchsbereichs, um die Trendbeschleunigung zu erfassen.
Die Strategie legt den Stop-Loss auch auf den niedrigsten oder höchsten Preis der zweiten K-Linie fest, um das Verlustrisiko zu reduzieren.
Die Strategie weist folgende Vorteile auf:
Die Logik ist einfach und leicht umzusetzen.
Die Verwendung von K-Line-Box-Breakthroughs zur Beurteilung der Marktrichtung und -stärke ist sehr genau.
Die Profit-Aufnahme-Einstellung erfasst Chancen aus der Trendbeschleunigung.
Es gibt eine klare Stop-Loss-Logik, um einzelne Verluste zu kontrollieren.
Die Strategieidee ist flexibel und nach persönlichem Stil anpassbar.
Die Strategie birgt jedoch einige Risiken:
Ausbruchsignale können falsche Ausbrüche sein, Verluste können nicht vollständig vermieden werden.
Der Stop-Loss in der Nähe des Einstiegspunktes kann leicht durch aggressive Märkte ausgelöst werden.
Es kann die Trendstruktur nicht beurteilen und in Bereichsgebundenen Märkten können häufig Stopps ausgelöst werden.
Sie berücksichtigt nicht die Auswirkungen verschiedener Produkte und Zeiträume.
Um die Strategie weiter zu optimieren, können wir uns in folgenden Aspekten verbessern:
Anpassungsfähige Stop-Loss- und Take-Profit-Parameter für verschiedene Produkte und Zeiträume festlegen.
Hinzufügen von technischen Indikatoren zur Beurteilung von Trends, um nicht in den Märkten mit Bandbreiten gefangen zu bleiben.
Setzen Sie nachfolgende zusätzliche Möglichkeiten, um Trendläufe zu verfolgen.
Kombination von Lautstärkenindikatoren zur Beurteilung der Echtheit von Breakouts und Filtersignalen.
Hinzufügen von Algorithmen für maschinelles Lernen, um die Trendrichtung zu bestimmen.
Die Strategie basiert auf dem einfachen Breakout-Prinzip, um beschleunigte Läufe nach Breakouts für übermäßige Renditen zu erfassen. Sie verwendet Stops und Gewinne, um Risiken zu kontrollieren.
/*backtest start: 2024-01-07 00:00:00 end: 2024-01-14 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Dvitash //@version=5 strategy("Casper SMC Silver Bullet", shorttitle = "Casper SB", overlay=true, calc_on_order_fills = true) startTime = input(defval = "1000", title = "Start Time") endTime = input(defval = "1600", title = "End Time") contractAmt = input.int(defval = 2, title = "Contract Amount") fvgCol = input.color(defval = color.rgb(63, 61, 179, 41), title = "FVG Color") borderCol = input.color(defval = color.rgb(35, 33, 172, 41), title = "FVG Border Color") fvgExtendLength = input.int(defval = 0, minval = 0, title = "FVG Extend Length") allowedTime = not na(time(timeframe.period, startTime + "-" + endTime +":23456", "America/New_York")) newDay = bool(ta.change(time('D'))) h = hour(time('1'), "America/New_York") var bool fvgDrawn = na var float entryPrice = na var float stopPrice = na var float tpPrice = na if newDay fvgDrawn := false // a_allBoxes = box.all // if array.size(a_allBoxes) > 0 // for i = 0 to array.size(a_allBoxes) - 1 // box.delete(array.get(a_allBoxes, i)) if allowedTime and barstate.isconfirmed and h <= 16 //Long FVG if high[2] < low and not fvgDrawn // box.new(bar_index[2], low, bar_index + fvgExtendLength, high[2], bgcolor = fvgCol, border_color = borderCol) stopPrice := low[2] entryPrice := low tpPrice := entryPrice + (math.abs(low[2] - entryPrice) * 2) // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice)) strategy.entry("long", strategy.long, contractAmt, limit = entryPrice, comment = "Long Entry") fvgDrawn := true if low[2] > high and not fvgDrawn // box.new(bar_index[2], high, bar_index + fvgExtendLength, low[2], bgcolor = fvgCol, border_color = borderCol) stopPrice := high[2] entryPrice := high tpPrice := entryPrice - (math.abs(high[2] - entryPrice) * 2) // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice)) strategy.entry("short", strategy.short, contractAmt, limit = entryPrice, comment = "Short Entry") fvgDrawn := true if h >= 16 strategy.close_all() strategy.cancel_all() strategy.exit("long exit", from_entry = "long", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Long Exit") strategy.exit("short exit", from_entry = "short", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Short Exit")