kurzfristige Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-10-25 14:40:21
Tags:

img

Übersicht

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.

Strategie Logik

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

  2. Wenn der Preis über die obere Schiene bricht, gehen Sie lang. Wenn der Preis unter die untere Schiene bricht, gehen Sie kurz.

  3. Um Risiken zu kontrollieren, wird ein beweglicher Stop-Loss an der Mittellinie des Kanals gesetzt.

  4. Es gibt zwei optionale Exit-Regeln: Zurück zur mittleren Linie oder folgen Sie dem beweglichen Stop-Loss.

  5. Der Kanalzeitraum und andere Parameter können so eingestellt werden, dass die Strategie für verschiedene Marktbedingungen optimiert wird.

Analyse der Vorteile

  1. Einfach umzusetzen. Überwachen Sie einfach die Preis-Kanal-Beziehung und befolgen Sie die Regeln für den Handel.

  2. Handel mit dem Trend, kein Gegentrendrisiko.

  3. Ein klarer und intuitiver Kanal gibt ausdrückliche Eintrittssignale.

  4. Eine gute Gewinnspanne kann in den meisten Fällen zufriedenstellende Renditen erzielen.

  5. Viele anpassbare Parameter für die Optimierung auf verschiedenen Märkten.

Risikoanalyse

  1. Der Ausbruch kann scheitern, es besteht die Gefahr, eingeschlossen zu werden.

  2. Der Kanal benötigt eine Zeit, um sich zu bilden, und ist nicht geeignet für Marktbereiche.

  3. Die Rückkehr zum mittleren Stop-Loss kann zu konservativ sein und Trends nicht halten.

  4. Die Optimierung der Parameter erfordert historische Daten, die im Live-Handel möglich sind.

  5. Der mechanische Handel mit Breakout-Punkten kann die Handelsfrequenz und die Verschiebungskosten erhöhen.

Optimierungsrichtlinien

  1. Beurteilen Sie die Kanäle verschiedener Zeiträume und wählen Sie den optimalen aus.

  2. Versuchen Sie, auf die mittlere Position zurückzukehren und den Stop-Loss zu bewegen, um einen besseren Ausgangmechanismus zu finden.

  3. Optimieren Sie den Stop-Loss-Prozentsatz, um die Wahrscheinlichkeit zu verringern, dass Sie gestoppt werden.

  4. Hinzufügen eines Trendfilters, um unangemessene Breakout-Trades zu vermeiden.

  5. Erwägen Sie, die Positionsgröße zu erhöhen, aber Risiken zu kontrollieren.

Zusammenfassung

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


Mehr