
Die Strategie basiert auf einem Stier-Flaggen-Format, bei dem nach dem Preisbruch der Flaggen-Bereichs-Höhe gekauft wird, wobei die Stop-Loss-Position am Flaggen-Bereichs-Tiefpunkt liegt, wobei die Zielgewinnspanne nach dem Risiko-Rendite-Verhältnis festgelegt wird. Die Strategie verwendet die Höchst- und die Mindestpreis-Funktion, um die Flaggen-Bereichs zu identifizieren, und beurteilt den Durchbruch durch den Vergleich des aktuellen Schließungspreises mit dem Höchstpreis der vorherigen K-Linie.
Die Strategie ist eine Breakout-Strategie, basierend auf der klassischen Stierflagge, die Trend-Fortsetzung-Gelegenheiten durch die Identifizierung von Flaggen-Bereiche und Preis-Breakouts zu erfassen. Die Strategie ist von Vorteil, dass die Logik klar ist, die Risiken sind kontrollierbar, aber in der Zeit der Marktschwankungen oder der Trendwende mit einem gewissen Risiko konfrontiert.
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bull Flag Breakout", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Параметры стратегии
riskRewardRatio = 3.0
flagLength = input.int(5, title="Flag Length")
stopLossBuffer = input.float(0.01, title="Stop Loss Buffer", step=0.001)
// Функция для вычисления стоп-лосса и тейк-профита
calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio) =>
takeProfitPrice = entryPrice + (entryPrice - stopLossPrice) * riskRewardRatio
[stopLossPrice, takeProfitPrice]
// Найти минимум и максимум флага
flagLow = ta.lowest(low, flagLength)
flagHigh = ta.highest(high, flagLength)
// Условия для формирования бычьего флага
isBullFlag = high[1] < flagHigh and close > high[1]
// Условия для входа в сделку
if (isBullFlag)
entryPrice = close
stopLossPrice = flagLow - stopLossBuffer
[calculatedStopLoss, calculatedTakeProfit] = calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio)
// Открыть длинную позицию
strategy.entry("Bull Flag Long", strategy.long)
strategy.exit("Take Profit", "Bull Flag Long", limit=calculatedTakeProfit)
strategy.exit("Stop Loss", "Bull Flag Long", stop=calculatedStopLoss)
label.new(bar_index, high, "Buy", color=color.green, textcolor=color.white, style=label.style_label_down)