Diese Strategie basiert auf dem Bullen-Flaggen-Muster. Sie kauft, wenn der Preis über den Höchststand des Flaggenbereichs bricht, setzt den Stop-Loss am Tiefpunkt des Flaggenbereichs und setzt das Gewinnziel nach dem Risiko-Rendite-Verhältnis. Die Strategie verwendet die höchsten und niedrigsten Preisfunktionen, um den Flaggenbereich zu identifizieren und bestimmt den Ausbruch, indem der aktuelle Schlusskurs mit dem höchsten Preis der vorherigen Kerze verglichen wird.
Diese Strategie ist eine Breakout-Strategie, die auf dem klassischen Bullen-Flaggen-Muster basiert und Trend-Fortsetzungsmöglichkeiten erfasst, indem die Flaggen-Range und Preis-Breakouts identifiziert werden. Die Vorteile der Strategie sind klare Logik und kontrollierbares Risiko, aber sie ist in volatilen Märkten oder Trendumkehrungen mit bestimmten Risiken konfrontiert. Verbesserungen können in Bezug auf die Optimierung von Signalen, dynamischen Parametern, Positionsmanagement usw. vorgenommen werden, um die Robustheit und Rentabilität der Strategie zu verbessern.
/*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)