Strategie für den Durchbruch der doppelten Schildkröte

Schriftsteller:ChaoZhang, Datum: 2023-11-28 16:25:41
Tags:

img

Übersicht

Die Double Turtle Breakthrough Strategie integriert die Schildkrötenhandel-Breakthrough-Strategie und Linda Raschke's Moving Stop Loss-Prinzip, mit ausgezeichneter Durchbruchleistung und strenger Risikokontrolle.

Strategieprinzip

Die Kernlogik besteht darin, bei einem Durchbruch des kleinen Zyklushochs am Höhepunkt des großen Zyklus zu kurz zu gehen und bei einem Durchbruch des kleinen Zykluslows am Tiefpunkt des großen Zyklus lang zu gehen. Nachdem eine Position eröffnet wurde, setzt man einen beweglichen Stop-Loss und einen beweglichen Take-Profit ein, stoppt zuerst den Verlust, um das Risiko zu bestätigen. Wenn sich die Holding-Menge auf die Satz-Take-Profit-Menge ansammelt, annulliert man den Stop-Loss-Auftrag im nächsten Zyklus, geht dann aus der Hälfte der Position und setzt einen beweglichen Stop-Loss und einen beweglichen Take-Profit ein, um Gewinne zu erzielen und Spreads zu verfolgen.

Die spezifischen Betriebsschritte sind

  1. Berechnen Sie den großen Zyklus (20 Zyklen) Höchstpunkt vorHoch und den kleinen Zyklus (4 Zyklen) Höchstpunkt kleinPeriodeHoch.

  2. Wenn das High der letzten K-Linie größer ist als prevHigh und prevHigh größer als smallPeriodHigh, zeigt dies an, dass der große Zyklus-Hochpunkt durch den kleinen Zyklus-Hochpunkt bricht.

  3. Warten Sie, bis die Position umgekehrt ist, bevor Sie den Stop-Loss-Auftrag stornieren, um zu verhindern, dass Sie gestoppt werden.

  4. Wenn die gehaltene Menge die festgelegte Zahl des Profitzyklus erreicht (derzeit 0 Zyklen), treten Sie in der nächsten Zyklus aus der Hälfte der Position aus und setzen Sie einen beweglichen Stop Loss und einen beweglichen Profit ein, um den Spread zu verfolgen und die Gewinne zu sperren.

  5. Bei Durchbrüchen von Tiefpunkten werden Long-Positionen auf der Grundlage der Durchbruchszusammenhänge zwischen großen Zyklustiefpunkten und kleinen Zyklustiefpunkten festgelegt.

Analyse der Vorteile

Dies ist eine sehr umfassende Durchbruchstrategie mit folgenden Vorteilen:

  1. Durch die Kombination von Doppelzyklus-Schildkrötenhandel können wirkungsvoll Durchbruchssignale identifiziert werden.

  2. Die Verwendung von Stop-Loss- und Take-Profit-Techniken kontrolliert Risiken streng und vermeidet große Verluste.

  3. Aussteigen in zwei Phasen, Profit halbe Position zu nehmen, dann vollständig aussteigen durch das Bewegen Profit nehmen, Gewinne zu sperren.

  4. Berücksichtigen Sie sowohl lange als auch kurze Transaktionen, die den Merkmalen wechselnder Multi-Leere-Märkte entsprechen.

  5. Ausgezeichnete Rückprüfungsergebnisse mit starker realen Handelsleistung.

Risikoanalyse

Die wichtigsten Risiken und Gegenmaßnahmen sind folgende:

  1. Risiko falscher Durchbrüche: Die Zyklusparameter müssen entsprechend angepasst werden, um die Gültigkeit des Durchbruchs zu gewährleisten.

  2. Das Risiko von Verfolgungen steigt und fällt. Filtern sollte mit Trends und Mustern kombiniert werden, um zu vermeiden, dass am Ende der Trends Positionen eröffnet werden.

  3. Risiko, dass der Stoppverlust weggewaschen wird; Entspannung der Stoppverlustamplitude, um ausreichend Platz zu schaffen.

  4. Risiko eines überempfindlichen Bewegungsstop-Loss: Nach dem Stop-Loss müssen die Gleiteinstellungen angepasst werden, um unnötige Stop-Outs zu vermeiden.

Optimierungsrichtlinien

Die Strategie kann auch in folgenden Aspekten optimiert werden:

  1. Fügen Sie Volumen-Durchbruchfilter hinzu, um die Echtheit der Durchbrüche zu gewährleisten.

  2. Hinzufügen von Trendbeurteilungsindikatoren, um zu vermeiden, dass am Ende des Trends Positionen eröffnet werden.

  3. Kombinieren Sie mehr Zeitzyklen, um den Durchbruch zu bestimmen.

  4. Verstärkung von Algorithmen für maschinelles Lernen zur dynamischen Optimierung von Parametern.

  5. Kombination mit anderen Strategien zur statistischen Arbitrage.

Zusammenfassung

Die Double Turtle Breakthrough Strategy nutzt umfassend Doppelzyklustechniken, bahnbrechende Theorien und strenge Risikomanagementmethoden, um hohe Gewinnraten zu gewährleisten und gleichzeitig eine stabile Rendite zu gewährleisten. Dieses Strategiemodell ist einfach und klar, leicht zu verstehen und anzuwenden und ist eine ausgezeichnete quantitative Strategie. Diese Strategie hat immer noch ein großes Optimierungspotenzial. Anleger können auf dieser Grundlage innovativ sein, um noch bessere Handelssysteme zu schaffen.


/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Turtle soup plus one", shorttitle = "Turtle soup plus one", overlay=true)

bigPeriod = input(20)
smallPeriod = input(4)
takeProfitBars = input(0)
trailingStop = input(5, title = "Trailing stop percentages")
if (strategy.position_size == 0)
    strategy.cancel("Long")
    strategy.cancel("Short")
    strategy.cancel("Stop")



stopLossPrice = 0.1
stopLossPrice := nz(stopLossPrice[1])
takeProfitStarted = false
takeProfitStarted := nz(takeProfitStarted[1])

prevHigh = highest(high, bigPeriod - smallPeriod)[smallPeriod]
smallPeriodHigh = highest(high, smallPeriod - 1)[1]
if (high > prevHigh and prevHigh > smallPeriodHigh and close > prevHigh and strategy.position_size == 0)
    strategy.order("Short", strategy.short, stop = prevHigh)

if strategy.position_size < 0 and strategy.position_size[1] == 0
    stopLossPrice := high[1]
    strategy.order("Stop", strategy.long, qty = -strategy.position_size, stop = stopLossPrice)
    takeProfitStarted := false

if (strategy.position_size < 0 and sum(strategy.position_size, takeProfitBars) == strategy.position_size * takeProfitBars and close < strategy.position_avg_price and not takeProfitStarted)
    takeProfitStarted := true
    strategy.cancel("Stop")
    strategy.order("ExitHalf", strategy.long, qty = ceil(-strategy.position_size / 2), stop = close)
    if (strategy.position_size != -1)
        strategy.exit("ExitFull", "Short", qty = -strategy.position_size - ceil(-strategy.position_size / 2), loss = stopLossPrice, trail_price  = close, trail_offset = -(close - strategy.position_avg_price) * trailingStop / 100 / syminfo.mintick)
        

prevLow = lowest(low, bigPeriod - smallPeriod)[smallPeriod]
smallPeriodLow = lowest(low, smallPeriod - 1)[1]
if (low < prevLow and prevLow < smallPeriodLow and close < prevLow and strategy.position_size == 0)
    strategy.order("Long", strategy.long, stop = prevLow)

if strategy.position_size > 0 and strategy.position_size[1] == 0
    stopLossPrice := low[1]
    strategy.order("Stop", strategy.short, qty = strategy.position_size, stop = stopLossPrice)
    takeProfitStarted := false

if (strategy.position_size > 0 and sum(strategy.position_size, takeProfitBars) == strategy.position_size * takeProfitBars and close > strategy.position_avg_price and not takeProfitStarted)
    takeProfitStarted := true
    strategy.cancel("Stop")
    strategy.order("ExitHalf", strategy.short, qty = ceil(strategy.position_size / 2), stop = close)
    if (strategy.position_size != 1)
        strategy.exit("ExitFull", "Long", qty = strategy.position_size - ceil(strategy.position_size / 2),loss = stopLossPrice, trail_price  = close, trail_offset = (close - strategy.position_avg_price) * trailingStop / 100 / syminfo.mintick)

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(3, "Backtest Start Month")
testStartDay = input(6, "Backtest Start Day")
testStartHour = input(08, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2038, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()

Mehr