
Die Binary-Breakout-Strategie ist eine quantitative Trading-Strategie, bei der der Trend mit Unterstützung und Widerstand sowie dem Moving Average als Alternativsignal genutzt wird. Die Strategie berücksichtigt die Unterstützung und den Widerstand in verschiedenen Zeiträumen. Die Trend-Filterung wird verwendet, um die wichtigsten Unterstützungs- und Widerstandspunkte zu erfassen.
Die Strategie besteht aus vier Teilen:
Die Strategie nutzt zunächst die Security-Funktion, um die Höchst- und die Tiefstpreise für 30 Tage und 30 Wochen zu erhalten, um die dynamischen Unterstützungs- und Widerstandslinien zu definieren. Die Strategie filtert dann die Durchbruchsmöglichkeiten in Kombination mit dem 10-Tage-Moving-Average-Gold- und Dead-Fork-Signal.
Die Strategie berücksichtigt sowohl die Unterstützung als auch die Widerstandsfähigkeit der mittleren kurzen und langen Linie, um größere Trendchancen zu erfassen. Die Kombination mit einem Moving Average filtert die falschen Signale in den Trendschwankungen effektiv.
Die Strategie hat folgende Vorteile:
Die Strategie birgt auch einige Risiken, die beachtet werden müssen:
Entsprechende Lösungen:
Die Strategie kann noch weiter optimiert werden:
Die Binary-Breakout-Strategie, die die Unterstützung des Widerstands der mittleren und langen Linien und die Moving-Average-Indikatoren als Handelssignale berücksichtigt, ist eine reife quantitative Handelsstrategie, die in der Lage ist, Geräusche im Kontext großer Trends effektiv zu filtern. Die Strategie hat noch viel Optimierungsraum, kann in Bezug auf die Stop-Loss-Mechanismen, die Anpassung der Parameter usw. verbessert werden.
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © neosaid
//@version=5
strategy("Support and resistant Strategy", overlay=true)
// Function to check for breakout
f_breakoutCondition(closingPrice, highestHigh, lowestLow) =>
closingPrice > highestHigh or closingPrice < lowestLow
// Step 1: 30 Days Trend Line (Lower Lows)
low30Days = request.security(syminfo.tickerid, "D", low)
// Step 2: 30 Weeks Upper Trend Line (Higher Highs)
high30Weeks = request.security(syminfo.tickerid, "W", high)
// Step 3: Trend Line for Lowest Low within the Last Month
var float lowestLowLastMonth = na
for i = 0 to 29
lowestLowLastMonth := na(lowestLowLastMonth) ? low[i] : math.min(lowestLowLastMonth, low[i])
lowestLowLastMonthValue = lowestLowLastMonth[1]
// Breakout Strategy
highestHighLast3Candles = request.security(syminfo.tickerid, "D", ta.highest(close, 3))
lowestLowLast3Candles = request.security(syminfo.tickerid, "D", ta.lowest(close, 3))
// Additional conditions to filter signals
buyCondition = f_breakoutCondition(close, highestHighLast3Candles, lowestLowLast3Candles) and close > low30Days
sellCondition = f_breakoutCondition(close, highestHighLast3Candles, lowestLowLast3Candles) and close < high30Weeks
// Additional filters to reduce the number of orders
buyFilter = ta.crossover(close, ta.sma(close, 10)) // Buy only when price crosses above a 10-period SMA
sellFilter = ta.crossunder(close, ta.sma(close, 10)) // Sell only when price crosses below a 10-period SMA
buyCondition := buyCondition and buyFilter
sellCondition := sellCondition and sellFilter
// Plot Buy and Sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar)
// Strategy entries
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.entry("Sell", strategy.short, when = sellCondition)