Dies ist eine kurzfristige Handelsstrategie, die auf Kanal-Breakouts basiert. Sie verwendet die Breakouts der oberen und unteren Schiene des Kanals, um den Beginn und das Ende der Trends zu bestimmen und entsprechend Handelsentscheidungen zu treffen.
Die Strategie berechnet zunächst den höchsten und niedrigsten Höchststand über einen bestimmten Zeitraum, um die obere und untere Schiene des Kanals zu bauen.
Wenn der Preis über die obere Schiene bricht, gehen Sie lang. Wenn der Preis unter die untere Schiene bricht, gehen Sie kurz.
Um Risiken zu kontrollieren, wird ein beweglicher Stop-Loss an der Mittellinie des Kanals gesetzt.
Es gibt zwei optionale Exit-Regeln: Zurück zur mittleren Linie oder folgen Sie dem beweglichen Stop-Loss.
Der Kanalzeitraum und andere Parameter können so eingestellt werden, dass die Strategie für verschiedene Marktbedingungen optimiert wird.
Einfach umzusetzen. Überwachen Sie einfach die Preis-Kanal-Beziehung und befolgen Sie die Regeln für den Handel.
Handel mit dem Trend, kein Gegentrendrisiko.
Ein klarer und intuitiver Kanal gibt ausdrückliche Eintrittssignale.
Eine gute Gewinnspanne kann in den meisten Fällen zufriedenstellende Renditen erzielen.
Viele anpassbare Parameter für die Optimierung auf verschiedenen Märkten.
Der Ausbruch kann scheitern, es besteht die Gefahr, eingeschlossen zu werden.
Der Kanal benötigt eine Zeit, um sich zu bilden, und ist nicht geeignet für Marktbereiche.
Die Rückkehr zum mittleren Stop-Loss kann zu konservativ sein und Trends nicht halten.
Die Optimierung der Parameter erfordert historische Daten, die im Live-Handel möglich sind.
Der mechanische Handel mit Breakout-Punkten kann die Handelsfrequenz und die Verschiebungskosten erhöhen.
Beurteilen Sie die Kanäle verschiedener Zeiträume und wählen Sie den optimalen aus.
Versuchen Sie, auf die mittlere Position zurückzukehren und den Stop-Loss zu bewegen, um einen besseren Ausgangmechanismus zu finden.
Optimieren Sie den Stop-Loss-Prozentsatz, um die Wahrscheinlichkeit zu verringern, dass Sie gestoppt werden.
Hinzufügen eines Trendfilters, um unangemessene Breakout-Trades zu vermeiden.
Erwägen Sie, die Positionsgröße zu erhöhen, aber Risiken zu kontrollieren.
Insgesamt ist dies eine ausgereifte kurzfristige Breakout-Strategie. Sie hat klare Einstiegsregeln, eine angemessene Risikokontrolle und funktioniert im Allgemeinen gut. Eine weitere Verbesserung kann durch Parameter-Tuning erreicht werden.
/*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()