Box Breakout-basierte Silberkugel Strategie

Schriftsteller:ChaoZhang, Datum: 2024-01-15 12:06:32
Tags:

img

Übersicht

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.

Strategie Logik

  1. Die Strategie definiert einen Handelszeitraum und sucht nur nach Handelsmöglichkeiten in diesem Zeitraum.

  2. 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.

  3. 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.

  4. Sobald die Position geöffnet ist, setzt die Strategie den Gewinn auf Basis des doppelten Ausbruchsbereichs, um die Trendbeschleunigung zu erfassen.

  5. Die Strategie legt den Stop-Loss auch auf den niedrigsten oder höchsten Preis der zweiten K-Linie fest, um das Verlustrisiko zu reduzieren.

Analyse der Vorteile

Die Strategie weist folgende Vorteile auf:

  1. Die Logik ist einfach und leicht umzusetzen.

  2. Die Verwendung von K-Line-Box-Breakthroughs zur Beurteilung der Marktrichtung und -stärke ist sehr genau.

  3. Die Profit-Aufnahme-Einstellung erfasst Chancen aus der Trendbeschleunigung.

  4. Es gibt eine klare Stop-Loss-Logik, um einzelne Verluste zu kontrollieren.

  5. Die Strategieidee ist flexibel und nach persönlichem Stil anpassbar.

Risikoanalyse

Die Strategie birgt jedoch einige Risiken:

  1. Ausbruchsignale können falsche Ausbrüche sein, Verluste können nicht vollständig vermieden werden.

  2. Der Stop-Loss in der Nähe des Einstiegspunktes kann leicht durch aggressive Märkte ausgelöst werden.

  3. Es kann die Trendstruktur nicht beurteilen und in Bereichsgebundenen Märkten können häufig Stopps ausgelöst werden.

  4. Sie berücksichtigt nicht die Auswirkungen verschiedener Produkte und Zeiträume.

Optimierungsrichtlinien

Um die Strategie weiter zu optimieren, können wir uns in folgenden Aspekten verbessern:

  1. Anpassungsfähige Stop-Loss- und Take-Profit-Parameter für verschiedene Produkte und Zeiträume festlegen.

  2. Hinzufügen von technischen Indikatoren zur Beurteilung von Trends, um nicht in den Märkten mit Bandbreiten gefangen zu bleiben.

  3. Setzen Sie nachfolgende zusätzliche Möglichkeiten, um Trendläufe zu verfolgen.

  4. Kombination von Lautstärkenindikatoren zur Beurteilung der Echtheit von Breakouts und Filtersignalen.

  5. Hinzufügen von Algorithmen für maschinelles Lernen, um die Trendrichtung zu bestimmen.

Zusammenfassung

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")

Mehr