
Die High-Low-Breakout-Retracing-Strategie ist eine Trend-Tracking-Strategie, die die historischen Höhen und Tiefen der Aktien nutzt, um zu beurteilen, ob die Preise diese hohen und niedrigen Punkte überschritten haben. Sie erzeugt ein Kaufsignal, indem sie die Höchst- und Tiefstpreise eines bestimmten Zeitraums berechnet, wenn der Preis des aktuellen Zeitraums den Höchstpreis des letzten Zeitraums überschreitet; wenn der Preis unter dem Tiefstpreis des letzten Zeitraums fällt, erzeugt sie einen Verkauf.
Die Kernlogik dieser Strategie ist die Berechnung von Höchst- und Tiefstpreisen für einen bestimmten Zeitraum (die Standard-K-Linie von 50 Punkten). Bei der Berechnung von Höchst- und Tiefstpreisen kann die Wahl zwischen Schlusskurs oder Höchst- und Tiefstpreisen (die Standard-K-Linie von Höchst- und Tiefstpreisen) getroffen werden. Dann wird entschieden, ob der Schlusskurs oder der Höchstpreis für die aktuelle K-Linie den Höchstpreis für den letzten bestimmten Zeitraum übersteigt, und wenn dies der Fall ist, wird ein Kaufsignal erzeugt.
Wenn ein Kaufsignal erzeugt wird, kauft die Strategie zu diesem Preis und setzt einen Stop-Loss- und einen Stop-Price-Preis. Wenn der Preis den Stop-Loss-Preis berührt, wird die Strategie ausgeschaltet; wenn der Preis den Stop-Price berührt, wird die Strategie ausgeschaltet. Die Logik des Verkaufssignals ist ähnlich.
Diese Strategie hat folgende Vorteile:
Die Strategie birgt auch einige Risiken:
Um diese Risiken zu kontrollieren, können Optimierungen in folgenden Bereichen vorgenommen werden:
Diese Strategie kann optimiert werden in folgenden Bereichen:
Parameteroptimierung. Die Optimierung von Parametern kann durch systematischere Prüfung verschiedener Parameterkombinationen erreicht werden.
In Kombination mit anderen Indikatoren kann ein Filtersignal erzeugt werden. Zum Beispiel kann ein Kaufsignal in Kombination mit einem Moving Average-Indikator erzeugt werden, nur wenn der Preis den Höchstpreis überschreitet und den langfristigen Moving Average über den kurzfristigen Moving Average durchbricht.
Berücksichtigung der Schwankungsfrequenz der Aktienpreise. Zum Beispiel kann der ATR-Indikator verwendet werden, um die Breakout-Werte bei erhöhter Aktienpreisschwankung angemessen zu lockern.
Unterscheidung zwischen Trend- und Schwankungsmärkten. In einer Phase, in der ein Trend sichtbar ist, sollten die Parameter entsprechend gelockert werden, um den Trend zu verfolgen. In einem Schwankungsmarkt sollten die Parameter entsprechend gestärkt werden.
Erhöhung der Positionsmanagement-Mechanismen, z. B. die Einstellung von Positionen, wenn die Verluste einen bestimmten Prozentsatz erreichen.
Insgesamt ist die Hoch-Low-Breakout-Retracing-Strategie eine einfache und praktische Trendverfolgungsstrategie. Sie entscheidet über die Handelssignale, indem sie beurteilt, ob der Preis die Höchst- und Tiefstpreise eines bestimmten Zeitraums überschritten hat. Die Strategie hat die Vorteile der Einfachheit, des Trendverfolgens und der parametrischen Optimierung, aber auch die Gefahr, dass sie zu viel gehandelt wird und nicht in der Lage ist, einen schwankenden Markt zu behandeln.
/*backtest
start: 2023-11-25 00:00:00
end: 2023-11-26 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("High/Low Breaker Backtest 1.0", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, max_bars_back=700)
// Strategy Settings
takeProfitPercentageLong = input(.1, title='Take Profit Percentage Long', type=float)/100
stopLossPercentageLong = input(0.15, title='Stop Loss Percentage Long', type=float)/100
takeProfitPercentageShort = input(.1, title='Take Profit Percentage Short', type=float)/100
stopLossPercentageShort = input(0.15, title='Stop Loss Percentage Short', type=float)/100
candlesBack = input(title="Number of candles back", defval=50)
useHighAndLows = input(true, title="Use high and lows (uncheck to use close)", defval=true)
lastBarsBackMinimum = input(title="Number of candles back to ignore for last high/low", defval=30)
showHighsAndLows = input(true, title="Show high/low lines", defval=true)
getIndexOfLowestInSeries(series, period) =>
index = 0
current = series
for i = 1 to period
if series[i] <= current
index := i
current := series[i]
index
getIndexOfHighestInSeries(series, period) =>
index = 0
current = series
for i = 1 to period
if series[i] >= current
index := i
current := series[i]
index
indexOfHighestInRange = getIndexOfHighestInSeries(useHighAndLows ? high : close, candlesBack)
indexOfLowestInRange = getIndexOfLowestInSeries(useHighAndLows ? low : close, candlesBack)
max = useHighAndLows ? high[indexOfHighestInRange] : close[indexOfHighestInRange]
min = useHighAndLows ? low[indexOfLowestInRange] : close[indexOfLowestInRange]
barsSinceLastHigh = indexOfHighestInRange
barsSinceLastLow = indexOfLowestInRange
isNewHigh = (useHighAndLows ? high > max[1] : close > max[1]) and (barsSinceLastHigh[1] + 1 > lastBarsBackMinimum)
isNewLow = (useHighAndLows ? low < min[1] : close < min[1]) and (barsSinceLastLow[1] + 1 > lastBarsBackMinimum)
alertcondition(condition=isNewHigh, title="New High", message="Last High Broken")
alertcondition(condition=isNewLow, title="New Low", message="Last Low Broken")
if high > max
max := high
barsSinceLastHigh := 0
if low < min
min := low
barsSinceLastLow := 0
plot( showHighsAndLows ? max : na, color=red, style=line, title="High", linewidth=3)
plot( showHighsAndLows ? min : na, color=green, style=line, title="Low", linewidth=3)
// Strategy Entry/Exit Logic
goLong =isNewHigh
longStopLevel = strategy.position_avg_price * (1 - stopLossPercentageLong)
longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercentageLong)
goShort = isNewLow
shortStopLevel = strategy.position_avg_price * (1 + stopLossPercentageShort)
shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercentageShort)
strategy.entry("Long", strategy.long, when=goLong)
strategy.exit("Long Exit", "Long", stop=longStopLevel, limit=longTakeProfitLevel)
strategy.entry("Short", strategy.short, when=goShort)
strategy.exit("Short Exit", "Short", stop=shortStopLevel, limit=shortTakeProfitLevel)
plot(goShort ? shortStopLevel : na, color=yellow, style=linebr, linewidth=2)
plot(goShort ? shortTakeProfitLevel : na, color=blue, style=linebr, linewidth=2)
plot(goLong ? longStopLevel : na, color=yellow, style=linebr, linewidth=2)
plot(goLong ? longTakeProfitLevel : na, color=blue, style=linebr, linewidth=2)