Kurzfristige Kanal-Breakout-Strategie


Erstellungsdatum: 2023-10-25 14:40:21 zuletzt geändert: 2023-10-25 14:40:21
Kopie: 0 Klicks: 674
1
konzentrieren Sie sich auf
1617
Anhänger

Kurzfristige Kanal-Breakout-Strategie

Überblick

Die Strategie ist eine kurzfristige Handelsstrategie, die auf den Kennzahlen der Kanäle basiert. Sie nutzt die Durchbrüche der Auf- und Abfahrt der Kanäle, um den Beginn und das Ende des Trends zu beurteilen und dann Kauf- und Verkaufsschlüsse zu treffen. In einem stark trendigen Markt kann diese Durchbruchsstrategie bessere Erträge erzielen.

Strategieprinzip

  1. Die Strategie berechnet zunächst Höchst- und Tiefstpreise innerhalb eines bestimmten Zeitraums, um die Ober- und Unterbahnen des Kanals zu bauen.

  2. Wenn die Preise steigen, brechen Sie die Bahn. Wenn die Preise fallen, brechen Sie die Bahn.

  3. Risikokontrolle mit mobilen Stop-Lines. Stop-Line ist die mittlere Linie des Kanals.

  4. Es gibt zwei Optionen für den Ausstieg: die Rückkehr zur Mittellinie und die Bewegung des Stop-Losses. Die erste ermöglicht einen schnellen Gewinn-Ausstieg, die zweite das Risiko.

  5. Die Optimierung der Strategie kann durch die Auswahl der Kanalzyklus und die Anpassung der Stop-Loss-Marge an die Marktumgebung erfolgen.

Analyse der Stärken

  1. Die Bedienung ist einfach und leicht zu realisieren. Es ist nur nötig, die Beziehung zwischen dem Preis und dem Kanal zu überwachen und nach den Regeln zu öffnen.

  2. Es gibt keine Gefahr von Rückschlägen, wenn man im Trend handelt.

  3. Der Gang ist klar und intuitiv und bildet ein klares Eintrittssignal.

  4. Es gibt eine gute Gewinnspanne, die in der Regel zufriedenstellend ist.

  5. Die Parameter sind vielseitig anpassbar und können für verschiedene Märkte optimiert werden.

Risikoanalyse

  1. Ein Durchbruch ist nicht immer erfolgreich, es besteht die Gefahr, eingekesselt zu werden.

  2. Die Kanäle müssen regelmäßig gebildet werden und sind nicht für Erschütterungen geeignet.

  3. Der Rückblick auf die Halbstrecken-Stopps ist möglicherweise zu konservativ, um einen Trend zu halten.

  4. Die Parameteroptimierung erfordert die Unterstützung durch historische Daten, die auf der Festplatte möglicherweise optimiert wurden.

  5. Durch automatische Kauf- und Verkaufsprozesse können die Anzahl der Transaktionen und die Kosten für die Sprungpunkte erhöht werden.

Optimierungsrichtung

  1. Beurteilung der Wirksamkeit verschiedener Periodiparameter und Auswahl der optimalen Durchlaufphase.

  2. Testen Sie die Rückkehr-Mittellinie-Stopp und die Bewegungsstopp und wählen Sie die geeignetere Ausstiegsmechanik.

  3. Optimierung der Stop-Loss-Spanne und Verringerung der Wahrscheinlichkeit, dass ein Stop-Loss ausgelöst wird.

  4. Trendfilter werden eingesetzt, um unangemessene Durchbruchstransaktionen zu vermeiden.

  5. Erwägen Sie, Ihre Position zu erhöhen, aber kontrollieren Sie die Risiken.

Zusammenfassen

Die Strategie ist insgesamt eine ausgereiftere, kurzfristige Durchbruchstrategie. Es gibt klare Einstiegsregeln, Risikokontrollen sind vorhanden und die Wirkung ist gut. Durch die Optimierung der Parameter kann die Strategie-Performance weiter verbessert werden.

Strategiequellcode
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Strategy testing and optimisation for free Bitmex trading bot 
// © algotradingcc 

//@version=4
strategy("Channel Break [for free bot]", overlay=true, default_qty_type= strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 20, commission_type=strategy.commission.percent, commission_value=0.075)

//Options
buyPeriod = input(13, "Channel Period for Long position")
sellPeriod = input(18, "Channel Period for Short position")
isMiddleExit = input(true, "Is exit on Base Line?")
takeProfit = input(46, "Take Profit (%) for position")
stopLoss = input(9, "Stop Loss (%) for position")

// Test Start
startYear = input(2005, "Test Start Year")
startMonth = input(1, "Test Start Month")
startDay = input(1, "Test Start Day")
startTest = timestamp(startYear,startMonth,startDay,0,0)

//Test End
endYear = input(2050, "Test End Year")
endMonth = input(12, "Test End Month")
endDay = input(30, "Test End Day")
endTest = timestamp(endYear,endMonth,endDay,23,59)

timeRange = time > startTest and time < endTest ? true : false

// Long&Short Levels
BuyEnter = highest(buyPeriod)
BuyExit = isMiddleExit ? (highest(buyPeriod) + lowest(buyPeriod)) / 2: lowest(buyPeriod)

SellEnter = lowest(sellPeriod)
SellExit = isMiddleExit ? (highest(sellPeriod) + lowest(sellPeriod)) / 2: highest(sellPeriod)

// Plot Data
plot(BuyEnter, style=plot.style_line, linewidth=2, color=color.blue, title="Buy Enter")
plot(BuyExit, style=plot.style_line, linewidth=1, color=color.blue, title="Buy Exit", transp=50)
plot(SellEnter, style=plot.style_line, linewidth=2, color=color.red, title="Sell Enter")
plot(SellExit, style=plot.style_line, linewidth=1, color=color.red, title="Sell Exit", transp=50)

// Calc Take Profits & Stop Loss
TP = 0.0
SL = 0.0
if strategy.position_size > 0
    TP := strategy.position_avg_price*(1 + takeProfit/100)
    SL := strategy.position_avg_price*(1 - stopLoss/100)

if strategy.position_size > 0 and SL > BuyExit
    BuyExit := SL
    
if strategy.position_size < 0
    TP := strategy.position_avg_price*(1 - takeProfit/100)
    SL := strategy.position_avg_price*(1 + stopLoss/100)

if strategy.position_size < 0 and SL < SellExit
    SellExit := SL
    
    
// Long Position    
if timeRange and strategy.position_size <= 0
    strategy.entry("Long", strategy.long, stop = BuyEnter)
strategy.exit("Long Exit", "Long", stop=BuyExit, limit = TP, when = strategy.position_size > 0)


// Short Position
if timeRange and strategy.position_size >= 0
    strategy.entry("Short", strategy.short, stop = SellEnter)
    
strategy.exit("Short Exit", "Short", stop=SellExit, limit = TP, when = strategy.position_size < 0)

// Close & Cancel when over End of the Test
if time > endTest
    strategy.close_all()
    strategy.cancel_all()