이 전략은 황소 깃발 패턴을 기반으로 합니다. 가격이 깃발 범위의 최고치를 넘어서면 구매하고, 플래그 범위의 최저에 스톱 로스를 설정하고, 리스크-어워드 비율에 따라 수익 목표를 설정합니다. 이 전략은 플래그 범위를 식별하기 위해 가장 높고 가장 낮은 가격 함수를 사용하여 현재 폐쇄 가격을 이전 촛불의 가장 높은 가격과 비교하여 브레이크우트를 결정합니다.
이 전략은 고전적인 황소 깃발 패턴을 기반으로 한 브레이크아웃 전략으로, 플래그 범위와 가격 브레이크아웃을 식별함으로써 트렌드 지속 기회를 포착합니다. 전략의 장점은 명확한 논리와 제어 가능한 위험이지만 변동성 있는 시장이나 트렌드 역전에서 특정 위험에 직면합니다. 전략의 견고성과 수익성을 높이기 위해 신호, 동적 매개 변수, 위치 관리 등을 최적화하는 측면에서 개선이 가능합니다.
/*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)